diff --git a/packages/manager/apps/billing/.eslintrc.json b/packages/manager/apps/billing/.eslintrc.json new file mode 100644 index 000000000000..d2b291c16573 --- /dev/null +++ b/packages/manager/apps/billing/.eslintrc.json @@ -0,0 +1,16 @@ +{ + "globals": { + "__VERSION__": true, + "__NG_APP_INJECTIONS__": true, + "EprotectIframeClient": true, + "ipaddr": true, + "JSURL": true, + "moment": true, + "punycode": true, + "RandExp": true, + "URI": true, + "validator": true, + "WEBPACK_ENV": true, + "zE": true + } +} diff --git a/packages/manager/apps/billing/README.md b/packages/manager/apps/billing/README.md new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/manager/apps/billing/package.json b/packages/manager/apps/billing/package.json new file mode 100644 index 000000000000..8d05768c3448 --- /dev/null +++ b/packages/manager/apps/billing/package.json @@ -0,0 +1,92 @@ +{ + "name": "@ovh-ux/manager-billing-app", + "version": "0.0.0", + "private": true, + "description": "OVHcloud Billing app", + "repository": { + "type": "git", + "url": "git+https://github.com/ovh/manager.git", + "directory": "packages/manager/apps/billing" + }, + "license": "BSD-3-Clause", + "author": "OVH SAS", + "scripts": { + "build": "webpack --env production", + "dev": "webpack-dev-server", + "dev:watch": "yarn run dev", + "start": "lerna exec --stream --scope='@ovh-ux/manager-billing-app' --include-dependencies -- npm run build --if-present", + "start:dev": "lerna exec --stream --scope='@ovh-ux/manager-billing-app' --include-dependencies -- npm run dev --if-present", + "start:watch": "lerna exec --stream --parallel --scope='@ovh-ux/manager-billing-app' --include-dependencies -- npm run dev:watch --if-present" + }, + "dependencies": { + "@ovh-ux/manager-advices": "^1.8.1", + "@ovh-ux/manager-at-internet-configuration": "^1.5.0", + "@ovh-ux/manager-config": "^8.0.0", + "@ovh-ux/manager-core": "^13.0.0", + "@ovh-ux/manager-error-page": "^2.4.1", + "@ovh-ux/manager-exchange": "^4.10.0", + "@ovh-ux/manager-models": "^2.1.0", + "@ovh-ux/manager-new-billing": "^0.23.0", + "@ovh-ux/manager-ng-layout-helpers": "^2.9.1", + "@ovh-ux/ng-at-internet": "^6.0.0", + "@ovh-ux/ng-at-internet-ui-router-plugin": "^3.5.0", + "@ovh-ux/ng-ovh-api-wrappers": "^5.1.0", + "@ovh-ux/ng-ovh-chart": "^1.2.0", + "@ovh-ux/ng-ovh-contacts": "^5.3.1", + "@ovh-ux/ng-ovh-export-csv": "^2.1.1", + "@ovh-ux/ng-ovh-feature-flipping": "^1.1.2", + "@ovh-ux/ng-ovh-http": "^5.1.1", + "@ovh-ux/ng-ovh-order-tracking": "^2.5.1", + "@ovh-ux/ng-ovh-payment-method": "^9.16.5", + "@ovh-ux/ng-ovh-proxy-request": "^2.1.1", + "@ovh-ux/ng-ovh-request-tagger": "^2.0.0", + "@ovh-ux/ng-ovh-sso-auth": "^4.8.1", + "@ovh-ux/ng-ovh-swimming-poll": "^5.1.1", + "@ovh-ux/ng-ovh-user-pref": "2.1.1", + "@ovh-ux/ng-ovh-utils": "^14.4.1", + "@ovh-ux/ng-q-allsettled": "^2.1.2", + "@ovh-ux/ng-shell-tracking": "^0.6.0", + "@ovh-ux/ng-translate-async-loader": "^2.2.1", + "@ovh-ux/ng-ui-router-breadcrumb": "^1.3.1", + "@ovh-ux/ng-ui-router-layout": "^4.3.1", + "@ovh-ux/request-tagger": "^0.4.0", + "@ovh-ux/shell": "^4.0.1", + "@ovh-ux/ui-kit": "^6.10.5", + "@uirouter/angularjs": "^1.0.23", + "angular": "^1.7.5", + "angular-aria": "^1.7.8", + "angular-cookies": "^1.7.8", + "angular-dynamic-locale": "^0.1.37", + "angular-i18n": "^1.7.8", + "angular-resource": "^1.7.8", + "angular-sanitize": "^1.7.8", + "angular-translate": "^2.18.1", + "angular-translate-loader-pluggable": "^1.3.1", + "angular-ui-bootstrap": "1.3.3", + "angular-ui-utils": "angular-ui/ui-utils#0.2.3", + "angular-ui-validate": "angular-ui/ui-validate#~1.2.2", + "core-js": "^3.6.5", + "flatpickr": "~4.6.3", + "jquery": "^2.1.3", + "jsurl": "^0.1.4", + "lodash-es": "^4.17.15", + "moment": "^2.24.0", + "oclazyload": "^1.1.0", + "ovh-api-services": "^17.0.0", + "ovh-ui-kit-bs": "^4.2.0", + "regenerator-runtime": "^0.13.7", + "whatwg-fetch": "^3.5.0" + }, + "devDependencies": { + "@ovh-ux/manager-webpack-config": "^7.0.3", + "glob": "^7.1.6", + "lodash": "^4.17.15", + "webpack": "^5.94.0", + "webpack-merge": "^4.2.2" + }, + "regions": [ + "CA", + "EU", + "US" + ] +} diff --git a/packages/manager/apps/billing/src/app.less b/packages/manager/apps/billing/src/app.less new file mode 100644 index 000000000000..28bdd1cb0745 --- /dev/null +++ b/packages/manager/apps/billing/src/app.less @@ -0,0 +1,60 @@ +// @rem-base: rem-base(10px); + +@import 'css/source.less'; + +.ovh-manager-dedicated-app { + &.in-container .sidebar-menu { + top: -2px !important; + } + + #nprogress { + .peg { + box-shadow: none; + } + } + + .word-break-normal { + word-break: normal; + } + + .ip-clipboard { + min-width: rem-calc(200); + max-width: rem-calc(350); + margin: 0; + } + + // Could be removed with the next version of UI Kit + .font-inherit { + font-size: inherit; + } + + ola-step-checker { + display: block; + + @media (min-width: 992px) { + .oui-tile { + display: flex; + flex-direction: column; + } + + .oui-tile__body { + flex: 1; + + .row { + height: 100%; + } + + .oui-list, + .oui-progress-tracker { + height: 100%; + margin: 0; + border-right: 1px solid #eaeaea; + } + } + } + } + + #licenseOrderBlockFilters { + cursor: pointer; + } +} diff --git a/packages/manager/apps/billing/src/app.module.js b/packages/manager/apps/billing/src/app.module.js new file mode 100644 index 000000000000..219f998dfd98 --- /dev/null +++ b/packages/manager/apps/billing/src/app.module.js @@ -0,0 +1,157 @@ +import angular from 'angular'; +import get from 'lodash/get'; +import has from 'lodash/has'; +import isString from 'lodash/isString'; +import uiRouter, { RejectType } from '@uirouter/angularjs'; +import '@ovh-ux/ui-kit'; +import '@ovh-ux/ng-at-internet'; +import { isTopLevelApplication } from '@ovh-ux/manager-config'; +import { registerCoreModule } from '@ovh-ux/manager-core'; +import ngOvhSsoAuth from '@ovh-ux/ng-ovh-sso-auth'; +import ngUiRouterBreadcrumb from '@ovh-ux/ng-ui-router-breadcrumb'; +import ovhManagerAtInternetConfiguration from '@ovh-ux/manager-at-internet-configuration'; +import { registerAtInternet } from '@ovh-ux/ng-shell-tracking'; +// TODO: Change to '@ovh-ux/manager-billing' when module is deployed +// import Billing from '@ovh-ux/manager-billing'; +import Billing from '../../../modules/new-billing/src'; +import errorPage from './error'; +import dedicatedUniverseComponents from '../../../modules/account/src/dedicatedUniverseComponents'; +import TRACKING from './tracking/at-internet.constants'; +import '@ovh-ux/ui-kit/dist/css/oui.css'; +import './app.less'; +import './css/source.scss'; + +export default async (containerEl, shellClient) => { + const moduleName = 'BillingApp'; + + const routingConfig = /* @ngInject */ ($urlRouterProvider) => { + $urlRouterProvider.otherwise('/'); + }; + + const trackingConfig = /* @ngInject */ (atInternetConfigurationProvider) => { + atInternetConfigurationProvider.setSkipInit(true); + atInternetConfigurationProvider.setPrefix('BillingApp'); + }; + + const [environment, locale] = await Promise.all([ + shellClient.environment.getEnvironment(), + shellClient.i18n.getLocale(), + ]); + + const coreCallbacks = { + onLocaleChange: (lang) => { + shellClient.i18n.setLocale(lang); + }, + }; + + const ssoAuthConfig = /* @ngInject */ (ssoAuthenticationProvider) => { + ssoAuthenticationProvider.setOnLogin(() => { + shellClient.auth.login(); + }); + ssoAuthenticationProvider.setOnLogout(() => { + shellClient.auth.logout(); + }); + }; + + const calendarConfigProvider = /* @ngInject */ ( + ouiCalendarConfigurationProvider, + ) => { + const [lang] = locale.split('_'); + return import(`flatpickr/dist/l10n/${lang}.js`) + .then((module) => { + ouiCalendarConfigurationProvider.setLocale(module.default[lang]); + }) + .catch(() => {}); + }; + + const broadcastAppStarted = /* @ngInject */ ($rootScope, $transitions) => { + const unregisterHook = $transitions.onSuccess({}, async () => { + if (!isTopLevelApplication()) { + await shellClient.ux.hidePreloader(); + } + $rootScope.$broadcast('app:started'); + unregisterHook(); + }); + }; + + const transitionsConfig = /* @ngInject */ ($transitions) => { + if (!isTopLevelApplication()) { + $transitions.onBefore({}, (transition) => { + if ( + !transition.ignored() && + transition.from().name !== '' && + transition.entering().length > 0 + ) { + shellClient.ux.startProgress(); + } + }); + + $transitions.onSuccess({}, () => { + shellClient.ux.stopProgress(); + }); + + $transitions.onError({}, (transition) => { + if (!transition.error().redirected) { + shellClient.ux.stopProgress(); + } + }); + } + }; + + const defaultErrorHandler = /* @ngInject */ ($state) => { + $state.defaultErrorHandler((error) => { + if (error.type === RejectType.ERROR) { + $state.go( + 'error', + { + detail: { + message: get(error.detail, 'data.message'), + code: has(error.detail, 'headers') + ? error.detail.headers('x-ovh-queryId') + : null, + }, + }, + { location: false }, + ); + } + }); + }; + + angular + .module( + moduleName, + [ + registerCoreModule(environment, coreCallbacks), + registerAtInternet(shellClient.tracking), + ovhManagerAtInternetConfiguration, + ngOvhSsoAuth, + ngUiRouterBreadcrumb, + 'oui', + uiRouter, + dedicatedUniverseComponents, + errorPage, + Billing, + ...get(__NG_APP_INJECTIONS__, environment.getRegion(), []), + ].filter(isString), + ) + .constant('shellClient', shellClient) + .config( + /* @ngInject */ ($locationProvider) => $locationProvider.hashPrefix(''), + ) + .config(routingConfig) + .config(ssoAuthConfig) + .config(async () => { + await shellClient.tracking.setConfig(environment.getRegion(), TRACKING); + }) + .config(trackingConfig) + .config(calendarConfigProvider) + .run(broadcastAppStarted) + .run(transitionsConfig) + .run(defaultErrorHandler); + + angular.bootstrap(containerEl, [moduleName], { + strictDi: true, + }); + + return moduleName; +}; diff --git a/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_de_DE.json b/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_de_DE.json new file mode 100644 index 000000000000..76d85bce0777 --- /dev/null +++ b/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_de_DE.json @@ -0,0 +1,34 @@ +{ + "menu_back": "Zurück zur Startseite", + "menu_previous": "Zurück zur vorherigen Seite ", + "menu_unpaid": "Meine Verbindlichkeiten", + "menu_orders": "Meine Bestellungen", + "menu_statements": "Meine Aufstellungen", + "menu_history": "Meine Rechnungen", + "menu_payments": "Zahlungsverfolgung", + "menu_credits": "Meine Guthaben", + "menu_services": "Meine Dienstleistungen", + "menu_services_management": "Meine Dienste verwalten", + "menu_refunds": "Meine Gutschriften", + "menu_sla": "Meine SLA-Gutschriften", + "menu_conso": "Meine Verbrauchserfassung", + "menu_means": "Meine Zahlungsarten", + "menu_ovhaccount": "Mein Prepaid-Account", + "menu_ovhaccount_old_name": "(früher OVH Manager)", + "menu_fidelity": "Mein Treuebereich", + "menu_vouchers": "Meine Gutscheine", + "menu_bills": "Meine Rechnungen", + "menu_support": "Meine Support-Anfragen", + "menu_payment_methods": "Zahlungsarten", + "menu_subscriptions": "Meine Abos", + "menu_ssh": "Meine SSH Keys", + "menu_infos": "Mein Profil", + "menu_advanced": "Erweiterte Einstellungen", + "menu_account_title": "Mein Account", + "menu_security": "Sicherheit", + "menu_users_management": "Verwaltung der Benutzer", + "menu_emails": "Empfangene E-Mails", + "menu_contacts": "Meine Kontakte", + "menu_agreements": "Meine Verträge", + "menu_iam": "Identity and Access (IAM)" +} diff --git a/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_en_GB.json b/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_en_GB.json new file mode 100644 index 000000000000..c1dafb78741d --- /dev/null +++ b/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_en_GB.json @@ -0,0 +1,34 @@ +{ + "menu_back": "Back to home page", + "menu_previous": "Back to previous page", + "menu_unpaid": "My outstanding invoices", + "menu_orders": "My orders ", + "menu_statements": "My payments", + "menu_history": "My bills", + "menu_payments": "Payment tracking", + "menu_credits": "My credits", + "menu_services": "My services", + "menu_services_management": "Manage my services ", + "menu_refunds": "My credit notes", + "menu_sla": "My compensation ", + "menu_conso": "My usage summary", + "menu_means": "My payment methods", + "menu_ovhaccount": "My prepaid account ", + "menu_ovhaccount_old_name": "(formerly known as my OVH account)", + "menu_fidelity": "My Loyalty control panel", + "menu_vouchers": "My vouchers", + "menu_bills": "My bills", + "menu_support": "My support tickets ", + "menu_payment_methods": "Payment method", + "menu_subscriptions": "My subscriptions", + "menu_ssh": "My SSH keys", + "menu_infos": "My profile ", + "menu_advanced": "Advanced settings", + "menu_account_title": "My account", + "menu_security": "Security", + "menu_users_management": "User management", + "menu_emails": "Emails received", + "menu_contacts": "My contacts", + "menu_agreements": "My contracts", + "menu_iam": "Identity and Access Management (IAM)" +} diff --git a/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_es_ES.json b/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_es_ES.json new file mode 100644 index 000000000000..1d44c7d7112e --- /dev/null +++ b/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_es_ES.json @@ -0,0 +1,34 @@ +{ + "menu_back": "Volver al inicio", + "menu_previous": "Volver a la página anterior", + "menu_unpaid": "Mi saldo actual", + "menu_orders": "Mis pedidos ", + "menu_statements": "Mis extractos", + "menu_history": "Mis facturas", + "menu_payments": "Seguimiento de los pagos", + "menu_credits": "Mi crédito", + "menu_services": "Mis servicios", + "menu_services_management": "Administrar mis servicios", + "menu_refunds": "Mis devoluciones", + "menu_sla": "Compensaciones", + "menu_conso": "Mi consumo", + "menu_means": "Mis formas de pago", + "menu_ovhaccount": "Mi cuenta de prepago", + "menu_ovhaccount_old_name": "(antigua cuenta de OVH)", + "menu_fidelity": "Área de fidelidad", + "menu_vouchers": "Códigos promocionales", + "menu_bills": "Mis facturas", + "menu_support": "Mis solicitudes de asistencia", + "menu_payment_methods": "Formas de pago", + "menu_subscriptions": "Mis suscripciones", + "menu_ssh": "Mis llaves SSH", + "menu_infos": "Mi perfil", + "menu_advanced": "Parámetros avanzados", + "menu_account_title": "Mi cuenta", + "menu_security": "Seguridad", + "menu_users_management": "Gestión de los usuarios", + "menu_emails": "Mensajes recibidos", + "menu_contacts": "Mis contactos", + "menu_agreements": "Mis contratos", + "menu_iam": "Identidades y acceso (IAM)" +} diff --git a/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_fr_CA.json b/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..388d28d0e408 --- /dev/null +++ b/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_fr_CA.json @@ -0,0 +1,34 @@ +{ + "menu_back": "Retour à l'accueil", + "menu_previous": "Retour à la page précédente", + "menu_unpaid": "Mon encours", + "menu_orders": "Mes commandes", + "menu_statements": "Mes relevés", + "menu_history": "Mes factures", + "menu_payments": "Suivi des paiements", + "menu_credits": "Mes crédits", + "menu_services": "Mes services", + "menu_services_management": "Gérer mes services", + "menu_refunds": "Mes avoirs", + "menu_sla": "Mes compensations", + "menu_conso": "Mon suivi conso", + "menu_means": "Mes moyens de paiement", + "menu_ovhaccount": "Mon compte prépayé", + "menu_ovhaccount_old_name": "(anciennement mon compte OVH)", + "menu_fidelity": "Mon espace fidélité", + "menu_vouchers": "Mes vouchers", + "menu_bills": "Mes factures", + "menu_support": "Mes demandes d'assistance", + "menu_payment_methods": "Moyens de paiement", + "menu_subscriptions": "Mes abonnements", + "menu_ssh": "Mes clés SSH", + "menu_infos": "Mon profil", + "menu_advanced": "Paramètres avancés", + "menu_account_title": "Mon compte", + "menu_security": "Sécurité", + "menu_users_management": "Gestion des utilisateurs", + "menu_emails": "Emails reçus", + "menu_contacts": "Mes contacts", + "menu_agreements": "Mes contrats", + "menu_iam": "Identités et accès (IAM)" +} diff --git a/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_fr_FR.json b/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..388d28d0e408 --- /dev/null +++ b/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_fr_FR.json @@ -0,0 +1,34 @@ +{ + "menu_back": "Retour à l'accueil", + "menu_previous": "Retour à la page précédente", + "menu_unpaid": "Mon encours", + "menu_orders": "Mes commandes", + "menu_statements": "Mes relevés", + "menu_history": "Mes factures", + "menu_payments": "Suivi des paiements", + "menu_credits": "Mes crédits", + "menu_services": "Mes services", + "menu_services_management": "Gérer mes services", + "menu_refunds": "Mes avoirs", + "menu_sla": "Mes compensations", + "menu_conso": "Mon suivi conso", + "menu_means": "Mes moyens de paiement", + "menu_ovhaccount": "Mon compte prépayé", + "menu_ovhaccount_old_name": "(anciennement mon compte OVH)", + "menu_fidelity": "Mon espace fidélité", + "menu_vouchers": "Mes vouchers", + "menu_bills": "Mes factures", + "menu_support": "Mes demandes d'assistance", + "menu_payment_methods": "Moyens de paiement", + "menu_subscriptions": "Mes abonnements", + "menu_ssh": "Mes clés SSH", + "menu_infos": "Mon profil", + "menu_advanced": "Paramètres avancés", + "menu_account_title": "Mon compte", + "menu_security": "Sécurité", + "menu_users_management": "Gestion des utilisateurs", + "menu_emails": "Emails reçus", + "menu_contacts": "Mes contacts", + "menu_agreements": "Mes contrats", + "menu_iam": "Identités et accès (IAM)" +} diff --git a/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_it_IT.json b/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_it_IT.json new file mode 100644 index 000000000000..ff443bbe614d --- /dev/null +++ b/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_it_IT.json @@ -0,0 +1,34 @@ +{ + "menu_back": "Torna alla home", + "menu_previous": "Ritorna alla pagina precedente", + "menu_unpaid": "Il tuo saldo", + "menu_orders": "I tuoi ordini", + "menu_statements": "Storico pagamenti", + "menu_history": "Le tue fatture", + "menu_payments": "Controllo dei pagamenti", + "menu_credits": "I tuoi crediti", + "menu_services": "I tuoi servizi", + "menu_services_management": "Gestisci i tuoi servizi", + "menu_refunds": "Il tuo credito", + "menu_sla": "I tuoi rimborsi", + "menu_conso": "I tuoi consumi", + "menu_means": "I tuoi metodi di pagamento", + "menu_ovhaccount": "Il tuo conto prepagato", + "menu_ovhaccount_old_name": "(precedentemente conto OVH)", + "menu_fidelity": "Il tuo spazio fedeltà", + "menu_vouchers": "I tuoi voucher", + "menu_bills": "Le tue fatture", + "menu_support": "Le tue richieste di assistenza", + "menu_payment_methods": "Modalità di pagamento", + "menu_subscriptions": "I tuoi abbonamenti", + "menu_ssh": "Le tue chiavi SSH", + "menu_infos": "Il tuo profilo", + "menu_advanced": "Opzioni avanzate", + "menu_account_title": "Il tuo account", + "menu_security": "Sicurezza", + "menu_users_management": "Gestione utenti", + "menu_emails": "Email ricevute", + "menu_contacts": "I tuoi contatti", + "menu_agreements": "I tuoi contratti ", + "menu_iam": "Identità e accessi (IAM)" +} diff --git a/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_pl_PL.json b/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..a0986e2707ad --- /dev/null +++ b/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_pl_PL.json @@ -0,0 +1,34 @@ +{ + "menu_back": "Powrót do strony głównej", + "menu_previous": "Powrót do poprzedniej strony", + "menu_unpaid": "Moje zaległości", + "menu_orders": "Moje zamówienia", + "menu_statements": "Moje wykazy", + "menu_history": "Faktury", + "menu_payments": "Informacje o płatnościach", + "menu_credits": "Moje zasilenia", + "menu_services": "Moje usługi", + "menu_services_management": "Zarządzanie usługami", + "menu_refunds": "Moje zwroty", + "menu_sla": "Rekompensaty", + "menu_conso": "Moje płatności", + "menu_means": "Moje sposoby płatności", + "menu_ovhaccount": "Moje konto przedpłacone", + "menu_ovhaccount_old_name": "(dawniej konto OVH)", + "menu_fidelity": "Konto prepaid", + "menu_vouchers": "Moje kody", + "menu_bills": "Faktury", + "menu_support": "Moje zgłoszenia", + "menu_payment_methods": "Sposoby płatności", + "menu_subscriptions": "Moje abonamenty", + "menu_ssh": "Moje klucze SSH", + "menu_infos": "Mój profil", + "menu_advanced": "Zaawansowane parametry", + "menu_account_title": "Moje konto", + "menu_security": "Bezpieczeństwo", + "menu_users_management": "Zarządzanie użytkownikami ", + "menu_emails": "Otrzymane e-maile", + "menu_contacts": "Moje kontakty", + "menu_agreements": "Regulaminy", + "menu_iam": "Tożsamości i uprawnienia (IAM)" +} diff --git a/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_pt_PT.json b/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..c7dfb517b9fd --- /dev/null +++ b/packages/manager/apps/billing/src/components/sidebar-menu/account/translations/Messages_pt_PT.json @@ -0,0 +1,34 @@ +{ + "menu_back": "Voltar à página inicial", + "menu_previous": "Voltar à página anterior", + "menu_unpaid": "Mês atual", + "menu_orders": "Encomendas", + "menu_statements": "Extratos", + "menu_history": "Faturas", + "menu_payments": "Pagamentos", + "menu_credits": "Créditos", + "menu_services": "Serviços", + "menu_services_management": "Gerir serviços", + "menu_refunds": "Notas de crédito", + "menu_sla": "Compensações", + "menu_conso": "Consumo", + "menu_means": "Métodos de pagamento", + "menu_ovhaccount": "Conta pré-paga", + "menu_ovhaccount_old_name": "(antiga conta OVH)", + "menu_fidelity": "Espaço Fidelização (pontos)", + "menu_vouchers": "Vouchers", + "menu_bills": "Faturas", + "menu_support": "Os meus pedidos de assistência", + "menu_payment_methods": "Métodos de pagamento", + "menu_subscriptions": "Subscrições", + "menu_ssh": "Chaves SSH", + "menu_infos": "O meu perfil", + "menu_advanced": "Configurações avançadas", + "menu_account_title": "A minha conta", + "menu_security": "Segurança", + "menu_users_management": "Gestão de utilizadores", + "menu_emails": "Emails recebidos", + "menu_contacts": "Contactos", + "menu_agreements": "Contratos", + "menu_iam": "Identidades e acessos (IAM)" +} diff --git a/packages/manager/apps/billing/src/components/sidebar-menu/sidebar-menu.less b/packages/manager/apps/billing/src/components/sidebar-menu/sidebar-menu.less new file mode 100644 index 000000000000..2fffc1a2fc95 --- /dev/null +++ b/packages/manager/apps/billing/src/components/sidebar-menu/sidebar-menu.less @@ -0,0 +1,8 @@ +@actions-menu-item-link-icon-hover-bg-color: #27b9a2; + +button, +toggle-class { + &.navbar-button .icon-bar { + background-image: none; + } +} diff --git a/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_de_DE.json b/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_de_DE.json new file mode 100644 index 000000000000..4b55981682be --- /dev/null +++ b/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_de_DE.json @@ -0,0 +1,38 @@ +{ + "navigation_left_search": "Recherche…", + "navigation_left_networks": "Netzwerk", + "navigation_left_networks_other": "Netzwerke", + "navigation_left_nas_and_cdn": "NAS und CDN ", + "cdn_tab_statistics": "Statistiken", + "navigation_left_vrack": "vRack", + "navigation_left_additional_ip": "Zusätzliche IP ", + "navigation_left_infrastructure": "Infrastrukturen", + "navigation_left_infrastructure_1": "Infrastruktur", + "navigation_left_infrastructure_other": "Infrastrukturen", + "navigation_left_ip": "IP", + "navigation_left_product_vrack": "vRack (privates Netzwerk)", + "navigation_left_product_nas": "NAS", + "navigation_left_dedicatedServers": "Dedicated Server", + "navigation_left_dedicatedClouds": "Hosted Private Cloud", + "dedicatedCloud_tab_dashboard": "Allgemeine Informationen", + "navigation_left_vps": "Virtual Private Server", + "navigation_left_exchanges": "Exchange", + "navigation_left_publicCloud": "Public Cloud", + "navigation_left_order_exchange": "Eine Plattform bestellen", + "navigation_left_licences": "Lizenzen", + "navigation_left_microsoft": "Microsoft", + "navigation_left_exchange": "Exchange", + "otrs_menu_assistance": "Support", + "otrs_menu_assistance_new": "Hilfe", + "otrs_menu_all_guides": "Alle Anleitungen", + "otrs_menu_new_ticket": "Eine Support-Anfrage erstellen", + "otrs_menu_list_ticket": "Liste meiner Support-Anfragen", + "otrs_menu_email_history": "E-Mail-History", + "otrs_menu_telephony_contact": "Telefonischer Support", + "otrs_menu_chatbot": "Konversation starten", + "otrs_menu_changelog": "Changelog", + "otrs_service_category_CDN": "Content Delivery Network", + "otrs_menu_userAccount_1": "Guten Tag {{username}}", + "otrs_menu_userAccount_2": "Ihr Account", + "global_logout": "Abmelden" +} diff --git a/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_en_GB.json b/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_en_GB.json new file mode 100644 index 000000000000..d793d7876d4d --- /dev/null +++ b/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_en_GB.json @@ -0,0 +1,38 @@ +{ + "navigation_left_search": "Recherche…", + "navigation_left_networks": "Network", + "navigation_left_networks_other": "Networks", + "navigation_left_nas_and_cdn": "NAS and CDN", + "cdn_tab_statistics": "Statistics", + "navigation_left_vrack": "vRack", + "navigation_left_additional_ip": "Additional IP ", + "navigation_left_infrastructure": "Infrastructures", + "navigation_left_infrastructure_1": "Infrastructure", + "navigation_left_infrastructure_other": "Infrastructures", + "navigation_left_ip": "IP", + "navigation_left_product_vrack": "vRack (private network)", + "navigation_left_product_nas": "NAS", + "navigation_left_dedicatedServers": "Dedicated Servers", + "navigation_left_dedicatedClouds": "Hosted Private Cloud", + "dedicatedCloud_tab_dashboard": "General information", + "navigation_left_vps": "Virtual private servers", + "navigation_left_exchanges": "Exchange", + "navigation_left_publicCloud": "Public Cloud", + "navigation_left_order_exchange": "Order a platform", + "navigation_left_licences": "Licences", + "navigation_left_microsoft": "Microsoft", + "navigation_left_exchange": "Exchange", + "otrs_menu_assistance": "Help ", + "otrs_menu_assistance_new": "Need help?", + "otrs_menu_all_guides": "All guides", + "otrs_menu_new_ticket": "Create a support request", + "otrs_menu_list_ticket": "My support requests", + "otrs_menu_email_history": "Email history", + "otrs_menu_telephony_contact": "Phone support", + "otrs_menu_chatbot": "Start a conversation", + "otrs_menu_changelog": "Changelog", + "otrs_service_category_CDN": "Content Delivery Network", + "otrs_menu_userAccount_1": "Hello {{username}}", + "otrs_menu_userAccount_2": "your account", + "global_logout": "Log out" +} diff --git a/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_es_ES.json b/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_es_ES.json new file mode 100644 index 000000000000..6521aa9e04a6 --- /dev/null +++ b/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_es_ES.json @@ -0,0 +1,38 @@ +{ + "navigation_left_search": "Recherche…", + "navigation_left_networks": "Red", + "navigation_left_networks_other": "Redes", + "navigation_left_nas_and_cdn": "NAS y CDN", + "cdn_tab_statistics": "Estadísticas", + "navigation_left_vrack": "vRack", + "navigation_left_additional_ip": "IP adicional", + "navigation_left_infrastructure": "Infraestructuras", + "navigation_left_infrastructure_1": "Infraestructura", + "navigation_left_infrastructure_other": "Infraestructuras", + "navigation_left_ip": "IP", + "navigation_left_product_vrack": "vRack (red privada)", + "navigation_left_product_nas": "NAS", + "navigation_left_dedicatedServers": "Servidores dedicados", + "navigation_left_dedicatedClouds": "Cloud de Alojamiento Privado", + "dedicatedCloud_tab_dashboard": "Información general", + "navigation_left_vps": "Servidores privados virtuales", + "navigation_left_exchanges": "Exchange", + "navigation_left_publicCloud": "Public Cloud", + "navigation_left_order_exchange": "Contratar una plataforma ", + "navigation_left_licences": "Licencias", + "navigation_left_microsoft": "Microsoft", + "navigation_left_exchange": "Exchange", + "otrs_menu_assistance": "Soporte", + "otrs_menu_assistance_new": "Ayuda", + "otrs_menu_all_guides": "Todas las guías", + "otrs_menu_new_ticket": "Crear una solicitud de asistencia", + "otrs_menu_list_ticket": "Mis solicitudes de asistencia", + "otrs_menu_email_history": "Historial de mensajes de correo", + "otrs_menu_telephony_contact": "Soporte telefónico", + "otrs_menu_chatbot": "Iniciar una conversación", + "otrs_menu_changelog": "Historial de actualizaciones", + "otrs_service_category_CDN": "Content Delivery Network", + "otrs_menu_userAccount_1": "Hola, {{username}}", + "otrs_menu_userAccount_2": "su cuenta", + "global_logout": "Salir" +} diff --git a/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_fr_CA.json b/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..95f5293af5ca --- /dev/null +++ b/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_fr_CA.json @@ -0,0 +1,38 @@ +{ + "navigation_left_search": "Recherche…", + "navigation_left_networks": "Réseau", + "navigation_left_networks_other": "Réseaux", + "navigation_left_nas_and_cdn": "NAS et CDN", + "cdn_tab_statistics": "Statistiques", + "navigation_left_vrack": "vRack", + "navigation_left_additional_ip": "IP supplémentaire", + "navigation_left_infrastructure": "Infrastructures", + "navigation_left_infrastructure_1": "Infrastructure", + "navigation_left_infrastructure_other": "Infrastructures", + "navigation_left_ip": "IP", + "navigation_left_product_vrack": "vRack (réseau privé)", + "navigation_left_product_nas": "NAS", + "navigation_left_dedicatedServers": "Serveurs Dédiés", + "navigation_left_dedicatedClouds": "Hosted Private Cloud", + "dedicatedCloud_tab_dashboard": "Informations générales", + "navigation_left_vps": "Serveurs privés virtuels", + "navigation_left_exchanges": "Exchange", + "navigation_left_publicCloud": "Public Cloud", + "navigation_left_order_exchange": "Commander une plateforme", + "navigation_left_licences": "Licences", + "navigation_left_microsoft": "Microsoft", + "navigation_left_exchange": "Exchange", + "otrs_menu_assistance": "Assistance", + "otrs_menu_assistance_new": "Besoin d'aide", + "otrs_menu_all_guides": "Tous les guides", + "otrs_menu_new_ticket": "Créer une demande d'assistance", + "otrs_menu_list_ticket": "Liste de mes demandes d'assistance", + "otrs_menu_email_history": "Historique des emails", + "otrs_menu_telephony_contact": "Assistance téléphonique", + "otrs_menu_chatbot": "Démarrer une conversation", + "otrs_menu_changelog": "Historique des mises à jour", + "otrs_service_category_CDN": "Content Delivery Network", + "otrs_menu_userAccount_1": "Bonjour {{username}}", + "otrs_menu_userAccount_2": "votre compte", + "global_logout": "Déconnexion" +} diff --git a/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_fr_FR.json b/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..95f5293af5ca --- /dev/null +++ b/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_fr_FR.json @@ -0,0 +1,38 @@ +{ + "navigation_left_search": "Recherche…", + "navigation_left_networks": "Réseau", + "navigation_left_networks_other": "Réseaux", + "navigation_left_nas_and_cdn": "NAS et CDN", + "cdn_tab_statistics": "Statistiques", + "navigation_left_vrack": "vRack", + "navigation_left_additional_ip": "IP supplémentaire", + "navigation_left_infrastructure": "Infrastructures", + "navigation_left_infrastructure_1": "Infrastructure", + "navigation_left_infrastructure_other": "Infrastructures", + "navigation_left_ip": "IP", + "navigation_left_product_vrack": "vRack (réseau privé)", + "navigation_left_product_nas": "NAS", + "navigation_left_dedicatedServers": "Serveurs Dédiés", + "navigation_left_dedicatedClouds": "Hosted Private Cloud", + "dedicatedCloud_tab_dashboard": "Informations générales", + "navigation_left_vps": "Serveurs privés virtuels", + "navigation_left_exchanges": "Exchange", + "navigation_left_publicCloud": "Public Cloud", + "navigation_left_order_exchange": "Commander une plateforme", + "navigation_left_licences": "Licences", + "navigation_left_microsoft": "Microsoft", + "navigation_left_exchange": "Exchange", + "otrs_menu_assistance": "Assistance", + "otrs_menu_assistance_new": "Besoin d'aide", + "otrs_menu_all_guides": "Tous les guides", + "otrs_menu_new_ticket": "Créer une demande d'assistance", + "otrs_menu_list_ticket": "Liste de mes demandes d'assistance", + "otrs_menu_email_history": "Historique des emails", + "otrs_menu_telephony_contact": "Assistance téléphonique", + "otrs_menu_chatbot": "Démarrer une conversation", + "otrs_menu_changelog": "Historique des mises à jour", + "otrs_service_category_CDN": "Content Delivery Network", + "otrs_menu_userAccount_1": "Bonjour {{username}}", + "otrs_menu_userAccount_2": "votre compte", + "global_logout": "Déconnexion" +} diff --git a/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_it_IT.json b/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_it_IT.json new file mode 100644 index 000000000000..62805610ca37 --- /dev/null +++ b/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_it_IT.json @@ -0,0 +1,38 @@ +{ + "navigation_left_search": "Recherche…", + "navigation_left_networks": "Rete", + "navigation_left_networks_other": "Rete", + "navigation_left_nas_and_cdn": "NAS e CDN", + "cdn_tab_statistics": "Statistiche", + "navigation_left_vrack": "vRack", + "navigation_left_additional_ip": "IP aggiuntivi", + "navigation_left_infrastructure": "Infrastrutture", + "navigation_left_infrastructure_1": "Infrastruttura", + "navigation_left_infrastructure_other": "Infrastrutture", + "navigation_left_ip": "IP", + "navigation_left_product_vrack": "vRack (rete privata)", + "navigation_left_product_nas": "NAS", + "navigation_left_dedicatedServers": "Server Dedicati", + "navigation_left_dedicatedClouds": "Hosted Private Cloud", + "dedicatedCloud_tab_dashboard": "Informazioni generali", + "navigation_left_vps": "Server Privati Virtuali", + "navigation_left_exchanges": "Exchange", + "navigation_left_publicCloud": "Public Cloud", + "navigation_left_order_exchange": "Ordina una piattaforma", + "navigation_left_licences": "Licenze", + "navigation_left_microsoft": "Microsoft", + "navigation_left_exchange": "Exchange", + "otrs_menu_assistance": "Supporto", + "otrs_menu_assistance_new": "Bisogno di aiuto?", + "otrs_menu_all_guides": "Tutte le guide", + "otrs_menu_new_ticket": "Crea una richiesta di supporto", + "otrs_menu_list_ticket": "Lista delle tue richieste di supporto", + "otrs_menu_email_history": "Storico delle tue email", + "otrs_menu_telephony_contact": "Supporto telefonico", + "otrs_menu_chatbot": "Inizia una conversazione", + "otrs_menu_changelog": "Cronologia aggiornamenti", + "otrs_service_category_CDN": "Content Delivery Network", + "otrs_menu_userAccount_1": "Buongiorno {{username}}", + "otrs_menu_userAccount_2": "il tuo account", + "global_logout": "Logout" +} diff --git a/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_pl_PL.json b/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..cb71482d7529 --- /dev/null +++ b/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_pl_PL.json @@ -0,0 +1,38 @@ +{ + "navigation_left_search": "Recherche…", + "navigation_left_networks": "Sieć", + "navigation_left_networks_other": "Sieć", + "navigation_left_nas_and_cdn": "NAS i CDN", + "cdn_tab_statistics": "Statystyki", + "navigation_left_vrack": "vRack", + "navigation_left_additional_ip": "Dodatkowe IP", + "navigation_left_infrastructure": "Nazwa usługi", + "navigation_left_infrastructure_1": "Infrastruktura", + "navigation_left_infrastructure_other": "Nazwa usługi", + "navigation_left_ip": "IP", + "navigation_left_product_vrack": "vRack (prywatna sieć)", + "navigation_left_product_nas": "NAS", + "navigation_left_dedicatedServers": "Serwery dedykowane", + "navigation_left_dedicatedClouds": "Hosted Private Cloud", + "dedicatedCloud_tab_dashboard": "Informacje ogólne", + "navigation_left_vps": "Prywatne serwery wirtualne", + "navigation_left_exchanges": "Exchange", + "navigation_left_publicCloud": "Public Cloud", + "navigation_left_order_exchange": "Zamów platformę", + "navigation_left_licences": "Licencje", + "navigation_left_microsoft": "Microsoft", + "navigation_left_exchange": "Exchange", + "otrs_menu_assistance": "Pomoc", + "otrs_menu_assistance_new": "Potrzebujesz pomocy?", + "otrs_menu_all_guides": "Wszystkie przewodniki", + "otrs_menu_new_ticket": "Otwórz zgłoszenie", + "otrs_menu_list_ticket": "Lista moich zgłoszeń", + "otrs_menu_email_history": "Historia e-maili", + "otrs_menu_telephony_contact": "Pomoc telefoniczna", + "otrs_menu_chatbot": "Rozpocznij konwersację", + "otrs_menu_changelog": "Historia aktualizacji", + "otrs_service_category_CDN": "Content Delivery Network", + "otrs_menu_userAccount_1": "Witaj {{username}}", + "otrs_menu_userAccount_2": "Twoje konto", + "global_logout": "Wyloguj" +} diff --git a/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_pt_PT.json b/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..47acbb0407ab --- /dev/null +++ b/packages/manager/apps/billing/src/components/sidebar-menu/translations/Messages_pt_PT.json @@ -0,0 +1,38 @@ +{ + "navigation_left_search": "Recherche…", + "navigation_left_networks": "Rede", + "navigation_left_networks_other": "Redes", + "navigation_left_nas_and_cdn": "NAS e CDN", + "cdn_tab_statistics": "Estatística", + "navigation_left_vrack": "vRack", + "navigation_left_additional_ip": "IP suplementar", + "navigation_left_infrastructure": "Infraestruturas", + "navigation_left_infrastructure_1": "Infraestrutura", + "navigation_left_infrastructure_other": "Infraestruturas", + "navigation_left_ip": "IP", + "navigation_left_product_vrack": "vRack (rede privada)", + "navigation_left_product_nas": "NAS", + "navigation_left_dedicatedServers": "Servidores Dedicados", + "navigation_left_dedicatedClouds": "Hosted Private Cloud", + "dedicatedCloud_tab_dashboard": "Informações gerais", + "navigation_left_vps": "Servidores privados virtuais", + "navigation_left_exchanges": "Exchange", + "navigation_left_publicCloud": "Public Cloud", + "navigation_left_order_exchange": "Encomendar plataforma", + "navigation_left_licences": "Licenças", + "navigation_left_microsoft": "Microsoft", + "navigation_left_exchange": "Exchange", + "otrs_menu_assistance": "Assistência", + "otrs_menu_assistance_new": "Ajuda", + "otrs_menu_all_guides": "Manuais OVH", + "otrs_menu_new_ticket": "Criar um ticket", + "otrs_menu_list_ticket": "Lista de tickets", + "otrs_menu_email_history": "Histórico dos e-mails", + "otrs_menu_telephony_contact": "Assistência telefónica", + "otrs_menu_chatbot": "Iniciar uma conversa", + "otrs_menu_changelog": "Histórico das atualizações", + "otrs_service_category_CDN": "Content Delivery Network", + "otrs_menu_userAccount_1": "Olá, {{username}}", + "otrs_menu_userAccount_2": "a sua conta", + "global_logout": "Terminar sessão" +} diff --git a/packages/manager/apps/billing/src/css/fonts/glyphicons-halflings-regular.eot b/packages/manager/apps/billing/src/css/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 000000000000..b93a4953fff6 Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/glyphicons-halflings-regular.eot differ diff --git a/packages/manager/apps/billing/src/css/fonts/glyphicons-halflings-regular.svg b/packages/manager/apps/billing/src/css/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 000000000000..94fb5490a2ed --- /dev/null +++ b/packages/manager/apps/billing/src/css/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/manager/apps/billing/src/css/fonts/glyphicons-halflings-regular.ttf b/packages/manager/apps/billing/src/css/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 000000000000..1413fc609ab6 Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/glyphicons-halflings-regular.ttf differ diff --git a/packages/manager/apps/billing/src/css/fonts/glyphicons-halflings-regular.woff b/packages/manager/apps/billing/src/css/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 000000000000..9e612858f802 Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/glyphicons-halflings-regular.woff differ diff --git a/packages/manager/apps/billing/src/css/fonts/glyphicons-halflings-regular.woff2 b/packages/manager/apps/billing/src/css/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 000000000000..64539b54c375 Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/glyphicons-halflings-regular.woff2 differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/black/SourceSansPro-Black.woff b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/black/SourceSansPro-Black.woff new file mode 100644 index 000000000000..f1a663a7ed98 Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/black/SourceSansPro-Black.woff differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/black/SourceSansPro-Black.woff2 b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/black/SourceSansPro-Black.woff2 new file mode 100644 index 000000000000..d6f4b60e63a6 Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/black/SourceSansPro-Black.woff2 differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/black/SourceSansPro-BlackIt.woff b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/black/SourceSansPro-BlackIt.woff new file mode 100644 index 000000000000..1d7dfbdb29ea Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/black/SourceSansPro-BlackIt.woff differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/black/SourceSansPro-BlackIt.woff2 b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/black/SourceSansPro-BlackIt.woff2 new file mode 100644 index 000000000000..c52b3c80003f Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/black/SourceSansPro-BlackIt.woff2 differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/bold/SourceSansPro-Bold.woff b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/bold/SourceSansPro-Bold.woff new file mode 100644 index 000000000000..6700893c22f7 Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/bold/SourceSansPro-Bold.woff differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/bold/SourceSansPro-Bold.woff2 b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/bold/SourceSansPro-Bold.woff2 new file mode 100644 index 000000000000..7d7f34b9e966 Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/bold/SourceSansPro-Bold.woff2 differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/bold/SourceSansPro-BoldIt.woff b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/bold/SourceSansPro-BoldIt.woff new file mode 100644 index 000000000000..d5e4a0ff9fdc Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/bold/SourceSansPro-BoldIt.woff differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/bold/SourceSansPro-BoldIt.woff2 b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/bold/SourceSansPro-BoldIt.woff2 new file mode 100644 index 000000000000..4d14ef7ff071 Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/bold/SourceSansPro-BoldIt.woff2 differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/extra-light/SourceSansPro-ExtraLight.woff b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/extra-light/SourceSansPro-ExtraLight.woff new file mode 100644 index 000000000000..559b740812a4 Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/extra-light/SourceSansPro-ExtraLight.woff differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/extra-light/SourceSansPro-ExtraLight.woff2 b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/extra-light/SourceSansPro-ExtraLight.woff2 new file mode 100644 index 000000000000..bdb21cb439b6 Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/extra-light/SourceSansPro-ExtraLight.woff2 differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/extra-light/SourceSansPro-ExtraLightIt.woff b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/extra-light/SourceSansPro-ExtraLightIt.woff new file mode 100644 index 000000000000..e8fbeb8fe6d6 Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/extra-light/SourceSansPro-ExtraLightIt.woff differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/extra-light/SourceSansPro-ExtraLightIt.woff2 b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/extra-light/SourceSansPro-ExtraLightIt.woff2 new file mode 100644 index 000000000000..aee47e3513e5 Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/extra-light/SourceSansPro-ExtraLightIt.woff2 differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/light/SourceSansPro-Light.woff b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/light/SourceSansPro-Light.woff new file mode 100644 index 000000000000..10490ec5771f Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/light/SourceSansPro-Light.woff differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/light/SourceSansPro-Light.woff2 b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/light/SourceSansPro-Light.woff2 new file mode 100644 index 000000000000..2dd7ca3b1117 Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/light/SourceSansPro-Light.woff2 differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/light/SourceSansPro-LightIt.woff b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/light/SourceSansPro-LightIt.woff new file mode 100644 index 000000000000..13532d7d399d Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/light/SourceSansPro-LightIt.woff differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/light/SourceSansPro-LightIt.woff2 b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/light/SourceSansPro-LightIt.woff2 new file mode 100644 index 000000000000..5ee08bea9963 Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/light/SourceSansPro-LightIt.woff2 differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/regular/SourceSansPro-It.woff b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/regular/SourceSansPro-It.woff new file mode 100644 index 000000000000..4b8af4154708 Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/regular/SourceSansPro-It.woff differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/regular/SourceSansPro-It.woff2 b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/regular/SourceSansPro-It.woff2 new file mode 100644 index 000000000000..00e212c55e47 Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/regular/SourceSansPro-It.woff2 differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/regular/SourceSansPro-Regular.woff b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/regular/SourceSansPro-Regular.woff new file mode 100644 index 000000000000..04739e7fbaaa Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/regular/SourceSansPro-Regular.woff differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/regular/SourceSansPro-Regular.woff2 b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/regular/SourceSansPro-Regular.woff2 new file mode 100644 index 000000000000..d76e39091f72 Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/regular/SourceSansPro-Regular.woff2 differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/semibold/SourceSansPro-Semibold.woff b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/semibold/SourceSansPro-Semibold.woff new file mode 100644 index 000000000000..17d744d1b15e Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/semibold/SourceSansPro-Semibold.woff differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/semibold/SourceSansPro-Semibold.woff2 b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/semibold/SourceSansPro-Semibold.woff2 new file mode 100644 index 000000000000..8c27c1840ede Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/semibold/SourceSansPro-Semibold.woff2 differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/semibold/SourceSansPro-SemiboldIt.woff b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/semibold/SourceSansPro-SemiboldIt.woff new file mode 100644 index 000000000000..a5b5e1e1d1e2 Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/semibold/SourceSansPro-SemiboldIt.woff differ diff --git a/packages/manager/apps/billing/src/css/fonts/source-sans-pro/semibold/SourceSansPro-SemiboldIt.woff2 b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/semibold/SourceSansPro-SemiboldIt.woff2 new file mode 100644 index 000000000000..f963d7810d45 Binary files /dev/null and b/packages/manager/apps/billing/src/css/fonts/source-sans-pro/semibold/SourceSansPro-SemiboldIt.woff2 differ diff --git a/packages/manager/apps/billing/src/css/less/common/accordion.less b/packages/manager/apps/billing/src/css/less/common/accordion.less new file mode 100644 index 000000000000..42e811eb6ce2 --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/accordion.less @@ -0,0 +1,11 @@ +.panel-accordion { + .panel-heading a::after { + font-family: 'FontAwesome'; /* stylelint-disable-line */ + content: '\f078'; + float: right; + } + + .panel-heading a.collapsed::after { + content: '\f054'; + } +} diff --git a/packages/manager/apps/billing/src/css/less/common/animation.less b/packages/manager/apps/billing/src/css/less/common/animation.less new file mode 100644 index 000000000000..ecba7261bcf7 --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/animation.less @@ -0,0 +1,11 @@ +.slow-bounce { + animation-delay: 0.5s; + -webkit-animation-delay: 0.5s; + -moz-animation-delay: 0.5s; +} + +.fast-fade-in-down { + animation-duration: 0.4s; + -webkit-animation-duration: 0.4s; + -moz-animation-duration: 0.4s; +} diff --git a/packages/manager/apps/billing/src/css/less/common/autocomplete.less b/packages/manager/apps/billing/src/css/less/common/autocomplete.less new file mode 100644 index 000000000000..235dc5f82cfd --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/autocomplete.less @@ -0,0 +1,33 @@ +.type-off form { + margin: 0; +} + +.type-off-suggestions { + .background-color-fn(@defaultbackground); + + padding: 0; + box-shadow: 0 5px 10px @defaultbuttonshadow; + max-height: 300px; + min-width: 135px; + overflow: auto; + + > ul { + margin: 0; + padding: 0; + } +} + +.type-off-item { + list-style: none; + + p { + padding: 0 15px; + margin: 0; + cursor: pointer; + } + + &.active { + .background-color-fn(@defaultlineselectedbackground); + .color-fn(@defaultlineselectedfont); + } +} diff --git a/packages/manager/apps/billing/src/css/less/common/button.less b/packages/manager/apps/billing/src/css/less/common/button.less new file mode 100644 index 000000000000..c203d382d065 --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/button.less @@ -0,0 +1,28 @@ +// // +// // BUTTON +// // -------------------------------------------------- +// +.btn { + &.btn-icon, + &.btn-icon:hover, + &.btn-icon:focus, + &.btn-icon:active { + padding: 0 4px; + border-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + text-overflow: clip; + } + + &.btn-icon:disabled { + &:extend(.btn:disabled); + + opacity: 0.65; + } +} diff --git a/packages/manager/apps/billing/src/css/less/common/buttonIcons.less b/packages/manager/apps/billing/src/css/less/common/buttonIcons.less new file mode 100644 index 000000000000..e21130f817fc --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/buttonIcons.less @@ -0,0 +1,202 @@ +/* stylelint-disable */ +// +// Icons +// -------------------------------------------------- + +// .mainContainer i { +#main-container i, +[class*="module-"][class*="-container"] i { + + // Line 0 + // -------------------------------------------------- + &.icon-database-add, + &.icon-order-datastore { .icon_position(1, 0); } + &.icon-storage-order { .icon_position(2, 0); } + + &.icon-activate-backup, + &.icon-veeam-order { .icon_position(5, 0); } + &.icon-nas-partition-add { .icon_position(7, 0); } + &.icon-nas-partition-delete { .icon_position(8, 0); } + &.icon-nas-access-add { .icon_position(9, 0); } + &.icon-nas-access-delete { .icon_position(10, 0); } + &.icon-ip-import { .icon_position(11, 0); } + + &.icon-password-policy, + &.icon-backupftp-order { .icon_position(14, 0); } + &.icon-disable-backup { .icon_position(16, 0); } + + &.icon-cdn-website-zone-unlink, + &.icon-cdn-website-zone-link, + &.icon-cdn-website-backend-unlink, + &.icon-cdn-website-backend-link, + &.icon-cdn-website-renew, + &.icon-cdn-website-ssl-order, + &.icon-cdn-website-domain-add, + &.icon-cdn-website-domain-delete, + &.icon-cdn-website-domain-flush, + &.icon-disclaimer-exchange, + &.icon-active-backup, + &.icon-activate-backup { .icon_position(17, 0); } + &.icon-active-spla { .icon_position(18, 0); } + &.icon-kvm-vps { .icon_position(19, 0); } + + // Line 1 + // -------------------------------------------------- + &.icon-ipmi-restart { .icon_position(0, 1); } + &.icon-ipmi-delete { .icon_position(1, 1); } + &.icon-ipmi-test { .icon_position(2, 1); } + &.icon-ipmi-java { .icon_position(3, 1); } + &.icon-ipmi-ssh { .icon_position(4, 1); } + + &.icon-ipmi-navigateur, + &.icon-migrate { .icon_position(5, 1); } + + &.icon-server-renew, + &.icon-renew-domain, + &.icon-cdn-website-renew, + &.icon-renew { .icon_position(6, 1); } + + &.icon-netboot-server, + &.icon-rescue-vps { .icon_position(7, 1); } + &.icon-outlook-exchange { .icon_position(8, 1); } + &.icon-outlook-add-exchange { .icon_position(9, 1); } + &.icon-bandwidth-order-server { .icon_position(10, 1); } + &.icon-exchange-externalcontact-modify { .icon_position(11, 1); } + &.icon-exchange-externalcontact-delete { .icon_position(12, 1); } + &.icon-add-usb { .icon_position(13, 1); } + &.icon-bandwidth-order-server { .icon_position(10, 1); } + &.icon-user-vsphere { .icon_position(19, 1); } + + // Line 2 + // -------------------------------------------------- + + &.icon-order-host { .icon_position(0, 2); } + &.icon-webapp-order { .icon_position(1, 2); } + &.icon-add-alias { .icon_position(2, 2); } + &.icon-resource { .icon_position(4, 2); } + &.icon-config-group { .icon_position(6, 2); } + &.icon-delete-group { .icon_position(7, 2); } + &.icon-add-group { .icon_position(8, 2); } + &.icon-add-database { .icon_position(10, 2); } + &.icon-ftp-explorer { .icon_position(13, 2); } + &.icon-migration { .icon_position(15, 2); } + + &.icon-ftp-change-password, + &.icon-change-password { .icon_position(16, 2); } + &.icon-add-datacenter { .icon_position(18, 2); } + + // Line 3 + // -------------------------------------------------- + &.icon-order-licence, + &.icon-order-licenses { .icon_position(0, 3); } + &.icon-server-firewall-asa-activate { .icon_position(2, 3); } + + &.icon-server-firewall-asa-desactivate, + &.icon-firewall-rule-delete { .icon_position(3, 3); } + &.icon-server-firewall-asa-order { .icon_position(4, 3); } + &.icon-backupftp-activate { .icon_position(5, 3); } + &.icon-backupftp-delete { .icon_position(6, 3); } + &.icon-backupftp-password { .icon_position(7, 3); } + + &.icon-order-block, + &.icon-order-bloc, + &.icon-purchase-upgrade { .icon_position(8, 3); } + &.icon-add-ip { .icon_position(9, 3); } + &.icon-delete-ip { .icon_position(10, 3); } + &.icon-go-vscope { .icon_position(11, 3); } + &.icon-logout-policy { .icon_position(14, 3); } + &.icon-change-nb-simultaneous-connection { .icon_position(16, 3); } + &.icon-chronometer { .icon_position(17, 3); } + + // Line 4 + // -------------------------------------------------- + &.icon-delete-domain-on-dns, + &.icon-delete-domain-on-exchange, + &.icon-domain-delete { .icon_position(2, 4); } + + &.icon-add-domain-on-exchange, + &.icon-add-domain-on-hosting, + &.icon-add-domain { .icon_position(3, 4); } + &.icon-associate-domain { .icon_position(5, 4); } + &.icon-backupftp-access { .icon_position(6, 4); } + &.icon-delete-entry-dns { .icon_position(7, 4); } + &.icon-add-entry-dns { .icon_position(9, 4); } + &.icon-reset-config-dns { .icon_position(11, 4); } + &.icon-secondary-dns-add { .icon_position(13, 4); } + + &.icon-order, + &.icon-access-policy { .icon_position(15, 4); } + &.icon-change-timeout { .icon_position(17, 4); } + &.icon-user { .icon_position(19, 4); } + + // Line 5 + // -------------------------------------------------- + &.icon-mitigation-active { .icon_position(0, 5); } + + &.icon-antispam-disable, + &.icon-mitigation-disable { .icon_position(1, 5); } + + &.icon-domain-flush, + &.icon-ssl-remove { .icon_position(5, 5); } + &.icon-ssl-add { .icon_position(6, 5); } + &.icon-reinstall-server { .icon_position(7, 5); } + &.icon-server-monitoring-deactivate { .icon_position(8, 5); } + &.icon-server-monitoring-activate { .icon_position(9, 5); } + &.icon-domain-unbypass { .icon_position(10, 5); } + &.icon-domain-bypass { .icon_position(11, 5); } + + &.icon-add-cron, + &.icon-cacherule-create { .icon_position(15, 5); } + &.icon-cacherule-order { .icon_position(16, 5); } + &.icon-cacherule-deactivate-all { .icon_position(17, 5); } + &.icon-cacherule-activate-all { .icon_position(18, 5); } + + // Line 6 + // -------------------------------------------------- + &.icon-backend-update { .icon_position(0, 6); } + + &.icon-configure-account-exchange, + &.icon-exchange-config { .icon_position(1, 6); } + + &.icon-add-account-exchange, + &.icon-new-message { .icon_position(2, 6); } + &.icon-secondary-dns-delete { .icon_position(3 ,6); } + &.icon-ip-description { .icon_position(4 ,6); } + + &.icon-traffic-order, + &.icon-bandwith-order { .icon_position(7, 6); } + &.icon-monitoring { .icon_position(8, 6); } + &.icon-reboot-server { .icon_position(9, 6); } + &.icon-configure-protection { .icon_position(13, 6); } + + &.icon-mass-owo, + &.icon-configure-whois { .icon_position(14, 6); } + + &.icon-exchange-externalcontact-add, + &.icon-add_user { .icon_position(15, 6); } + &.icon-prouse-server { .icon_position(16, 6); } + &.icon-delete-account-exchange { .icon_position(17, 6); } + &.icon-message { .icon_position(18, 6); } + + // Line 7 + // -------------------------------------------------- + + &.icon-renew-ssl-exchange { .icon_position(0, 7); } + &.icon-domain { .icon_position(1, 7); } + &.icon-create-redirection { .icon_position(2, 7); } + &.icon-modify-domain-on-exchange { .icon_position(3, 7); } + &.icon-export-pst { .icon_position(5, 7); } + &.icon-activate-snapshot { .icon_position(10, 7); } + &.icon-configure-service-exchange { .icon_position(14, 7); } + &.icon-stop-service-exchange { .icon_position(15, 7); } + &.icon-upgrade { .icon_position(19, 7); } + + // Line 8 + // -------------------------------------------------- + &.icon-billing-config { .icon_position(0, 8); } + &.icon-firewall-rule-add { .icon_position(1, 8); } + &.icon-calendar2 { .icon_position(2, 8); } + &.icon-activate-dnsanycast { .icon_position(3, 8); } + &.icon-export-file { .icon_position(4, 8); } +} +/* stylelint-enable */ diff --git a/packages/manager/apps/billing/src/css/less/common/countryIcon.less b/packages/manager/apps/billing/src/css/less/common/countryIcon.less new file mode 100644 index 000000000000..a9037318ed08 --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/countryIcon.less @@ -0,0 +1,115 @@ +// .mainContainer i { +#main-container i { + &.icon-little-FR, + &.icon-little-CA, + &.icon-little-UK, + &.icon-little-PL, + &.icon-little-IT, + &.icon-little-ES, + &.icon-little-DE, + &.icon-little-CN, + &.icon-little-US { + width: 15px; + height: 11px; + background: transparent url('../../../images/flags_little_os.jpg') no-repeat + 0 0; + margin: 4px 10px 0 20px; + } + + &.icon-little-FR { + background-position: -75px 0; + } + + &.icon-little-CA { + background-position: -15px 0; + } + + &.icon-little-IT { + background-position: -60px 0; + } + + &.icon-little-ES { + background-position: -30px 0; + } + + &.icon-little-DE { + background-position: -90px 0; + } + + &.icon-little-UK { + background-position: -105px 0; + } + + &.icon-little-PL { + background-position: -120px 0; + } + + &.icon-little-CN { + background-position: 0 0; + } + + &.icon-little-US { + background-position: -45px 0; + } + + &.icon-CN, + &.icon-CA, + &.icon-ES, + &.icon-US, + &.icon-IT, + &.icon-FR, + &.icon-DE, + &.icon-UK, + &.icon-PL, + &.icon-AU, + &.icon-SG { + width: 30px; + height: 22px; + background: url('../../../images/flags_os.png') no-repeat 0 0; + margin: 0 10px 0 0; + } + + &.icon-CN { + background-position: 0 0; + } + + &.icon-CA { + background-position: -30px 0; + } + + &.icon-ES { + background-position: -60px 0; + } + + &.icon-US { + background-position: -90px 0; + } + + &.icon-IT { + background-position: -120px 0; + } + + &.icon-FR { + background-position: -150px 0; + } + + &.icon-DE { + background-position: -180px 0; + } + + &.icon-UK { + background-position: -210px 0; + } + + &.icon-PL { + background-position: -240px 0; + } + + &.icon-AU { + background-position: -270px 0; + } + + &.icon-SG { + background-position: -300px 0; + } +} diff --git a/packages/manager/apps/billing/src/css/less/common/distributionIcon.less b/packages/manager/apps/billing/src/css/less/common/distributionIcon.less new file mode 100644 index 000000000000..b965d40e4b57 --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/distributionIcon.less @@ -0,0 +1,70 @@ +// .mainContainer +#main-container i { + &.icon-ubuntu1204-server, + &.icon-centos6, + &.icon-debian6, + &.icon-debian7, + &.icon-lamp, + &.icon-drupal722, + &.icon-prestashop154, + &.icon-wordpress351, + &.icon-plesk11530, + &.icon-cpanel1136, + &.icon-win2012-std, + &.icon-win2008r2-std, + &.icon-win2008r2-web, + &.icon-win2008R2-std, + &.icon-win2008R2-web { + display: block; + width: 30px; + height: 37px; + float: left; + background: transparent url('../../../images/flags_os.png') no-repeat 0 0; + margin: -5px 10px 0 0; + } + + &.icon-ubuntu1204-server { + background-position: -60px -22px; + } + + &.icon-centos6 { + background-position: 0 -22px; + } + + &.icon-debian6, + &.icon-debian7, + &.icon-lamp { + background-position: -30px -22px; + } + + &.icon-win2012-std { + background-position: -120px -22px; + } + + &.icon-drupal722 { + background-position: -150px -22px; + } + + &.icon-prestashop154 { + background-position: -210px -22px; + } + + &.icon-wordpress351 { + background-position: -180px -22px; + } + + &.icon-plesk11530 { + background-position: -240px -22px; + } + + &.icon-cpanel1136 { + background-position: -270px -22px; + } + + &.icon-win2008r2-std, + &.icon-win2008r2-web, + &.icon-win2008R2-std, + &.icon-win2008R2-web { + background-position: -90px -22px; + } +} diff --git a/packages/manager/apps/billing/src/css/less/common/download.less b/packages/manager/apps/billing/src/css/less/common/download.less new file mode 100644 index 000000000000..5e78141376f8 --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/download.less @@ -0,0 +1,22 @@ +.download-icon-container { + margin: 0 auto 20px; + width: 120px; + padding-bottom: 20px; + border-bottom: 3px solid #8bcfed; + + .download-icon { + display: flex; + justify-content: center; + align-items: center; + padding: 20px; + height: 120px; + font-size: 2.5rem; + box-sizing: border-box; + border: 3px solid #8bcfed; + border-radius: 50%; + + & > span { + color: #162843; + } + } +} diff --git a/packages/manager/apps/billing/src/css/less/common/global.less b/packages/manager/apps/billing/src/css/less/common/global.less new file mode 100644 index 000000000000..c871d4333f26 --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/global.less @@ -0,0 +1,161 @@ +html, +body { + margin: 0; + padding: 0; + height: 100%; +} + +body { + overflow-x: hidden; + background-color: @defaultbackground; +} + +select, +textarea, +input[type='text'], +input[type='password'], +input[type='datetime'], +input[type='datetime-local'], +input[type='date'], +input[type='month'], +input[type='time'], +input[type='week'], +input[type='number'], +input[type='email'], +input[type='url'], +input[type='search'], +input[type='tel'], +input[type='color'], +.uneditable-input { + margin-bottom: 0; +} + +select:focus, +input:focus, +.wizard-container:focus { + outline: none; + -moz-outline: none; +} + +// +// MODULE CONTAINER +// TODO DELETE +// -------------------------------------------------- + +.module-billing-container, +.module-useraccount-container { + margin-left: -305px; + + .popover { + position: fixed; + padding: 0; + } +} + +.module-useraccount-menu { + width: 305px; + z-index: 2; +} + +.module-billing-sections-container, +.module-useraccount-sections-container { + margin-left: 305px; +} + +// +// MAIN CONTAINER +// -------------------------------------------------- +.mainContainer { + // height: 100%; + // overflow: auto; + // position: absolute; + // left: 306px; + // top: 0; + // right: 0; + + .oui-message { + margin: 4px; + } + + .browser-alert__container { + margin: 4px; + } +} + +#main-container { + .wreckme { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + } +} + +.alert-account { + position: absolute; + top: 28px; + left: 261px; + right: 0; + padding: 5px 10px; + font-size: 12px; + color: #b94a48; + background-color: #f2dede; + border-bottom: 1px solid #eed3d7; + + p { + margin: 0; + } +} + +.warning-account { + position: absolute; + top: 28px; + left: 261px; + right: 0; + padding: 5px 10px; + font-size: 12px; + color: #c09853; + background-color: #fcf8e3; + border-bottom: 1px solid #fbeed5; + + p { + margin: 0; + } +} + +.alert.me-alerts { + display: block; + position: relative; + margin: 4px 0 0 0; + padding: 4px 15px; + border-radius: 0; + z-index: 1; + font-size: 12px; + + ul { + padding-left: 18px; + margin: 0; + } + + .close { + display: none; + } +} + +.col-container, +.row-container { + display: flex; + overflow: hidden; +} + +.col-container { + padding-top: @navbar_height; + flex-direction: column; + height: 100%; + overflow: hidden; + + .col-item { + display: flex; + height: 100%; + position: relative; + } +} diff --git a/packages/manager/apps/billing/src/css/less/common/graphicalTools.less b/packages/manager/apps/billing/src/css/less/common/graphicalTools.less new file mode 100644 index 000000000000..643694f63e72 --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/graphicalTools.less @@ -0,0 +1,26 @@ +.availableIp-breadcrumb, +.progressBarElementCounter-breadcrumb { + display: inline-block; + height: 5px; + margin-right: 5px; + width: 6px; + -webkit-border-radius: 4px; + border-radius: 4px; + opacity: 0.2; + background-color: @defaultpaginationactivefont; + + &.active { + opacity: 1; + } + + &:first-child { + margin-left: 10px; + } +} + +.progress.small-progress { + height: 9px; + margin-bottom: 0; + margin-top: 4px; + width: 100px; +} diff --git a/packages/manager/apps/billing/src/css/less/common/header.less b/packages/manager/apps/billing/src/css/less/common/header.less new file mode 100644 index 000000000000..db199a31498f --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/header.less @@ -0,0 +1,279 @@ +/* stylelint-disable */ +// +// HEADER +// -------------------------------------------------- + +.navbar { + &#header-top-navigation { + position: relative; + margin: 0; + z-index: 3; + } + + .navbar-inner { + border-color: @nav_border_const; + + // Stargate + &.stargate { + background: @navbar_bg; + border: 0; + border-radius: 0; + + .nav { + display: inline-block; + margin: 0 5px 0 0; + + &:nth-last-child(1) { + margin-right: 0; + + > li > a { + padding-right: 0; + } + } + + &.nav-stargate { + li { + a { + font-size: 14px; + letter-spacing: 0.015em; + } + } + } + + li { + font-size: 12px; + + a:hover, + a:focus { + background: @navbar_hover; + } + + &.logo { + a { + line-height: 0; + padding: 9px 9px 9px 0; + + &:hover, + &:focus { + background-color: transparent; + } + + svg { + width: 44px; + height: 26px; + overflow: hidden; + } + } + } + + a { + color: @white_const; + text-shadow: none; + font-size: @fontsizedefault; + padding: 0 15px; + background: 0 0; + border: none; + line-height: @navbar_height; + } + + &.selected { + font-weight: bold; + } + + &.univers-cloud { + &.selected a, + a:hover, + a:focus { + color: @cloud; + } + } + + &.univers-dedicated { + &.selected a, + a:hover, + a:focus { + color: @dedicated; + } + } + + &.univers-telecom { + &.selected a, + a:hover, + a:focus { + color: @telecom; + } + } + + &.univers-web { + &.selected a, + a:hover, + a:focus { + color: @web; + } + } + + &.univers-sunrise { + &.selected a, + a:hover, + a:focus { + color: @sunrise; + } + } + + &.univers-partners { + &.selected a, + a:hover, + a:focus { + color: @partners; + } + } + + &.older { + a { + color: @older_univers; + font-size: 10px; + + &:hover { + color: @white_const; + } + } + } + + &.dropdown { + //overload boostrap style + .dropdown-toggle { + .caret { + display: none; + border-top-color: @white_const; + border-bottom-color: @white_const; + margin: 20px 0 0 1px; + } + } + //overload boostrap style + &.open, + &.active, + &.open.active { + .dropdown-toggle { + background-color: @nav_active_const; + color: @white_const; + } + } + + .dropdown-menu { + border-radius: 0; + + &::before, + &::after { + border: none !important; + content: none !important; + } + + li { + &.divider { + margin-top: 0; + margin-bottom: 0; + } + + a { + color: @univers; + cursor: pointer; + font-size: 12px; + + i { + width: 18px; + height: 18px; + float: left; + background-repeat: no-repeat; + background-color: transparent; + margin: 12px 7px 0 0; + background-image: url('../../../images/header/icn_header_profil.png'); + + &.icon_feedback { + background-position: 0 0; + } + + &.icon_changelog { + background-position: -18px 0; + } + + &.icon_disconnect { + background-position: -36px 0; + } + + &.icon_preference { + background-position: -72px 0; + } + } + + span { + font-weight: normal; + } + + &:hover, + &:focus { + background-color: @univers; + color: @white_const; + background-image: none; + + i { + &.icon_feedback { + background-position: 0 100%; + } + + &.icon_changelog { + background-position: -18px 100%; + } + + &.icon_disconnect { + background-position: -36px 100%; + } + + &.icon_preference { + background-position: -72px 100%; + } + } + } + } + } + } + } + } + } + } + + // Univers menu + &.univers { + background: url('../../../images/login-bg.png') repeat-x; + + .brand { + width: 210px; + } + + .nav { + padding-top: 37px; + + li { + a { + color: @white_const; + font-weight: bold; + font-size: @fontsizelarge; + text-shadow: none; + } + + &.selected a, + &:hover a, + &.active a { + color: @white_const; + } + + &.active a { + box-shadow: none !important; + margin-left: 2px; + background-color: inherit; + } + } + } + } + } +} +/* stylelint-enable */ diff --git a/packages/manager/apps/billing/src/css/less/common/icon.less b/packages/manager/apps/billing/src/css/less/common/icon.less new file mode 100644 index 000000000000..ec9f7e6bb123 --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/icon.less @@ -0,0 +1,121 @@ +//Custome icones + +.icon-white { + background-image: url('../../../images/glyphicons-halflings-white.png'); +} + +.icon-warning, +.icon-check { + width: 16px; + height: 16px; + background-repeat: no-repeat; + background-color: transparent; +} + +.icon-warning { + background-image: url('../../../images/icn/warning-jaune.png'); + background-position: 0 0; +} + +.icon-check { + background-image: url('../../../images/icn/icn-check.png'); +} + +.icon-back-detail, +.icon-back-detail:hover { + width: 32px; + height: 32px; + background-image: url('../../../images/back-icon.png'); + background-position: 0; +} + +.icon-product, +i.icon-ip, +i.icon-save, +i.icon-licences, +i.icn-exchange-hosted, +i.icon-protection-domain, +i.icon-whois-domain, +i.icon-main-dns, +i.icon-second-dns, +i.icon-redirection-domain, +i.icon-sous-domain, +i.icon-basket-small, +i.icon-btn-help { + width: 30px; + height: 22px; + background-color: transparent; + background-repeat: no-repeat; + background-position: 0 0; + display: block; + float: left; + margin: 0 6px 0 0; +} + +//i.icon-save { background-image : url('../../../images/icn/icn_save_blue.png');} +//i.icon-licences { background-image : url('../../../images/icn/icn_licences_blue.png');} +//i.icn-exchange-hosted { background-image: url('../../../images/icn/icn_exchange_hosted_blue.png');} +//i.icon-ip { background-image : url('../../../images/icn/icn_ip_blue.png');} +//i.icon-protection-domain { background-image: url('../../../images/icn/icn_protection_domain.png'); } +//i.icon-whois-domain { background-image: url('../../../images/icn/icn_whois_domain.png'); } +//i.icon-main-dns { background-image: url('../../../images/icn/icn_main_dns.png'); } +//i.icon-second-dns { background-image: url('../../../images/icn/icn_second_dns.png'); } +//i.icon-redirection-domain { background-image: url('../../../images/icn/icn_redirection_web.png'); } +//i.icon-sous-domain { background-image: url('../../../images/icn/icn_sous_domain.png'); } +//i.icon-housing { background-image: url('../../../images/left_menu/icn-housing.svg'); } +//i.icon-basket-small { background-image: url('../../../images/icn/icn-basket-small.png'); background-position: 0 0;} +//i.icon-btn-help { background-image: url('../../../images/icn/icn-btn-help-small.png'); background-position: 0 0; width: 20px; height: 20px;} + +.icon-action-multiple, +.icon-option { + background: url('../../../images/icn/icn_action_multiple.png') no-repeat; + width: 18px; + height: 18px; +} + +i.state-pending, +i.state-stopped, +i.state-error, +i.state-cancel { + margin: 0 auto; + display: block; + width: 17px; + height: 16px; +} + +#main-container i.icon-option-delete { + width: 35px; + height: 36px; + background: transparent url(../../../images/icn/icn-option-delete.png) + no-repeat 0 center; +} + +//From ovh-font +i.icon-newtab, +i.ovh-font-arrow-down, +i.ovh-font-arrow-left, +i.ovh-font-arrow-right, +i.ovh-font-arrow-up { + width: 18px; + height: 18px; +} + +i.icon-newtab { + background: url('../../../images/icn/newtab.svg') no-repeat; +} + +i.icon-arrow-down { + background: url('../../../images/icn/arrow/arrow-down.svg') no-repeat; +} + +i.icon-arrow-left { + background: url('../../../images/icn/arrow/arrow-left.svg') no-repeat; +} + +i.icon-arrow-right { + background: url('../../../images/icn/arrow/arrow-right.svg') no-repeat; +} + +i.icon-arrow-up { + background: url('../../../images/icn/arrow/arrow-up.svg') no-repeat; +} diff --git a/packages/manager/apps/billing/src/css/less/common/informationBlock.less b/packages/manager/apps/billing/src/css/less/common/informationBlock.less new file mode 100644 index 000000000000..c2ab74b6166a --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/informationBlock.less @@ -0,0 +1,14 @@ +// Charts Search Bar +.information-block { + height: 50px; + border: 1px solid; + .background-color-fn(@barblockbackground); + .color-fn(@barblockfont); + .border-color-fn(@barblockborder); + .rounded(@radius_const); + // .box-shadow( 2px 2px 2px @grey3); + + .options { + padding: 10px 0 0 10px; + } +} diff --git a/packages/manager/apps/billing/src/css/less/common/modal.less b/packages/manager/apps/billing/src/css/less/common/modal.less new file mode 100644 index 000000000000..8819731e6c7d --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/modal.less @@ -0,0 +1,10 @@ +.oui-modal { + a.oui-button, + a.oui-modal__close-button { + color: inherit; + + &.oui-button_secondary { + background-color: inherit; + } + } +} diff --git a/packages/manager/apps/billing/src/css/less/common/navbar.less b/packages/manager/apps/billing/src/css/less/common/navbar.less new file mode 100644 index 000000000000..5c0c2196ecf3 --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/navbar.less @@ -0,0 +1,36 @@ +.left-0 { + left: 0; +} + +.skipnav a { + width: 1px; + height: 1px; + position: fixed; + left: -100%; + top: auto; + overflow: hidden; + z-index: -1; + + &:focus, + &:active { + width: auto; + height: auto; + left: 0.625rem; + top: 0.625rem; + overflow: auto; + outline-width: 1px !important; + outline-style: dotted !important; + outline-color: initial !important; + outline-offset: -2px !important; + background-color: #fff; + z-index: 1100; + } +} + +.skiptarget { + width: 1px; + height: 1px; + overflow: hidden; + float: right; + position: absolute; +} diff --git a/packages/manager/apps/billing/src/css/less/common/popover.less b/packages/manager/apps/billing/src/css/less/common/popover.less new file mode 100644 index 000000000000..8be8658d2674 --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/popover.less @@ -0,0 +1,58 @@ +/****************** + POPOVER +******************/ + +// .mainContainer { +#main-container { + .popover { + position: fixed; + padding: 0; + + .popover-title { + color: @defaultlineheadfont; + background-color: @defaultlineheadbackground; + font-weight: bold; + font-size: @fontsizedefault; + } + + .popover-content { + &, + p, + span { + font-weight: normal; + background-color: @defaultbackground; + color: @defaultpopoverfont; + + .bold, + .bold:hover { + font-weight: bold !important; + } + } + + .popover-menu { + a { + text-decoration: none; + color: inherit; + display: block; + cursor: pointer; + padding: 2px 10px; + text-align: left; + + &:hover { + color: @defaultlineselectedfont; + background-color: @defaultlineselectedbackground; + } + + &.disabled:hover { + background-color: @defaultbackground; + color: @defaultpopoverfont; + } + } + } + } + + &.bottom .arrow::after { + border-bottom-color: @defaultlineheadbackground; + } + } +} diff --git a/packages/manager/apps/billing/src/css/less/common/progressBarWithText.less b/packages/manager/apps/billing/src/css/less/common/progressBarWithText.less new file mode 100644 index 000000000000..d4e50e8bc286 --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/progressBarWithText.less @@ -0,0 +1,20 @@ +// Add centered text in the bootstrap 2 progress bar + +.progress-text { + position: relative; + + span { + position: absolute; + top: 0; + z-index: 2; + text-align: center; + width: 100%; + color: #fff; + text-shadow: 1px 1px 1px #333; + } +} + +.bar-text { + z-index: 1; + position: absolute; +} diff --git a/packages/manager/apps/billing/src/css/less/common/searchbar.less b/packages/manager/apps/billing/src/css/less/common/searchbar.less new file mode 100644 index 000000000000..bb7fd466fc6b --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/searchbar.less @@ -0,0 +1,110 @@ +// +// SEARCHBAR +// -------------------------------------------------- + +.form-search { + margin-bottom: 10px; + + .input-append { + input { + font-size: @fontsizedefault; + color: @barformfont; + } + + span.add-on { + padding: 0; + width: 28px; + height: 28px; + + i { + margin-top: 6px; + + &.icon-remove { + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); + } + + &.icon-remove:hover { + opacity: 0.8; + filter: alpha(opacity=80); + } + } + } + } +} + +.sidebar { + .form-search { + padding: 20px; + margin: 0; + + .search-form-selected { + span, + input { + border-color: #8396aa !important; + color: #fff; + } + } + + .input-append { + display: table; + width: 100%; + + input { + width: 100%; + height: 22px; + padding: 8px 0; + display: table-cell; + background: transparent; + color: #fff; + border-left: 0; + border-top: solid 2px #5c6980; + border-bottom: solid 2px #5c6980; + border-right: 0; + transition: none; + box-shadow: none; + + &::-webkit-input-placeholder { + color: #9ba0aa; + } + + &:-ms-input-placeholder { + color: #9ba0aa; + } + + /* stylelint-disable-next-line no-descending-specificity */ + &::-moz-placeholder { + color: #9ba0aa; + } + + &:-moz-placeholder { + color: #9ba0aa; + } + } + + span.add-on { + padding: 8px 0; + width: 30px; + height: 22px; + display: table-cell; + background-color: transparent; + border: solid 2px #5c6980; + + &.before { + border-right: 0; + } + + &.after { + border-left: 0; + } + + i { + margin: 0; + color: #9ba0aa; + text-shadow: none; + } + } + } + } +} diff --git a/packages/manager/apps/billing/src/css/less/common/selectList.less b/packages/manager/apps/billing/src/css/less/common/selectList.less new file mode 100644 index 000000000000..514367250dfc --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/selectList.less @@ -0,0 +1,20 @@ +ul.selectList { + width: 60%; + margin: 10px auto 20px auto; + background-color: @defaultbackground; + border: solid 1px @barblockborder; + max-height: 150px; + overflow-y: scroll; + + li { + line-height: 24px; + font-size: 12px; + cursor: pointer; + padding-left: 10px; + + &.lineSelected { + background-color: @defaultlineselectedbackground; + color: @defaultlineselectedfont; + } + } +} diff --git a/packages/manager/apps/billing/src/css/less/common/serviceIcon.less b/packages/manager/apps/billing/src/css/less/common/serviceIcon.less new file mode 100644 index 000000000000..a341b1555f59 --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/serviceIcon.less @@ -0,0 +1,66 @@ +i.icon-data, +i.icon-server, +i.icon-housing, +i.icon-cdn, +i.icon-vrack, +i.icon-domain, +i.icon-nas, +i.icon-vps, +i.icon-ip, +i.icon-save, +i.icon-licences, +i.icon-cdnwebstorage { + width: 30px; + height: 22px; + background-color: transparent; + background-repeat: no-repeat; + background-position: 0 0; + display: block; + float: left; + margin: 0 6px 0 0; +} + +i.icon-server { + background-image: url('../../../images/icn/icn-server.png'); +} + +i.icon-housing { + background-image: url('../../../images/icn/icn-housing.svg'); +} + +i.icon-cdn, +i.icon-domain { + background-image: url('../../../images/icn/icn-cdn.png'); +} + +i.icon-domain { + background-image: url('../../../images/icn/icn_domain_purple.png'); +} + +i.icon-vrack { + background-image: url('../../../images/icn/icn-vrack.png'); +} + +i.icon-nas { + background-image: url('../../../images/icn/icn-nas.png'); +} + +i.icon-vps { + background-image: url('../../../images/icn/icn_vps_blue.png'); +} + +i.icon-ip { + background-image: url('../../../images/icn/icn_ip_blue.png'); +} + +i.icon-save { + background-image: url('../../../images/icn/icn_save_blue.png'); +} + +i.icon-licences { + background-image: url('../../../images/icn/icn_licences_blue.png'); +} + +i.icon-cdnwebstorage { + //background-image : url("../images/icn/icn-cdn-webstorage.png"); +} diff --git a/packages/manager/apps/billing/src/css/less/common/table.less b/packages/manager/apps/billing/src/css/less/common/table.less new file mode 100644 index 000000000000..081cd5967533 --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/table.less @@ -0,0 +1,81 @@ +// +// TABLE +// -------------------------------------------------- + +table { + // TODO Move to pretty? + .dropdown-menu li { + cursor: pointer; + padding: 3px 0; + + &.divider { + margin: 1px; + padding: 0; + } + + &.disabled { + cursor: auto; + padding: 3px 0; + } + + &:hover a { + .background-color-fn(@defaultlineselectedbackground); + .color-fn(@defaultlineselectedfont); + + background-image: none; //overload boostrap style + } + } + + &.clickable { + tbody tr:hover > td { + cursor: pointer; + .background-color-fn(@defaultlineselectedbackground); + .color-fn(@defaultlineselectedfont); + } + } +} + +.table { + > thead > tr > th { + overflow: inherit !important; + } + + > thead > tr > th .btn-link, + > tbody > tr > td .btn-link { + color: inherit; + text-decoration: none; + font-weight: 600; + + &:active { + text-decoration: none; + } + } + + // avoid too small input with responsive tables + > tbody > tr > td input, + select { + min-width: 4.375rem; + } +} + +.table-striped > div > .oui-datagrid > tbody > tr:nth-child(2n) > td, +.table-striped > tbody > tr:nth-child(2n) > td, +.table-striped > tbody > tr:nth-child(2n) > th { + &:extend(.oui-background-p-050); +} + +.server-installation { + .list-striped, + .list-striped .oui-collapsible__body { + padding: 0 !important; + } + + .list-striped oui-radio { + margin-top: 0 !important; + padding: calc(1rem - 1px); + } + + .list-striped oui-radio:nth-child(2n) { + &:extend(.oui-background-p-050); + } +} diff --git a/packages/manager/apps/billing/src/css/less/common/wizard.less b/packages/manager/apps/billing/src/css/less/common/wizard.less new file mode 100644 index 000000000000..fafb6b3c22df --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/common/wizard.less @@ -0,0 +1,61 @@ +.wizard-title { + line-height: rem-calc(14); + margin-top: 0; + margin-bottom: 0; + color: #122844; + font-size: rem-calc(13.125); + font-weight: 600; + letter-spacing: 0.01em; +} + +h2.wizard-title-sub { + font-size: 18px; + font-weight: 600; +} + +.helpTrigger { + animation: flash 1s 3; + background-color: #27b9a2; + cursor: pointer; + display: block; + height: 73px; + left: ~'calc(100% + 1px)'; + position: absolute; + top: 20px; + transition: transform 0.35s; + width: 30px; + + &.open { + transform: translate(232px, 0); + } +} + +.help4wizards { + background-color: #f2f2f2; + border: 1px solid #bbbdbf; + border-top-right-radius: 6px; + font-size: 90%; + left: 100%; + margin-top: 1px; + overflow-x: hidden; + overflow-y: auto; + padding: 5px 20px 5px 10px; + position: absolute; + top: 0; + width: 235px; + z-index: -1; + transform: translate(-236px, 0); + transition: transform 0.35s, height 0.35s; + + &.open { + transform: translate(-4px, 0); + } + + h3 { + font-size: 1.125rem; + } + + h4 { + font-size: 1rem; + } +} diff --git a/packages/manager/apps/billing/src/css/less/module/licence/licence.less b/packages/manager/apps/billing/src/css/less/module/licence/licence.less new file mode 100644 index 000000000000..9e4bf4182efb --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/module/licence/licence.less @@ -0,0 +1,57 @@ +#main-container.licence-module { + .img-thumbnail, + .img-thumbnail-license { + display: inline-block; + height: auto; + max-width: 100%; + padding: 4px; + line-height: 1.428571429; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + margin: 5px 5px; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + } + + .img-thumbnail-license { + cursor: pointer; + } + + .img-thumbnail-license:not(.disabled):hover { + -webkit-transform: scale(1.02); + -moz-transform: scale(1.02); + -ms-transform: scale(1.02); + -o-transform: scale(1.02); + transform: scale(1.02); + -webkit-box-shadow: #bcbcbc 0 0 5px; + -moz-box-shadow: #bcbcbc 0 0 5px; + -o-box-shadow: #bcbcbc 0 0 5px; + -ms-box-shadow: #bcbcbc 0 0 5px; + box-shadow: #bcbcbc 0 0 5px; + opacity: 1 !important; + } + + .img-thumbnail-license.disabled { + cursor: not-allowed !important; + filter: url("data:image/svg+xml;utf8,#grayscale"); /* Firefox 10+, Firefox on Android */ + filter: gray; /* IE6-9 */ + -webkit-filter: grayscale(100%); + } + + .opa3 { + opacity: 0.3; + } + + .modal-license-confirm-upgrade-redirection { + .modal-body { + .icon-warning { + float: left; + margin-right: 5px; + } + } + } +} diff --git a/packages/manager/apps/billing/src/css/less/module/user-account/advanced.less b/packages/manager/apps/billing/src/css/less/module/user-account/advanced.less new file mode 100644 index 000000000000..fbc147e376fd --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/module/user-account/advanced.less @@ -0,0 +1,13 @@ +.module-useraccount-sections-advanced-container { + .follow-link-list { + li { + span { + width: 30px; + } + + a { + line-height: 32px; + } + } + } +} diff --git a/packages/manager/apps/billing/src/css/less/module/user-account/emails.less b/packages/manager/apps/billing/src/css/less/module/user-account/emails.less new file mode 100644 index 000000000000..b05883f465d7 --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/module/user-account/emails.less @@ -0,0 +1,32 @@ +.module-useraccount-sections-emails-container { + .email-list tbody tr { + td { + padding: 0; + height: auto; + + a { + line-height: 2.25rem; + } + } + + &:hover a { + text-decoration: underline; + color: #007e9b; + } + } + + .email-preview { + position: relative; + + pre { + white-space: pre-wrap; + word-break: break-word; + } + + button.email-preview-source-toggle { + position: absolute; + top: 0; + right: 0; + } + } +} diff --git a/packages/manager/apps/billing/src/css/less/module/user-account/security.less b/packages/manager/apps/billing/src/css/less/module/user-account/security.less new file mode 100644 index 000000000000..ad7dd14a9070 --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/module/user-account/security.less @@ -0,0 +1,33 @@ +.new-security-section { + button[data-uib-dropdown-toggle] { + text-decoration: none; + } + + .media { + &.media-first-level > .media-left .media-object { + margin-top: 14px; + } + } + + .media, + .media-body { + overflow: visible; // to be abble to see dropdown content + } + + .oui-icon-help-circle { + color: #737373; + font-size: 14px !important; + } + + .table-ip-restrict { + th, + td { + vertical-align: middle; + } + } +} + +.security-icon-help { + color: #737373 !important; + font-size: 14px !important; +} diff --git a/packages/manager/apps/billing/src/css/less/module/user-account/ssh.less b/packages/manager/apps/billing/src/css/less/module/user-account/ssh.less new file mode 100644 index 000000000000..9768ad814c49 --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/module/user-account/ssh.less @@ -0,0 +1,12 @@ +.user-ssh { + .sshkey-ctnr .panel-body { + max-height: 450px; + overflow: auto; + word-wrap: break-word; + } + + textarea.user-ssh-key { + resize: none; + line-height: inherit; + } +} diff --git a/packages/manager/apps/billing/src/css/less/user-contracts/user-contracts.less b/packages/manager/apps/billing/src/css/less/user-contracts/user-contracts.less new file mode 100644 index 000000000000..13e2458fc0e0 --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/user-contracts/user-contracts.less @@ -0,0 +1,15 @@ +.user-contracts { + &__modal { + &-form { + margin: 0; + } + + &-contracts { + margin-bottom: 15px; + } + + &-link { + text-decoration: underline; + } + } +} diff --git a/packages/manager/apps/billing/src/css/less/utils/elements.less b/packages/manager/apps/billing/src/css/less/utils/elements.less new file mode 100644 index 000000000000..ee71fc111bb3 --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/utils/elements.less @@ -0,0 +1,198 @@ +/* --------------------------------------------------- + LESS Elements 0.9 + --------------------------------------------------- + A set of useful LESS mixins + More info at: http://lesselements.com + --------------------------------------------------- */ + +/* stylelint-disable */ +.gradient(@color: #F5F5F5, @start: #EEE, @stop: #FFF) { + background: @color; + background: + -webkit-gradient( + linear, + left bottom, + left top, + color-stop(0, @start), + color-stop(1, @stop) + ); + background: -ms-linear-gradient(bottom, @start, @stop); + background: -moz-linear-gradient(center bottom, @start 0%, @stop 100%); + background: -o-linear-gradient(@stop, @start); + filter: + e( + %( + "progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)", + @stop, + @start + ) + ); +} + +.bw-gradient(@color: #F5F5F5, @start: 0, @stop: 255) { + background: @color; + background: + -webkit-gradient( + linear, + left bottom, + left top, + color-stop(0, rgb(@start, @start, @start)), + color-stop(1, rgb(@stop, @stop, @stop)) + ); + background: + -ms-linear-gradient( + bottom, + rgb(@start, @start, @start) 0%, + rgb(@stop, @stop, @stop) 100% + ); + background: + -moz-linear-gradient( + center bottom, + rgb(@start, @start, @start) 0%, + rgb(@stop, @stop, @stop) 100% + ); + background: + -o-linear-gradient( + rgb(@stop, @stop, @stop), + rgb(@start, @start, @start) + ); + filter: + e( + %( + "progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)", + rgb(@stop, @stop, @stop), + rgb(@start, @start, @start) + ) + ); +} +/* stylelint-enable */ +.bordered(@top-color: #EEE, @right-color: #EEE, @bottom-color: #EEE, @left-color: #EEE) { + border-top: solid 1px @top-color; + border-left: solid 1px @left-color; + border-right: solid 1px @right-color; + border-bottom: solid 1px @bottom-color; +} + +.drop-shadow(@x-axis: 0, @y-axis: 1px, @blur: 2px, @alpha: 0.1) { + -webkit-box-shadow: @x-axis @y-axis @blur rgba(0, 0, 0, @alpha); + -moz-box-shadow: @x-axis @y-axis @blur rgba(0, 0, 0, @alpha); + box-shadow: @x-axis @y-axis @blur rgba(0, 0, 0, @alpha); +} + +.rounded(@radius: 2px) { + -webkit-border-radius: @radius; + -moz-border-radius: @radius; + border-radius: @radius; +} + +.border-radius(@topright: 0, @bottomright: 0, @bottomleft: 0, @topleft: 0) { + -webkit-border-top-right-radius: @topright; + -webkit-border-bottom-right-radius: @bottomright; + -webkit-border-bottom-left-radius: @bottomleft; + -webkit-border-top-left-radius: @topleft; + -moz-border-radius-topright: @topright; + -moz-border-radius-bottomright: @bottomright; + -moz-border-radius-bottomleft: @bottomleft; + -moz-border-radius-topleft: @topleft; + border-top-right-radius: @topright; + border-bottom-right-radius: @bottomright; + border-bottom-left-radius: @bottomleft; + border-top-left-radius: @topleft; + .background-clip(padding-box); +} + +.opacity(@opacity: 0.5) { + -moz-opacity: @opacity; + -khtml-opacity: @opacity; + -webkit-opacity: @opacity; + opacity: @opacity; + @opperc: @opacity * 100; + + -ms-filter: ~'progid:DXImageTransform.Microsoft.Alpha(opacity=@{opperc})'; + filter: ~'alpha(opacity=@{opperc})'; +} + +.transition-duration(@duration: 0.2s) { + -moz-transition-duration: @duration; + -webkit-transition-duration: @duration; + -o-transition-duration: @duration; + transition-duration: @duration; +} +.transform(...) { + -webkit-transform: @arguments; + -moz-transform: @arguments; + -o-transform: @arguments; + -ms-transform: @arguments; + transform: @arguments; +} + +.rotation(@deg:5deg) { + .transform(rotate(@deg)); +} + +.scale(@ratio:1.5) { + .transform(scale(@ratio)); +} + +.transition(@duration:0.2s, @ease:ease-out) { + -webkit-transition: all @duration @ease; + -moz-transition: all @duration @ease; + -o-transition: all @duration @ease; + transition: all @duration @ease; +} + +.inner-shadow(@horizontal:0, @vertical:1px, @blur:2px, @alpha: 0.4) { + -webkit-box-shadow: inset @horizontal @vertical @blur rgba(0, 0, 0, @alpha); + -moz-box-shadow: inset @horizontal @vertical @blur rgba(0, 0, 0, @alpha); + box-shadow: inset @horizontal @vertical @blur rgba(0, 0, 0, @alpha); +} +.box-shadow(@arguments) { + -webkit-box-shadow: @arguments; + -moz-box-shadow: @arguments; + box-shadow: @arguments; +} + +.box-sizing(@sizing: border-box) { + -ms-box-sizing: @sizing; + -moz-box-sizing: @sizing; + -webkit-box-sizing: @sizing; + box-sizing: @sizing; +} + +.user-select(@argument: none) { + -webkit-user-select: @argument; + -moz-user-select: @argument; + -ms-user-select: @argument; + user-select: @argument; +} + +.columns(@colwidth: 250px, @colcount: 0, @colgap: 50px, @columnRuleColor: #EEE, @columnRuleStyle: solid, @columnRuleWidth: 1px) { + -moz-column-width: @colwidth; + -moz-column-count: @colcount; + -moz-column-gap: @colgap; + -moz-column-rule-color: @columnRuleColor; + -moz-column-rule-style: @columnRuleStyle; + -moz-column-rule-width: @columnRuleWidth; + -webkit-column-width: @colwidth; + -webkit-column-count: @colcount; + -webkit-column-gap: @colgap; + -webkit-column-rule-color: @columnRuleColor; + -webkit-column-rule-style: @columnRuleStyle; + -webkit-column-rule-width: @columnRuleWidth; + column-width: @colwidth; + column-count: @colcount; + column-gap: @colgap; + column-rule-color: @columnRuleColor; + column-rule-style: @columnRuleStyle; + column-rule-width: @columnRuleWidth; +} + +.translate(@x:0, @y:0) { + .transform(translate(@x, @y)); +} + +.background-clip(@argument: padding-box) { + -moz-background-clip: @argument; + -webkit-background-clip: @argument; + background-clip: @argument; +} diff --git a/packages/manager/apps/billing/src/css/less/utils/function.less b/packages/manager/apps/billing/src/css/less/utils/function.less new file mode 100644 index 000000000000..7d618d455dd8 --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/utils/function.less @@ -0,0 +1,59 @@ +.icon_position(@x: 1, @y: 1) { + @posx: (@x * @buttoniconsize) * -1; + @posy: (@y * @buttoniconsize) * -1; + + background-position: ~` '@{posx}' ` ~` '@{posy}' `; +} + +//ex : .transition-fn(~"left @{ANIMATION_TIME_CONST}, height @{ANIMATION_TIME_CONST}"); +//out: transition: left 0.35s, height 0.35s; +.transition-fn(@arguments: 0) when not (@arguments = 0) { + transition: @arguments; + -moz-transition: @arguments; + -webkit-transition: @arguments; + -ms-transition: @arguments; + -o-transition: @arguments; +} +.transform-fn(@arguments: 0) when not (@arguments = 0) { + -moz-transform: @arguments; + -webkit-transform: @arguments; + -o-transform: @arguments; + -ms-transform: @arguments; + transform: @arguments; +} + +.background-color-fn(@value) when (iscolor(@value)) { + background-color: @value; +} + +.color-fn(@value) when (iscolor(@value)) { + color: @value; +} + +.border-color-fn(@value) when (iscolor(@value)) { + border-color: @value; +} + +.font-size-line-height-fn(@value, @space) { + font-size: @value; + line-height: @value + @space; +} + +.line-height-fn(@value, @space) { + line-height: @value + @space; +} + +.false-gradient(@value) { + background-color: @value; + background-image: -moz-linear-gradient(top, @value, @value); + background-image: -webkit-gradient( + linear, + 0 0, + 0 100%, + from(@value), + to(@value) + ); + background-image: -webkit-linear-gradient(top, @value, @value); + background-image: -o-linear-gradient(top, @value, @value); + background-image: linear-gradient(to bottom, @value, @value); +} diff --git a/packages/manager/apps/billing/src/css/less/utils/utilities.less b/packages/manager/apps/billing/src/css/less/utils/utilities.less new file mode 100644 index 000000000000..e3e064769dfd --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/utils/utilities.less @@ -0,0 +1,275 @@ +// +// UTILITIES +// -------------------------------------------------- + +.loaderSmall { + background: url('../../../images/loading.gif') no-repeat scroll 50% 0 + rgba(0, 0, 0, 0); + clear: both; + height: 16px; +} + +.half { + width: 49%; +} + +.half25 { + width: 24%; +} + +.half33 { + width: 33%; +} + +.half75 { + width: 74%; +} + +.full { + width: 100%; +} + +.block { + display: block; +} + +.inline { + display: inline-block; +} + +.wordbreak { + word-break: break-all; +} + +.wordwrap { + word-wrap: break-word; +} + +td.center, +th.center, +.center { + text-align: center; +} + +.list-no-style { + list-style-type: none; + -webkit-padding-start: 0; + -webkit-margin-before: 0; + -webkit-margin-after: 0; + margin: 0; +} + +.btn-no-style { + background: none; + border: none; + text-decoration: none; + + &:disabled { + opacity: 0.5; + } +} + +.middle { + vertical-align: middle; +} + +.disabled { + opacity: 0.5; +} + +.subdued { + opacity: 0.7; +} + +.right, +td.right, +th.right { + text-align: right; +} + +.left, +td.left, +th.left { + text-align: left; +} + +.tspace { + margin-top: 8px; +} + +.tspace15 { + margin-top: 15px; +} + +.top-space { + margin-top: 25px; +} + +.bspace { + margin-bottom: 8px; +} + +.bottom-space { + margin-bottom: 25px; +} + +.leftspace { + margin-left: 20px; +} + +.leftspace-5 { + margin-left: 5px; +} + +.no-space { + margin: 0; +} + +.fs10 { + font-size: 10px; +} + +.fs11 { + font-size: 11px; +} + +.fs12 { + font-size: 12px; +} + +.fs13 { + font-size: 13px; +} + +.fs16 { + font-size: 16px; +} + +.fs18 { + font-size: 18px; +} + +.fs20 { + font-size: 20px; +} + +.fs22 { + font-size: 22px; +} + +.fs24 { + font-size: 24px; +} + +.fs26 { + font-size: 26px; +} + +.lh11 { + line-height: 11px; +} + +.lh12 { + line-height: 12px; +} + +.lh22 { + line-height: 22px; +} + +.lh24 { + line-height: 24px; +} + +.lh28 { + line-height: 28px; +} + +.lh30 { + line-height: 30px; +} + +.lh32 { + line-height: 32px; +} + +.lh40 { + line-height: 40px; +} + +.italic { + font-style: italic; +} + +.normal { + font-weight: normal; +} + +.bold { + font-weight: bold; +} + +.white { + color: #fff !important; +} + +.blue { + color: #38a7c3 !important; +} + +.yellow { + color: #f59402; +} + +.green { + color: #54a698; +} + +.green-valid { + color: #289908; +} + +.black { + color: #000; +} + +.red { + color: #fe0505 !important; +} + +.lgrey { + color: #a0a0a0; +} + +.dgrey { + color: #1a1a1a; +} + +.grey { + color: #3d3d3d; +} + +.pointer { + cursor: pointer; +} + +.opacity50 { + opacity: 0.5; +} + +.pre-scrollable { + max-height: 250px; + overflow-y: scroll; +} + +.text-uppercase { + text-transform: uppercase; +} + +.text-lowercase { + text-transform: lowercase; +} + +.text-nowrap { + white-space: nowrap; +} diff --git a/packages/manager/apps/billing/src/css/less/utils/variables.less b/packages/manager/apps/billing/src/css/less/utils/variables.less new file mode 100644 index 000000000000..774b73f44272 --- /dev/null +++ b/packages/manager/apps/billing/src/css/less/utils/variables.less @@ -0,0 +1,271 @@ +//URL PATH +@helpmodalimg: '../images/trigger-help-infrastructure.png'; + +// -------------------------------------------------- +// CONSTANTS (used in CSS - No change) +// -------------------------------------------------- + +@red_const: #f00f00; + +@redlow_const: #f2dede; + +@white_const: #fff; + +@info_const: #3a87ad; + +@nav_active_const: #2f3545; + +@nav_border_const: #7b8593; + +@radius_const: 2px; + +@animation_time_const: 0.35s; + +@blue_const: #33acff; + +@univers: #3b4151; + +@cloud: #ffd740; + +@dedicated: #38a7c3; + +@telecom: #4587a7; + +@web: #54a89b; + +@sunrise: #ff9800; + +@partners: #54c7e4; + +@older_univers: #c3cadb; + +@navbar_height: 44px; + +@navbar_bg: #122844; + +@navbar_hover: darken(@navbar_bg, 4%); + +@SIDEBAR_MENU_BG_COLOR_LVL1: #273b54; +@SIDEBAR_MENU_BG_COLOR_LVL2: #3f5167; +@SIDEBAR_MENU_BG_COLOR_LVL3: #59697d; + +// -------------------------------------------------- +// DEFAULT Level 0 +// -------------------------------------------------- + +// +// Univers Size (used in CSS) +// ------------------------- + +@fontsizemini: 11px; + +@fontsizeh4: 12px; + +@fontsizedefault: 12px; + +@fontsizeh3: 14px; + +@fontsizelarge: 16px; + +@fontsizebig: 18px; + +@fontsizeh1: 22px; + +@fontsizemega: 28px; + +@buttoniconsize: 36px; + +// +// Univers Colors (NOT USE IN CSS, just for this file) +// ------------------------- + +@blue: #38a7c3; + +@green: #54a89b; + +@white: #fff; + +@grey1: #f7f5f6; //search bar color + +@grey2: #efefef; // sidebar background + +@grey3: #dbdbdb; // button, search bar color + +@grey4: #7a7a7a; // default font + +@grey5: #656568; // button font, pagination + +@grey6: #3b3b41; + +@grey7: #3c3c3c; // title font + +// -------------------------------------------------- +// DEFAULT Level 1 (USE IN CSS) +// -------------------------------------------------- + +// +// Default +// ------------------------- + +@current_univers: @dedicated; + +@defaultfont: @grey4; + +@defaulttitle: @grey7; + +@defaultbackground: @white; + +@defaultborder: @white; + +// -------------------------------------------------- +// DEFAULT Level 2 +// -------------------------------------------------- + +// +// Line table and list +// ------------------------- + +//Head table or list category +@defaultlineheadbackground: #3b4151; + +@defaultlineheadfont: @white; + +//Odd and even for list +@defaultlineoddbackground: #d8e2e4; + +@defaultlineoddfont: @grey6; + +@defaultlineevenbackground: none; + +@defaultlineevenfont: @grey6; + +//Odd and even for table +@defaulttablelineoddbackground: none; + +@defaulttablelineevenbackground: #d8e2e4; + +//Odd and even hover for table and list +@defaultlinehoverbackground: none; + +@defaultlinehoverfont: #1a1a1a; + +//hover or select line for list, table, dropfownlist +@defaultlineselectedbackground: @blue; + +@defaultlineselectedfont: @white; + +// +// Buttons +// ------------------------- + +@defaultbuttonshadow: #cacaca; + +@defaultbuttonbackground: @grey3; + +@defaultbuttonfont: @grey5; + +@defaultbuttonhoverbackground: @blue; + +@defaultbuttonhoverfont: @white; + +// +// Search bar (charts) +// ------------------------- + +@barblockbackground: @grey1; + +@barblockfont: @defaultfont; + +@barblockborder: @grey3; + +// +// Search bar (form) +// ------------------------- + +@barformfont: @grey7; + +// +// Pagination bar +// ------------------------- + +@defaultpaginationfont: @grey5; + +@defaultpaginationhoverbackground: @white; + +@defaultpaginationhoverfont: @grey7; + +@defaultpaginationactivebackground: @white; + +@defaultpaginationactivefont: @grey7; + +@defaultpaginationnextpreviousbuttonborder: @grey3; + +@defaultpaginationgotobackground: #b8b7ba; + +@defaultpaginationgotofont: @white; + +@defaultpaginationgotohoverbackground: #8c8c8c; + +@defaultpaginationgotohoverfont: none; + +@defaultpaginationgotopagebackground: none; + +@defaultpaginationgotopagefont: #3c3c3c; + +@defaultpaginationgotopageborder: #b8b7ba; + +// +// Modal +// ------------------------- + +@defaultmodalbackground: @grey2; + +@defaultmodalheadertopgradientbackground: #333; + +@defaultmodalheaderbottomgradientbackground: #1a1a1a; + +@defaultmodalheaderborderbottom: #eee; + +@defaultmodalheaderfont: @white; + +@defaultmodalfooterbackground: #f5f5f5; + +@defaultmodalfooterbordertop: @grey3; + +@defaultmodalfooterbuttonconfirmbackground: @blue; + +@defaultmodalfooterbuttonconfirmfont: @white; + +@defaultmodalfooterbuttonhoverconfirmbackground: #72d0f4; + +@defaultmodalfooterbuttonhoverconfirmfont: none; + +@defaultmodalfooterbuttoncancelbackground: @white; + +@defaultmodalfooterbuttoncancelfont: #7d7d7d; + +@defaultmodalfooterbuttonhovercancelbackground: none; + +@defaultmodalfooterbuttonhovercancelfont: @defaultlinehoverfont; + +@defaultmodalhelpbackground: #f7f7f7; + +@defaultmodalhelpfont: #737373; + +@defaultmodalhelpborder: #c6c6c8; + +@defaultmodalhelptitleunderlinecolor: #737373; + +@defaultmodalbackdropcolor: @white; //cover under modal + +// +// popover +// ------------------------- + +@defaultpopoverfont: @grey6; + +// +// droupdown menu +// ------------------------- + +@oui-dropdown-menu-zindex: 1000; diff --git a/packages/manager/apps/billing/src/css/source.less b/packages/manager/apps/billing/src/css/source.less new file mode 100644 index 000000000000..46378646b986 --- /dev/null +++ b/packages/manager/apps/billing/src/css/source.less @@ -0,0 +1,64 @@ +@import '@ovh-ux/ui-kit/dist/less/_tokens'; +@import (less) '@ovh-ux/ui-kit/dist/css/oui.css'; +@import (less) 'ovh-ui-kit-bs/dist/css/oui-bs3.css'; +@import (less) 'font-awesome/css/font-awesome.min.css'; +@import (less) 'ovh-manager-webfont/dist/css/ovh-font.css'; +@import (less) 'animate.css/animate.min.css'; +@import (less) 'ui-select/dist/select.min.css'; +@import 'less/utils/variables'; +@import 'less/utils/function'; +@import 'less/utils/elements'; +@import 'less/utils/utilities'; +@import 'less/common/accordion'; +@import 'less/common/autocomplete'; +@import 'less/common/buttonIcons'; +@import 'less/common/button'; +@import 'less/common/countryIcon'; +@import 'less/common/distributionIcon'; +@import 'less/common/download'; +@import 'less/common/global'; +@import 'less/common/graphicalTools'; +@import 'less/common/header'; +@import 'less/common/icon'; +@import 'less/common/informationBlock'; +@import 'less/common/modal'; +@import 'less/common/popover'; +@import 'less/common/searchbar'; +@import 'less/common/selectList'; +@import 'less/common/serviceIcon'; +@import 'less/common/table'; +@import 'less/common/wizard'; +@import 'less/common/progressBarWithText'; +@import 'less/common/animation'; +@import 'less/common/navbar'; +@import '../components/sidebar-menu/sidebar-menu'; +@import 'less/module/licence/licence'; +@import 'less/module/user-account/security'; +@import 'less/module/user-account/emails'; +@import 'less/module/user-account/ssh'; +@import 'less/module/user-account/advanced'; +@import 'less/user-contracts/user-contracts'; + +@actions-menu-item-link-icon-hover-bg-color: #59d2ef; + +oui-message, +.oui-message { + margin-bottom: 0; +} + +h3.font-lite { + font-weight: 300; +} + +th .tooltip-container { + position: relative; + display: inline-block; + font-weight: 400; +} + +td, +th { + .oui-tooltip { + white-space: pre-wrap; + } +} diff --git a/packages/manager/apps/billing/src/css/source.scss b/packages/manager/apps/billing/src/css/source.scss new file mode 100644 index 000000000000..5af6dbfccc7a --- /dev/null +++ b/packages/manager/apps/billing/src/css/source.scss @@ -0,0 +1,15 @@ +$flag-icon-css-path: '~flag-icon-css/flags'; + +@import 'flag-icon-css/sass/flag-icon'; +@import 'bootstrap4/scss/_functions.scss'; +@import 'bootstrap4/scss/_variables.scss'; +@import 'bootstrap4/scss/_mixins.scss'; +@import 'bootstrap4/scss/_utilities.scss'; +@import 'bootstrap4/scss/_grid.scss'; + +// Microsoft Icons +@import 'office-ui-fabric-core/dist/sass/_References'; +@import 'office-ui-fabric-core/dist/sass/_Font'; +@import 'office-ui-fabric-core/dist/sass/_Font.Definitions'; +@import 'office-ui-fabric-core/dist/sass/_Icon'; +@import 'office-ui-fabric-core/dist/sass/_Icon.Definitions'; diff --git a/packages/manager/apps/billing/src/css/user-account/main.css b/packages/manager/apps/billing/src/css/user-account/main.css new file mode 100644 index 000000000000..dcf7de57d943 --- /dev/null +++ b/packages/manager/apps/billing/src/css/user-account/main.css @@ -0,0 +1,351 @@ +.center { + text-align: center; +} + +.left-height-full { + height: 100%; + float: left; +} + +.lh30 { + line-height: 30px; +} + +.black-title { + color: #000; + font-weight: bold; + font-size: 18px; +} + +.fa-10x { + font-size: 10em !important; +} + +.text-muted { + color: #999; +} + +.monospace { + font-family: monospace, sans-serif; +} + +.no-padding { + padding: 0 !important; +} + +.no-margin { + margin: 0 !important; +} + +.paddingt10 { + padding: 10px 0 !important; +} + +.padding10 { + padding: 10px !important; +} + +.margint10 { + margin-top: 10px !important; +} + +.marginl10 { + margin-left: 10px !important; +} + +.marginb10 { + margin-bottom: 10px !important; +} + +.selectable { + cursor: pointer; +} + +.module-useraccount-menu > .sidebar { + left: 0; + top: 40px; +} + +.module-useraccount-menu .sidebar .navigation-left-title:hover { + background-color: #3f5167; +} + +.module-useraccount-menu .sidebar .extended-accordion-in { + height: auto; + visibility: visible; +} + +.module-useraccount-menu .sidebar .navigation-left-title .fa-chevron-left { + opacity: 0.6; + font-size: 10px; + width: 8px; + height: 8px; + margin: 15px 0 0 15px; +} + +.module-useraccount-menu .sidebar .navigation-left-title.not-expandable { + margin-left: 0; + padding-left: 23px; +} + +.module-useraccount-menu + > .sidebar + .navigation-left.module-useraccount-menu-back { + padding: 20px 0 10px 0; +} + +.module-useraccount-menu > .sidebar .navigation-left-title > span { + margin: 7px 10px 0 18px; +} + +.module-useraccount-menu > .sidebar .navigation-left-list-container.active { + border-left-color: #00a2bf; +} + +.module-useraccount-menu + > .sidebar + .navigation-left-list-container + > li.active { + background-color: #00a2bf !important; +} + +.module-useraccount-menu > .sidebar .navigation-left-list-container > li:hover { + background-color: rgba(255, 255, 255, 0.15); +} + +.module-useraccount-menu + > .sidebar + .navigation-left-list-container + > li + a.navigation-left-item:hover, +.module-useraccount-menu + > .sidebar + .navigation-left-list-container + > li + a.navigation-left-item:focus { + background-color: transparent; +} + +.module-useraccount-menu + .sidebar + .navigation-left-list-container + > li + a.navigation-left-item.active { + background-color: #00a2bf !important; + color: #122844; +} + +.module-useraccount-menu + > .sidebar + .navigation-left-title + .module-useraccount-menu-small { + display: block; + font-weight: lighter; + font-size: 85%; + margin-top: 0; + padding-bottom: 12px; + line-height: 8px; +} + +/******************* + SECTIONS +*******************/ + +.module-useraccount-sections-container { + background: none repeat scroll 0 0 #fff; + width: auto; + max-width: 1610px; + color: #737373; + line-height: 20px; +} + +.module-useraccount-sections-wrapped { + background: none repeat scroll 0 0 #fff; + margin-left: 305px; + max-width: 1610px; + padding: 0 40px; + line-height: 20px; +} + +/******************* + /SECTIONS +*******************/ + +/********************************************************* + SSH +*********************************************************/ + +.module-useraccount-container #sshAddKeyLabel { + max-width: 510px; + min-width: 220px; + min-height: 80px; + margin-bottom: 0; +} + +/********************************************************* + /SSH +*********************************************************/ + +/********************************************************* + USER INFO +**********************************************************/ + +.module-useraccount-container + .module-useraccount-sections-infos-container + label { + color: #333; + font-weight: 700; +} + +.module-useraccount-container + .module-useraccount-sections-infos-container + .top-space-5 { + margin-top: 5px; +} + +.module-useraccount-container + .module-useraccount-sections-infos-container + .form-horizontal + .control-group { + margin-bottom: 10px; +} + +/********************************************************* + !USER INFO +**********************************************************/ + +/********************************************************* + SECURITY +**********************************************************/ + +.module-useraccount-container .fs-green { + color: #45ae6e !important; +} + +.module-useraccount-container .fs-red { + color: #e85e5e !important; +} + +.module-useraccount-sections-container .button, +.module-useraccount-sections-container a[role='button'] { + color: #fff; + background: #7f8aaf; + border: 0; + padding: 10px; + margin: 10px 0; + border-radius: 0; +} + +.module-useraccount-sections-container .button[disabled], +.module-useraccount-sections-container a[role='button'][disabled] { + opacity: 0.5; +} + +.module-useraccount-container .btn-prev-step { + width: 140px; + position: relative; + margin-left: 20px; +} + +.module-useraccount-container .btn-prev-step::after { + content: ''; + position: absolute; + top: 0; + width: 0; + height: 0; + border-style: solid; + border-width: 20px; + border-color: transparent transparent transparent #7f8aaf; + left: -40px; + transform: rotate(180deg); + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); +} + +.module-useraccount-container .btn-next-step { + position: relative; + margin-right: 15px; + width: 190px; +} + +.module-useraccount-container .btn-next-step.big { + margin-right: 25px; +} + +.module-useraccount-container .btn-next-step::after { + content: ''; + position: absolute; + top: 0; + width: 0; + height: 0; + border-style: solid; + right: -40px; + border-width: 20px; + border-color: transparent transparent transparent #7f8aaf; +} + +.module-useraccount-container .btn-next-step.big::after { + right: -60px; + border-width: 30px; +} + +/********************************************************* + !Agreements +**********************************************************/ + +.module-useraccount-sections-agreements-container .contract { + word-wrap: break-word; + word-break: keep-all; + text-align: justify; + max-height: 400px; +} + +.module-useraccount-sections-agreements-container .backButton { + margin-right: 2em; + margin-top: 1.2em; +} + +/* Contacts */ +.module-useraccount-sections-contacts-container .tab-content { + overflow: inherit !important; +} + +.module-useraccount-sections-contacts-container td .btn.btn-icon:hover, +.module-useraccount-sections-contacts-container td .btn.btn-icon:focus, +.module-useraccount-sections-contacts-container td .btn.btn-icon:active { + padding: 0 10px !important; +} + +.module-useraccount-sections-emails-container pre { + word-break: normal; + word-wrap: normal; +} + +.module-useraccount-container + .popover + .popover-content + .popover-menu + .btn-link:hover { + color: #fff; + background-color: #54a89b; + text-decoration: none; + font-weight: bold; +} + +.module-useraccount-container + .popover + .popover-content + .popover-menu + a:hover + span { + background-color: inherit; +} + +.module-useraccount-container + .popover + .popover-content + .popover-menu + .btn-link:hover + span { + background-color: inherit; +} diff --git a/packages/manager/apps/billing/src/css/user-account/newSecuritySection.css b/packages/manager/apps/billing/src/css/user-account/newSecuritySection.css new file mode 100644 index 000000000000..fcbf5e512b9c --- /dev/null +++ b/packages/manager/apps/billing/src/css/user-account/newSecuritySection.css @@ -0,0 +1,38 @@ +.new-security-section { + margin-bottom: 32px; +} + +.new-security-section > .span10 > .oui-heading_2:first-child { + font-size: 36px; +} + +.new-security-section > .span10 > .oui-message { + margin-left: 0; + margin-right: 0; + margin-top: 32px; +} + +.new-security-section > .span10 > .oui-box { + margin-top: 32px; +} + +.new-security-section .new-security-section__2fa-lists { + margin-top: 32px; +} + +.new-security-section + .new-security-section__2fa-lists + > .media:not(:last-child) + > .media-body { + margin-bottom: 32px; + padding-bottom: 32px; + border-bottom: 1px solid #e9ebed; +} + +.new-security-section-wizard-choice-icon { + margin-right: 12px; +} + +.new-security-section-wizard-backup-codes { + display: inline-block; +} diff --git a/packages/manager/apps/billing/src/error/error.module.js b/packages/manager/apps/billing/src/error/error.module.js new file mode 100644 index 000000000000..acc727b16dd4 --- /dev/null +++ b/packages/manager/apps/billing/src/error/error.module.js @@ -0,0 +1,9 @@ +import managerErrorPage from '@ovh-ux/manager-error-page'; + +import routing from './error.routing'; + +const moduleName = 'ovhManagerBillingError'; + +angular.module(moduleName, [managerErrorPage]).config(routing); + +export default moduleName; diff --git a/packages/manager/apps/billing/src/error/error.routing.js b/packages/manager/apps/billing/src/error/error.routing.js new file mode 100644 index 000000000000..45bb318d8ac9 --- /dev/null +++ b/packages/manager/apps/billing/src/error/error.routing.js @@ -0,0 +1,17 @@ +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('error', { + params: { + detail: null, + }, + url: '/error', + component: 'managerErrorPage', + resolve: { + cancelLink: /* @ngInject */ ($state) => $state.href('app'), + error: /* @ngInject */ ($transition$) => $transition$.params(), + submitAction: /* @ngInject */ ($window) => () => + $window.location.reload(), + translationsRefresh: /* @ngInject */ ($translate) => $translate.refresh(), + breadcrumb: () => null, + }, + }); +}; diff --git a/packages/manager/apps/billing/src/error/index.js b/packages/manager/apps/billing/src/error/index.js new file mode 100644 index 000000000000..331942589301 --- /dev/null +++ b/packages/manager/apps/billing/src/error/index.js @@ -0,0 +1,22 @@ +import angular from 'angular'; +import '@uirouter/angularjs'; +import 'oclazyload'; + +const moduleName = 'ovhManagerBillingErrorPageLazyLoading'; + +angular.module(moduleName, ['ui.router', 'oc.lazyLoad']).config( + /* @ngInject */ ($stateProvider) => { + $stateProvider.state('error.**', { + url: '/error', + lazyLoad: ($transition$) => { + const $ocLazyLoad = $transition$.injector().get('$ocLazyLoad'); + + return import('./error.module').then((mod) => + $ocLazyLoad.inject(mod.default || mod), + ); + }, + }); + }, +); + +export default moduleName; diff --git a/packages/manager/apps/billing/src/images/Banner_OWT_Berlin.jpg b/packages/manager/apps/billing/src/images/Banner_OWT_Berlin.jpg new file mode 100644 index 000000000000..c023c3f49df1 Binary files /dev/null and b/packages/manager/apps/billing/src/images/Banner_OWT_Berlin.jpg differ diff --git a/packages/manager/apps/billing/src/images/OVH-Academy.jpg b/packages/manager/apps/billing/src/images/OVH-Academy.jpg new file mode 100644 index 000000000000..164dffdcedd4 Binary files /dev/null and b/packages/manager/apps/billing/src/images/OVH-Academy.jpg differ diff --git a/packages/manager/apps/billing/src/images/OVH-logo.png b/packages/manager/apps/billing/src/images/OVH-logo.png new file mode 100644 index 000000000000..79f477b22439 Binary files /dev/null and b/packages/manager/apps/billing/src/images/OVH-logo.png differ diff --git a/packages/manager/apps/billing/src/images/OVH-logo@2x.png b/packages/manager/apps/billing/src/images/OVH-logo@2x.png new file mode 100644 index 000000000000..97e769c3e265 Binary files /dev/null and b/packages/manager/apps/billing/src/images/OVH-logo@2x.png differ diff --git a/packages/manager/apps/billing/src/images/back-icon.png b/packages/manager/apps/billing/src/images/back-icon.png new file mode 100644 index 000000000000..bf3194366f19 Binary files /dev/null and b/packages/manager/apps/billing/src/images/back-icon.png differ diff --git a/packages/manager/apps/billing/src/images/bg-login.png b/packages/manager/apps/billing/src/images/bg-login.png new file mode 100644 index 000000000000..1bba82c5916b Binary files /dev/null and b/packages/manager/apps/billing/src/images/bg-login.png differ diff --git a/packages/manager/apps/billing/src/images/border.png b/packages/manager/apps/billing/src/images/border.png new file mode 100644 index 000000000000..be8cb9971fa6 Binary files /dev/null and b/packages/manager/apps/billing/src/images/border.png differ diff --git a/packages/manager/apps/billing/src/images/btn-login_fullunivers.png b/packages/manager/apps/billing/src/images/btn-login_fullunivers.png new file mode 100644 index 000000000000..15a484d8a0a3 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn-login_fullunivers.png differ diff --git a/packages/manager/apps/billing/src/images/btn/Icone-btn-vscope.png b/packages/manager/apps/billing/src/images/btn/Icone-btn-vscope.png new file mode 100644 index 000000000000..621db297563a Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/Icone-btn-vscope.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn-backup-activ.png b/packages/manager/apps/billing/src/images/btn/btn-backup-activ.png new file mode 100644 index 000000000000..d7ea9799675d Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn-backup-activ.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn-backup-suppr.png b/packages/manager/apps/billing/src/images/btn/btn-backup-suppr.png new file mode 100644 index 000000000000..1685f55b0802 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn-backup-suppr.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn-order-datastore.png b/packages/manager/apps/billing/src/images/btn/btn-order-datastore.png new file mode 100644 index 000000000000..bb48374ab589 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn-order-datastore.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn-order-host.png b/packages/manager/apps/billing/src/images/btn/btn-order-host.png new file mode 100644 index 000000000000..2187a4d72a37 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn-order-host.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn-spla-active.png b/packages/manager/apps/billing/src/images/btn/btn-spla-active.png new file mode 100644 index 000000000000..a595209d5ed9 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn-spla-active.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn-sprite-actions.png b/packages/manager/apps/billing/src/images/btn/btn-sprite-actions.png new file mode 100644 index 000000000000..7b343d379879 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn-sprite-actions.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_access_policy.png b/packages/manager/apps/billing/src/images/btn/btn_access_policy.png new file mode 100644 index 000000000000..2fa970925eaa Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_access_policy.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_add_USB.png b/packages/manager/apps/billing/src/images/btn/btn_add_USB.png new file mode 100644 index 000000000000..b6c7ff6e2331 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_add_USB.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_add_datacenter.png b/packages/manager/apps/billing/src/images/btn/btn_add_datacenter.png new file mode 100644 index 000000000000..773789885fd2 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_add_datacenter.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_add_ip.png b/packages/manager/apps/billing/src/images/btn/btn_add_ip.png new file mode 100644 index 000000000000..de668c91c54b Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_add_ip.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_add_vpn.png b/packages/manager/apps/billing/src/images/btn/btn_add_vpn.png new file mode 100644 index 000000000000..245fdb2981ab Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_add_vpn.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_backend_update.png b/packages/manager/apps/billing/src/images/btn/btn_backend_update.png new file mode 100644 index 000000000000..77bb94df8127 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_backend_update.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_backupftp_access.png b/packages/manager/apps/billing/src/images/btn/btn_backupftp_access.png new file mode 100644 index 000000000000..bea3d54f15a0 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_backupftp_access.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_backupftp_activate.png b/packages/manager/apps/billing/src/images/btn/btn_backupftp_activate.png new file mode 100644 index 000000000000..6cdc6fa423a4 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_backupftp_activate.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_backupftp_delete.png b/packages/manager/apps/billing/src/images/btn/btn_backupftp_delete.png new file mode 100644 index 000000000000..0c92250e3a6d Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_backupftp_delete.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_backupftp_order.png b/packages/manager/apps/billing/src/images/btn/btn_backupftp_order.png new file mode 100644 index 000000000000..2975c88b622a Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_backupftp_order.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_backupftp_password.png b/packages/manager/apps/billing/src/images/btn/btn_backupftp_password.png new file mode 100644 index 000000000000..55cfe3245c00 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_backupftp_password.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_bandwith_order.png b/packages/manager/apps/billing/src/images/btn/btn_bandwith_order.png new file mode 100644 index 000000000000..4d6751081d42 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_bandwith_order.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_cacherule_activate.png b/packages/manager/apps/billing/src/images/btn/btn_cacherule_activate.png new file mode 100644 index 000000000000..d112be05a6d1 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_cacherule_activate.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_cacherule_activate_all.png b/packages/manager/apps/billing/src/images/btn/btn_cacherule_activate_all.png new file mode 100644 index 000000000000..a451996d2926 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_cacherule_activate_all.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_cacherule_create.png b/packages/manager/apps/billing/src/images/btn/btn_cacherule_create.png new file mode 100644 index 000000000000..7e9cb8b00aae Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_cacherule_create.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_cacherule_delete_all.png b/packages/manager/apps/billing/src/images/btn/btn_cacherule_delete_all.png new file mode 100644 index 000000000000..24849914e259 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_cacherule_delete_all.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_cacherule_order.png b/packages/manager/apps/billing/src/images/btn/btn_cacherule_order.png new file mode 100644 index 000000000000..8468d0d8341c Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_cacherule_order.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_cacherule_unactive.png b/packages/manager/apps/billing/src/images/btn/btn_cacherule_unactive.png new file mode 100644 index 000000000000..ea3d32ac28ce Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_cacherule_unactive.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_cacherule_unactive_all.png b/packages/manager/apps/billing/src/images/btn/btn_cacherule_unactive_all.png new file mode 100644 index 000000000000..ed9d4dfcb643 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_cacherule_unactive_all.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_cacherule_update.png b/packages/manager/apps/billing/src/images/btn/btn_cacherule_update.png new file mode 100644 index 000000000000..ba02bf06e085 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_cacherule_update.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_change_nb_simultaneous_connection.png b/packages/manager/apps/billing/src/images/btn/btn_change_nb_simultaneous_connection.png new file mode 100644 index 000000000000..3a437bc3f602 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_change_nb_simultaneous_connection.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_change_timeout.png b/packages/manager/apps/billing/src/images/btn/btn_change_timeout.png new file mode 100644 index 000000000000..fbc22f8a376d Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_change_timeout.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_deactive_vpn.png b/packages/manager/apps/billing/src/images/btn/btn_deactive_vpn.png new file mode 100644 index 000000000000..aee03ba7b4fd Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_deactive_vpn.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_delete_ip.png b/packages/manager/apps/billing/src/images/btn/btn_delete_ip.png new file mode 100644 index 000000000000..04323d5d107a Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_delete_ip.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_dns_secondaire_ajout.png b/packages/manager/apps/billing/src/images/btn/btn_dns_secondaire_ajout.png new file mode 100644 index 000000000000..632c703c753f Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_dns_secondaire_ajout.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_domain_add.png b/packages/manager/apps/billing/src/images/btn/btn_domain_add.png new file mode 100644 index 000000000000..475280f8944d Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_domain_add.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_domain_bypass.png b/packages/manager/apps/billing/src/images/btn/btn_domain_bypass.png new file mode 100644 index 000000000000..2952be48a67f Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_domain_bypass.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_domain_del.png b/packages/manager/apps/billing/src/images/btn/btn_domain_del.png new file mode 100644 index 000000000000..6b6b81e8b1d2 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_domain_del.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_domain_flush.png b/packages/manager/apps/billing/src/images/btn/btn_domain_flush.png new file mode 100644 index 000000000000..10536d48d19b Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_domain_flush.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_domain_renew.png b/packages/manager/apps/billing/src/images/btn/btn_domain_renew.png new file mode 100644 index 000000000000..258cd3688950 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_domain_renew.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_domain_unbypass.png b/packages/manager/apps/billing/src/images/btn/btn_domain_unbypass.png new file mode 100644 index 000000000000..54e6294bdcaf Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_domain_unbypass.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_firewall_rule_add.png b/packages/manager/apps/billing/src/images/btn/btn_firewall_rule_add.png new file mode 100644 index 000000000000..55388f3e323b Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_firewall_rule_add.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_firewall_rule_delete.png b/packages/manager/apps/billing/src/images/btn/btn_firewall_rule_delete.png new file mode 100644 index 000000000000..162db97a2f76 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_firewall_rule_delete.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_go_vscope.png b/packages/manager/apps/billing/src/images/btn/btn_go_vscope.png new file mode 100644 index 000000000000..3815663390eb Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_go_vscope.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_ipmi_commande.png b/packages/manager/apps/billing/src/images/btn/btn_ipmi_commande.png new file mode 100644 index 000000000000..79994883c0df Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_ipmi_commande.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_ipmi_delete.png b/packages/manager/apps/billing/src/images/btn/btn_ipmi_delete.png new file mode 100644 index 000000000000..04658d8d8282 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_ipmi_delete.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_ipmi_java.png b/packages/manager/apps/billing/src/images/btn/btn_ipmi_java.png new file mode 100644 index 000000000000..263adf34ae00 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_ipmi_java.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_ipmi_navigateur.png b/packages/manager/apps/billing/src/images/btn/btn_ipmi_navigateur.png new file mode 100644 index 000000000000..026e5555589b Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_ipmi_navigateur.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_ipmi_restart.png b/packages/manager/apps/billing/src/images/btn/btn_ipmi_restart.png new file mode 100644 index 000000000000..b49ff18b8244 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_ipmi_restart.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_ipmi_test.png b/packages/manager/apps/billing/src/images/btn/btn_ipmi_test.png new file mode 100644 index 000000000000..58eac52fc3f0 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_ipmi_test.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_logout_policy.png b/packages/manager/apps/billing/src/images/btn/btn_logout_policy.png new file mode 100644 index 000000000000..6791045cfb9d Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_logout_policy.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_mitigation_active.png b/packages/manager/apps/billing/src/images/btn/btn_mitigation_active.png new file mode 100644 index 000000000000..5211535af2dc Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_mitigation_active.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_mitigation_auto.png b/packages/manager/apps/billing/src/images/btn/btn_mitigation_auto.png new file mode 100644 index 000000000000..42f22c3ce864 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_mitigation_auto.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_monitoring_activate.png b/packages/manager/apps/billing/src/images/btn/btn_monitoring_activate.png new file mode 100644 index 000000000000..1e59d8fdf704 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_monitoring_activate.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_monitoring_deactivate.png b/packages/manager/apps/billing/src/images/btn/btn_monitoring_deactivate.png new file mode 100644 index 000000000000..80194011c342 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_monitoring_deactivate.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_netboot.png b/packages/manager/apps/billing/src/images/btn/btn_netboot.png new file mode 100644 index 000000000000..32511cf211dc Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_netboot.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_order_NASHA.png b/packages/manager/apps/billing/src/images/btn/btn_order_NASHA.png new file mode 100644 index 000000000000..7d78242e9921 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_order_NASHA.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_order_bloc.png b/packages/manager/apps/billing/src/images/btn/btn_order_bloc.png new file mode 100644 index 000000000000..737baf78f93a Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_order_bloc.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_order_datacenter.png b/packages/manager/apps/billing/src/images/btn/btn_order_datacenter.png new file mode 100644 index 000000000000..0463b7d31e8c Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_order_datacenter.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_order_licence.png b/packages/manager/apps/billing/src/images/btn/btn_order_licence.png new file mode 100644 index 000000000000..578ddca2d989 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_order_licence.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_reinstaller.png b/packages/manager/apps/billing/src/images/btn/btn_reinstaller.png new file mode 100644 index 000000000000..096c136d1cfb Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_reinstaller.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_secondary_dns_add.png b/packages/manager/apps/billing/src/images/btn/btn_secondary_dns_add.png new file mode 100644 index 000000000000..632c703c753f Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_secondary_dns_add.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_secondary_dns_delete.png b/packages/manager/apps/billing/src/images/btn/btn_secondary_dns_delete.png new file mode 100644 index 000000000000..1de8f01f9ac4 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_secondary_dns_delete.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_ssl_add.png b/packages/manager/apps/billing/src/images/btn/btn_ssl_add.png new file mode 100644 index 000000000000..42dded232a23 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_ssl_add.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_ssl_remove.png b/packages/manager/apps/billing/src/images/btn/btn_ssl_remove.png new file mode 100644 index 000000000000..1bdb38c0bad6 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_ssl_remove.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_usb.png b/packages/manager/apps/billing/src/images/btn/btn_usb.png new file mode 100644 index 000000000000..1119192e4674 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_usb.png differ diff --git a/packages/manager/apps/billing/src/images/btn/btn_user_vsphere.png b/packages/manager/apps/billing/src/images/btn/btn_user_vsphere.png new file mode 100644 index 000000000000..f613f1921637 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/btn_user_vsphere.png differ diff --git a/packages/manager/apps/billing/src/images/btn/icn-calendar.png b/packages/manager/apps/billing/src/images/btn/icn-calendar.png new file mode 100644 index 000000000000..295e1890bd01 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/icn-calendar.png differ diff --git a/packages/manager/apps/billing/src/images/btn/nas/btn-nas-access-add.png b/packages/manager/apps/billing/src/images/btn/nas/btn-nas-access-add.png new file mode 100644 index 000000000000..bf2d8b84bf2a Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/nas/btn-nas-access-add.png differ diff --git a/packages/manager/apps/billing/src/images/btn/nas/btn-nas-access-delete.png b/packages/manager/apps/billing/src/images/btn/nas/btn-nas-access-delete.png new file mode 100644 index 000000000000..13b5045a038b Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/nas/btn-nas-access-delete.png differ diff --git a/packages/manager/apps/billing/src/images/btn/nas/btn-nas-partition-add.png b/packages/manager/apps/billing/src/images/btn/nas/btn-nas-partition-add.png new file mode 100644 index 000000000000..d7fc9c912a6d Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/nas/btn-nas-partition-add.png differ diff --git a/packages/manager/apps/billing/src/images/btn/nas/btn-nas-partition-delete.png b/packages/manager/apps/billing/src/images/btn/nas/btn-nas-partition-delete.png new file mode 100644 index 000000000000..8b093eea5b72 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/nas/btn-nas-partition-delete.png differ diff --git a/packages/manager/apps/billing/src/images/btn/pastille-warning.png b/packages/manager/apps/billing/src/images/btn/pastille-warning.png new file mode 100644 index 000000000000..7599a6a5f7ae Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/pastille-warning.png differ diff --git a/packages/manager/apps/billing/src/images/btn/server/firewallAsa/btn-firewall-activate.png b/packages/manager/apps/billing/src/images/btn/server/firewallAsa/btn-firewall-activate.png new file mode 100644 index 000000000000..226ceec20947 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/server/firewallAsa/btn-firewall-activate.png differ diff --git a/packages/manager/apps/billing/src/images/btn/server/firewallAsa/btn-firewall-desactivate.png b/packages/manager/apps/billing/src/images/btn/server/firewallAsa/btn-firewall-desactivate.png new file mode 100644 index 000000000000..5fdbf29ffb24 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/server/firewallAsa/btn-firewall-desactivate.png differ diff --git a/packages/manager/apps/billing/src/images/btn/server/firewallAsa/btn-firewall-order.png b/packages/manager/apps/billing/src/images/btn/server/firewallAsa/btn-firewall-order.png new file mode 100644 index 000000000000..3f8c61ef13b9 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/server/firewallAsa/btn-firewall-order.png differ diff --git a/packages/manager/apps/billing/src/images/btn/vps/btn-activate-backup.png b/packages/manager/apps/billing/src/images/btn/vps/btn-activate-backup.png new file mode 100644 index 000000000000..b13abba81d94 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/vps/btn-activate-backup.png differ diff --git a/packages/manager/apps/billing/src/images/btn/vps/btn-activate-snapshot.png b/packages/manager/apps/billing/src/images/btn/vps/btn-activate-snapshot.png new file mode 100644 index 000000000000..f4a1599a5cf6 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/vps/btn-activate-snapshot.png differ diff --git a/packages/manager/apps/billing/src/images/btn/vps/btn-add-ipv4.png b/packages/manager/apps/billing/src/images/btn/vps/btn-add-ipv4.png new file mode 100644 index 000000000000..dd6f94563d76 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/vps/btn-add-ipv4.png differ diff --git a/packages/manager/apps/billing/src/images/btn/vps/btn-additional_disk.png b/packages/manager/apps/billing/src/images/btn/vps/btn-additional_disk.png new file mode 100644 index 000000000000..e6194d28bc3f Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/vps/btn-additional_disk.png differ diff --git a/packages/manager/apps/billing/src/images/btn/vps/btn-delete-snapshot.png b/packages/manager/apps/billing/src/images/btn/vps/btn-delete-snapshot.png new file mode 100644 index 000000000000..040ba7ea38b7 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/vps/btn-delete-snapshot.png differ diff --git a/packages/manager/apps/billing/src/images/btn/vps/btn-desactivate-backup.png b/packages/manager/apps/billing/src/images/btn/vps/btn-desactivate-backup.png new file mode 100644 index 000000000000..e898c50c77ea Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/vps/btn-desactivate-backup.png differ diff --git a/packages/manager/apps/billing/src/images/btn/vps/btn-desactivate-snapshot.png b/packages/manager/apps/billing/src/images/btn/vps/btn-desactivate-snapshot.png new file mode 100644 index 000000000000..5e60518893a0 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/vps/btn-desactivate-snapshot.png differ diff --git a/packages/manager/apps/billing/src/images/btn/vps/btn-init-password.png b/packages/manager/apps/billing/src/images/btn/vps/btn-init-password.png new file mode 100644 index 000000000000..681eb6409e34 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/vps/btn-init-password.png differ diff --git a/packages/manager/apps/billing/src/images/btn/vps/btn-modify-dns.png b/packages/manager/apps/billing/src/images/btn/vps/btn-modify-dns.png new file mode 100644 index 000000000000..94ec05cbbb04 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/vps/btn-modify-dns.png differ diff --git a/packages/manager/apps/billing/src/images/btn/vps/btn-monitoring.png b/packages/manager/apps/billing/src/images/btn/vps/btn-monitoring.png new file mode 100644 index 000000000000..69d63a4eede7 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/vps/btn-monitoring.png differ diff --git a/packages/manager/apps/billing/src/images/btn/vps/btn-reinstall-vps.png b/packages/manager/apps/billing/src/images/btn/vps/btn-reinstall-vps.png new file mode 100644 index 000000000000..01830dee2316 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/vps/btn-reinstall-vps.png differ diff --git a/packages/manager/apps/billing/src/images/btn/vps/btn-renew-vps.png b/packages/manager/apps/billing/src/images/btn/vps/btn-renew-vps.png new file mode 100644 index 000000000000..48cf1e991548 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/vps/btn-renew-vps.png differ diff --git a/packages/manager/apps/billing/src/images/btn/vps/btn-restart-vps.png b/packages/manager/apps/billing/src/images/btn/vps/btn-restart-vps.png new file mode 100644 index 000000000000..906a11dafc99 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/vps/btn-restart-vps.png differ diff --git a/packages/manager/apps/billing/src/images/btn/vps/btn-restore-snapshot.png b/packages/manager/apps/billing/src/images/btn/vps/btn-restore-snapshot.png new file mode 100644 index 000000000000..012ffb30ad3f Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/vps/btn-restore-snapshot.png differ diff --git a/packages/manager/apps/billing/src/images/btn/vps/btn-take-snapshot.png b/packages/manager/apps/billing/src/images/btn/vps/btn-take-snapshot.png new file mode 100644 index 000000000000..13109217f5ee Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/vps/btn-take-snapshot.png differ diff --git a/packages/manager/apps/billing/src/images/btn/vps/btn-upgrade-vps.png b/packages/manager/apps/billing/src/images/btn/vps/btn-upgrade-vps.png new file mode 100644 index 000000000000..e86a83412c6b Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/vps/btn-upgrade-vps.png differ diff --git a/packages/manager/apps/billing/src/images/btn/vps/btn_veeam_mount.png b/packages/manager/apps/billing/src/images/btn/vps/btn_veeam_mount.png new file mode 100644 index 000000000000..6d2eac38c3f4 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/vps/btn_veeam_mount.png differ diff --git a/packages/manager/apps/billing/src/images/btn/vps/btn_veeam_order.png b/packages/manager/apps/billing/src/images/btn/vps/btn_veeam_order.png new file mode 100644 index 000000000000..8cab559a86d7 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/vps/btn_veeam_order.png differ diff --git a/packages/manager/apps/billing/src/images/btn/vps/btn_veeam_restore.png b/packages/manager/apps/billing/src/images/btn/vps/btn_veeam_restore.png new file mode 100644 index 000000000000..e5270a6a9a5f Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/vps/btn_veeam_restore.png differ diff --git a/packages/manager/apps/billing/src/images/btn/vps/btn_veeam_umount.png b/packages/manager/apps/billing/src/images/btn/vps/btn_veeam_umount.png new file mode 100644 index 000000000000..33b8e7dde4a9 Binary files /dev/null and b/packages/manager/apps/billing/src/images/btn/vps/btn_veeam_umount.png differ diff --git a/packages/manager/apps/billing/src/images/cdn/icn_cdn.png b/packages/manager/apps/billing/src/images/cdn/icn_cdn.png new file mode 100644 index 000000000000..3b16785c5b36 Binary files /dev/null and b/packages/manager/apps/billing/src/images/cdn/icn_cdn.png differ diff --git a/packages/manager/apps/billing/src/images/cdn/icn_domain.png b/packages/manager/apps/billing/src/images/cdn/icn_domain.png new file mode 100644 index 000000000000..062b0b016643 Binary files /dev/null and b/packages/manager/apps/billing/src/images/cdn/icn_domain.png differ diff --git a/packages/manager/apps/billing/src/images/cdn/icn_server.png b/packages/manager/apps/billing/src/images/cdn/icn_server.png new file mode 100644 index 000000000000..ebc324eaeb5a Binary files /dev/null and b/packages/manager/apps/billing/src/images/cdn/icn_server.png differ diff --git a/packages/manager/apps/billing/src/images/cdn/split.png b/packages/manager/apps/billing/src/images/cdn/split.png new file mode 100644 index 000000000000..f53e1f4a5527 Binary files /dev/null and b/packages/manager/apps/billing/src/images/cdn/split.png differ diff --git a/packages/manager/apps/billing/src/images/double-authentication.png b/packages/manager/apps/billing/src/images/double-authentication.png new file mode 100644 index 000000000000..1c27c6ec4062 Binary files /dev/null and b/packages/manager/apps/billing/src/images/double-authentication.png differ diff --git a/packages/manager/apps/billing/src/images/double-authentication@2x.png b/packages/manager/apps/billing/src/images/double-authentication@2x.png new file mode 100644 index 000000000000..58fca7a32052 Binary files /dev/null and b/packages/manager/apps/billing/src/images/double-authentication@2x.png differ diff --git a/packages/manager/apps/billing/src/images/double-authentication@3x.png b/packages/manager/apps/billing/src/images/double-authentication@3x.png new file mode 100644 index 000000000000..66703507542c Binary files /dev/null and b/packages/manager/apps/billing/src/images/double-authentication@3x.png differ diff --git a/packages/manager/apps/billing/src/images/drp/zerto-one-and-one-pcc.svg b/packages/manager/apps/billing/src/images/drp/zerto-one-and-one-pcc.svg new file mode 100644 index 000000000000..fbd430f131ea --- /dev/null +++ b/packages/manager/apps/billing/src/images/drp/zerto-one-and-one-pcc.svg @@ -0,0 +1,517 @@ + + + + +zerto-one-and-one-pcc +Created with Sketch. + + + + + + + + + + + + + + + + + + + + FailOver + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + VM + + + + + + + + + + + + + + + + + VM + + + + + + + + + + + + + + + + + VM + + + + + + + + + + + + + + + + + VM + + + + + + + + + + + + + + + + + VM + + + + + + + + + + + B + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A + + + + + + + + + + VM + + + + + + + + + + + + + + + VM + + + + + + + + + + + + + + + VM + + + + + + + + + + + + + + + VM + + + + + + + + + + + + + + + VM + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/manager/apps/billing/src/images/drp/zerto-two-pcc.svg b/packages/manager/apps/billing/src/images/drp/zerto-two-pcc.svg new file mode 100644 index 000000000000..2f66ca5d55d1 --- /dev/null +++ b/packages/manager/apps/billing/src/images/drp/zerto-two-pcc.svg @@ -0,0 +1,583 @@ + + + + +zerto-two-pcc +Created with Sketch. + + + + + + + + + + + + + + + + + + + B1 + + + + + + + + + VM + + + + + + + + + + + + + + + + VM + + + + + + + + + + + + + + + VM + + + + + + + + + + + + + + + VM + + + + + + + + + + + + + + + VM + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + FailOver + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + VM + + + + + + + + + + + + + + + + + VM + + + + + + + + + + + + + + + + + VM + + + + + + + + + + + + + + + + + VM + + + + + + + + + + + + + + + + + VM + + + + + + + + + + + B2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/manager/apps/billing/src/images/filet_changelog.png b/packages/manager/apps/billing/src/images/filet_changelog.png new file mode 100644 index 000000000000..f57984cd899a Binary files /dev/null and b/packages/manager/apps/billing/src/images/filet_changelog.png differ diff --git a/packages/manager/apps/billing/src/images/flags_little_os.jpg b/packages/manager/apps/billing/src/images/flags_little_os.jpg new file mode 100644 index 000000000000..8460dd1630b0 Binary files /dev/null and b/packages/manager/apps/billing/src/images/flags_little_os.jpg differ diff --git a/packages/manager/apps/billing/src/images/flags_os.png b/packages/manager/apps/billing/src/images/flags_os.png new file mode 100644 index 000000000000..b6338c619275 Binary files /dev/null and b/packages/manager/apps/billing/src/images/flags_os.png differ diff --git a/packages/manager/apps/billing/src/images/glyphicons-halflings-white.png b/packages/manager/apps/billing/src/images/glyphicons-halflings-white.png new file mode 100644 index 000000000000..3bf6484a29d8 Binary files /dev/null and b/packages/manager/apps/billing/src/images/glyphicons-halflings-white.png differ diff --git a/packages/manager/apps/billing/src/images/glyphicons-halflings.png b/packages/manager/apps/billing/src/images/glyphicons-halflings.png new file mode 100644 index 000000000000..a9969993201f Binary files /dev/null and b/packages/manager/apps/billing/src/images/glyphicons-halflings.png differ diff --git a/packages/manager/apps/billing/src/images/header/icn-show-menu.png b/packages/manager/apps/billing/src/images/header/icn-show-menu.png new file mode 100644 index 000000000000..553e346e43d2 Binary files /dev/null and b/packages/manager/apps/billing/src/images/header/icn-show-menu.png differ diff --git a/packages/manager/apps/billing/src/images/header/icn_aide_header.png b/packages/manager/apps/billing/src/images/header/icn_aide_header.png new file mode 100644 index 000000000000..307eb6557584 Binary files /dev/null and b/packages/manager/apps/billing/src/images/header/icn_aide_header.png differ diff --git a/packages/manager/apps/billing/src/images/header/icn_config_header.png b/packages/manager/apps/billing/src/images/header/icn_config_header.png new file mode 100644 index 000000000000..f67f005390f0 Binary files /dev/null and b/packages/manager/apps/billing/src/images/header/icn_config_header.png differ diff --git a/packages/manager/apps/billing/src/images/header/icn_factu_header.png b/packages/manager/apps/billing/src/images/header/icn_factu_header.png new file mode 100644 index 000000000000..1cf0463a9186 Binary files /dev/null and b/packages/manager/apps/billing/src/images/header/icn_factu_header.png differ diff --git a/packages/manager/apps/billing/src/images/header/icn_header_profil.png b/packages/manager/apps/billing/src/images/header/icn_header_profil.png new file mode 100644 index 000000000000..22c8646d2dc1 Binary files /dev/null and b/packages/manager/apps/billing/src/images/header/icn_header_profil.png differ diff --git a/packages/manager/apps/billing/src/images/header/icn_profil.png b/packages/manager/apps/billing/src/images/header/icn_profil.png new file mode 100644 index 000000000000..6fa6dbcc9415 Binary files /dev/null and b/packages/manager/apps/billing/src/images/header/icn_profil.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/cs_CZ/login.png b/packages/manager/apps/billing/src/images/i18n/cs_CZ/login.png new file mode 100644 index 000000000000..5513f58df28b Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/cs_CZ/login.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/cs_CZ/logo.png b/packages/manager/apps/billing/src/images/i18n/cs_CZ/logo.png new file mode 100644 index 000000000000..042d7869f74d Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/cs_CZ/logo.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/de_DE/login.png b/packages/manager/apps/billing/src/images/i18n/de_DE/login.png new file mode 100644 index 000000000000..32056c8c63a0 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/de_DE/login.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/de_DE/logo.png b/packages/manager/apps/billing/src/images/i18n/de_DE/logo.png new file mode 100644 index 000000000000..c01e864e6038 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/de_DE/logo.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/en_CA/login.png b/packages/manager/apps/billing/src/images/i18n/en_CA/login.png new file mode 100644 index 000000000000..c47ae386d279 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/en_CA/login.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/en_CA/logo.png b/packages/manager/apps/billing/src/images/i18n/en_CA/logo.png new file mode 100644 index 000000000000..9f63ded8de28 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/en_CA/logo.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/en_GB/login.png b/packages/manager/apps/billing/src/images/i18n/en_GB/login.png new file mode 100644 index 000000000000..c47ae386d279 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/en_GB/login.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/en_GB/logo.png b/packages/manager/apps/billing/src/images/i18n/en_GB/logo.png new file mode 100644 index 000000000000..9f63ded8de28 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/en_GB/logo.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/en_US/login.png b/packages/manager/apps/billing/src/images/i18n/en_US/login.png new file mode 100644 index 000000000000..c47ae386d279 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/en_US/login.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/en_US/logo.png b/packages/manager/apps/billing/src/images/i18n/en_US/logo.png new file mode 100644 index 000000000000..9f63ded8de28 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/en_US/logo.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/es_ES/login.png b/packages/manager/apps/billing/src/images/i18n/es_ES/login.png new file mode 100644 index 000000000000..ec7a42fbe20f Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/es_ES/login.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/es_ES/logo.png b/packages/manager/apps/billing/src/images/i18n/es_ES/logo.png new file mode 100644 index 000000000000..cbc4680cde86 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/es_ES/logo.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/es_US/login.png b/packages/manager/apps/billing/src/images/i18n/es_US/login.png new file mode 100644 index 000000000000..c47ae386d279 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/es_US/login.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/es_US/logo.png b/packages/manager/apps/billing/src/images/i18n/es_US/logo.png new file mode 100644 index 000000000000..9f63ded8de28 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/es_US/logo.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/fi_FI/login.png b/packages/manager/apps/billing/src/images/i18n/fi_FI/login.png new file mode 100644 index 000000000000..2d3c72dd2c8c Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/fi_FI/login.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/fi_FI/logo.png b/packages/manager/apps/billing/src/images/i18n/fi_FI/logo.png new file mode 100644 index 000000000000..382cea551f77 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/fi_FI/logo.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/fr_CA/login.png b/packages/manager/apps/billing/src/images/i18n/fr_CA/login.png new file mode 100644 index 000000000000..12e968077b8a Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/fr_CA/login.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/fr_CA/logo.png b/packages/manager/apps/billing/src/images/i18n/fr_CA/logo.png new file mode 100644 index 000000000000..1c62c8800c21 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/fr_CA/logo.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/fr_FR/login.png b/packages/manager/apps/billing/src/images/i18n/fr_FR/login.png new file mode 100644 index 000000000000..12e968077b8a Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/fr_FR/login.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/fr_FR/logo.png b/packages/manager/apps/billing/src/images/i18n/fr_FR/logo.png new file mode 100644 index 000000000000..1c62c8800c21 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/fr_FR/logo.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/it_IT/login.png b/packages/manager/apps/billing/src/images/i18n/it_IT/login.png new file mode 100644 index 000000000000..99f70bc56e6a Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/it_IT/login.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/it_IT/logo.png b/packages/manager/apps/billing/src/images/i18n/it_IT/logo.png new file mode 100644 index 000000000000..f5f8704397f5 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/it_IT/logo.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/logo.png b/packages/manager/apps/billing/src/images/i18n/logo.png new file mode 100644 index 000000000000..1c62c8800c21 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/logo.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/lt_LT/login.png b/packages/manager/apps/billing/src/images/i18n/lt_LT/login.png new file mode 100644 index 000000000000..0bc72cbe24a4 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/lt_LT/login.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/lt_LT/logo.png b/packages/manager/apps/billing/src/images/i18n/lt_LT/logo.png new file mode 100644 index 000000000000..93f408623a6c Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/lt_LT/logo.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/nl_NL/login.png b/packages/manager/apps/billing/src/images/i18n/nl_NL/login.png new file mode 100644 index 000000000000..879657b0b2a6 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/nl_NL/login.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/nl_NL/logo.png b/packages/manager/apps/billing/src/images/i18n/nl_NL/logo.png new file mode 100644 index 000000000000..9f63ded8de28 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/nl_NL/logo.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/pl_PL/login.png b/packages/manager/apps/billing/src/images/i18n/pl_PL/login.png new file mode 100644 index 000000000000..7e6c2a8a6513 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/pl_PL/login.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/pl_PL/logo.png b/packages/manager/apps/billing/src/images/i18n/pl_PL/logo.png new file mode 100644 index 000000000000..c684fbfee861 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/pl_PL/logo.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/pt_PT/login.png b/packages/manager/apps/billing/src/images/i18n/pt_PT/login.png new file mode 100644 index 000000000000..742e6c44614a Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/pt_PT/login.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/pt_PT/logo.png b/packages/manager/apps/billing/src/images/i18n/pt_PT/logo.png new file mode 100644 index 000000000000..6fa3fd00c0a1 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/pt_PT/logo.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/sk_SK/login.png b/packages/manager/apps/billing/src/images/i18n/sk_SK/login.png new file mode 100644 index 000000000000..12e968077b8a Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/sk_SK/login.png differ diff --git a/packages/manager/apps/billing/src/images/i18n/sk_SK/logo.png b/packages/manager/apps/billing/src/images/i18n/sk_SK/logo.png new file mode 100644 index 000000000000..9f63ded8de28 Binary files /dev/null and b/packages/manager/apps/billing/src/images/i18n/sk_SK/logo.png differ diff --git a/packages/manager/apps/billing/src/images/icn-pdf.png b/packages/manager/apps/billing/src/images/icn-pdf.png new file mode 100644 index 000000000000..d9ea618a0bfa Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn-pdf.png differ diff --git a/packages/manager/apps/billing/src/images/icn/arrow/arrow-down.svg b/packages/manager/apps/billing/src/images/icn/arrow/arrow-down.svg new file mode 100644 index 000000000000..8b6e69a343dd --- /dev/null +++ b/packages/manager/apps/billing/src/images/icn/arrow/arrow-down.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/packages/manager/apps/billing/src/images/icn/arrow/arrow-left.svg b/packages/manager/apps/billing/src/images/icn/arrow/arrow-left.svg new file mode 100644 index 000000000000..fb73876addf8 --- /dev/null +++ b/packages/manager/apps/billing/src/images/icn/arrow/arrow-left.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/packages/manager/apps/billing/src/images/icn/arrow/arrow-right.svg b/packages/manager/apps/billing/src/images/icn/arrow/arrow-right.svg new file mode 100644 index 000000000000..720c8890e4c3 --- /dev/null +++ b/packages/manager/apps/billing/src/images/icn/arrow/arrow-right.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/packages/manager/apps/billing/src/images/icn/arrow/arrow-up.svg b/packages/manager/apps/billing/src/images/icn/arrow/arrow-up.svg new file mode 100644 index 000000000000..3a434ea23d88 --- /dev/null +++ b/packages/manager/apps/billing/src/images/icn/arrow/arrow-up.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/packages/manager/apps/billing/src/images/icn/btn_order_licence.png b/packages/manager/apps/billing/src/images/icn/btn_order_licence.png new file mode 100644 index 000000000000..578ddca2d989 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/btn_order_licence.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-accessPolicy.png b/packages/manager/apps/billing/src/images/icn/icn-accessPolicy.png new file mode 100644 index 000000000000..2fa970925eaa Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-accessPolicy.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-account_vpn.png b/packages/manager/apps/billing/src/images/icn/icn-account_vpn.png new file mode 100644 index 000000000000..245fdb2981ab Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-account_vpn.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-addDatacenter.png b/packages/manager/apps/billing/src/images/icn/icn-addDatacenter.png new file mode 100644 index 000000000000..773789885fd2 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-addDatacenter.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-addIp.png b/packages/manager/apps/billing/src/images/icn/icn-addIp.png new file mode 100644 index 000000000000..de668c91c54b Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-addIp.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-basket-small.png b/packages/manager/apps/billing/src/images/icn/icn-basket-small.png new file mode 100644 index 000000000000..58122fbbbc54 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-basket-small.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-btn-help-small.png b/packages/manager/apps/billing/src/images/icn/icn-btn-help-small.png new file mode 100644 index 000000000000..f04fbc671f86 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-btn-help-small.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-cdn.png b/packages/manager/apps/billing/src/images/icn/icn-cdn.png new file mode 100644 index 000000000000..e5fee811965e Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-cdn.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-changeTimeout.png b/packages/manager/apps/billing/src/images/icn/icn-changeTimeout.png new file mode 100644 index 000000000000..fbc22f8a376d Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-changeTimeout.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-check.png b/packages/manager/apps/billing/src/images/icn/icn-check.png new file mode 100644 index 000000000000..7c861d327172 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-check.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-datacenter.png b/packages/manager/apps/billing/src/images/icn/icn-datacenter.png new file mode 100644 index 000000000000..7e502ee03520 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-datacenter.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-deactiveVpn.png b/packages/manager/apps/billing/src/images/icn/icn-deactiveVpn.png new file mode 100644 index 000000000000..aee03ba7b4fd Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-deactiveVpn.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-deleteIp.png b/packages/manager/apps/billing/src/images/icn/icn-deleteIp.png new file mode 100644 index 000000000000..04323d5d107a Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-deleteIp.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-goVscope.png b/packages/manager/apps/billing/src/images/icn/icn-goVscope.png new file mode 100644 index 000000000000..c7ddde4b6cf1 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-goVscope.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-housing.svg b/packages/manager/apps/billing/src/images/icn/icn-housing.svg new file mode 100644 index 000000000000..73333557dea1 --- /dev/null +++ b/packages/manager/apps/billing/src/images/icn/icn-housing.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + diff --git a/packages/manager/apps/billing/src/images/icn/icn-login.png b/packages/manager/apps/billing/src/images/icn/icn-login.png new file mode 100644 index 000000000000..5f99779f2345 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-login.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-logoutPolicy.png b/packages/manager/apps/billing/src/images/icn/icn-logoutPolicy.png new file mode 100644 index 000000000000..6791045cfb9d Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-logoutPolicy.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-nas.png b/packages/manager/apps/billing/src/images/icn/icn-nas.png new file mode 100644 index 000000000000..428d18930b02 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-nas.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-nbConnect.png b/packages/manager/apps/billing/src/images/icn/icn-nbConnect.png new file mode 100644 index 000000000000..3a437bc3f602 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-nbConnect.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-network-32px.png b/packages/manager/apps/billing/src/images/icn/icn-network-32px.png new file mode 100644 index 000000000000..79fb213d4a00 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-network-32px.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-network.png b/packages/manager/apps/billing/src/images/icn/icn-network.png new file mode 100644 index 000000000000..390338a47636 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-network.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-option-delete.png b/packages/manager/apps/billing/src/images/icn/icn-option-delete.png new file mode 100644 index 000000000000..e3f3a2ef3e4c Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-option-delete.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-orderBloc.png b/packages/manager/apps/billing/src/images/icn/icn-orderBloc.png new file mode 100644 index 000000000000..737baf78f93a Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-orderBloc.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-orderDatacenter.png b/packages/manager/apps/billing/src/images/icn/icn-orderDatacenter.png new file mode 100644 index 000000000000..0463b7d31e8c Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-orderDatacenter.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-orderNASHA.png b/packages/manager/apps/billing/src/images/icn/icn-orderNASHA.png new file mode 100644 index 000000000000..7d78242e9921 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-orderNASHA.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-password.png b/packages/manager/apps/billing/src/images/icn/icn-password.png new file mode 100644 index 000000000000..dc0abee1c1d0 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-password.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-pcc.png b/packages/manager/apps/billing/src/images/icn/icn-pcc.png new file mode 100644 index 000000000000..9d9047866b38 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-pcc.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-pcc_cadenas.png b/packages/manager/apps/billing/src/images/icn/icn-pcc_cadenas.png new file mode 100644 index 000000000000..a3d6b2153f4b Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-pcc_cadenas.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-server.png b/packages/manager/apps/billing/src/images/icn/icn-server.png new file mode 100644 index 000000000000..2b4ca0f064b9 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-server.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-usb-blue.png b/packages/manager/apps/billing/src/images/icn/icn-usb-blue.png new file mode 100644 index 000000000000..e4ee10361fb1 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-usb-blue.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-usb-gray.png b/packages/manager/apps/billing/src/images/icn/icn-usb-gray.png new file mode 100644 index 000000000000..f0f9466df4ed Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-usb-gray.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-usb-white.png b/packages/manager/apps/billing/src/images/icn/icn-usb-white.png new file mode 100644 index 000000000000..772fe852ef28 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-usb-white.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-userVsphere.png b/packages/manager/apps/billing/src/images/icn/icn-userVsphere.png new file mode 100644 index 000000000000..f613f1921637 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-userVsphere.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn-vrack.png b/packages/manager/apps/billing/src/images/icn/icn-vrack.png new file mode 100644 index 000000000000..a77a5077d0fa Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn-vrack.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn_action_multiple.png b/packages/manager/apps/billing/src/images/icn/icn_action_multiple.png new file mode 100644 index 000000000000..011888b84e83 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn_action_multiple.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn_domain_purple.png b/packages/manager/apps/billing/src/images/icn/icn_domain_purple.png new file mode 100644 index 000000000000..1eed764a5581 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn_domain_purple.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn_ip_blue.png b/packages/manager/apps/billing/src/images/icn/icn_ip_blue.png new file mode 100644 index 000000000000..ac4ae8d0406e Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn_ip_blue.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn_licences_blue.png b/packages/manager/apps/billing/src/images/icn/icn_licences_blue.png new file mode 100644 index 000000000000..de187d94d611 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn_licences_blue.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn_save_blue.png b/packages/manager/apps/billing/src/images/icn/icn_save_blue.png new file mode 100644 index 000000000000..cb937573aa33 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn_save_blue.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn_selected_ip.png b/packages/manager/apps/billing/src/images/icn/icn_selected_ip.png new file mode 100644 index 000000000000..6d40e4571f84 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn_selected_ip.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn_trash.png b/packages/manager/apps/billing/src/images/icn/icn_trash.png new file mode 100644 index 000000000000..8cca7845421c Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn_trash.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn_veeam_mount.png b/packages/manager/apps/billing/src/images/icn/icn_veeam_mount.png new file mode 100644 index 000000000000..374ad0fbd905 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn_veeam_mount.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn_veeam_restore.png b/packages/manager/apps/billing/src/images/icn/icn_veeam_restore.png new file mode 100644 index 000000000000..04206c4a898c Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn_veeam_restore.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icn_vps_blue.png b/packages/manager/apps/billing/src/images/icn/icn_vps_blue.png new file mode 100644 index 000000000000..2682ca5a028b Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icn_vps_blue.png differ diff --git a/packages/manager/apps/billing/src/images/icn/ico-ip-attack.png b/packages/manager/apps/billing/src/images/icn/ico-ip-attack.png new file mode 100644 index 000000000000..676cc6b59dfd Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/ico-ip-attack.png differ diff --git a/packages/manager/apps/billing/src/images/icn/ico-ip-edit.png b/packages/manager/apps/billing/src/images/icn/ico-ip-edit.png new file mode 100644 index 000000000000..10959e517a68 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/ico-ip-edit.png differ diff --git a/packages/manager/apps/billing/src/images/icn/ico-ip-rapport.png b/packages/manager/apps/billing/src/images/icn/ico-ip-rapport.png new file mode 100644 index 000000000000..47fc9bc6b487 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/ico-ip-rapport.png differ diff --git a/packages/manager/apps/billing/src/images/icn/ico-ip-spam.png b/packages/manager/apps/billing/src/images/icn/ico-ip-spam.png new file mode 100644 index 000000000000..76494d1be652 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/ico-ip-spam.png differ diff --git a/packages/manager/apps/billing/src/images/icn/ico-ip-warning.png b/packages/manager/apps/billing/src/images/icn/ico-ip-warning.png new file mode 100644 index 000000000000..21104120ae28 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/ico-ip-warning.png differ diff --git a/packages/manager/apps/billing/src/images/icn/icone-btn-bp-order.png b/packages/manager/apps/billing/src/images/icn/icone-btn-bp-order.png new file mode 100644 index 000000000000..31552874f6ab Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/icone-btn-bp-order.png differ diff --git a/packages/manager/apps/billing/src/images/icn/newtab.svg b/packages/manager/apps/billing/src/images/icn/newtab.svg new file mode 100644 index 000000000000..a70dfd8ce1f7 --- /dev/null +++ b/packages/manager/apps/billing/src/images/icn/newtab.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + diff --git a/packages/manager/apps/billing/src/images/icn/state-cancel.png b/packages/manager/apps/billing/src/images/icn/state-cancel.png new file mode 100644 index 000000000000..af3ae18a25de Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/state-cancel.png differ diff --git a/packages/manager/apps/billing/src/images/icn/state-error.png b/packages/manager/apps/billing/src/images/icn/state-error.png new file mode 100644 index 000000000000..5e50c7a02f94 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/state-error.png differ diff --git a/packages/manager/apps/billing/src/images/icn/state-pending.png b/packages/manager/apps/billing/src/images/icn/state-pending.png new file mode 100644 index 000000000000..b74d751ec9cf Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/state-pending.png differ diff --git a/packages/manager/apps/billing/src/images/icn/state-stopped.png b/packages/manager/apps/billing/src/images/icn/state-stopped.png new file mode 100644 index 000000000000..c10136c4fa8c Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/state-stopped.png differ diff --git a/packages/manager/apps/billing/src/images/icn/warning-jaune.png b/packages/manager/apps/billing/src/images/icn/warning-jaune.png new file mode 100644 index 000000000000..3229c45d89b2 Binary files /dev/null and b/packages/manager/apps/billing/src/images/icn/warning-jaune.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/arrows (copy).png b/packages/manager/apps/billing/src/images/left_menu/arrows (copy).png new file mode 100644 index 000000000000..72f85164603b Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/arrows (copy).png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/arrows-not-expandable (copy).png b/packages/manager/apps/billing/src/images/left_menu/arrows-not-expandable (copy).png new file mode 100644 index 000000000000..b894f9eca0db Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/arrows-not-expandable (copy).png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/arrows-not-expandable.png b/packages/manager/apps/billing/src/images/left_menu/arrows-not-expandable.png new file mode 100644 index 000000000000..850f6fc3b6f9 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/arrows-not-expandable.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/arrows.png b/packages/manager/apps/billing/src/images/left_menu/arrows.png new file mode 100644 index 000000000000..ec7c940ecae2 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/arrows.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/cdns-icn.png b/packages/manager/apps/billing/src/images/left_menu/cdns-icn.png new file mode 100644 index 000000000000..a0dfe556728f Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/cdns-icn.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/cloudPublic.png b/packages/manager/apps/billing/src/images/left_menu/cloudPublic.png new file mode 100644 index 000000000000..752814379a7f Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/cloudPublic.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/exchanges-icn.png b/packages/manager/apps/billing/src/images/left_menu/exchanges-icn.png new file mode 100644 index 000000000000..87cb6b4612fd Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/exchanges-icn.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/icn-DEDICATED_CLOUD.png b/packages/manager/apps/billing/src/images/left_menu/icn-DEDICATED_CLOUD.png new file mode 100644 index 000000000000..b9d43edd754c Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/icn-DEDICATED_CLOUD.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/icn-IPVRACK.png b/packages/manager/apps/billing/src/images/left_menu/icn-IPVRACK.png new file mode 100644 index 000000000000..390338a47636 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/icn-IPVRACK.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/icn-cloudproject.png b/packages/manager/apps/billing/src/images/left_menu/icn-cloudproject.png new file mode 100644 index 000000000000..7871ada58b07 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/icn-cloudproject.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/icn-datacenter.png b/packages/manager/apps/billing/src/images/left_menu/icn-datacenter.png new file mode 100644 index 000000000000..7e502ee03520 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/icn-datacenter.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/icn-nas.png b/packages/manager/apps/billing/src/images/left_menu/icn-nas.png new file mode 100644 index 000000000000..148986d1d80c Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/icn-nas.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/icn-network-arrow.png b/packages/manager/apps/billing/src/images/left_menu/icn-network-arrow.png new file mode 100644 index 000000000000..9a0f6031b377 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/icn-network-arrow.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/icn-network.png b/packages/manager/apps/billing/src/images/left_menu/icn-network.png new file mode 100644 index 000000000000..390338a47636 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/icn-network.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/icn-vrack.png b/packages/manager/apps/billing/src/images/left_menu/icn-vrack.png new file mode 100644 index 000000000000..c13f63884b47 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/icn-vrack.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/icn_cdn.png b/packages/manager/apps/billing/src/images/left_menu/icn_cdn.png new file mode 100644 index 000000000000..11e0360a1b12 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/icn_cdn.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/icn_database.png b/packages/manager/apps/billing/src/images/left_menu/icn_database.png new file mode 100644 index 000000000000..ef58076e7c5c Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/icn_database.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/icn_exchange.png b/packages/manager/apps/billing/src/images/left_menu/icn_exchange.png new file mode 100644 index 000000000000..f1530cfaeb83 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/icn_exchange.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/icn_exchange_hosted.png b/packages/manager/apps/billing/src/images/left_menu/icn_exchange_hosted.png new file mode 100644 index 000000000000..3d69fcb7bf46 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/icn_exchange_hosted.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/icn_exchange_private.png b/packages/manager/apps/billing/src/images/left_menu/icn_exchange_private.png new file mode 100644 index 000000000000..8ceb195eedf1 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/icn_exchange_private.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/icn_housing.png b/packages/manager/apps/billing/src/images/left_menu/icn_housing.png new file mode 100644 index 000000000000..02ec592eedd3 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/icn_housing.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/icn_licence.png b/packages/manager/apps/billing/src/images/left_menu/icn_licence.png new file mode 100644 index 000000000000..2502bec83693 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/icn_licence.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/icn_server.png b/packages/manager/apps/billing/src/images/left_menu/icn_server.png new file mode 100644 index 000000000000..1be6142635fc Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/icn_server.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/icn_vps.png b/packages/manager/apps/billing/src/images/left_menu/icn_vps.png new file mode 100644 index 000000000000..c434980179e2 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/icn_vps.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/icn_vrack.png b/packages/manager/apps/billing/src/images/left_menu/icn_vrack.png new file mode 100644 index 000000000000..8269f4ff9988 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/icn_vrack.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/ico-menu-gauche-IP.png b/packages/manager/apps/billing/src/images/left_menu/ico-menu-gauche-IP.png new file mode 100644 index 000000000000..11d5cc471d16 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/ico-menu-gauche-IP.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/infrastructure-icn.png b/packages/manager/apps/billing/src/images/left_menu/infrastructure-icn.png new file mode 100644 index 000000000000..c6d3f819a625 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/infrastructure-icn.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/ip-icn.png b/packages/manager/apps/billing/src/images/left_menu/ip-icn.png new file mode 100644 index 000000000000..eb6279acd293 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/ip-icn.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/network-icn.png b/packages/manager/apps/billing/src/images/left_menu/network-icn.png new file mode 100644 index 000000000000..6b9691e12594 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/network-icn.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/pcc-icn.png b/packages/manager/apps/billing/src/images/left_menu/pcc-icn.png new file mode 100644 index 000000000000..1c4ea6d4a7be Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/pcc-icn.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/plus_open_grey.png b/packages/manager/apps/billing/src/images/left_menu/plus_open_grey.png new file mode 100644 index 000000000000..1ec5ca2dd001 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/plus_open_grey.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/plus_open_white.png b/packages/manager/apps/billing/src/images/left_menu/plus_open_white.png new file mode 100644 index 000000000000..4d8c9ae59345 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/plus_open_white.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/servers-icn.png b/packages/manager/apps/billing/src/images/left_menu/servers-icn.png new file mode 100644 index 000000000000..9cf24552a825 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/servers-icn.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/vps-icn.png b/packages/manager/apps/billing/src/images/left_menu/vps-icn.png new file mode 100644 index 000000000000..e365eba7f221 Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/vps-icn.png differ diff --git a/packages/manager/apps/billing/src/images/left_menu/vrack-icn.png b/packages/manager/apps/billing/src/images/left_menu/vrack-icn.png new file mode 100644 index 000000000000..5bb238ffd91e Binary files /dev/null and b/packages/manager/apps/billing/src/images/left_menu/vrack-icn.png differ diff --git a/packages/manager/apps/billing/src/images/legacy_server_de.png b/packages/manager/apps/billing/src/images/legacy_server_de.png new file mode 100644 index 000000000000..5c740e874b89 Binary files /dev/null and b/packages/manager/apps/billing/src/images/legacy_server_de.png differ diff --git a/packages/manager/apps/billing/src/images/license/CLOUDLINUX_icon.png b/packages/manager/apps/billing/src/images/license/CLOUDLINUX_icon.png new file mode 100644 index 000000000000..a78162e721f6 Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/CLOUDLINUX_icon.png differ diff --git a/packages/manager/apps/billing/src/images/license/CLOUDLINUX_medium.png b/packages/manager/apps/billing/src/images/license/CLOUDLINUX_medium.png new file mode 100644 index 000000000000..354308a8c344 Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/CLOUDLINUX_medium.png differ diff --git a/packages/manager/apps/billing/src/images/license/CPANEL_icon.png b/packages/manager/apps/billing/src/images/license/CPANEL_icon.png new file mode 100644 index 000000000000..490cf389bad5 Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/CPANEL_icon.png differ diff --git a/packages/manager/apps/billing/src/images/license/CPANEL_medium.png b/packages/manager/apps/billing/src/images/license/CPANEL_medium.png new file mode 100644 index 000000000000..5ce17f51b96d Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/CPANEL_medium.png differ diff --git a/packages/manager/apps/billing/src/images/license/DIRECTADMIN_icon.png b/packages/manager/apps/billing/src/images/license/DIRECTADMIN_icon.png new file mode 100644 index 000000000000..e43e3036a0c6 Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/DIRECTADMIN_icon.png differ diff --git a/packages/manager/apps/billing/src/images/license/DIRECTADMIN_medium.png b/packages/manager/apps/billing/src/images/license/DIRECTADMIN_medium.png new file mode 100644 index 000000000000..bae488a45d2e Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/DIRECTADMIN_medium.png differ diff --git a/packages/manager/apps/billing/src/images/license/PLESK12_medium.png b/packages/manager/apps/billing/src/images/license/PLESK12_medium.png new file mode 100644 index 000000000000..7c02467ff0ef Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/PLESK12_medium.png differ diff --git a/packages/manager/apps/billing/src/images/license/PLESK_icon.png b/packages/manager/apps/billing/src/images/license/PLESK_icon.png new file mode 100644 index 000000000000..e6631dc53ded Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/PLESK_icon.png differ diff --git a/packages/manager/apps/billing/src/images/license/PLESK_medium.png b/packages/manager/apps/billing/src/images/license/PLESK_medium.png new file mode 100644 index 000000000000..7c02467ff0ef Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/PLESK_medium.png differ diff --git a/packages/manager/apps/billing/src/images/license/SPLA_icon.png b/packages/manager/apps/billing/src/images/license/SPLA_icon.png new file mode 100644 index 000000000000..50103c402ebf Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/SPLA_icon.png differ diff --git a/packages/manager/apps/billing/src/images/license/SPLA_medium.png b/packages/manager/apps/billing/src/images/license/SPLA_medium.png new file mode 100644 index 000000000000..91dc14f8641e Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/SPLA_medium.png differ diff --git a/packages/manager/apps/billing/src/images/license/SQLSERVER_icon.png b/packages/manager/apps/billing/src/images/license/SQLSERVER_icon.png new file mode 100644 index 000000000000..08c02c08596e Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/SQLSERVER_icon.png differ diff --git a/packages/manager/apps/billing/src/images/license/SQLSERVER_medium.png b/packages/manager/apps/billing/src/images/license/SQLSERVER_medium.png new file mode 100644 index 000000000000..4d3e4c81690a Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/SQLSERVER_medium.png differ diff --git a/packages/manager/apps/billing/src/images/license/VIRTUOZZO_icon.png b/packages/manager/apps/billing/src/images/license/VIRTUOZZO_icon.png new file mode 100644 index 000000000000..e6631dc53ded Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/VIRTUOZZO_icon.png differ diff --git a/packages/manager/apps/billing/src/images/license/VIRTUOZZO_medium.png b/packages/manager/apps/billing/src/images/license/VIRTUOZZO_medium.png new file mode 100644 index 000000000000..486dbd330af2 Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/VIRTUOZZO_medium.png differ diff --git a/packages/manager/apps/billing/src/images/license/WINDOWS_icon.png b/packages/manager/apps/billing/src/images/license/WINDOWS_icon.png new file mode 100644 index 000000000000..50103c402ebf Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/WINDOWS_icon.png differ diff --git a/packages/manager/apps/billing/src/images/license/WINDOWS_medium.png b/packages/manager/apps/billing/src/images/license/WINDOWS_medium.png new file mode 100644 index 000000000000..91dc14f8641e Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/WINDOWS_medium.png differ diff --git a/packages/manager/apps/billing/src/images/license/WORKLIGHT_icon.png b/packages/manager/apps/billing/src/images/license/WORKLIGHT_icon.png new file mode 100644 index 000000000000..db6ec592c660 Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/WORKLIGHT_icon.png differ diff --git a/packages/manager/apps/billing/src/images/license/WORKLIGHT_medium.png b/packages/manager/apps/billing/src/images/license/WORKLIGHT_medium.png new file mode 100644 index 000000000000..7b1100902440 Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/WORKLIGHT_medium.png differ diff --git a/packages/manager/apps/billing/src/images/license/ajax-loader.gif b/packages/manager/apps/billing/src/images/license/ajax-loader.gif new file mode 100644 index 000000000000..8eaac7a705d4 Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/ajax-loader.gif differ diff --git a/packages/manager/apps/billing/src/images/license/btn/btn-spla-active.png b/packages/manager/apps/billing/src/images/license/btn/btn-spla-active.png new file mode 100644 index 000000000000..a595209d5ed9 Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/btn/btn-spla-active.png differ diff --git a/packages/manager/apps/billing/src/images/license/btn/btn_order_licence.png b/packages/manager/apps/billing/src/images/license/btn/btn_order_licence.png new file mode 100644 index 000000000000..79df6ba947cb Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/btn/btn_order_licence.png differ diff --git a/packages/manager/apps/billing/src/images/license/btn/btn_order_licenceold.png b/packages/manager/apps/billing/src/images/license/btn/btn_order_licenceold.png new file mode 100644 index 000000000000..578ddca2d989 Binary files /dev/null and b/packages/manager/apps/billing/src/images/license/btn/btn_order_licenceold.png differ diff --git a/packages/manager/apps/billing/src/images/loading.gif b/packages/manager/apps/billing/src/images/loading.gif new file mode 100644 index 000000000000..d0bce1542342 Binary files /dev/null and b/packages/manager/apps/billing/src/images/loading.gif differ diff --git a/packages/manager/apps/billing/src/images/login-bg.png b/packages/manager/apps/billing/src/images/login-bg.png new file mode 100644 index 000000000000..dc55019f9a47 Binary files /dev/null and b/packages/manager/apps/billing/src/images/login-bg.png differ diff --git a/packages/manager/apps/billing/src/images/login-universes.png b/packages/manager/apps/billing/src/images/login-universes.png new file mode 100644 index 000000000000..d9ded2fcd6aa Binary files /dev/null and b/packages/manager/apps/billing/src/images/login-universes.png differ diff --git a/packages/manager/apps/billing/src/images/logo-ovhcom.png b/packages/manager/apps/billing/src/images/logo-ovhcom.png new file mode 100644 index 000000000000..d6cab03e3a23 Binary files /dev/null and b/packages/manager/apps/billing/src/images/logo-ovhcom.png differ diff --git a/packages/manager/apps/billing/src/images/logo.png b/packages/manager/apps/billing/src/images/logo.png new file mode 100644 index 000000000000..474979172a6a Binary files /dev/null and b/packages/manager/apps/billing/src/images/logo.png differ diff --git a/packages/manager/apps/billing/src/images/logo_ca.png b/packages/manager/apps/billing/src/images/logo_ca.png new file mode 100644 index 000000000000..e1e8bc0ad0ad Binary files /dev/null and b/packages/manager/apps/billing/src/images/logo_ca.png differ diff --git a/packages/manager/apps/billing/src/images/logo_homepage.png b/packages/manager/apps/billing/src/images/logo_homepage.png new file mode 100644 index 000000000000..21f10fe83b62 Binary files /dev/null and b/packages/manager/apps/billing/src/images/logo_homepage.png differ diff --git a/packages/manager/apps/billing/src/images/map/BHS.png b/packages/manager/apps/billing/src/images/map/BHS.png new file mode 100644 index 000000000000..4cf2a95fe247 Binary files /dev/null and b/packages/manager/apps/billing/src/images/map/BHS.png differ diff --git a/packages/manager/apps/billing/src/images/map/DC.png b/packages/manager/apps/billing/src/images/map/DC.png new file mode 100644 index 000000000000..81ad4df390c4 Binary files /dev/null and b/packages/manager/apps/billing/src/images/map/DC.png differ diff --git a/packages/manager/apps/billing/src/images/map/GRA.png b/packages/manager/apps/billing/src/images/map/GRA.png new file mode 100644 index 000000000000..1c9e20a2d65d Binary files /dev/null and b/packages/manager/apps/billing/src/images/map/GRA.png differ diff --git a/packages/manager/apps/billing/src/images/map/HIL.png b/packages/manager/apps/billing/src/images/map/HIL.png new file mode 100644 index 000000000000..c2f8c1908bee Binary files /dev/null and b/packages/manager/apps/billing/src/images/map/HIL.png differ diff --git a/packages/manager/apps/billing/src/images/map/LIM.png b/packages/manager/apps/billing/src/images/map/LIM.png new file mode 100644 index 000000000000..9febdee6f541 Binary files /dev/null and b/packages/manager/apps/billing/src/images/map/LIM.png differ diff --git a/packages/manager/apps/billing/src/images/map/RBX.png b/packages/manager/apps/billing/src/images/map/RBX.png new file mode 100644 index 000000000000..96dfa220f057 Binary files /dev/null and b/packages/manager/apps/billing/src/images/map/RBX.png differ diff --git a/packages/manager/apps/billing/src/images/map/SBG.png b/packages/manager/apps/billing/src/images/map/SBG.png new file mode 100644 index 000000000000..132339eddc98 Binary files /dev/null and b/packages/manager/apps/billing/src/images/map/SBG.png differ diff --git a/packages/manager/apps/billing/src/images/map/SGP.png b/packages/manager/apps/billing/src/images/map/SGP.png new file mode 100644 index 000000000000..85b17cff0a23 Binary files /dev/null and b/packages/manager/apps/billing/src/images/map/SGP.png differ diff --git a/packages/manager/apps/billing/src/images/map/SYD.png b/packages/manager/apps/billing/src/images/map/SYD.png new file mode 100644 index 000000000000..72e85b370235 Binary files /dev/null and b/packages/manager/apps/billing/src/images/map/SYD.png differ diff --git a/packages/manager/apps/billing/src/images/map/VIN.png b/packages/manager/apps/billing/src/images/map/VIN.png new file mode 100644 index 000000000000..bfeb9d41f6c7 Binary files /dev/null and b/packages/manager/apps/billing/src/images/map/VIN.png differ diff --git a/packages/manager/apps/billing/src/images/map/WAW.png b/packages/manager/apps/billing/src/images/map/WAW.png new file mode 100644 index 000000000000..9e2bf16c596d Binary files /dev/null and b/packages/manager/apps/billing/src/images/map/WAW.png differ diff --git a/packages/manager/apps/billing/src/images/navbar/icon-assistance.svg b/packages/manager/apps/billing/src/images/navbar/icon-assistance.svg new file mode 100644 index 000000000000..821f61c2053c --- /dev/null +++ b/packages/manager/apps/billing/src/images/navbar/icon-assistance.svg @@ -0,0 +1 @@ +icon_assistance_1 \ No newline at end of file diff --git a/packages/manager/apps/billing/src/images/navbar/icon-assistance_on.svg b/packages/manager/apps/billing/src/images/navbar/icon-assistance_on.svg new file mode 100644 index 000000000000..91a78a958164 --- /dev/null +++ b/packages/manager/apps/billing/src/images/navbar/icon-assistance_on.svg @@ -0,0 +1 @@ +icon_assistance_on_1 \ No newline at end of file diff --git a/packages/manager/apps/billing/src/images/navbar/icon-external-link.svg b/packages/manager/apps/billing/src/images/navbar/icon-external-link.svg new file mode 100644 index 000000000000..ee83401d156c --- /dev/null +++ b/packages/manager/apps/billing/src/images/navbar/icon-external-link.svg @@ -0,0 +1,15 @@ + + + icon/externalink + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/manager/apps/billing/src/images/navbar/icon-logo-ovh.svg b/packages/manager/apps/billing/src/images/navbar/icon-logo-ovh.svg new file mode 100644 index 000000000000..0b360b8b5090 --- /dev/null +++ b/packages/manager/apps/billing/src/images/navbar/icon-logo-ovh.svg @@ -0,0 +1 @@ +icon_logo_ovh \ No newline at end of file diff --git a/packages/manager/apps/billing/src/images/navbar/icon-notifications.svg b/packages/manager/apps/billing/src/images/navbar/icon-notifications.svg new file mode 100644 index 000000000000..fe41417f88b6 --- /dev/null +++ b/packages/manager/apps/billing/src/images/navbar/icon-notifications.svg @@ -0,0 +1 @@ +icon_notification \ No newline at end of file diff --git a/packages/manager/apps/billing/src/images/navbar/icon-notifications_on.svg b/packages/manager/apps/billing/src/images/navbar/icon-notifications_on.svg new file mode 100644 index 000000000000..e984bf77e15f --- /dev/null +++ b/packages/manager/apps/billing/src/images/navbar/icon-notifications_on.svg @@ -0,0 +1 @@ +icon_notification_on \ No newline at end of file diff --git a/packages/manager/apps/billing/src/images/navbar/icon-user.svg b/packages/manager/apps/billing/src/images/navbar/icon-user.svg new file mode 100644 index 000000000000..6e1fe9405aae --- /dev/null +++ b/packages/manager/apps/billing/src/images/navbar/icon-user.svg @@ -0,0 +1 @@ +icon_profil \ No newline at end of file diff --git a/packages/manager/apps/billing/src/images/navbar/icon-user_on.svg b/packages/manager/apps/billing/src/images/navbar/icon-user_on.svg new file mode 100644 index 000000000000..70091e825de7 --- /dev/null +++ b/packages/manager/apps/billing/src/images/navbar/icon-user_on.svg @@ -0,0 +1 @@ +icon_profil_on \ No newline at end of file diff --git a/packages/manager/apps/billing/src/images/network-icn.png b/packages/manager/apps/billing/src/images/network-icn.png new file mode 100644 index 000000000000..6b9691e12594 Binary files /dev/null and b/packages/manager/apps/billing/src/images/network-icn.png differ diff --git a/packages/manager/apps/billing/src/images/rendezvous.svg b/packages/manager/apps/billing/src/images/rendezvous.svg new file mode 100644 index 000000000000..32721311487c --- /dev/null +++ b/packages/manager/apps/billing/src/images/rendezvous.svg @@ -0,0 +1,151 @@ + + + + 3069C81F-DFC7-4C4F-BF1D-DA6F9EB47901 + Created with sketchtool. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/manager/apps/billing/src/images/separator.png b/packages/manager/apps/billing/src/images/separator.png new file mode 100644 index 000000000000..cd17bda5c2ef Binary files /dev/null and b/packages/manager/apps/billing/src/images/separator.png differ diff --git a/packages/manager/apps/billing/src/images/sprite_gray_36.png b/packages/manager/apps/billing/src/images/sprite_gray_36.png new file mode 100644 index 000000000000..af1248bab9c5 Binary files /dev/null and b/packages/manager/apps/billing/src/images/sprite_gray_36.png differ diff --git a/packages/manager/apps/billing/src/images/sprite_white_36.png b/packages/manager/apps/billing/src/images/sprite_white_36.png new file mode 100644 index 000000000000..a447d5ea4a8c Binary files /dev/null and b/packages/manager/apps/billing/src/images/sprite_white_36.png differ diff --git a/packages/manager/apps/billing/src/images/support-level/business.png b/packages/manager/apps/billing/src/images/support-level/business.png new file mode 100644 index 000000000000..dbba6d43b40f Binary files /dev/null and b/packages/manager/apps/billing/src/images/support-level/business.png differ diff --git a/packages/manager/apps/billing/src/images/support-level/enterprise.png b/packages/manager/apps/billing/src/images/support-level/enterprise.png new file mode 100644 index 000000000000..46516644b5e8 Binary files /dev/null and b/packages/manager/apps/billing/src/images/support-level/enterprise.png differ diff --git a/packages/manager/apps/billing/src/images/support-level/premium.png b/packages/manager/apps/billing/src/images/support-level/premium.png new file mode 100644 index 000000000000..46a9c87ce1c5 Binary files /dev/null and b/packages/manager/apps/billing/src/images/support-level/premium.png differ diff --git a/packages/manager/apps/billing/src/images/support-level/standard.png b/packages/manager/apps/billing/src/images/support-level/standard.png new file mode 100644 index 000000000000..02baf5a17468 Binary files /dev/null and b/packages/manager/apps/billing/src/images/support-level/standard.png differ diff --git a/packages/manager/apps/billing/src/images/trigger-help-infrastructure.png b/packages/manager/apps/billing/src/images/trigger-help-infrastructure.png new file mode 100644 index 000000000000..551bfd7f5f6b Binary files /dev/null and b/packages/manager/apps/billing/src/images/trigger-help-infrastructure.png differ diff --git a/packages/manager/apps/billing/src/images/trigger-help-network.png b/packages/manager/apps/billing/src/images/trigger-help-network.png new file mode 100644 index 000000000000..e3416b242981 Binary files /dev/null and b/packages/manager/apps/billing/src/images/trigger-help-network.png differ diff --git a/packages/manager/apps/billing/src/images/user-account/arrow-active.png b/packages/manager/apps/billing/src/images/user-account/arrow-active.png new file mode 100644 index 000000000000..c981dfddc796 Binary files /dev/null and b/packages/manager/apps/billing/src/images/user-account/arrow-active.png differ diff --git a/packages/manager/apps/billing/src/images/user-account/btn/btn_ssh_add.png b/packages/manager/apps/billing/src/images/user-account/btn/btn_ssh_add.png new file mode 100644 index 000000000000..163f0ba14333 Binary files /dev/null and b/packages/manager/apps/billing/src/images/user-account/btn/btn_ssh_add.png differ diff --git a/packages/manager/apps/billing/src/images/user-account/datetimepicker-header.png b/packages/manager/apps/billing/src/images/user-account/datetimepicker-header.png new file mode 100644 index 000000000000..5fda05717197 Binary files /dev/null and b/packages/manager/apps/billing/src/images/user-account/datetimepicker-header.png differ diff --git a/packages/manager/apps/billing/src/images/user-account/favicon.png b/packages/manager/apps/billing/src/images/user-account/favicon.png new file mode 100644 index 000000000000..c7d92d2ae474 Binary files /dev/null and b/packages/manager/apps/billing/src/images/user-account/favicon.png differ diff --git a/packages/manager/apps/billing/src/images/user-account/icn-calendar.png b/packages/manager/apps/billing/src/images/user-account/icn-calendar.png new file mode 100644 index 000000000000..56be59262d43 Binary files /dev/null and b/packages/manager/apps/billing/src/images/user-account/icn-calendar.png differ diff --git a/packages/manager/apps/billing/src/images/user-account/icn-pdf.png b/packages/manager/apps/billing/src/images/user-account/icn-pdf.png new file mode 100644 index 000000000000..d9ea618a0bfa Binary files /dev/null and b/packages/manager/apps/billing/src/images/user-account/icn-pdf.png differ diff --git a/packages/manager/apps/billing/src/images/user-account/icn/icn_glass.png b/packages/manager/apps/billing/src/images/user-account/icn/icn_glass.png new file mode 100644 index 000000000000..c6e0d66a32a5 Binary files /dev/null and b/packages/manager/apps/billing/src/images/user-account/icn/icn_glass.png differ diff --git a/packages/manager/apps/billing/src/images/user-account/icn/icn_ssh_default.png b/packages/manager/apps/billing/src/images/user-account/icn/icn_ssh_default.png new file mode 100644 index 000000000000..89b50aa50a4b Binary files /dev/null and b/packages/manager/apps/billing/src/images/user-account/icn/icn_ssh_default.png differ diff --git a/packages/manager/apps/billing/src/images/user-account/icn/icn_trash.png b/packages/manager/apps/billing/src/images/user-account/icn/icn_trash.png new file mode 100644 index 000000000000..8cca7845421c Binary files /dev/null and b/packages/manager/apps/billing/src/images/user-account/icn/icn_trash.png differ diff --git a/packages/manager/apps/billing/src/images/user-account/loading.gif b/packages/manager/apps/billing/src/images/user-account/loading.gif new file mode 100644 index 000000000000..d0bce1542342 Binary files /dev/null and b/packages/manager/apps/billing/src/images/user-account/loading.gif differ diff --git a/packages/manager/apps/billing/src/images/user-account/security/app.svg b/packages/manager/apps/billing/src/images/user-account/security/app.svg new file mode 100644 index 000000000000..b11963c174e0 --- /dev/null +++ b/packages/manager/apps/billing/src/images/user-account/security/app.svg @@ -0,0 +1 @@ +appCreated with Sketch. \ No newline at end of file diff --git a/packages/manager/apps/billing/src/images/user-account/security/code.svg b/packages/manager/apps/billing/src/images/user-account/security/code.svg new file mode 100644 index 000000000000..a8add4532d37 --- /dev/null +++ b/packages/manager/apps/billing/src/images/user-account/security/code.svg @@ -0,0 +1 @@ +codeCreated with Sketch. \ No newline at end of file diff --git a/packages/manager/apps/billing/src/images/user-account/security/hacker.svg b/packages/manager/apps/billing/src/images/user-account/security/hacker.svg new file mode 100644 index 000000000000..8d5f670daafd --- /dev/null +++ b/packages/manager/apps/billing/src/images/user-account/security/hacker.svg @@ -0,0 +1,50 @@ + + + + hacker rouge + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/manager/apps/billing/src/images/user-account/security/icon-2fa.png b/packages/manager/apps/billing/src/images/user-account/security/icon-2fa.png new file mode 100644 index 000000000000..7207aed255ff Binary files /dev/null and b/packages/manager/apps/billing/src/images/user-account/security/icon-2fa.png differ diff --git a/packages/manager/apps/billing/src/images/user-account/security/icon-ip-restriction.png b/packages/manager/apps/billing/src/images/user-account/security/icon-ip-restriction.png new file mode 100644 index 000000000000..888d8c48f93c Binary files /dev/null and b/packages/manager/apps/billing/src/images/user-account/security/icon-ip-restriction.png differ diff --git a/packages/manager/apps/billing/src/images/user-account/security/icon-password.png b/packages/manager/apps/billing/src/images/user-account/security/icon-password.png new file mode 100644 index 000000000000..cfd033017c28 Binary files /dev/null and b/packages/manager/apps/billing/src/images/user-account/security/icon-password.png differ diff --git a/packages/manager/apps/billing/src/images/user-account/security/key-horizontal.svg b/packages/manager/apps/billing/src/images/user-account/security/key-horizontal.svg new file mode 100644 index 000000000000..1a29f1c3259b --- /dev/null +++ b/packages/manager/apps/billing/src/images/user-account/security/key-horizontal.svg @@ -0,0 +1,22 @@ + + + + key + Created with Sketch. + + + + + + + + + + + + + + + + + diff --git a/packages/manager/apps/billing/src/images/user-account/security/key.svg b/packages/manager/apps/billing/src/images/user-account/security/key.svg new file mode 100644 index 000000000000..89289b1035ff --- /dev/null +++ b/packages/manager/apps/billing/src/images/user-account/security/key.svg @@ -0,0 +1 @@ +keyCreated with Sketch. \ No newline at end of file diff --git a/packages/manager/apps/billing/src/images/user-account/security/sms.svg b/packages/manager/apps/billing/src/images/user-account/security/sms.svg new file mode 100644 index 000000000000..9cf32916e5b0 --- /dev/null +++ b/packages/manager/apps/billing/src/images/user-account/security/sms.svg @@ -0,0 +1 @@ +smsCreated with Sketch. \ No newline at end of file diff --git a/packages/manager/apps/billing/src/images/user-account/security/success.svg b/packages/manager/apps/billing/src/images/user-account/security/success.svg new file mode 100644 index 000000000000..a01838cca47f --- /dev/null +++ b/packages/manager/apps/billing/src/images/user-account/security/success.svg @@ -0,0 +1 @@ +successCreated with Sketch. \ No newline at end of file diff --git a/packages/manager/apps/billing/src/index.html b/packages/manager/apps/billing/src/index.html new file mode 100644 index 000000000000..8f941fed71fc --- /dev/null +++ b/packages/manager/apps/billing/src/index.html @@ -0,0 +1,53 @@ + + + + + Billing App + + + +
+ +
+ + +
+
+
+
+ +
+ - +
+ + + + +
+ + +
+
+
+
+
+
+ + diff --git a/packages/manager/apps/billing/src/index.js b/packages/manager/apps/billing/src/index.js new file mode 100644 index 000000000000..bf4ede98b995 --- /dev/null +++ b/packages/manager/apps/billing/src/index.js @@ -0,0 +1,31 @@ +import 'script-loader!jquery'; // eslint-disable-line +import 'script-loader!jsurl/lib/jsurl.js'; // eslint-disable-line +import 'script-loader!moment/min/moment.min.js'; // eslint-disable-line +import 'core-js/stable'; +import 'whatwg-fetch'; +import 'regenerator-runtime/runtime'; + +import { isTopLevelApplication } from '@ovh-ux/manager-config'; +import { defineApplicationVersion } from '@ovh-ux/request-tagger'; + +import { initShellClient } from '@ovh-ux/shell'; + +defineApplicationVersion(__VERSION__); + +initShellClient('billing').then((shellClient) => { + if (!isTopLevelApplication()) { + shellClient.ux.startProgress(); + } + shellClient.i18n.onLocaleChange(() => { + window.top.location.reload(); + }); + shellClient.environment.getEnvironment().then((environment) => { + environment.setVersion(__VERSION__); + import(`./config-${environment.getRegion()}`) + .catch(() => {}) + .then(() => import('./app.module')) + .then(({ default: startApplication }) => { + startApplication(document.body, shellClient); + }); + }); +}); diff --git a/packages/manager/apps/billing/src/tracking/at-internet.constants.js b/packages/manager/apps/billing/src/tracking/at-internet.constants.js new file mode 100644 index 000000000000..891c58d1be61 --- /dev/null +++ b/packages/manager/apps/billing/src/tracking/at-internet.constants.js @@ -0,0 +1,12 @@ +export default { + EU: { + config: { + level2: '', + }, + }, + CA: { + config: { + level2: '', + }, + }, +}; diff --git a/packages/manager/apps/billing/webpack.config.js b/packages/manager/apps/billing/webpack.config.js new file mode 100644 index 000000000000..8a5ec6880b6b --- /dev/null +++ b/packages/manager/apps/billing/webpack.config.js @@ -0,0 +1,101 @@ +const fs = require('fs'); +const glob = require('glob'); +const path = require('path'); +const webpack = require('webpack'); // eslint-disable-line +const merge = require('webpack-merge'); +const webpackConfig = require('@ovh-ux/manager-webpack-config'); + +function readNgAppInjections(file) { + let injections = []; + if (fs.existsSync(file)) { + injections = fs + .readFileSync(file, 'utf8') + .split('\n') + .filter((value) => value !== ''); + } + return injections; +} + +function getNgAppInjections(regions) { + return regions.reduce((ngAppInjections, region) => { + const injections = [ + ...readNgAppInjections(`./.extras-${region}/ng-app-injections`), + ...readNgAppInjections('./.extras/ng-app-injections'), + ]; + + return { + ...ngAppInjections, + [region]: JSON.stringify(injections), + }; + }, {}); +} + +module.exports = (env = {}) => { + const { config } = webpackConfig( + { + template: './src/index.html', + basePath: './src', + lessPath: ['./node_modules'], + lessJavascriptEnabled: true, + root: path.resolve(__dirname, './src'), + assets: { + files: [ + { + from: path.resolve( + __dirname, + '../../../../node_modules/flag-icon-css/flags/4x3', + ), + to: 'flag-icon-css/flags/4x3', + }, + { + from: path.resolve(__dirname, './src/images/**/*.*'), + context: 'src', + }, + ], + }, + }, + env, + ); + + config.plugins.push( + new webpack.DefinePlugin({ + WEBPACK_ENV: { + production: JSON.stringify(env.production), + }, + }), + ); + + // Extra config files + const extras = glob.sync(`./.extras/**/*.js`); + + return merge(config, { + entry: { + main: path.resolve('./src/index.js'), + ...(extras.length > 0 ? { extras } : {}), + }, + output: { + path: path.join(__dirname, 'dist'), + filename: '[name].[chunkhash].bundle.js', + }, + resolve: { + modules: [ + './node_modules', + path.resolve(__dirname, 'node_modules'), + path.resolve(__dirname, '../../../node_modules'), + ], + mainFields: ['module', 'browser', 'main'], + }, + plugins: [ + new webpack.ContextReplacementPlugin( + /moment[/\\]locale$/, + /de|en-gb|es|es-us|fr-ca|fr|it|pl|pt/, + ), + new webpack.DefinePlugin({ + __NODE_ENV__: process.env.NODE_ENV + ? `'${process.env.NODE_ENV}'` + : '"development"', + __NG_APP_INJECTIONS__: getNgAppInjections(['EU', 'CA', 'US']), + }), + ], + }); +}; diff --git a/packages/manager/apps/container/src/container/legacy/server-sidebar/index.tsx b/packages/manager/apps/container/src/container/legacy/server-sidebar/index.tsx index 4f0d7e24b769..76d9c0731c7c 100644 --- a/packages/manager/apps/container/src/container/legacy/server-sidebar/index.tsx +++ b/packages/manager/apps/container/src/container/legacy/server-sidebar/index.tsx @@ -38,6 +38,7 @@ export default function ServerSidebarIndex() { iam: '*', 'carbon-calculator': '*', 'account': '*', + 'billing': '*', } useEffect(() => { diff --git a/packages/manager/apps/container/src/container/legacy/server-sidebar/universe/AccountSidebar.tsx b/packages/manager/apps/container/src/container/legacy/server-sidebar/universe/AccountSidebar.tsx index 07c065e0b450..97167cdb981f 100644 --- a/packages/manager/apps/container/src/container/legacy/server-sidebar/universe/AccountSidebar.tsx +++ b/packages/manager/apps/container/src/container/legacy/server-sidebar/universe/AccountSidebar.tsx @@ -15,7 +15,13 @@ import constants from '../../account-sidebar/UsefulLinks/constants'; const kycIndiaFeature = 'identity-documents'; const kycFraudFeature = 'procedures:fraud'; const newAccount = 'new-account'; -const accountFeatures = [kycIndiaFeature, kycFraudFeature, newAccount]; +const newBilling = 'new-billing'; +const accountFeatures = [ + kycIndiaFeature, + kycFraudFeature, + newAccount, + newBilling, +]; export default function AccountSidebar() { const [menu, setMenu] = useState(undefined); @@ -31,7 +37,9 @@ export default function AccountSidebar() { const subsidiary = environment.getUser()?.ovhSubsidiary; const isEnterprise = environment.getUser()?.enterprise; - const getAccountSidebar = async (availability: Record | null) => { + const getAccountSidebar = async ( + availability: Record | null, + ) => { const menu: SidebarMenuItem[] = []; if (!availability) { @@ -40,6 +48,7 @@ export default function AccountSidebar() { const isEUOrCA = ['EU', 'CA'].includes(region); const isNewAccountAvailable = !!availability['new-account']; + const isNewBillingAvailable = !!availability['new-billing']; menu.push({ id: 'back-to-home', @@ -50,7 +59,10 @@ export default function AccountSidebar() { menu.push({ id: 'my-account', label: t('sidebar_account'), - href: navigation.getURL(isNewAccountAvailable ? 'new-account' : 'dedicated', '/useraccount/dashboard'), + href: navigation.getURL( + isNewAccountAvailable ? 'new-account' : 'dedicated', + '/useraccount/dashboard', + ), routeMatcher: new RegExp('^/useraccount'), }); @@ -60,7 +72,10 @@ export default function AccountSidebar() { menu.push({ id: 'my-identity-documents', label: t('sidebar_account_identity_documents'), - href: navigation.getURL(isNewAccountAvailable ? 'new-account' : 'dedicated', '/identity-documents'), + href: navigation.getURL( + isNewAccountAvailable ? 'new-account' : 'dedicated', + '/identity-documents', + ), routeMatcher: new RegExp('^/identity-documents'), }); } @@ -72,7 +87,10 @@ export default function AccountSidebar() { menu.push({ id: 'kyc-documents', label: t('sidebar_account_kyc_documents'), - href: navigation.getURL(isNewAccountAvailable ? 'new-account' : 'dedicated', '/documents'), + href: navigation.getURL( + isNewAccountAvailable ? 'new-account' : 'dedicated', + '/documents', + ), routeMatcher: new RegExp('^/documents'), }); } @@ -83,8 +101,10 @@ export default function AccountSidebar() { id: 'my-bills', label: t('sidebar_billing'), href: navigation.getURL( - 'dedicated', - region === 'US' ? '/billing/payAsYouGo' : '/billing/history', + isNewBillingAvailable ? 'new-billing' : 'dedicated', + region === 'US' + ? `${!isNewBillingAvailable ? '/billing' : ''}/payAsYouGo` + : `${!isNewBillingAvailable ? '/billing' : ''}/history`, ), routeMatcher: new RegExp( '^/billing/(history|payAsYouGo|payments|refunds)', @@ -96,8 +116,10 @@ export default function AccountSidebar() { id: 'my-services', label: t('sidebar_billing_services'), href: navigation.getURL( - 'dedicated', - `/billing/autorenew${isEnterprise ? '/ssh' : '/'}`, + isNewBillingAvailable ? 'new-billing' : 'dedicated', + `${!isNewBillingAvailable ? '/billing' : ''}/autorenew${ + isEnterprise ? '/ssh' : '/' + }`, ), routeMatcher: new RegExp('^/billing/autorenew', 'i'), }); @@ -106,13 +128,19 @@ export default function AccountSidebar() { menu.push({ id: 'payment-method', label: t('sidebar_billing_payment'), - href: navigation.getURL('dedicated', '/billing/payment'), + href: navigation.getURL( + isNewBillingAvailable ? 'new-billing' : 'dedicated', + `${!isNewBillingAvailable ? '/billing' : ''}/payment`, + ), routeMatcher: new RegExp('^/billing/payment[^s]'), }); menu.push({ id: 'my-orders', label: t('sidebar_orders'), - href: navigation.getURL('dedicated', '/billing/orders'), + href: navigation.getURL( + isNewBillingAvailable ? 'new-billing' : 'dedicated', + `${!isNewBillingAvailable ? '/billing' : ''}/orders`, + ), routeMatcher: new RegExp('^/billing/orders'), }); } @@ -121,7 +149,10 @@ export default function AccountSidebar() { menu.push({ id: 'my-contacts', label: t('sidebar_account_contacts'), - href: navigation.getURL(isNewAccountAvailable ? 'new-account' : 'dedicated', '/contacts'), + href: navigation.getURL( + isNewAccountAvailable ? 'new-account' : 'dedicated', + '/contacts', + ), routeMatcher: new RegExp('^/contacts'), }); } @@ -139,7 +170,9 @@ export default function AccountSidebar() { id: 'my-support-tickets', label: t('sidebar_assistance_tickets'), isExternal: isEUOrCA, - href: isEUOrCA ? constants[region].support.tickets(subsidiary) : navigation.getURL('dedicated', '/ticket'), + href: isEUOrCA + ? constants[region].support.tickets(subsidiary) + : navigation.getURL('dedicated', '/ticket'), routeMatcher: new RegExp('^/(ticket|support)'), }); @@ -154,7 +187,9 @@ export default function AccountSidebar() { return menu; }; - const {data: availability} = useFeatureAvailability(features.concat(accountFeatures)); + const { data: availability } = useFeatureAvailability( + features.concat(accountFeatures), + ); const buildMenu = async () => Promise.resolve({ diff --git a/packages/manager/apps/container/src/container/nav-reshuffle/header/user-account-menu/Content.tsx b/packages/manager/apps/container/src/container/nav-reshuffle/header/user-account-menu/Content.tsx index 2eb0df85679b..4db39f1e308d 100644 --- a/packages/manager/apps/container/src/container/nav-reshuffle/header/user-account-menu/Content.tsx +++ b/packages/manager/apps/container/src/container/nav-reshuffle/header/user-account-menu/Content.tsx @@ -36,6 +36,7 @@ const UserAccountMenu = ({ false, ); const [isNewAccountAvailable, setIsNewAccountAvailable] = useState(false); + const [isNewBillingAvailable, setIsNewBillingAvailable] = useState(false); const user = shell .getPlugin('environment') .getEnvironment() @@ -75,7 +76,7 @@ const UserAccountMenu = ({ const getAllLinks = useMemo( () => async () => { let isIdentityDocumentsAvailable = false; - const featureAvailability = await fetchFeatureAvailabilityData(['new-account', 'identity-documents', 'procedures:fraud']); + const featureAvailability = await fetchFeatureAvailabilityData(['new-billing', 'new-account', 'identity-documents', 'procedures:fraud']); if (featureAvailability['identity-documents']) { const { status } = await reketInstance.get(`/me/procedure/identity`); isIdentityDocumentsAvailable = ['required', 'open'].includes(status); @@ -86,6 +87,7 @@ const UserAccountMenu = ({ } setIsNewAccountAvailable(!!featureAvailability['new-account']) + setIsNewBillingAvailable(!!featureAvailability['new-billing']) if (isNewAccountAvailable) { setSupportLink(getUrl('new-account', '#/useraccount/support/level')); @@ -96,6 +98,12 @@ const UserAccountMenu = ({ if (['user-account-menu-profile', 'myCommunications', 'myContacts'].includes(link.key)) { link.app = isNewAccountAvailable ? 'new-account' : 'dedicated'; } + if (['myInvoices', 'myServices', 'myPaymentMethods', 'myCommands'].includes(link.key)) { + link.app = isNewBillingAvailable ? 'new-billing' : 'dedicated'; + if (isNewBillingAvailable) { + link.hash = link.hash.replace('/billing', ''); + } + } return link; }), ...(isIdentityDocumentsAvailable diff --git a/packages/manager/apps/container/src/core/routing/redirections.tsx b/packages/manager/apps/container/src/core/routing/redirections.tsx index 97d8d421be36..696431f1a1b9 100644 --- a/packages/manager/apps/container/src/core/routing/redirections.tsx +++ b/packages/manager/apps/container/src/core/routing/redirections.tsx @@ -14,6 +14,7 @@ function Rewrite({ to }: { to: string }): JSX.Element { export function Redirections(configuration: Record): JSX.Element { const isNewAccountAvailable = !!configuration?.['new-account']; + const isNewBillingAvailable = !!configuration?.['new-billing']; return ( <> @@ -46,10 +47,17 @@ export function Redirections(configuration: Record): JSX.El element={} /> )} - } - /> + {isNewBillingAvailable ? ( + } + /> + ) : ( + } + /> + )} } /> } /> diff --git a/packages/manager/modules/billing-components/package.json b/packages/manager/modules/billing-components/package.json index 2700c34be456..fc8483b9ef8e 100644 --- a/packages/manager/modules/billing-components/package.json +++ b/packages/manager/modules/billing-components/package.json @@ -16,9 +16,9 @@ "lodash-es": "^4.17.15" }, "peerDependencies": { - "@ovh-ux/manager-config": "^5.0.0 || ^6.0.0", - "@ovh-ux/manager-core": "^12.0.0 || ^13.0.0", - "@ovh-ux/ng-at-internet": "^5.9.1", + "@ovh-ux/manager-config": "^8.0.0", + "@ovh-ux/manager-core": "^13.0.0", + "@ovh-ux/ng-at-internet": "^6.0.0", "@ovh-ux/ng-ovh-feature-flipping": "^1.0.5", "@ovh-ux/ng-ovh-payment-method": "^9.3.0", "@ovh-ux/ng-translate-async-loader": "^2.1.4", diff --git a/packages/manager/modules/billing/package.json b/packages/manager/modules/billing/package.json index 403cb55365ec..779fa68b7ccf 100644 --- a/packages/manager/modules/billing/package.json +++ b/packages/manager/modules/billing/package.json @@ -21,24 +21,25 @@ }, "peerDependencies": { "@ovh-ux/manager-billing-components": "^2.0.0 || ^3.0.0", - "@ovh-ux/manager-config": "^5.0.0 || ^6.0.0", - "@ovh-ux/manager-core": "^12.0.0 || ^13.0.0", + "@ovh-ux/manager-config": "^8.0.0", + "@ovh-ux/manager-core": "^13.0.0", "@ovh-ux/manager-exchange": "^2.0.0 || ^3.0.0", - "@ovh-ux/manager-models": "^1.0.0", - "@ovh-ux/manager-ng-layout-helpers": "^1.0.1 || ^2.0.0", - "@ovh-ux/ng-at-internet": "^5.9.1", - "@ovh-ux/ng-at-internet-ui-router-plugin": "^3.2.1", - "@ovh-ux/ng-ovh-api-wrappers": "^5.0.0", - "@ovh-ux/ng-ovh-contacts": "^5.1.1", - "@ovh-ux/ng-ovh-export-csv": "^2.0.4", - "@ovh-ux/ng-ovh-feature-flipping": "^1.0.5", - "@ovh-ux/ng-ovh-order-tracking": "^1.1.1 || ^2.0.0", - "@ovh-ux/ng-ovh-payment-method": "^9.3.0", - "@ovh-ux/ng-ovh-utils": "^14.0.17", + "@ovh-ux/manager-models": "^2.1.0", + "@ovh-ux/manager-ng-layout-helpers": "^2.9.1", + "@ovh-ux/ng-at-internet": "^6.0.0", + "@ovh-ux/ng-at-internet-ui-router-plugin": "^3.5.0", + "@ovh-ux/ng-ovh-api-wrappers": "^5.1.0", + "@ovh-ux/ng-ovh-contacts": "^5.3.1", + "@ovh-ux/ng-ovh-export-csv": "^2.1.1", + "@ovh-ux/ng-ovh-feature-flipping": "^1.1.2", + "@ovh-ux/ng-ovh-order-tracking": "^2.5.1", + "@ovh-ux/ng-ovh-payment-method": "^9.16.5", + "@ovh-ux/ng-ovh-utils": "^14.4.1", + "@ovh-ux/ng-q-allsettled": "^2.1.2", "@ovh-ux/ng-translate-async-loader": "^2.1.4", - "@ovh-ux/ng-ui-router-breadcrumb": "^1.1.6", - "@ovh-ux/ng-ui-router-layout": "^4.1.0", - "@ovh-ux/ui-kit": "^6.10.0", + "@ovh-ux/ng-ui-router-breadcrumb": "^1.3.1", + "@ovh-ux/ng-ui-router-layout": "^4.3.1", + "@ovh-ux/ui-kit": "^6.10.5", "@uirouter/angularjs": "^1.0.23", "angular": "1.7.x", "angular-route": "1.7.x", @@ -47,6 +48,6 @@ "angular-ui-bootstrap": "1.3.3", "lodash": "^4.17.15", "oclazyload": "^1.1.0", - "ovh-api-services": "^14.0.6" + "ovh-api-services": "^17.0.0" } } diff --git a/packages/manager/modules/billing/src/billing.module.js b/packages/manager/modules/billing/src/billing.module.js index 3c4d522e625a..e2a93e5a0100 100644 --- a/packages/manager/modules/billing/src/billing.module.js +++ b/packages/manager/modules/billing/src/billing.module.js @@ -10,6 +10,7 @@ import uiBootstrap from 'angular-ui-bootstrap'; import uiRouter from '@uirouter/angularjs'; import ngAtInternetUiRouterPlugin from '@ovh-ux/ng-at-internet-ui-router-plugin'; import '@ovh-ux/ng-ui-router-breadcrumb'; +import ngQAllSettled from '@ovh-ux/ng-q-allsettled'; import autorenew from './autoRenew/autorenew.module'; import billingMain from './main/billing-main.module'; @@ -59,6 +60,7 @@ angular refunds, ngOvhExportCsv, ngOvhUtils, + ngQAllSettled, ngRoute, ngSanitize, ngTranslateAsyncLoader, diff --git a/packages/manager/modules/new-billing/.eslintrc.json b/packages/manager/modules/new-billing/.eslintrc.json new file mode 100644 index 000000000000..c12d22beb416 --- /dev/null +++ b/packages/manager/modules/new-billing/.eslintrc.json @@ -0,0 +1,5 @@ +{ + "globals": { + "moment": true + } +} diff --git a/packages/manager/modules/new-billing/.prerelease b/packages/manager/modules/new-billing/.prerelease new file mode 100644 index 000000000000..4a58007052a6 --- /dev/null +++ b/packages/manager/modules/new-billing/.prerelease @@ -0,0 +1 @@ +alpha diff --git a/packages/manager/modules/new-billing/CHANGELOG.md b/packages/manager/modules/new-billing/CHANGELOG.md new file mode 100644 index 000000000000..41d231b5d851 --- /dev/null +++ b/packages/manager/modules/new-billing/CHANGELOG.md @@ -0,0 +1,1552 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [0.22.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.21.0...@ovh-ux/manager-billing@0.22.0) (2024-11-20) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 3494] ([cafbeb3](https://github.com/ovh/manager/commit/cafbeb3760646da4ea18528ad3f94f0fd490d0d3)) + + +### Features + +* **billing-component:** add resiliation agora service for HYCU ([8176b67](https://github.com/ovh/manager/commit/8176b67ab85d2e5258d7764cb7ed05d5cb9d9a37)) +* **hycu:** add agora termination for hycu service ([dfecf5a](https://github.com/ovh/manager/commit/dfecf5a6f404676ae618e1220cd9f44a1f79afb4)) +* **hycu:** add hycu service on hub and my services ([9f10592](https://github.com/ovh/manager/commit/9f1059281f2b8fa3883b04fc41358749d376bb69)) + + + + + +# [0.21.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0...@ovh-ux/manager-billing@0.21.0) (2024-11-19) + + +### Features + +* **dedicated:** add alert on hosting renewal deactivation ([#13612](https://github.com/ovh/manager/issues/13612)) ([b8f1e14](https://github.com/ovh/manager/commit/b8f1e1430d88539806a02ff0f62d06ad487df65f)) + + + + + +# 0.20.0 (2024-11-12) + + +### Bug Fixes + +* **accounts:** fix accounts alert issue ([811469a](https://github.com/ovh/manager/commit/811469ae2f384491a2519453b2843b23c7a65a0f)), closes [#DTRSD-50951](https://github.com/ovh/manager/issues/DTRSD-50951) +* add anthos to services and contacts page ([d5b8b90](https://github.com/ovh/manager/commit/d5b8b90f6874356da88e8de74a367ccca407230f)), closes [#MANAGER-7385](https://github.com/ovh/manager/issues/MANAGER-7385) +* add corresponding translations for netapp product ([f6b7039](https://github.com/ovh/manager/commit/f6b70399ae82b7c8a091a18a8d71d387c3043674)) +* add some missing translations ([#9107](https://github.com/ovh/manager/issues/9107)) ([f838b0e](https://github.com/ovh/manager/commit/f838b0e36562026970ed3db178c8f179edef7d51)) +* add target _top to links ([2d375e6](https://github.com/ovh/manager/commit/2d375e6ac23773f6d4f9780aa3fa8df903692adc)) +* allow resiliation on service that can be engaged ([#4639](https://github.com/ovh/manager/issues/4639)) ([75c7f24](https://github.com/ovh/manager/commit/75c7f2460e7971d7f71824ad98144e04e1221264)) +* **autorenew.delete:** replace aapi with `/services` ([#7707](https://github.com/ovh/manager/issues/7707)) ([3918eec](https://github.com/ovh/manager/commit/3918eec8895451b91d77c9354146bb39c4160bd1)) +* **autorenew:** add missing translation for office licenses ([#7496](https://github.com/ovh/manager/issues/7496)) ([65ba9c0](https://github.com/ovh/manager/commit/65ba9c0707b0929e29d9249ffb817fa4d6d70814)) +* **autorenew:** add serviceType parameter ([44eb046](https://github.com/ovh/manager/commit/44eb0468eaa010f89fc81d4ec0c26d169d7367d0)) +* **autorenew:** allow to delete immediately some services ([#3621](https://github.com/ovh/manager/issues/3621)) ([7c30a1f](https://github.com/ovh/manager/commit/7c30a1f53675d3e30ea21d235e22d9fb6695e6d6)) +* **autorenew:** fallback to `default` renew URL for specific subs ([8f18f5d](https://github.com/ovh/manager/commit/8f18f5d6dafbc0be356d8599528f1b32b535363a)) +* **billing.autorenew:** import renew constant ([#3375](https://github.com/ovh/manager/issues/3375)) ([0fc9d96](https://github.com/ovh/manager/commit/0fc9d96cd7a5d319912964be7633db10823f1515)) +* **billing.autorenew:** pass service type for resiliation ([#3563](https://github.com/ovh/manager/issues/3563)) ([ddb600a](https://github.com/ovh/manager/commit/ddb600a33ba1ed86b68e5009b8f476b33e4d9498)) +* **billing.autorenew:** track service type on resiliation ([#5798](https://github.com/ovh/manager/issues/5798)) ([c77eb21](https://github.com/ovh/manager/commit/c77eb212b8f99035a2f95a7af434599b7445738a)) +* **billing.cancellation-form:** update wording ([#4641](https://github.com/ovh/manager/issues/4641)) ([56f8b7d](https://github.com/ovh/manager/commit/56f8b7d8ee041b264390efb09aded69b61c46fb6)) +* **billing.fidelity:** fix duplicate issues on data refresh ([07b8b88](https://github.com/ovh/manager/commit/07b8b88577c34869a76bc2e25e03f22e4cbbd7b1)) +* **billing.history:** hide HTML invoice for India customers ([#7261](https://github.com/ovh/manager/issues/7261)) ([1bfc845](https://github.com/ovh/manager/commit/1bfc845ae001354da461f81b91467fd7c873bcfb)) +* **billing.order:** remove double title if purchase order isnt available ([28ada16](https://github.com/ovh/manager/commit/28ada16dea58edb277b76a2d1f75daaa1ce1a49f)) +* **billing.services:** change tooltip content for some subs ([#9898](https://github.com/ovh/manager/issues/9898)) ([0890ad6](https://github.com/ovh/manager/commit/0890ad6769e6e38a6647751482a2ae5c461d7a7f)) +* **billing:** add missing links guides for certain subs ([0cd3871](https://github.com/ovh/manager/commit/0cd38716c45a1448a2eb94aaa9fb85127bd74a69)) +* **billing:** avoid future state issue ([5563be6](https://github.com/ovh/manager/commit/5563be6b8ca574d64a16b3d0bd4ad47d9a942033)) +* **billing:** change content for auto renew alert banner ([#10153](https://github.com/ovh/manager/issues/10153)) ([c62a05e](https://github.com/ovh/manager/commit/c62a05eb8d6c5369a63c2d67d679544e80e66a32)) +* **billing:** create redirection from state mean to payment ([#9888](https://github.com/ovh/manager/issues/9888)) ([ee52df1](https://github.com/ovh/manager/commit/ee52df1c60bb80aacba33ec47702641a59cf1d94)) +* **billing:** enable the sorting on the status column ([ef5b053](https://github.com/ovh/manager/commit/ef5b0536ec056d6cf9440e7a72bceaf2aee3163c)) +* **billing:** fix bulk renew service for nic CA ([#10181](https://github.com/ovh/manager/issues/10181)) ([b834712](https://github.com/ovh/manager/commit/b83471281797772490261ca7658856e2531f6d48)) +* **billing:** fix italian translation ([4b8bf34](https://github.com/ovh/manager/commit/4b8bf34a30e5e1a9021a55cc7ccedda34662f6c4)) +* **billing:** history orderId number filtering ([2e72382](https://github.com/ovh/manager/commit/2e723827ec5022ba4c9c00c0347ec32b672dd9fa)) +* **billing:** manual renew url for apac subs ([#4753](https://github.com/ovh/manager/issues/4753)) ([da586e9](https://github.com/ovh/manager/commit/da586e9dda77ee81f7fcaeae42767d8fa6bcb3a3)) +* **billing:** modification of wording for edit purchase order ([aee8922](https://github.com/ovh/manager/commit/aee892202cb3920972c6b5adfb94b716f9c1a132)) +* **billing:** po is available only for not individual legalform ([44fb3e5](https://github.com/ovh/manager/commit/44fb3e5a00e491f9c3f88e4b23ea5dcd8725c07b)) +* **billing:** purchase order end date excluded information ([5514696](https://github.com/ovh/manager/commit/551469685884c4d7f6bd3e4fe1c547472ce5ee83)) +* **billing:** purchase order fix first valid date not selectable ([159c945](https://github.com/ovh/manager/commit/159c945eaca481264d2c49c5b1cf927ae1920268)) +* **billing:** purchase order number stays inactive ([9001b11](https://github.com/ovh/manager/commit/9001b1155a6aca5a96f0dbd7000359f72a6a68e2)) +* **billing:** remove lazyload on purchase order ([#7385](https://github.com/ovh/manager/issues/7385)) ([#7394](https://github.com/ovh/manager/issues/7394)) ([4d728b2](https://github.com/ovh/manager/commit/4d728b2a36803e773986308c2b48e2bbf531b345)) +* **billing:** remove unused future state ([#7398](https://github.com/ovh/manager/issues/7398)) ([cb9a41c](https://github.com/ovh/manager/commit/cb9a41c066c8309160c2023b7f85c512775e5ca1)) +* **billing:** remove unwanted links in US ([#4441](https://github.com/ovh/manager/issues/4441)) ([b0193c6](https://github.com/ovh/manager/commit/b0193c68adaf0b58df93b297904b25a5c0ef4079)) +* **billing:** retrieve payment subroute when directly targeted ([#6317](https://github.com/ovh/manager/issues/6317)) ([deb01b8](https://github.com/ovh/manager/commit/deb01b805ca8edab2031fd5b40134df15891d812)) +* **billing:** set split payment as standard key word ([7377c14](https://github.com/ovh/manager/commit/7377c1425ddc987fb2992b38d310b9b290e9e507)) +* **billing:** show ongoing REF/PO warning ([#9083](https://github.com/ovh/manager/issues/9083)) ([1951848](https://github.com/ovh/manager/commit/19518489776eb8614ddd9f12715575890e1b640f)) +* **billing:** use component binding instead of scope variable ([#3809](https://github.com/ovh/manager/issues/3809)) ([5a365d1](https://github.com/ovh/manager/commit/5a365d11d5e6f4bd23397f529fad080fee8bd8c4)) +* bump @ovh-ux/ui-kit to v4.7.0 ([#5315](https://github.com/ovh/manager/issues/5315)) ([bd9b540](https://github.com/ovh/manager/commit/bd9b54015511a001a93866e43c48244fb81af907)) +* bump ng-ovh-payment-method to next major ([687f1e4](https://github.com/ovh/manager/commit/687f1e47daefb5c19563c5c434fa281a70be9049)) +* bump semver range for @ovh-ux/manager-config package ([5f3eda1](https://github.com/ovh/manager/commit/5f3eda16abd4df3b46cdde241c827a1d1d6dc80c)) +* bump semver range for @ovh-ux/manager-config package ([ca04d19](https://github.com/ovh/manager/commit/ca04d19b7a038544f1b5e3b211d0a1c3b70a0d5b)) +* **cancel-resiliation:** allow resiliation if service is not commited ([#6014](https://github.com/ovh/manager/issues/6014)) ([7879e86](https://github.com/ovh/manager/commit/7879e861dfbe4873e8f686c7d44f7ecd555dcee5)) +* **cancellation-form:** update field label ([#4343](https://github.com/ovh/manager/issues/4343)) ([6c93cc2](https://github.com/ovh/manager/commit/6c93cc2e22991574e3c7f8b2c7a4bbae8c8cec80)) +* **cloud-connect:** add hub and server sidebar translations ([eb1b16c](https://github.com/ovh/manager/commit/eb1b16c168bb13bbf88af3ab0a417f6e45527f68)), closes [#MANAGER-5205](https://github.com/ovh/manager/issues/MANAGER-5205) +* **commitment.constants:** add VPS to the catalog ([#4349](https://github.com/ovh/manager/issues/4349)) ([c645824](https://github.com/ovh/manager/commit/c645824395828ca08b2352dace31dce34926344a)) +* **commitment:** filter commitment types ([#4444](https://github.com/ovh/manager/issues/4444)) ([06bc435](https://github.com/ovh/manager/commit/06bc435cf2e5f651a15c24225a24030969e064a7)) +* **dedicated-billing:** remove redirect link to hub ([#8081](https://github.com/ovh/manager/issues/8081)) ([9bc6d2e](https://github.com/ovh/manager/commit/9bc6d2e75122b701555ff15fc4f5206ee23e1672)) +* **dedicated-server:** add breadcrumb for commitment ([4cdfc48](https://github.com/ovh/manager/commit/4cdfc4891f516cd8cae0bed7d10225395919ad2c)) +* **dedicated.payment:** change content in en for translation ([#9058](https://github.com/ovh/manager/issues/9058)) ([81a1d92](https://github.com/ovh/manager/commit/81a1d9226350507dd9d62093e9a04fbda64bbaa1)) +* **dedicated.payments:** delete a contradiction for payment method ([#9028](https://github.com/ovh/manager/issues/9028)) ([f59c913](https://github.com/ovh/manager/commit/f59c9135afbc7571baffe49a14d9e1ccaaf56dfe)) +* **dedicated.payments:** delete a contradiction for payment method ([#9077](https://github.com/ovh/manager/issues/9077)) ([7476ee1](https://github.com/ovh/manager/commit/7476ee1b5b6a3e776e11db9faec711c1ea962902)) +* **dedicated:** disable view service details for byoip ([#12001](https://github.com/ovh/manager/issues/12001)) ([91872c0](https://github.com/ovh/manager/commit/91872c02804ef82ab71df5d49974688f10d8f886)) +* **dedicated:** hide contracts tab ([d110434](https://github.com/ovh/manager/commit/d1104343bd4b46de9f7802d6d19f7bc892312355)), closes [#MANAGER-7598](https://github.com/ovh/manager/issues/MANAGER-7598) +* **dedicated:** replace billing payments apiv7 calls with iceberg ([#3657](https://github.com/ovh/manager/issues/3657)) ([b55e13a](https://github.com/ovh/manager/commit/b55e13adef4a2b0f98aa638e67a45cc51f9d80a0)) +* **dedicated:** skip application refresh due to bad redirect ([52f9c8c](https://github.com/ovh/manager/commit/52f9c8c69b6bdd17f264fbfadf8593d0ceda9ef9)) +* **dedicated:** ssh key comment can be anything ([50754b5](https://github.com/ovh/manager/commit/50754b5f4a6eba530b148d9ec205d143506e9add)) +* **deps:** bump dependencies ([2bbbf54](https://github.com/ovh/manager/commit/2bbbf540b44ed1bffb555fc55045a6f9ea756e78)) +* **deps:** update @ovh-ux/manager-config ([91b931d](https://github.com/ovh/manager/commit/91b931d17d09cee9fb2c529733c17829e910dbfc)) +* **deps:** upgarde `@ovh-ux/ui-kit` to `v6.0.0` ([#7088](https://github.com/ovh/manager/issues/7088)) ([1b79579](https://github.com/ovh/manager/commit/1b79579d4bd58ce748f70b8c7eb2c8461cdc4cc8)) +* **deps:** upgrade `@ovh-ux/ui-kit` to `v5.1.0` ([#5429](https://github.com/ovh/manager/issues/5429)) ([7099de9](https://github.com/ovh/manager/commit/7099de97320cdbdac5652b2c7ed70327251ed749)) +* **deps:** upgrade `@ovh-ux/ui-kit` to `v5.3.1` ([defea82](https://github.com/ovh/manager/commit/defea8213431605013ebc69646267fe568adaccb)) +* **deps:** upgrade `@ovh-ux/ui-kit` to `v5.3.2` ([#6335](https://github.com/ovh/manager/issues/6335)) ([b91ce69](https://github.com/ovh/manager/commit/b91ce698bf1d230de112e1896626574e1553769b)) +* **deps:** upgrade `@ovh-ux/ui-kit` to `v5.3.3` ([#6745](https://github.com/ovh/manager/issues/6745)) ([38d1144](https://github.com/ovh/manager/commit/38d11445b3671755758d153a4f4a166c7946705c)), closes [ovh/ovh-ui-kit#777](https://github.com/ovh/ovh-ui-kit/issues/777) +* **deps:** upgrade `ovh-api-services` to `v14.0.6` ([#7273](https://github.com/ovh/manager/issues/7273)) ([90698c8](https://github.com/ovh/manager/commit/90698c8c025bba09dd8e1baf64ccc0eecd56d3a8)) +* **environment:** use isRegion instead of getRegion ([beab2a9](https://github.com/ovh/manager/commit/beab2a998a1ceb9f7e30e635415520435d8a45e9)) +* **i18n:** add missing translations [CDS 1108] ([4742eca](https://github.com/ovh/manager/commit/4742eca51f26be6b0230c6738bdf189df630757d)) +* **i18n:** add missing translations [CDS 1111] ([d57157f](https://github.com/ovh/manager/commit/d57157f80118d997f4aa8064c84488fec7868ec8)) +* **i18n:** add missing translations [CDS 1118] ([58b7b7e](https://github.com/ovh/manager/commit/58b7b7e5c19798d3fcae828864717c57e07990d8)) +* **i18n:** add missing translations [CDS 1119] ([c9bb0db](https://github.com/ovh/manager/commit/c9bb0dbcd18fc9d2ba362c37c3b699d7c3e01128)) +* **i18n:** add missing translations [CDS 1135] ([0af5a82](https://github.com/ovh/manager/commit/0af5a8276a9ffb537aeeafd79f1925dc742854a2)) +* **i18n:** add missing translations [CDS 1137] ([6fd7f24](https://github.com/ovh/manager/commit/6fd7f24f314ea25f90e1ed5cb9d9fd722ec12d16)) +* **i18n:** add missing translations [CDS 1140] ([ef28cc6](https://github.com/ovh/manager/commit/ef28cc6c77f0349bfc3f7355414a4d062d4a35f8)) +* **i18n:** add missing translations [CDS 1162] ([#5575](https://github.com/ovh/manager/issues/5575)) ([e4755ae](https://github.com/ovh/manager/commit/e4755ae99e0c1924a19ee2d8510c3532c23497b5)) +* **i18n:** add missing translations [CDS 1184] ([df03553](https://github.com/ovh/manager/commit/df035537b0d5271384d1cddb582d583279e15318)) +* **i18n:** add missing translations [CDS 1191] ([9c37bb4](https://github.com/ovh/manager/commit/9c37bb4748eebfdbe0a5e40f5593dede2afab073)) +* **i18n:** add missing translations [CDS 1239] ([51239cf](https://github.com/ovh/manager/commit/51239cfb10e50f2d78aa4b42ae07d8e6a2021bc7)) +* **i18n:** add missing translations [CDS 1239] ([#5890](https://github.com/ovh/manager/issues/5890)) ([aa6da29](https://github.com/ovh/manager/commit/aa6da29a4acbbd8f8c1ef4fb781a9aed41e44149)) +* **i18n:** add missing translations [CDS 1246] ([489b27b](https://github.com/ovh/manager/commit/489b27bfd714edd65595b833780da751b9169899)) +* **i18n:** add missing translations [CDS 1253] ([d659951](https://github.com/ovh/manager/commit/d6599513a8a7978bb217d8d3391d5a72d8d5d3c9)) +* **i18n:** add missing translations [CDS 1261] ([#5899](https://github.com/ovh/manager/issues/5899)) ([e35d431](https://github.com/ovh/manager/commit/e35d431d4955805e87c081fe2028a80a37dbdb7a)) +* **i18n:** add missing translations [CDS 1295] ([4d3cace](https://github.com/ovh/manager/commit/4d3caceb4fbb837f4b4ecd677d9b9e47af8acc0b)) +* **i18n:** add missing translations [CDS 1338] ([c495f0f](https://github.com/ovh/manager/commit/c495f0f5d0ed9b1bb84123a32e0ca74890449469)) +* **i18n:** add missing translations [CDS 1393] ([f884dcc](https://github.com/ovh/manager/commit/f884dccdf1394182619028ceb08b076ffd9c0988)) +* **i18n:** add missing translations [CDS 1401] ([5e1924a](https://github.com/ovh/manager/commit/5e1924ade4fdffdce0f409c3d047cbbc1b909ede)) +* **i18n:** add missing translations [CDS 1403] ([1342265](https://github.com/ovh/manager/commit/134226570ecff4db92731a3586d60d3ee43a3cce)) +* **i18n:** add missing translations [CDS 1410] ([#6363](https://github.com/ovh/manager/issues/6363)) ([50b9816](https://github.com/ovh/manager/commit/50b9816405cd8ca79b86bb28fe769ea476cc4c93)) +* **i18n:** add missing translations [CDS 1412] ([1c6dc65](https://github.com/ovh/manager/commit/1c6dc6504965bdebe4c8118999f5793fb1dc3835)) +* **i18n:** add missing translations [CDS 1417] ([f9fb30b](https://github.com/ovh/manager/commit/f9fb30bdccf4aed9cf5b601b152b0da060bb1b41)) +* **i18n:** add missing translations [CDS 1422] ([b3ecea8](https://github.com/ovh/manager/commit/b3ecea81cc637a671d31408d443a8946253e886b)) +* **i18n:** add missing translations [CDS 1428] ([eab4d70](https://github.com/ovh/manager/commit/eab4d703e3ab487ceff0cf2869cb74202fb900a0)) +* **i18n:** add missing translations [CDS 1431] ([670fa37](https://github.com/ovh/manager/commit/670fa378e8a449315126fa9d5d02cf06c15e5f7f)) +* **i18n:** add missing translations [CDS 1460] ([c4aebf4](https://github.com/ovh/manager/commit/c4aebf426e92bd8eb183eab4d4c800f6e6aee348)) +* **i18n:** add missing translations [CDS 1496] ([28de037](https://github.com/ovh/manager/commit/28de037cae6dd646f59f809c2f6515886f5aeb4b)) +* **i18n:** add missing translations [CDS 1506] ([14e17e0](https://github.com/ovh/manager/commit/14e17e0125ccb0598c7fc760cf1f6a92b8266739)) +* **i18n:** add missing translations [CDS 1510] ([#6662](https://github.com/ovh/manager/issues/6662)) ([d2e3a4b](https://github.com/ovh/manager/commit/d2e3a4bfa7dedd918053a21625a653756cfc9aa4)) +* **i18n:** add missing translations [CDS 1601] ([#7000](https://github.com/ovh/manager/issues/7000)) ([89b088c](https://github.com/ovh/manager/commit/89b088cfdba143066cc992296b6e3cdeb5acc913)) +* **i18n:** add missing translations [CDS 1675] ([6477e46](https://github.com/ovh/manager/commit/6477e46da4cbceba352b8513032ed78b9acc2196)) +* **i18n:** add missing translations [CDS 1680] ([24023e2](https://github.com/ovh/manager/commit/24023e29bc6eaa89b6b789c2fa0787baafae3c73)) +* **i18n:** add missing translations [CDS 1681] ([d6d0f26](https://github.com/ovh/manager/commit/d6d0f2661141b8950a1bf5dae17e4a33c3a0ba12)) +* **i18n:** add missing translations [CDS 1681] ([1aadfaa](https://github.com/ovh/manager/commit/1aadfaa39570cc1c99f27466c1aff51724a6e3e5)) +* **i18n:** add missing translations [CDS 1682] ([4cb9878](https://github.com/ovh/manager/commit/4cb9878b02b3f555da9241e4fb0bfb6500261522)) +* **i18n:** add missing translations [CDS 1682] ([a007bc4](https://github.com/ovh/manager/commit/a007bc4e115bfac35e34e22132c5289c8a2e046f)) +* **i18n:** add missing translations [CDS 1683] ([4703079](https://github.com/ovh/manager/commit/470307920c30d2bdb0591f940373e6af437690a4)) +* **i18n:** add missing translations [CDS 1683] ([b861a84](https://github.com/ovh/manager/commit/b861a8496001a216624958993c749be09947040e)) +* **i18n:** add missing translations [CDS 1685] ([f085329](https://github.com/ovh/manager/commit/f085329cea82b2057064485d27e6944506ed814b)) +* **i18n:** add missing translations [CDS 1685] ([e479ef4](https://github.com/ovh/manager/commit/e479ef4b94efd365f203129588d57f69ec18f316)) +* **i18n:** add missing translations [CDS 1686] ([d635e86](https://github.com/ovh/manager/commit/d635e86ec5c5ae2a607b5ba87d34022c96581537)) +* **i18n:** add missing translations [CDS 1686] ([cc3662e](https://github.com/ovh/manager/commit/cc3662e58f9b19bc094c5d7b1949cacff8282c24)) +* **i18n:** add missing translations [CDS 1720] ([946fee2](https://github.com/ovh/manager/commit/946fee235409cbf9049b353a84950f0017d6c6bf)) +* **i18n:** add missing translations [CDS 1776] ([#7784](https://github.com/ovh/manager/issues/7784)) ([d8545de](https://github.com/ovh/manager/commit/d8545de10767b91869fa0b3b039e274d142444ca)) +* **i18n:** add missing translations [CDS 2226] ([1208caa](https://github.com/ovh/manager/commit/1208caa8e3cc7d614fdd9bea88e0c89982a275d1)) +* **i18n:** add missing translations [CDS 2557] ([fed9c2f](https://github.com/ovh/manager/commit/fed9c2f67919a918933a9f0b7325f60635310da8)) +* **i18n:** add missing translations [CDS 2639] ([b9dd275](https://github.com/ovh/manager/commit/b9dd275fcde4564d496d0ccaf59e0c79d3db7666)) +* **i18n:** add missing translations [CDS 2653] ([30fcc71](https://github.com/ovh/manager/commit/30fcc713c9ea70b933525f320a26e6f56e2e83a1)) +* **i18n:** add missing translations [CDS 2658] ([64c51f6](https://github.com/ovh/manager/commit/64c51f60d0c94029555c480a17835153206656d2)) +* **i18n:** add missing translations [CDS 2663] ([64f9e2f](https://github.com/ovh/manager/commit/64f9e2fa80ea3bb64b669b5aaf4a28098a7081e3)) +* **i18n:** add missing translations [CDS 2664] ([9030ac7](https://github.com/ovh/manager/commit/9030ac78e3f71ace8cdf940ad99673ffbb6bb4d5)) +* **i18n:** add missing translations [CDS 2667] ([adc086b](https://github.com/ovh/manager/commit/adc086b313c3b23714c7d2018feb50b4f5ff5684)) +* **i18n:** add missing translations [CDS 3189] ([ba73a17](https://github.com/ovh/manager/commit/ba73a17c03a04db70aad532fab42b31c1367dd03)) +* **i18n:** add missing translations [CDS 510] ([d54a431](https://github.com/ovh/manager/commit/d54a43114aae07268130a376c089478b073a273f)) +* **i18n:** add missing translations [CDS 514] ([915d83e](https://github.com/ovh/manager/commit/915d83e0b0b8b38347e3537e1161c7801c08b52a)) +* **i18n:** add missing translations [CDS 703] ([02388d2](https://github.com/ovh/manager/commit/02388d2393058720090dd40449df574628fe5f96)) +* **i18n:** add missing translations [CDS 742] ([65ae952](https://github.com/ovh/manager/commit/65ae952aeea81c15c852b2fc9a7011e77235b7f9)) +* **i18n:** add missing translations [CDS 746] ([32177bc](https://github.com/ovh/manager/commit/32177bc8073dc89f7c862a1fc9248749cca1d1db)) +* **i18n:** add missing translations [CDS 749] ([d9ac5e5](https://github.com/ovh/manager/commit/d9ac5e5de117940ea0786f16326f9993be23a7dc)) +* **i18n:** add missing translations [CDS 749] ([a18fae4](https://github.com/ovh/manager/commit/a18fae4dfee07262f58d1e13803e5c79e9ec361a)) +* **i18n:** add missing translations [CDS 752] ([7fb1816](https://github.com/ovh/manager/commit/7fb18162536ee08b6c40da5a3ae7055b1081ed01)) +* **i18n:** add missing translations [CDS 752] ([8ce0c06](https://github.com/ovh/manager/commit/8ce0c06ae77e404433d46e47cf15869f7be468c2)) +* **i18n:** add missing translations [CDS 768] ([2b61ff8](https://github.com/ovh/manager/commit/2b61ff8d8042acb9db3344a36f05f930f3e66e63)) +* **i18n:** add missing translations [CDS 777] ([713eb36](https://github.com/ovh/manager/commit/713eb369f242fe1475f9c95f12c1458bc8567ebd)) +* **i18n:** add missing translations [CDS 778] ([c0ea393](https://github.com/ovh/manager/commit/c0ea393b37c7eae5e23faafc1b15579b8357cd6a)) +* **i18n:** add missing translations [CDS 790] ([ec3ba71](https://github.com/ovh/manager/commit/ec3ba716c97997348bc9ef0174a8ac768ae05a2d)) +* **i18n:** add missing translations [CDS 793] ([2041d9a](https://github.com/ovh/manager/commit/2041d9a296621fbefa8c0fd8179a3830ce436b2b)) +* **i18n:** add missing translations [CDS 811] ([ac008c1](https://github.com/ovh/manager/commit/ac008c1c0145d1aafff254ae1c444a433d8d4165)) +* **i18n:** add missing translations [CDS 884] ([a32e02e](https://github.com/ovh/manager/commit/a32e02eefb033d6163531307519f50508798ca69)) +* **i18n:** add missing translations [CDS 889] ([7571da8](https://github.com/ovh/manager/commit/7571da807590c84097a6f21de8c5222ab8fb06ac)) +* **i18n:** add missing translations [CDS 891] ([c8594e5](https://github.com/ovh/manager/commit/c8594e5435a1de19a8980b18c7b1c0b498228d14)) +* **i18n:** add missing translations [CDS 892] ([8c51e87](https://github.com/ovh/manager/commit/8c51e879b6427ea9a947255d9097cfa1c496268b)) +* **i18n:** add missing translations [CDS 896] ([c1a16a4](https://github.com/ovh/manager/commit/c1a16a4660fe7b379b67cc00c730812bf8708a28)) +* **i18n:** add missing translations [CDS 899] ([110f23c](https://github.com/ovh/manager/commit/110f23ca4af9b4abb8d8f72b5f7f0f615fb9757e)) +* **i18n:** add missing translations [CDS 919] ([bb49398](https://github.com/ovh/manager/commit/bb493983511c7db91d203c274aa69ac687a707da)) +* **i18n:** add missing translations [CDS 943] ([0515200](https://github.com/ovh/manager/commit/051520010935463dd81731e0f0c86351a011d9cb)) +* **i18n:** add missing translations [CDS 962] ([0dcf878](https://github.com/ovh/manager/commit/0dcf8788cd6e08d0c87c5e358a5badfb583e1830)) +* **i18n:** add missing translations [CDS 969] ([8042dab](https://github.com/ovh/manager/commit/8042dab2398b4e3da34c777433d1cece42b53ac0)) +* **i18n:** add missing translations [CDS 979] ([58e9ebe](https://github.com/ovh/manager/commit/58e9ebe8436f0470d2a0d501eaacaca0f0cf5df6)) +* **i18n:** add missing translations [CDS 984] ([731a6a0](https://github.com/ovh/manager/commit/731a6a0b89e577ba6c56419b35c7f6f421d6c347)) +* **i18n:** add missing translations [CDS 986] ([9701a02](https://github.com/ovh/manager/commit/9701a02935ace00ae3b602ae148880cf94f46086)) +* **i18n:** add missing translations [CDS 990] ([d378cb3](https://github.com/ovh/manager/commit/d378cb376393349b5780b872f3c4d6b4f0d1ff2f)) +* **i18n:** add missing translations [CDS 993] ([ad5d6e8](https://github.com/ovh/manager/commit/ad5d6e8038b2d3369e607c92cbcf04d4e4fca396)) +* **locales:** remove es_US translations files ([#5709](https://github.com/ovh/manager/issues/5709)) ([3894a13](https://github.com/ovh/manager/commit/3894a1388393ea08b51e08bbfda416e7746fc8ca)), closes [#5685](https://github.com/ovh/manager/issues/5685) +* name correctly `country_RE` translation ([#5394](https://github.com/ovh/manager/issues/5394)) ([5231dc6](https://github.com/ovh/manager/commit/5231dc6cd2daef573c6ce37180daa74c45ee6c1e)) +* **orders:** declare redirection order follow-up rule before lazyloading ([#5335](https://github.com/ovh/manager/issues/5335)) ([f9f8f39](https://github.com/ovh/manager/commit/f9f8f390383702755d0c6adc359a52da02b80a42)) +* **orders:** prevent displaying empty page ([#7414](https://github.com/ovh/manager/issues/7414)) ([c603135](https://github.com/ovh/manager/commit/c603135673ced2dac5de0945557446a65cfff3e0)), closes [#7402](https://github.com/ovh/manager/issues/7402) +* **payment.method.add:** fix sepa direct help links ([#6480](https://github.com/ovh/manager/issues/6480)) ([a888daf](https://github.com/ovh/manager/commit/a888dafb7ef79f87d8a46c72ca3d1c032d89077a)) +* **payment.method.add:** navigate to payment methods list page ([#6625](https://github.com/ovh/manager/issues/6625)) ([2cd394f](https://github.com/ovh/manager/commit/2cd394f90764e713dc1d0f40b71620f3836067b9)) +* **payment.method:** do not fallback guide ([#6350](https://github.com/ovh/manager/issues/6350)) ([ff5dc9d](https://github.com/ovh/manager/commit/ff5dc9de6058e6723f5460ebfdc67b2d1c86886f)) +* **payment.method:** removal of unnecessary message ([#6423](https://github.com/ovh/manager/issues/6423)) ([a036aa0](https://github.com/ovh/manager/commit/a036aa06af716940a9087678c9f35b427c1b012a)) +* **payment.ovh-account.renew:** fix translation parameter passing ([0efebb1](https://github.com/ovh/manager/commit/0efebb1f5c46edbcfc080715542839f22f3f2b7c)) +* **payment.ovh-account:** update template cache url ([ed3be1d](https://github.com/ovh/manager/commit/ed3be1d0d0d713c6ddef1c237a3d99ba45f4a2f9)) +* **payment.ovhaccount:** update data on date change ([#5728](https://github.com/ovh/manager/issues/5728)) ([d2feb7a](https://github.com/ovh/manager/commit/d2feb7abf946cd29b9d5b9a9f5791d1908f5ba79)) +* **peer-deps:** upgrade @ovh-ux/ui-kit to v4.4.1 ([8254623](https://github.com/ovh/manager/commit/82546237336e185ae7d973a1bb2aabddbb50112e)) +* **pnr:** add top attribute to oui-action-menu-item with href ([5284489](https://github.com/ovh/manager/commit/5284489da8ae691bbf5b83493dba09f917760a96)) +* **refund:** avoid refund amount error ([#7326](https://github.com/ovh/manager/issues/7326)) ([79c55f4](https://github.com/ovh/manager/commit/79c55f46290268ca3f47316403b3e86391c06753)) +* remove unused translations [CDS] ([9fb7e5e](https://github.com/ovh/manager/commit/9fb7e5ea44880fb7b295a6001fa4c277954f1028)) +* remove unused translations [CDS] ([2f0b868](https://github.com/ovh/manager/commit/2f0b8682ff0dfda9ea2bfa2714d58cb4617a1935)) +* remove unused translations [CDS] ([f860e4d](https://github.com/ovh/manager/commit/f860e4d84ef1aa81b2432486a92db0b792f7872f)) +* remove unused translations [CDS] ([0b1eb80](https://github.com/ovh/manager/commit/0b1eb80e3ee1d7877ab56057df75a98a58b86b29)) +* remove unused translations [CDS] ([dd63f5c](https://github.com/ovh/manager/commit/dd63f5c493f54ecbcf88745659608e2982ec411e)) +* remove unused translations [CDS] ([25f031d](https://github.com/ovh/manager/commit/25f031d3edbf95d2eb9eeaba84e3ac7908ea3b6a)) +* remove unused translations [CDS] ([13fede8](https://github.com/ovh/manager/commit/13fede8026bc27124b1872ecf62db5aab148a4e0)) +* remove unused translations [CDS] ([97969a5](https://github.com/ovh/manager/commit/97969a565df95942e4761feaa0b0b73acc1aee61)) +* remove unused translations [CDS] ([6381fc1](https://github.com/ovh/manager/commit/6381fc18ed75a041150e415c019bb73984ef9db3)) +* remove unused translations [CDS] ([22c7cef](https://github.com/ovh/manager/commit/22c7cef38976469d684d25efbf71761105fc0611)) +* remove unused translations [CDS] ([9f27214](https://github.com/ovh/manager/commit/9f2721450d0ebe16cfa14e52677bde8c729e3f96)) +* remove unused translations [CDS] ([77ad6e5](https://github.com/ovh/manager/commit/77ad6e5353d5262f33298ce7cfe11bba38fdc8ba)) +* remove unused translations [CDS] ([#4515](https://github.com/ovh/manager/issues/4515)) ([680db40](https://github.com/ovh/manager/commit/680db40c06ba1095fb16bf70800baf68f62fbe12)) +* rename hosted private cloud to vmware ([030a38f](https://github.com/ovh/manager/commit/030a38f1421c52a86bc43c482a8c99fd912e69ad)), closes [#MANAGER-7545](https://github.com/ovh/manager/issues/MANAGER-7545) +* replace `oui-icon-external_link` by `oui-icon-external-link` ([645c8e6](https://github.com/ovh/manager/commit/645c8e675bad92c5928664a8aac2db36626fa397)) +* **server:** fix commit recommit tracking ([#4713](https://github.com/ovh/manager/issues/4713)) ([091c777](https://github.com/ovh/manager/commit/091c777cf2de516c0ef0a186b3cabe0697dc01e9)) +* **services-action:** allow to resiliate deletable service if possible ([#3818](https://github.com/ovh/manager/issues/3818)) ([40bc7bd](https://github.com/ovh/manager/commit/40bc7bdc53098295dce490116e3e93005327de90)) +* **services-actions:** limit resiliation display ([1df53a6](https://github.com/ovh/manager/commit/1df53a6ac779af5060f8e3fb336f36267393f512)) +* **subscription-tile:** fix contact management link ([#4303](https://github.com/ovh/manager/issues/4303)) ([a3d469d](https://github.com/ovh/manager/commit/a3d469dc5791aa653ae3ea52412fe8ea9813ea0f)) +* **translations:** fix invalids translations (variables) ([#4404](https://github.com/ovh/manager/issues/4404)) ([bbdcd79](https://github.com/ovh/manager/commit/bbdcd79046ce59663ebf2028b57f3404264696e0)) +* update @ovh-ux/manager-core ([d9898c0](https://github.com/ovh/manager/commit/d9898c09018bba60a10f2684912ec780beb41a7a)) +* update links to use shell client navigation plugin ([6b766e7](https://github.com/ovh/manager/commit/6b766e7be5c18249d8ce06b0cc2dd974360e9a6d)) +* update to remove legacy bank account ([#6144](https://github.com/ovh/manager/issues/6144)) ([d771b98](https://github.com/ovh/manager/commit/d771b98d28e40b878391c605ec6bf331392ae86b)) + + +### Code Refactoring + +* **billing:** kill payments requests apiv7 ([#6464](https://github.com/ovh/manager/issues/6464)) ([6d865ab](https://github.com/ovh/manager/commit/6d865ab9525462b33c0e979aa354d79f652479c6)) +* **billing:** rename module ([8a9e8b7](https://github.com/ovh/manager/commit/8a9e8b7b3fb56351d9cafce4f23c3e30eef2b7c1)) + + +### Features + +* add batch 2 advices ([#4597](https://github.com/ovh/manager/issues/4597)) ([69e5fe5](https://github.com/ovh/manager/commit/69e5fe5bfe813f4ef0e63e1acd8f128dc4590b73)) +* add component for commitment ([e220356](https://github.com/ovh/manager/commit/e2203561b902102981516133aa3bf18ce38e1f91)) +* add cross border payment sentence for TN/SA/MN ([#9343](https://github.com/ovh/manager/issues/9343)) ([32882a9](https://github.com/ovh/manager/commit/32882a9a4fdb83d7c62c32a98b431e9e133021f6)) +* add forced manual status ([#4807](https://github.com/ovh/manager/issues/4807)) ([8012ad3](https://github.com/ovh/manager/commit/8012ad35399a282a684e814ec4e2f9de8c64525e)) +* add tracking ([8eebca4](https://github.com/ovh/manager/commit/8eebca4feba4aa5f2b8b6a4961e2f84029b1bd62)) +* all dom termination enhancement ([#5574](https://github.com/ovh/manager/issues/5574)) ([7a2a4bd](https://github.com/ovh/manager/commit/7a2a4bdb084ceedcbb2307b9d22c8bf7ac81ca90)) +* all-dom termination enhancements ([7c1525f](https://github.com/ovh/manager/commit/7c1525fc0ba93d3a2c586e7b3d3d5bbc785e641f)) +* allow to cancel commitment ([8d216e0](https://github.com/ovh/manager/commit/8d216e0bca7f051ee6da547fda7f3bc04cc89925)) +* **anthos:** remove anthos product ([#9104](https://github.com/ovh/manager/issues/9104)) ([1a8d677](https://github.com/ovh/manager/commit/1a8d677843db3a7c4b1aa3262056970531c1693e)) +* **apps:** sepa direct payment worldline integration ([#8203](https://github.com/ovh/manager/issues/8203)) ([618dfee](https://github.com/ovh/manager/commit/618dfeeb1565d47c1bf0e66873931e6c8932c7bb)) +* **autorenew:** add resiliate new action ([b63470f](https://github.com/ovh/manager/commit/b63470f572fdb338c7d04724fd3236e60e6bf224)) +* **billing.autorenew:** set netapp service name ([f1498b1](https://github.com/ovh/manager/commit/f1498b1e7c8d1cf8ab2be55d93a3189f05cab1b9)) +* **billing.payment.method:** add split payment tracking ([e1de6aa](https://github.com/ovh/manager/commit/e1de6aa208b07732c436e4d0887f44580e7387ce)) +* **billing.payment:** use feature flipping for set as default choice ([4c597ce](https://github.com/ovh/manager/commit/4c597ce796072ba1eef8481688bef57d3ff40504)) +* **billing:** add contact management exception ([d57efc4](https://github.com/ovh/manager/commit/d57efc4a6666b55994d61fd810e53c0c8b0cbc63)), closes [#MANAGER-5671](https://github.com/ovh/manager/issues/MANAGER-5671) +* **billing:** guide menu links implementation ([#7625](https://github.com/ovh/manager/issues/7625)) ([e28e592](https://github.com/ovh/manager/commit/e28e5921393366a05af35a53349c5b04aa1c587b)) +* **billing:** handle the new billing debt status translation ([#11004](https://github.com/ovh/manager/issues/11004)) ([44eb3c4](https://github.com/ovh/manager/commit/44eb3c49cecb09974ee8ff0f522c748d4931caa2)) +* **billing:** purchase orders ([49e5379](https://github.com/ovh/manager/commit/49e537931f31826cdf213286999ab063625c8846)) +* **billing:** set new content for split payment modal ([#5144](https://github.com/ovh/manager/issues/5144)) ([6e16b8c](https://github.com/ovh/manager/commit/6e16b8c0534571fc30384b58d0cf08e2de101429)) +* **billing:** update on SBG voucher expiration ([#7863](https://github.com/ovh/manager/issues/7863)) ([b8d4765](https://github.com/ovh/manager/commit/b8d47656dc23d637fca641f34cf3c7fe5b19f8be)) +* bump @ovh-ux/ui-kit to v6.1.0 ([a1eaaa5](https://github.com/ovh/manager/commit/a1eaaa5cb68652d1d600ba02e0d27de557de94e5)) +* cancel a service with commitment ([#5677](https://github.com/ovh/manager/issues/5677)) ([f7dc6ab](https://github.com/ovh/manager/commit/f7dc6ab24db5a01b1d8521fc072def4da5aa5633)) +* **cancellation-form:** display form when require delete at expiration ([e89d1a6](https://github.com/ovh/manager/commit/e89d1a655ddff5393325dcc89a34727b80d24189)) +* create billing tile ([701774c](https://github.com/ovh/manager/commit/701774c07802a22015c74582a15427652fd7ad60)) +* create component for renew actions ([16e5b39](https://github.com/ovh/manager/commit/16e5b3925835afbc75ddba78680f9a87ac539dda)) +* **dedicated-sever:** add tracking in baremetal commitment ([#4434](https://github.com/ovh/manager/issues/4434)) ([9f28ed5](https://github.com/ovh/manager/commit/9f28ed5301dd96835098926fb91c52ccf31d7039)) +* **dedicated,web:** all-dom termination enhancements ([#6061](https://github.com/ovh/manager/issues/6061)) ([2e47dff](https://github.com/ovh/manager/commit/2e47dffa32e543dc0b48402c34341d158f3c82de)), closes [#6120](https://github.com/ovh/manager/issues/6120) [#6131](https://github.com/ovh/manager/issues/6131) +* **dedicated.billing:** add information banner for credit points ([#10221](https://github.com/ovh/manager/issues/10221)) ([0b2473b](https://github.com/ovh/manager/commit/0b2473bdfe439cd1e4a2a81ded3583fd02a52253)) +* **dedicated.ldp:** implement cancel button ([#12521](https://github.com/ovh/manager/issues/12521)) ([0be5932](https://github.com/ovh/manager/commit/0be5932e6d2810928a15cc6190fd3dee34cac51c)) +* **dedicated.order:** filter orders to remove null values ([#11493](https://github.com/ovh/manager/issues/11493)) ([814da72](https://github.com/ovh/manager/commit/814da7254598ac5fd436c190e903e7a712f534f6)) +* **dedicated.otrs:** paginate support tickets ([#8540](https://github.com/ovh/manager/issues/8540)) ([24e7308](https://github.com/ovh/manager/commit/24e73084d5db1b364989b7817b759719272b1fce)) +* **dedicated.payment:** add payment enhancements for sepa ([#6164](https://github.com/ovh/manager/issues/6164)) ([e01395c](https://github.com/ovh/manager/commit/e01395c7a990d855c1576829a0a58c09eba1126e)) +* **dedicated.support:** add auto renewal link for US account ([#12076](https://github.com/ovh/manager/issues/12076)) ([5fbfbcd](https://github.com/ovh/manager/commit/5fbfbcdc41a7e275566984cb98f9f0c16439cc0e)) +* **dedicated.support:** add links for indian account ([#8965](https://github.com/ovh/manager/issues/8965)) ([d76f7ba](https://github.com/ovh/manager/commit/d76f7baedc892bdbd4ab1a2dc14823ece7cc5311)) +* **dedicated:** add description on several section ([#6688](https://github.com/ovh/manager/issues/6688)) ([cc9017b](https://github.com/ovh/manager/commit/cc9017bd7e42ad013642f381a524de10060336d7)) +* **dedicated:** adding banner for autorenew 2016 deployment ([#9650](https://github.com/ovh/manager/issues/9650)) ([2feaba1](https://github.com/ovh/manager/commit/2feaba1957136ced5fed54cff7771a39f4289bec)) +* **dedicated:** create new resiliation links ([3601465](https://github.com/ovh/manager/commit/36014651cfa45ce3e31adb3b51f9b538f34d6937)) +* **dedicated:** hgv2 & ola integration #MANAGER-6116 ([e9d184f](https://github.com/ovh/manager/commit/e9d184f119d3cbd6754c7c2653180b0325341792)), closes [#MANAGER-6116](https://github.com/ovh/manager/issues/MANAGER-6116) +* **dedicated:** move billing section into new module ([46975aa](https://github.com/ovh/manager/commit/46975aad8609e7678dc28ceac4bc8f36006045a6)) +* **dedicated:** multi az feature change ([#11223](https://github.com/ovh/manager/issues/11223)) ([c751bee](https://github.com/ovh/manager/commit/c751bee0fe8d3bdc9638d063ee4a217399fa505f)) +* **dedicated:** remove default key from ssh key management ([#11594](https://github.com/ovh/manager/issues/11594)) ([b1bf70f](https://github.com/ovh/manager/commit/b1bf70f244b287ea44e41edf6d95462fa933c1c3)) +* **dedicated:** remove paymentmean deprecated call ([#11642](https://github.com/ovh/manager/issues/11642)) ([0983d74](https://github.com/ovh/manager/commit/0983d7474e3f223ed115195d6ac93548ba8a5417)) +* **deps:** upgrade `@ovh-ux/ui-kit` to `v5.0.0` ([d09ca10](https://github.com/ovh/manager/commit/d09ca10f4b7ca629e0b2f1fcb59278ea7f309a9e)) +* display engagement action ([e5c16a3](https://github.com/ovh/manager/commit/e5c16a3213673ad698bf93e356e10db536d930cb)) +* helpcenter ga migration to snow ([#11907](https://github.com/ovh/manager/issues/11907)) ([001cbb6](https://github.com/ovh/manager/commit/001cbb65fb0cb3f677e69f9176c096e994f99523)) +* **hpc-vmware-managed-vcd:** add new product VCD ([#12552](https://github.com/ovh/manager/issues/12552)) ([c990a65](https://github.com/ovh/manager/commit/c990a65189760c0b109902e3e292b31e8b59dd83)) +* india payment method management ([#9809](https://github.com/ovh/manager/issues/9809)) ([#9833](https://github.com/ovh/manager/issues/9833)) ([474db9f](https://github.com/ovh/manager/commit/474db9f32384704329b5edb5ab9d0b2e8a7f97b0)) +* manager integration to india subsidiary ([#9193](https://github.com/ovh/manager/issues/9193)) ([6e715f6](https://github.com/ovh/manager/commit/6e715f6ff53aa609bb0e97bf4c388409f2263a44)) +* **modules.billing:** add split payment component ([9f60691](https://github.com/ovh/manager/commit/9f60691e4e73db47f59f37fde0b84e5fdbdaa77e)) +* **navbar.marketplace:** add marketplace to top navbar ([#5828](https://github.com/ovh/manager/issues/5828)) ([815c49f](https://github.com/ovh/manager/commit/815c49f4f3cf7a598aee79d99798033ac5952bba)) +* nutanix service ui ([5d9d1fd](https://github.com/ovh/manager/commit/5d9d1fd5dd10dd614df4068c3cfc84d44791b739)) +* **nutanix:** bring your own license ([4aecf21](https://github.com/ovh/manager/commit/4aecf215501541223bd10fd4851a4bac92a4c45f)) +* **octavia:** octavia mvp setup ([e60cb2d](https://github.com/ovh/manager/commit/e60cb2d4bff27616b5f37d64334816105a830e8f)) +* **payment-method:** catch error on payment methods load ([80dc337](https://github.com/ovh/manager/commit/80dc337192635134f445aeb1e9035c14321d1e33)) +* **payment.credits:** add expiration type ([#7906](https://github.com/ovh/manager/issues/7906)) ([056fc2f](https://github.com/ovh/manager/commit/056fc2fe7b3f276db41d76b4e0cb413200fd7d0c)) +* **payment:** sepa integration with worldline on payments page ([#7149](https://github.com/ovh/manager/issues/7149)) ([0675f4e](https://github.com/ovh/manager/commit/0675f4e098cf3cd9fe3ac22ee9c8e8f6943d5c6e)) +* **pci.data-processing:** adding spark notebooks ([#9127](https://github.com/ovh/manager/issues/9127)) ([d7b3aaf](https://github.com/ovh/manager/commit/d7b3aaf10a002a5b40739c25459d262927623bd1)) +* **pci:** enable discovery mode on pci project ([#10398](https://github.com/ovh/manager/issues/10398)) ([9c53a2c](https://github.com/ovh/manager/commit/9c53a2c4c661a17d2b492fc18c031ab09291bee8)) +* **pci:** new payment method ([#10378](https://github.com/ovh/manager/issues/10378)) ([3d87a3e](https://github.com/ovh/manager/commit/3d87a3e702a934d943989f829afd0bdc4f0aecb8)) +* **pci:** new solution for payment step on PCI > Checkbox ([#10733](https://github.com/ovh/manager/issues/10733)) ([ca45ed9](https://github.com/ovh/manager/commit/ca45ed928684da75ec899377fd3ba093826e7cba)) +* remove restrictions on commitment type ([8520ba0](https://github.com/ovh/manager/commit/8520ba07c337aedb8ecb950a22e2ea1e820b3f99)) +* renaming fidelity points labels ([#9846](https://github.com/ovh/manager/issues/9846)) ([81ca283](https://github.com/ovh/manager/commit/81ca283c6c76aedf70223a7cdccfad4e92e17ffb)) +* send billing region on parameters for snow ([#12584](https://github.com/ovh/manager/issues/12584)) ([8261de8](https://github.com/ovh/manager/commit/8261de869c4d83540c7a5794487f97d4194956a2)) +* **services-actions:** allow service type to be undefined ([837d058](https://github.com/ovh/manager/commit/837d0580e4594c557ec80feb5d882c822f4169f6)) +* **signup:** add searchable country list and update labels ([#10625](https://github.com/ovh/manager/issues/10625)) ([a263199](https://github.com/ovh/manager/commit/a263199b06a47298eb7bf0a99814b38da3b544c2)) +* update PayPal content ([#6170](https://github.com/ovh/manager/issues/6170)) ([a8c1f05](https://github.com/ovh/manager/commit/a8c1f050822234f53523fa203d64a7cf4ae27a30)) +* update wording for new billing status ([#4640](https://github.com/ovh/manager/issues/4640)) ([9a780cd](https://github.com/ovh/manager/commit/9a780cddb253e225874cd2f21e5fc3d9d5fa0839)) +* use feature availability to display renew actions ([#5054](https://github.com/ovh/manager/issues/5054)) ([d3de920](https://github.com/ovh/manager/commit/d3de92098fea3aa35d06cc9f9308bd330ee2bd7e)) +* **vps:** commitment ([#4399](https://github.com/ovh/manager/issues/4399)) ([2afdbb2](https://github.com/ovh/manager/commit/2afdbb272a0f5fa4ca09ad933353a48d471d8ab9)) +* **vps:** commitment ([#4927](https://github.com/ovh/manager/issues/4927)) ([cd420a8](https://github.com/ovh/manager/commit/cd420a8350add11f6a1673fa5ab74719066df744)) +* vrack-service ga ([#11920](https://github.com/ovh/manager/issues/11920)) ([c394457](https://github.com/ovh/manager/commit/c39445748e9e71e170b9860dd8b860a1a2ccbf85)) +* **webpaas:** add web paas changes for ga release ([e32c63a](https://github.com/ovh/manager/commit/e32c63ac4c845208ca550eb23caeb4c99c7447e6)), closes [#MANAGER-5671](https://github.com/ovh/manager/issues/MANAGER-5671) + + +### Reverts + +* Revert "feat(pci): new payment method (#10378)" (#10731) ([dfd1f71](https://github.com/ovh/manager/commit/dfd1f71c02f1e3a24a7c9c4b68f74d2647a96e05)), closes [#10378](https://github.com/ovh/manager/issues/10378) [#10731](https://github.com/ovh/manager/issues/10731) +* Revert "fix(dedicated.payments): delete a contradiction for payment method (#9028)" (#9074) ([9625e1c](https://github.com/ovh/manager/commit/9625e1c593707679e66f7d051d9db2074477a9df)), closes [#9028](https://github.com/ovh/manager/issues/9028) [#9074](https://github.com/ovh/manager/issues/9074) +* Revert "feat(vps): commitment (#4399)" (#4917) ([f8c6b12](https://github.com/ovh/manager/commit/f8c6b123534fe738cd5c0c4e99bc36281e795f2e)), closes [#4399](https://github.com/ovh/manager/issues/4399) [#4917](https://github.com/ovh/manager/issues/4917) +* all-dom termination enhancements ([#6061](https://github.com/ovh/manager/issues/6061)) ([d1daabc](https://github.com/ovh/manager/commit/d1daabce6425caf691f562fd6ccd6c041b1cbbdb)) + + +### BREAKING CHANGES + +* **billing:** BillingBill service has been removed +* **billing:** rename billing module to billing-components +* @ovh-ux/ng-ovh-feature-flipping is now a peer dep of module + +Signed-off-by: Marie JONES +* init billing module + +Signed-off-by: Marie JONES + + + + + +# [0.20.0-alpha.46](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.45...@ovh-ux/manager-billing@0.20.0-alpha.46) (2024-10-21) + + +### Features + +* **hpc-vmware-managed-vcd:** add new product VCD ([#12552](https://github.com/ovh/manager/issues/12552)) ([c990a65](https://github.com/ovh/manager/commit/c990a65189760c0b109902e3e292b31e8b59dd83)) + + + + + +# [0.20.0-alpha.45](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.44...@ovh-ux/manager-billing@0.20.0-alpha.45) (2024-09-26) + +**Note:** Version bump only for package @ovh-ux/manager-billing + + + + + +# [0.20.0-alpha.44](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.43...@ovh-ux/manager-billing@0.20.0-alpha.44) (2024-08-29) + +**Note:** Version bump only for package @ovh-ux/manager-billing + + + + + +# [0.20.0-alpha.43](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.42...@ovh-ux/manager-billing@0.20.0-alpha.43) (2024-08-14) + + +### Features + +* vrack-service ga ([#11920](https://github.com/ovh/manager/issues/11920)) ([c394457](https://github.com/ovh/manager/commit/c39445748e9e71e170b9860dd8b860a1a2ccbf85)) + + + + + +# [0.20.0-alpha.42](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.41...@ovh-ux/manager-billing@0.20.0-alpha.42) (2024-08-13) + + +### Features + +* **dedicated.ldp:** implement cancel button ([#12521](https://github.com/ovh/manager/issues/12521)) ([0be5932](https://github.com/ovh/manager/commit/0be5932e6d2810928a15cc6190fd3dee34cac51c)) + + + + + +# [0.20.0-alpha.41](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.40...@ovh-ux/manager-billing@0.20.0-alpha.41) (2024-08-08) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 3189] ([ba73a17](https://github.com/ovh/manager/commit/ba73a17c03a04db70aad532fab42b31c1367dd03)) + + + + + +# [0.20.0-alpha.40](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.39...@ovh-ux/manager-billing@0.20.0-alpha.40) (2024-08-05) + + +### Features + +* send billing region on parameters for snow ([#12584](https://github.com/ovh/manager/issues/12584)) ([8261de8](https://github.com/ovh/manager/commit/8261de869c4d83540c7a5794487f97d4194956a2)) + + + + + +# [0.20.0-alpha.39](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.38...@ovh-ux/manager-billing@0.20.0-alpha.39) (2024-07-23) + + +### Features + +* helpcenter ga migration to snow ([#11907](https://github.com/ovh/manager/issues/11907)) ([001cbb6](https://github.com/ovh/manager/commit/001cbb65fb0cb3f677e69f9176c096e994f99523)) + + + + + +# [0.20.0-alpha.38](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.37...@ovh-ux/manager-billing@0.20.0-alpha.38) (2024-07-03) + + +### Features + +* **dedicated.support:** add auto renewal link for US account ([#12076](https://github.com/ovh/manager/issues/12076)) ([5fbfbcd](https://github.com/ovh/manager/commit/5fbfbcdc41a7e275566984cb98f9f0c16439cc0e)) + + + + + +# [0.20.0-alpha.37](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.36...@ovh-ux/manager-billing@0.20.0-alpha.37) (2024-06-25) + + +### Bug Fixes + +* **dedicated:** disable view service details for byoip ([#12001](https://github.com/ovh/manager/issues/12001)) ([91872c0](https://github.com/ovh/manager/commit/91872c02804ef82ab71df5d49974688f10d8f886)) + + + + + +# [0.20.0-alpha.36](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.35...@ovh-ux/manager-billing@0.20.0-alpha.36) (2024-06-03) + + +### Bug Fixes + +* remove unused translations [CDS] ([9fb7e5e](https://github.com/ovh/manager/commit/9fb7e5ea44880fb7b295a6001fa4c277954f1028)) + + + + + +# [0.20.0-alpha.35](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.34...@ovh-ux/manager-billing@0.20.0-alpha.35) (2024-05-21) + + +### Features + +* **dedicated:** remove default key from ssh key management ([#11594](https://github.com/ovh/manager/issues/11594)) ([b1bf70f](https://github.com/ovh/manager/commit/b1bf70f244b287ea44e41edf6d95462fa933c1c3)) +* **dedicated:** remove paymentmean deprecated call ([#11642](https://github.com/ovh/manager/issues/11642)) ([0983d74](https://github.com/ovh/manager/commit/0983d7474e3f223ed115195d6ac93548ba8a5417)) + + + + + +# [0.20.0-alpha.34](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.33...@ovh-ux/manager-billing@0.20.0-alpha.34) (2024-05-06) + + +### Features + +* **dedicated.order:** filter orders to remove null values ([#11493](https://github.com/ovh/manager/issues/11493)) ([814da72](https://github.com/ovh/manager/commit/814da7254598ac5fd436c190e903e7a712f534f6)) + + + + + +# [0.20.0-alpha.33](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.32...@ovh-ux/manager-billing@0.20.0-alpha.33) (2024-04-04) + + +### Features + +* **signup:** add searchable country list and update labels ([#10625](https://github.com/ovh/manager/issues/10625)) ([a263199](https://github.com/ovh/manager/commit/a263199b06a47298eb7bf0a99814b38da3b544c2)) + + + + + +# [0.20.0-alpha.32](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.31...@ovh-ux/manager-billing@0.20.0-alpha.32) (2024-03-21) + + +### Features + +* **dedicated:** multi az feature change ([#11223](https://github.com/ovh/manager/issues/11223)) ([c751bee](https://github.com/ovh/manager/commit/c751bee0fe8d3bdc9638d063ee4a217399fa505f)) + + + + + +# [0.20.0-alpha.31](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.30...@ovh-ux/manager-billing@0.20.0-alpha.31) (2024-03-19) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 2557] ([fed9c2f](https://github.com/ovh/manager/commit/fed9c2f67919a918933a9f0b7325f60635310da8)) +* **i18n:** add missing translations [CDS 2639] ([b9dd275](https://github.com/ovh/manager/commit/b9dd275fcde4564d496d0ccaf59e0c79d3db7666)) +* **i18n:** add missing translations [CDS 2653] ([30fcc71](https://github.com/ovh/manager/commit/30fcc713c9ea70b933525f320a26e6f56e2e83a1)) +* **i18n:** add missing translations [CDS 2658] ([64c51f6](https://github.com/ovh/manager/commit/64c51f60d0c94029555c480a17835153206656d2)) +* **i18n:** add missing translations [CDS 2663] ([64f9e2f](https://github.com/ovh/manager/commit/64f9e2fa80ea3bb64b669b5aaf4a28098a7081e3)) +* **i18n:** add missing translations [CDS 2664] ([9030ac7](https://github.com/ovh/manager/commit/9030ac78e3f71ace8cdf940ad99673ffbb6bb4d5)) +* **i18n:** add missing translations [CDS 2667] ([adc086b](https://github.com/ovh/manager/commit/adc086b313c3b23714c7d2018feb50b4f5ff5684)) + + + + + +# [0.20.0-alpha.30](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.29...@ovh-ux/manager-billing@0.20.0-alpha.30) (2024-03-04) + + +### Features + +* **billing:** handle the new billing debt status translation ([#11004](https://github.com/ovh/manager/issues/11004)) ([44eb3c4](https://github.com/ovh/manager/commit/44eb3c49cecb09974ee8ff0f522c748d4931caa2)) + + + + + +# [0.20.0-alpha.29](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.28...@ovh-ux/manager-billing@0.20.0-alpha.29) (2024-02-21) + + +### Features + +* **pci:** enable discovery mode on pci project ([#10398](https://github.com/ovh/manager/issues/10398)) ([9c53a2c](https://github.com/ovh/manager/commit/9c53a2c4c661a17d2b492fc18c031ab09291bee8)) + + + + + +# [0.20.0-alpha.28](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.27...@ovh-ux/manager-billing@0.20.0-alpha.28) (2024-02-15) + + +### Features + +* **octavia:** octavia mvp setup ([e60cb2d](https://github.com/ovh/manager/commit/e60cb2d4bff27616b5f37d64334816105a830e8f)) + + + + + +# [0.20.0-alpha.27](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.26...@ovh-ux/manager-billing@0.20.0-alpha.27) (2024-02-05) + + +### Features + +* **pci:** new solution for payment step on PCI > Checkbox ([#10733](https://github.com/ovh/manager/issues/10733)) ([ca45ed9](https://github.com/ovh/manager/commit/ca45ed928684da75ec899377fd3ba093826e7cba)) + + + + + +# [0.20.0-alpha.26](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.25...@ovh-ux/manager-billing@0.20.0-alpha.26) (2023-12-01) + +**Note:** Version bump only for package @ovh-ux/manager-billing + + + + + +# [0.20.0-alpha.25](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.24...@ovh-ux/manager-billing@0.20.0-alpha.25) (2023-11-13) + + +### Features + +* **dedicated.billing:** add information banner for credit points ([#10221](https://github.com/ovh/manager/issues/10221)) ([0b2473b](https://github.com/ovh/manager/commit/0b2473bdfe439cd1e4a2a81ded3583fd02a52253)) + + + + + +# [0.20.0-alpha.24](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.23...@ovh-ux/manager-billing@0.20.0-alpha.24) (2023-11-06) + + +### Bug Fixes + +* **billing:** change content for auto renew alert banner ([#10153](https://github.com/ovh/manager/issues/10153)) ([c62a05e](https://github.com/ovh/manager/commit/c62a05eb8d6c5369a63c2d67d679544e80e66a32)) + + + + + +# [0.20.0-alpha.23](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.22...@ovh-ux/manager-billing@0.20.0-alpha.23) (2023-10-30) + + +### Bug Fixes + +* **billing:** fix bulk renew service for nic CA ([#10181](https://github.com/ovh/manager/issues/10181)) ([b834712](https://github.com/ovh/manager/commit/b83471281797772490261ca7658856e2531f6d48)) + + + + + +# [0.20.0-alpha.22](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.21...@ovh-ux/manager-billing@0.20.0-alpha.22) (2023-10-11) + + +### Bug Fixes + +* **billing.services:** change tooltip content for some subs ([#9898](https://github.com/ovh/manager/issues/9898)) ([0890ad6](https://github.com/ovh/manager/commit/0890ad6769e6e38a6647751482a2ae5c461d7a7f)) + + + + + +# [0.20.0-alpha.21](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.20...@ovh-ux/manager-billing@0.20.0-alpha.21) (2023-09-27) + + +### Features + +* india payment method management ([#9809](https://github.com/ovh/manager/issues/9809)) ([#9833](https://github.com/ovh/manager/issues/9833)) ([474db9f](https://github.com/ovh/manager/commit/474db9f32384704329b5edb5ab9d0b2e8a7f97b0)) + + + + + +# [0.20.0-alpha.20](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.19...@ovh-ux/manager-billing@0.20.0-alpha.20) (2023-09-18) + + +### Features + +* manager integration to india subsidiary ([#9193](https://github.com/ovh/manager/issues/9193)) ([6e715f6](https://github.com/ovh/manager/commit/6e715f6ff53aa609bb0e97bf4c388409f2263a44)) + + + + + +# [0.20.0-alpha.19](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.18...@ovh-ux/manager-billing@0.20.0-alpha.19) (2023-09-12) + + +### Features + +* **dedicated:** adding banner for autorenew 2016 deployment ([#9650](https://github.com/ovh/manager/issues/9650)) ([2feaba1](https://github.com/ovh/manager/commit/2feaba1957136ced5fed54cff7771a39f4289bec)) + + + + + +# [0.20.0-alpha.18](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.17...@ovh-ux/manager-billing@0.20.0-alpha.18) (2023-08-30) + + +### Bug Fixes + +* **billing:** create redirection from state mean to payment ([#9888](https://github.com/ovh/manager/issues/9888)) ([ee52df1](https://github.com/ovh/manager/commit/ee52df1c60bb80aacba33ec47702641a59cf1d94)) + + +### Features + +* renaming fidelity points labels ([#9846](https://github.com/ovh/manager/issues/9846)) ([81ca283](https://github.com/ovh/manager/commit/81ca283c6c76aedf70223a7cdccfad4e92e17ffb)) + + + + + +# [0.20.0-alpha.17](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.16...@ovh-ux/manager-billing@0.20.0-alpha.17) (2023-07-20) + +**Note:** Version bump only for package @ovh-ux/manager-billing + + + + + +# [0.20.0-alpha.16](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.15...@ovh-ux/manager-billing@0.20.0-alpha.16) (2023-07-06) + + +### Features + +* add cross border payment sentence for TN/SA/MN ([#9343](https://github.com/ovh/manager/issues/9343)) ([32882a9](https://github.com/ovh/manager/commit/32882a9a4fdb83d7c62c32a98b431e9e133021f6)) + + + + + +# [0.20.0-alpha.15](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.14...@ovh-ux/manager-billing@0.20.0-alpha.15) (2023-05-15) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 2226] ([1208caa](https://github.com/ovh/manager/commit/1208caa8e3cc7d614fdd9bea88e0c89982a275d1)) +* remove unused translations [CDS] ([2f0b868](https://github.com/ovh/manager/commit/2f0b8682ff0dfda9ea2bfa2714d58cb4617a1935)) +* remove unused translations [CDS] ([f860e4d](https://github.com/ovh/manager/commit/f860e4d84ef1aa81b2432486a92db0b792f7872f)) + + + + + +# [0.20.0-alpha.14](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.13...@ovh-ux/manager-billing@0.20.0-alpha.14) (2023-04-20) + + +### Bug Fixes + +* add some missing translations ([#9107](https://github.com/ovh/manager/issues/9107)) ([f838b0e](https://github.com/ovh/manager/commit/f838b0e36562026970ed3db178c8f179edef7d51)) + + + + + +# [0.20.0-alpha.13](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.12...@ovh-ux/manager-billing@0.20.0-alpha.13) (2023-04-19) + + +### Features + +* **pci.data-processing:** adding spark notebooks ([#9127](https://github.com/ovh/manager/issues/9127)) ([d7b3aaf](https://github.com/ovh/manager/commit/d7b3aaf10a002a5b40739c25459d262927623bd1)) + + + + + +# [0.20.0-alpha.12](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.11...@ovh-ux/manager-billing@0.20.0-alpha.12) (2023-04-11) + + +### Bug Fixes + +* **billing:** show ongoing REF/PO warning ([#9083](https://github.com/ovh/manager/issues/9083)) ([1951848](https://github.com/ovh/manager/commit/19518489776eb8614ddd9f12715575890e1b640f)) + + + + + +# [0.20.0-alpha.11](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.10...@ovh-ux/manager-billing@0.20.0-alpha.11) (2023-04-05) + + +### Features + +* **anthos:** remove anthos product ([#9104](https://github.com/ovh/manager/issues/9104)) ([1a8d677](https://github.com/ovh/manager/commit/1a8d677843db3a7c4b1aa3262056970531c1693e)) + + + + + +# [0.20.0-alpha.10](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.9...@ovh-ux/manager-billing@0.20.0-alpha.10) (2023-03-29) + + +### Bug Fixes + +* **dedicated.payment:** change content in en for translation ([#9058](https://github.com/ovh/manager/issues/9058)) ([81a1d92](https://github.com/ovh/manager/commit/81a1d9226350507dd9d62093e9a04fbda64bbaa1)) + + + + + +# [0.20.0-alpha.9](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.8...@ovh-ux/manager-billing@0.20.0-alpha.9) (2023-03-22) + + +### Bug Fixes + +* **dedicated.payments:** delete a contradiction for payment method ([#9077](https://github.com/ovh/manager/issues/9077)) ([7476ee1](https://github.com/ovh/manager/commit/7476ee1b5b6a3e776e11db9faec711c1ea962902)) + + +### Features + +* **dedicated.support:** add links for indian account ([#8965](https://github.com/ovh/manager/issues/8965)) ([d76f7ba](https://github.com/ovh/manager/commit/d76f7baedc892bdbd4ab1a2dc14823ece7cc5311)) + + + + + +# [0.20.0-alpha.8](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.7...@ovh-ux/manager-billing@0.20.0-alpha.8) (2023-03-20) + +**Note:** Version bump only for package @ovh-ux/manager-billing + + + + + +# [0.20.0-alpha.7](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.6...@ovh-ux/manager-billing@0.20.0-alpha.7) (2023-03-09) + + +### Bug Fixes + +* **dedicated:** ssh key comment can be anything ([50754b5](https://github.com/ovh/manager/commit/50754b5f4a6eba530b148d9ec205d143506e9add)) + + + + + +# [0.20.0-alpha.6](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.5...@ovh-ux/manager-billing@0.20.0-alpha.6) (2023-01-02) + + +### Bug Fixes + +* **dedicated:** skip application refresh due to bad redirect ([52f9c8c](https://github.com/ovh/manager/commit/52f9c8c69b6bdd17f264fbfadf8593d0ceda9ef9)) + + + + + +# [0.20.0-alpha.5](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.4...@ovh-ux/manager-billing@0.20.0-alpha.5) (2022-12-22) + + +### Features + +* **apps:** sepa direct payment worldline integration ([#8203](https://github.com/ovh/manager/issues/8203)) ([618dfee](https://github.com/ovh/manager/commit/618dfeeb1565d47c1bf0e66873931e6c8932c7bb)) + + + + + +# [0.20.0-alpha.4](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.3...@ovh-ux/manager-billing@0.20.0-alpha.4) (2022-12-19) + + +### Features + +* **dedicated.otrs:** paginate support tickets ([#8540](https://github.com/ovh/manager/issues/8540)) ([24e7308](https://github.com/ovh/manager/commit/24e73084d5db1b364989b7817b759719272b1fce)) + + + + + +# [0.20.0-alpha.3](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.2...@ovh-ux/manager-billing@0.20.0-alpha.3) (2022-12-12) + + +### Features + +* **nutanix:** bring your own license ([4aecf21](https://github.com/ovh/manager/commit/4aecf215501541223bd10fd4851a4bac92a4c45f)) + + + + + +# [0.20.0-alpha.2](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.1...@ovh-ux/manager-billing@0.20.0-alpha.2) (2022-10-24) + + +### Bug Fixes + +* remove unused translations [CDS] ([0b1eb80](https://github.com/ovh/manager/commit/0b1eb80e3ee1d7877ab56057df75a98a58b86b29)) + + + + + +# [0.20.0-alpha.1](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.20.0-alpha.0...@ovh-ux/manager-billing@0.20.0-alpha.1) (2022-10-10) + + +### Bug Fixes + +* **dedicated-billing:** remove redirect link to hub ([#8081](https://github.com/ovh/manager/issues/8081)) ([9bc6d2e](https://github.com/ovh/manager/commit/9bc6d2e75122b701555ff15fc4f5206ee23e1672)) + + + +# [0.20.0-alpha.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.19.0-alpha.0...@ovh-ux/manager-billing@0.20.0-alpha.0) (2022-09-14) + + +### Bug Fixes + +* remove unused translations [CDS] ([dd63f5c](https://github.com/ovh/manager/commit/dd63f5c493f54ecbcf88745659608e2982ec411e)) + + +### Features + +* **payment:** sepa integration with worldline on payments page ([#7149](https://github.com/ovh/manager/issues/7149)) ([0675f4e](https://github.com/ovh/manager/commit/0675f4e098cf3cd9fe3ac22ee9c8e8f6943d5c6e)) + + + +# [0.19.0-alpha.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.18.0-alpha.0...@ovh-ux/manager-billing@0.19.0-alpha.0) (2022-09-01) + + +### Features + +* **billing:** update on SBG voucher expiration ([#7863](https://github.com/ovh/manager/issues/7863)) ([b8d4765](https://github.com/ovh/manager/commit/b8d47656dc23d637fca641f34cf3c7fe5b19f8be)) + + + +# [0.18.0-alpha.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.17.0-alpha.2...@ovh-ux/manager-billing@0.18.0-alpha.0) (2022-08-31) + + +### Features + +* **payment.credits:** add expiration type ([#7906](https://github.com/ovh/manager/issues/7906)) ([056fc2f](https://github.com/ovh/manager/commit/056fc2fe7b3f276db41d76b4e0cb413200fd7d0c)) + + + +# [0.17.0-alpha.2](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.17.0-alpha.1...@ovh-ux/manager-billing@0.17.0-alpha.2) (2022-08-18) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 1776] ([#7784](https://github.com/ovh/manager/issues/7784)) ([d8545de](https://github.com/ovh/manager/commit/d8545de10767b91869fa0b3b039e274d142444ca)) + + + +# [0.17.0-alpha.1](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.17.0-alpha.0...@ovh-ux/manager-billing@0.17.0-alpha.1) (2022-08-09) + + +### Bug Fixes + +* **autorenew.delete:** replace aapi with `/services` ([#7707](https://github.com/ovh/manager/issues/7707)) ([3918eec](https://github.com/ovh/manager/commit/3918eec8895451b91d77c9354146bb39c4160bd1)) + + + +# [0.17.0-alpha.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.16.0-alpha.10...@ovh-ux/manager-billing@0.17.0-alpha.0) (2022-08-02) + + +### Bug Fixes + +* **billing:** add missing links guides for certain subs ([0cd3871](https://github.com/ovh/manager/commit/0cd38716c45a1448a2eb94aaa9fb85127bd74a69)) + + +### Features + +* **billing:** guide menu links implementation ([#7625](https://github.com/ovh/manager/issues/7625)) ([e28e592](https://github.com/ovh/manager/commit/e28e5921393366a05af35a53349c5b04aa1c587b)) + + + +# [0.16.0-alpha.10](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.16.0-alpha.9...@ovh-ux/manager-billing@0.16.0-alpha.10) (2022-08-01) + + +### Bug Fixes + +* update links to use shell client navigation plugin ([6b766e7](https://github.com/ovh/manager/commit/6b766e7be5c18249d8ce06b0cc2dd974360e9a6d)) + + + +# [0.16.0-alpha.9](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.16.0-alpha.8...@ovh-ux/manager-billing@0.16.0-alpha.9) (2022-07-27) + + +### Bug Fixes + +* **deps:** bump dependencies ([2bbbf54](https://github.com/ovh/manager/commit/2bbbf540b44ed1bffb555fc55045a6f9ea756e78)) + + + +# [0.16.0-alpha.8](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.16.0-alpha.7...@ovh-ux/manager-billing@0.16.0-alpha.8) (2022-07-18) + + +### Bug Fixes + +* **autorenew:** add missing translation for office licenses ([#7496](https://github.com/ovh/manager/issues/7496)) ([65ba9c0](https://github.com/ovh/manager/commit/65ba9c0707b0929e29d9249ffb817fa4d6d70814)) + + + +# [0.16.0-alpha.7](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.16.0-alpha.6...@ovh-ux/manager-billing@0.16.0-alpha.7) (2022-07-11) + + +### Bug Fixes + +* **billing.order:** remove double title if purchase order isnt available ([28ada16](https://github.com/ovh/manager/commit/28ada16dea58edb277b76a2d1f75daaa1ce1a49f)) +* **i18n:** add missing translations [CDS 1720] ([946fee2](https://github.com/ovh/manager/commit/946fee235409cbf9049b353a84950f0017d6c6bf)) + + + +# [0.16.0-alpha.6](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.16.0-alpha.5...@ovh-ux/manager-billing@0.16.0-alpha.6) (2022-06-30) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 1686] ([cc3662e](https://github.com/ovh/manager/commit/cc3662e58f9b19bc094c5d7b1949cacff8282c24)) +* remove unused translations [CDS] ([13fede8](https://github.com/ovh/manager/commit/13fede8026bc27124b1872ecf62db5aab148a4e0)) +* **i18n:** add missing translations [CDS 1681] ([1aadfaa](https://github.com/ovh/manager/commit/1aadfaa39570cc1c99f27466c1aff51724a6e3e5)) +* **i18n:** add missing translations [CDS 1682] ([a007bc4](https://github.com/ovh/manager/commit/a007bc4e115bfac35e34e22132c5289c8a2e046f)) +* **i18n:** add missing translations [CDS 1683] ([b861a84](https://github.com/ovh/manager/commit/b861a8496001a216624958993c749be09947040e)) +* **i18n:** add missing translations [CDS 1685] ([e479ef4](https://github.com/ovh/manager/commit/e479ef4b94efd365f203129588d57f69ec18f316)) + + + +# [0.16.0-alpha.5](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.16.0-alpha.4...@ovh-ux/manager-billing@0.16.0-alpha.5) (2022-06-30) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 1686] ([d635e86](https://github.com/ovh/manager/commit/d635e86ec5c5ae2a607b5ba87d34022c96581537)) +* remove unused translations [CDS] ([25f031d](https://github.com/ovh/manager/commit/25f031d3edbf95d2eb9eeaba84e3ac7908ea3b6a)) +* **i18n:** add missing translations [CDS 1681] ([d6d0f26](https://github.com/ovh/manager/commit/d6d0f2661141b8950a1bf5dae17e4a33c3a0ba12)) +* **i18n:** add missing translations [CDS 1682] ([4cb9878](https://github.com/ovh/manager/commit/4cb9878b02b3f555da9241e4fb0bfb6500261522)) +* **i18n:** add missing translations [CDS 1683] ([4703079](https://github.com/ovh/manager/commit/470307920c30d2bdb0591f940373e6af437690a4)) +* **i18n:** add missing translations [CDS 1685] ([f085329](https://github.com/ovh/manager/commit/f085329cea82b2057064485d27e6944506ed814b)) + + + +# [0.16.0-alpha.4](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.16.0-alpha.3...@ovh-ux/manager-billing@0.16.0-alpha.4) (2022-06-22) + + +### Bug Fixes + +* **orders:** prevent displaying empty page ([#7414](https://github.com/ovh/manager/issues/7414)) ([c603135](https://github.com/ovh/manager/commit/c603135673ced2dac5de0945557446a65cfff3e0)), closes [#7402](https://github.com/ovh/manager/issues/7402) + + + +# [0.16.0-alpha.3](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.16.0-alpha.2...@ovh-ux/manager-billing@0.16.0-alpha.3) (2022-06-21) + + +### Bug Fixes + +* **billing.history:** hide HTML invoice for India customers ([#7261](https://github.com/ovh/manager/issues/7261)) ([1bfc845](https://github.com/ovh/manager/commit/1bfc845ae001354da461f81b91467fd7c873bcfb)) + + + +# [0.16.0-alpha.2](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.16.0-alpha.1...@ovh-ux/manager-billing@0.16.0-alpha.2) (2022-06-17) + + +### Bug Fixes + +* **billing:** remove unused future state ([#7398](https://github.com/ovh/manager/issues/7398)) ([cb9a41c](https://github.com/ovh/manager/commit/cb9a41c066c8309160c2023b7f85c512775e5ca1)) + + + +# [0.16.0-alpha.1](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.16.0-alpha.0...@ovh-ux/manager-billing@0.16.0-alpha.1) (2022-06-17) + + +### Bug Fixes + +* **billing:** remove lazyload on purchase order ([#7385](https://github.com/ovh/manager/issues/7385)) ([#7394](https://github.com/ovh/manager/issues/7394)) ([4d728b2](https://github.com/ovh/manager/commit/4d728b2a36803e773986308c2b48e2bbf531b345)) + + + +# [0.16.0-alpha.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.15.0-alpha.0...@ovh-ux/manager-billing@0.16.0-alpha.0) (2022-06-16) + + +### Bug Fixes + +* **billing:** enable the sorting on the status column ([ef5b053](https://github.com/ovh/manager/commit/ef5b0536ec056d6cf9440e7a72bceaf2aee3163c)) +* **billing:** modification of wording for edit purchase order ([aee8922](https://github.com/ovh/manager/commit/aee892202cb3920972c6b5adfb94b716f9c1a132)) +* **billing:** po is available only for not individual legalform ([44fb3e5](https://github.com/ovh/manager/commit/44fb3e5a00e491f9c3f88e4b23ea5dcd8725c07b)) +* **billing:** purchase order end date excluded information ([5514696](https://github.com/ovh/manager/commit/551469685884c4d7f6bd3e4fe1c547472ce5ee83)) +* **billing:** purchase order fix first valid date not selectable ([159c945](https://github.com/ovh/manager/commit/159c945eaca481264d2c49c5b1cf927ae1920268)) +* **billing:** purchase order number stays inactive ([9001b11](https://github.com/ovh/manager/commit/9001b1155a6aca5a96f0dbd7000359f72a6a68e2)) +* **i18n:** add missing translations [CDS 1675] ([6477e46](https://github.com/ovh/manager/commit/6477e46da4cbceba352b8513032ed78b9acc2196)) +* **i18n:** add missing translations [CDS 1680] ([24023e2](https://github.com/ovh/manager/commit/24023e29bc6eaa89b6b789c2fa0787baafae3c73)) + + +### Features + +* **billing:** purchase orders ([49e5379](https://github.com/ovh/manager/commit/49e537931f31826cdf213286999ab063625c8846)) + + + +# [0.15.0-alpha.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.14.0-alpha.1...@ovh-ux/manager-billing@0.15.0-alpha.0) (2022-06-14) + + +### Bug Fixes + +* **billing:** avoid future state issue ([5563be6](https://github.com/ovh/manager/commit/5563be6b8ca574d64a16b3d0bd4ad47d9a942033)) +* **pnr:** add top attribute to oui-action-menu-item with href ([5284489](https://github.com/ovh/manager/commit/5284489da8ae691bbf5b83493dba09f917760a96)) + + +### Features + +* bump @ovh-ux/ui-kit to v6.1.0 ([a1eaaa5](https://github.com/ovh/manager/commit/a1eaaa5cb68652d1d600ba02e0d27de557de94e5)) + + + +# [0.14.0-alpha.1](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.14.0-alpha.0...@ovh-ux/manager-billing@0.14.0-alpha.1) (2022-06-13) + + +### Bug Fixes + +* **refund:** avoid refund amount error ([#7326](https://github.com/ovh/manager/issues/7326)) ([79c55f4](https://github.com/ovh/manager/commit/79c55f46290268ca3f47316403b3e86391c06753)) + + + +# [0.14.0-alpha.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.13.0-alpha.10...@ovh-ux/manager-billing@0.14.0-alpha.0) (2022-06-07) + + +### Features + +* **dedicated:** add description on several section ([#6688](https://github.com/ovh/manager/issues/6688)) ([cc9017b](https://github.com/ovh/manager/commit/cc9017bd7e42ad013642f381a524de10060336d7)) + + + +# [0.13.0-alpha.10](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.13.0-alpha.9...@ovh-ux/manager-billing@0.13.0-alpha.10) (2022-06-07) + + +### Bug Fixes + +* **deps:** upgrade `ovh-api-services` to `v14.0.6` ([#7273](https://github.com/ovh/manager/issues/7273)) ([90698c8](https://github.com/ovh/manager/commit/90698c8c025bba09dd8e1baf64ccc0eecd56d3a8)) + + + +# [0.13.0-alpha.9](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.13.0-alpha.8...@ovh-ux/manager-billing@0.13.0-alpha.9) (2022-05-19) + + +### Bug Fixes + +* **deps:** upgarde `@ovh-ux/ui-kit` to `v6.0.0` ([#7088](https://github.com/ovh/manager/issues/7088)) ([1b79579](https://github.com/ovh/manager/commit/1b79579d4bd58ce748f70b8c7eb2c8461cdc4cc8)) + + + +# [0.13.0-alpha.8](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.13.0-alpha.7...@ovh-ux/manager-billing@0.13.0-alpha.8) (2022-05-16) + + +### Bug Fixes + +* **autorenew:** fallback to `default` renew URL for specific subs ([8f18f5d](https://github.com/ovh/manager/commit/8f18f5d6dafbc0be356d8599528f1b32b535363a)) + + + +# [0.13.0-alpha.7](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.13.0-alpha.6...@ovh-ux/manager-billing@0.13.0-alpha.7) (2022-05-04) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 1601] ([#7000](https://github.com/ovh/manager/issues/7000)) ([89b088c](https://github.com/ovh/manager/commit/89b088cfdba143066cc992296b6e3cdeb5acc913)) + + + +# [0.13.0-alpha.6](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.13.0-alpha.5...@ovh-ux/manager-billing@0.13.0-alpha.6) (2022-04-20) + + +### Bug Fixes + +* **billing.fidelity:** fix duplicate issues on data refresh ([07b8b88](https://github.com/ovh/manager/commit/07b8b88577c34869a76bc2e25e03f22e4cbbd7b1)) + + + +# [0.13.0-alpha.5](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.13.0-alpha.4...@ovh-ux/manager-billing@0.13.0-alpha.5) (2022-04-12) + + +### Bug Fixes + +* add target _top to links ([2d375e6](https://github.com/ovh/manager/commit/2d375e6ac23773f6d4f9780aa3fa8df903692adc)) + + + +# [0.13.0-alpha.4](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.13.0-alpha.3...@ovh-ux/manager-billing@0.13.0-alpha.4) (2022-04-12) + + +### Code Refactoring + +* **billing:** kill payments requests apiv7 ([#6464](https://github.com/ovh/manager/issues/6464)) ([6d865ab](https://github.com/ovh/manager/commit/6d865ab9525462b33c0e979aa354d79f652479c6)) + + +### BREAKING CHANGES + +* **billing:** BillingBill service has been removed + + + +# [0.13.0-alpha.3](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.13.0-alpha.2...@ovh-ux/manager-billing@0.13.0-alpha.3) (2022-03-29) + + +### Bug Fixes + +* **dedicated:** replace billing payments apiv7 calls with iceberg ([#3657](https://github.com/ovh/manager/issues/3657)) ([b55e13a](https://github.com/ovh/manager/commit/b55e13adef4a2b0f98aa638e67a45cc51f9d80a0)) + + + +# [0.13.0-alpha.2](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.13.0-alpha.1...@ovh-ux/manager-billing@0.13.0-alpha.2) (2022-03-24) + + +### Bug Fixes + +* **deps:** upgrade `@ovh-ux/ui-kit` to `v5.3.3` ([#6745](https://github.com/ovh/manager/issues/6745)) ([38d1144](https://github.com/ovh/manager/commit/38d11445b3671755758d153a4f4a166c7946705c)), closes [ovh/ovh-ui-kit#777](https://github.com/ovh/ovh-ui-kit/issues/777) + + + +# [0.13.0-alpha.1](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.13.0-alpha.0...@ovh-ux/manager-billing@0.13.0-alpha.1) (2022-03-23) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 1510] ([#6662](https://github.com/ovh/manager/issues/6662)) ([d2e3a4b](https://github.com/ovh/manager/commit/d2e3a4bfa7dedd918053a21625a653756cfc9aa4)) + + + +# [0.13.0-alpha.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.12.0-alpha.2...@ovh-ux/manager-billing@0.13.0-alpha.0) (2022-03-15) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 1506] ([14e17e0](https://github.com/ovh/manager/commit/14e17e0125ccb0598c7fc760cf1f6a92b8266739)) + + +### Features + +* nutanix service ui ([5d9d1fd](https://github.com/ovh/manager/commit/5d9d1fd5dd10dd614df4068c3cfc84d44791b739)) + + + +# [0.12.0-alpha.2](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.12.0-alpha.1...@ovh-ux/manager-billing@0.12.0-alpha.2) (2022-03-09) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 1496] ([28de037](https://github.com/ovh/manager/commit/28de037cae6dd646f59f809c2f6515886f5aeb4b)) +* remove unused translations [CDS] ([97969a5](https://github.com/ovh/manager/commit/97969a565df95942e4761feaa0b0b73acc1aee61)) + + + +# [0.12.0-alpha.1](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.12.0-alpha.0...@ovh-ux/manager-billing@0.12.0-alpha.1) (2022-03-04) + + +### Bug Fixes + +* **payment.method.add:** fix sepa direct help links ([#6480](https://github.com/ovh/manager/issues/6480)) ([a888daf](https://github.com/ovh/manager/commit/a888dafb7ef79f87d8a46c72ca3d1c032d89077a)) +* **payment.method.add:** navigate to payment methods list page ([#6625](https://github.com/ovh/manager/issues/6625)) ([2cd394f](https://github.com/ovh/manager/commit/2cd394f90764e713dc1d0f40b71620f3836067b9)) + + + +# [0.12.0-alpha.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.11.0-alpha.2...@ovh-ux/manager-billing@0.12.0-alpha.0) (2022-03-02) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 1460] ([c4aebf4](https://github.com/ovh/manager/commit/c4aebf426e92bd8eb183eab4d4c800f6e6aee348)) + + +### Features + +* **billing.autorenew:** set netapp service name ([f1498b1](https://github.com/ovh/manager/commit/f1498b1e7c8d1cf8ab2be55d93a3189f05cab1b9)) + + + +# [0.11.0-alpha.2](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.11.0-alpha.1...@ovh-ux/manager-billing@0.11.0-alpha.2) (2022-02-23) + + +### Bug Fixes + +* remove unused translations [CDS] ([6381fc1](https://github.com/ovh/manager/commit/6381fc18ed75a041150e415c019bb73984ef9db3)) +* **i18n:** add missing translations [CDS 1431] ([670fa37](https://github.com/ovh/manager/commit/670fa378e8a449315126fa9d5d02cf06c15e5f7f)) + + + +# [0.11.0-alpha.1](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.11.0-alpha.0...@ovh-ux/manager-billing@0.11.0-alpha.1) (2022-02-09) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 1409] ([e303b25](https://github.com/ovh/manager/commit/e303b252f55b770f29ecabcbe43b94fa4daef295)) +* **i18n:** add missing translations [CDS 1412] ([1c6dc65](https://github.com/ovh/manager/commit/1c6dc6504965bdebe4c8118999f5793fb1dc3835)) +* **i18n:** add missing translations [CDS 1417] ([f9fb30b](https://github.com/ovh/manager/commit/f9fb30bdccf4aed9cf5b601b152b0da060bb1b41)) +* **i18n:** add missing translations [CDS 1422] ([b3ecea8](https://github.com/ovh/manager/commit/b3ecea81cc637a671d31408d443a8946253e886b)) +* **i18n:** add missing translations [CDS 1428] ([eab4d70](https://github.com/ovh/manager/commit/eab4d703e3ab487ceff0cf2869cb74202fb900a0)) +* **payment.method:** removal of unnecessary message ([#6423](https://github.com/ovh/manager/issues/6423)) ([a036aa0](https://github.com/ovh/manager/commit/a036aa06af716940a9087678c9f35b427c1b012a)) +* remove unused translations [CDS] ([22c7cef](https://github.com/ovh/manager/commit/22c7cef38976469d684d25efbf71761105fc0611)) +* **payment.method:** do not fallback guide ([#6350](https://github.com/ovh/manager/issues/6350)) ([ff5dc9d](https://github.com/ovh/manager/commit/ff5dc9de6058e6723f5460ebfdc67b2d1c86886f)) + + + +# [0.11.0-alpha.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.10.0-alpha.1...@ovh-ux/manager-billing@0.11.0-alpha.0) (2022-01-28) + + +### Features + +* **dedicated.payment:** add payment enhancements for sepa ([#6164](https://github.com/ovh/manager/issues/6164)) ([e01395c](https://github.com/ovh/manager/commit/e01395c7a990d855c1576829a0a58c09eba1126e)) + + + +# [0.10.0-alpha.1](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.10.0-alpha.0...@ovh-ux/manager-billing@0.10.0-alpha.1) (2022-01-26) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 1410] ([#6363](https://github.com/ovh/manager/issues/6363)) ([50b9816](https://github.com/ovh/manager/commit/50b9816405cd8ca79b86bb28fe769ea476cc4c93)) + + + +# [0.10.0-alpha.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.9.0-alpha.0...@ovh-ux/manager-billing@0.10.0-alpha.0) (2022-01-25) + + +### Bug Fixes + +* **deps:** upgrade `@ovh-ux/ui-kit` to `v5.3.2` ([#6335](https://github.com/ovh/manager/issues/6335)) ([b91ce69](https://github.com/ovh/manager/commit/b91ce698bf1d230de112e1896626574e1553769b)) +* **i18n:** add missing translations [CDS 1393] ([f884dcc](https://github.com/ovh/manager/commit/f884dccdf1394182619028ceb08b076ffd9c0988)) +* **i18n:** add missing translations [CDS 1401] ([5e1924a](https://github.com/ovh/manager/commit/5e1924ade4fdffdce0f409c3d047cbbc1b909ede)) +* **i18n:** add missing translations [CDS 1403] ([1342265](https://github.com/ovh/manager/commit/134226570ecff4db92731a3586d60d3ee43a3cce)) +* remove unused translations [CDS] ([9f27214](https://github.com/ovh/manager/commit/9f2721450d0ebe16cfa14e52677bde8c729e3f96)) + + +### Features + +* all-dom termination enhancements ([7c1525f](https://github.com/ovh/manager/commit/7c1525fc0ba93d3a2c586e7b3d3d5bbc785e641f)) + + + +# [0.9.0-alpha.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.8.0-alpha.1...@ovh-ux/manager-billing@0.9.0-alpha.0) (2022-01-19) + + +### Features + +* update PayPal content ([#6170](https://github.com/ovh/manager/issues/6170)) ([a8c1f05](https://github.com/ovh/manager/commit/a8c1f050822234f53523fa203d64a7cf4ae27a30)) + + + +# [0.8.0-alpha.1](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.8.0-alpha.0...@ovh-ux/manager-billing@0.8.0-alpha.1) (2022-01-17) + + +### Bug Fixes + +* **billing:** retrieve payment subroute when directly targeted ([#6317](https://github.com/ovh/manager/issues/6317)) ([deb01b8](https://github.com/ovh/manager/commit/deb01b805ca8edab2031fd5b40134df15891d812)) + + +### Reverts + +* all-dom termination enhancements ([#6061](https://github.com/ovh/manager/issues/6061)) ([d1daabc](https://github.com/ovh/manager/commit/d1daabce6425caf691f562fd6ccd6c041b1cbbdb)) + + + +# [0.8.0-alpha.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.7.0-alpha.4...@ovh-ux/manager-billing@0.8.0-alpha.0) (2022-01-11) + + +### Bug Fixes + +* remove unused translations [CDS] ([77ad6e5](https://github.com/ovh/manager/commit/77ad6e5353d5262f33298ce7cfe11bba38fdc8ba)) + + +### Features + +* **dedicated,web:** all-dom termination enhancements ([#6061](https://github.com/ovh/manager/issues/6061)) ([2e47dff](https://github.com/ovh/manager/commit/2e47dffa32e543dc0b48402c34341d158f3c82de)), closes [#6120](https://github.com/ovh/manager/issues/6120) [#6131](https://github.com/ovh/manager/issues/6131) + + + +# [0.7.0-alpha.4](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.7.0-alpha.3...@ovh-ux/manager-billing@0.7.0-alpha.4) (2022-01-03) + + +### Bug Fixes + +* **deps:** upgrade `@ovh-ux/ui-kit` to `v5.3.1` ([defea82](https://github.com/ovh/manager/commit/defea8213431605013ebc69646267fe568adaccb)) + + + +# [0.7.0-alpha.3](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.7.0-alpha.2...@ovh-ux/manager-billing@0.7.0-alpha.3) (2021-12-28) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 1338] ([c495f0f](https://github.com/ovh/manager/commit/c495f0f5d0ed9b1bb84123a32e0ca74890449469)) + + + +# [0.7.0-alpha.2](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.7.0-alpha.1...@ovh-ux/manager-billing@0.7.0-alpha.2) (2021-12-16) + + +### Bug Fixes + +* update to remove legacy bank account ([#6144](https://github.com/ovh/manager/issues/6144)) ([d771b98](https://github.com/ovh/manager/commit/d771b98d28e40b878391c605ec6bf331392ae86b)) + + + +# [0.7.0-alpha.1](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.7.0-alpha.0...@ovh-ux/manager-billing@0.7.0-alpha.1) (2021-12-02) + + +### Bug Fixes + +* **cancel-resiliation:** allow resiliation if service is not commited ([#6014](https://github.com/ovh/manager/issues/6014)) ([7879e86](https://github.com/ovh/manager/commit/7879e861dfbe4873e8f686c7d44f7ecd555dcee5)) +* **i18n:** add missing translations [CDS 1295] ([4d3cace](https://github.com/ovh/manager/commit/4d3caceb4fbb837f4b4ecd677d9b9e47af8acc0b)) + + + +# [0.7.0-alpha.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.6.0-alpha.2...@ovh-ux/manager-billing@0.7.0-alpha.0) (2021-12-01) + + +### Features + +* **payment-method:** catch error on payment methods load ([80dc337](https://github.com/ovh/manager/commit/80dc337192635134f445aeb1e9035c14321d1e33)) +* cancel a service with commitment ([#5677](https://github.com/ovh/manager/issues/5677)) ([f7dc6ab](https://github.com/ovh/manager/commit/f7dc6ab24db5a01b1d8521fc072def4da5aa5633)) + + + +# [0.6.0-alpha.2](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.6.0-alpha.1...@ovh-ux/manager-billing@0.6.0-alpha.2) (2021-11-22) + + +### Bug Fixes + +* **accounts:** fix accounts alert issue ([811469a](https://github.com/ovh/manager/commit/811469ae2f384491a2519453b2843b23c7a65a0f)), closes [#DTRSD-50951](https://github.com/ovh/manager/issues/DTRSD-50951) +* **billing:** history orderId number filtering ([2e72382](https://github.com/ovh/manager/commit/2e723827ec5022ba4c9c00c0347ec32b672dd9fa)) +* **i18n:** add missing translations [CDS 1253] ([3c25560](https://github.com/ovh/manager/commit/3c25560870b866815b00c341c6c055896103a73f)) + + + +# [0.6.0-alpha.1](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.6.0-alpha.0...@ovh-ux/manager-billing@0.6.0-alpha.1) (2021-11-10) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 1253] ([d659951](https://github.com/ovh/manager/commit/d6599513a8a7978bb217d8d3391d5a72d8d5d3c9)) + + + +# [0.6.0-alpha.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.5.0-alpha.1...@ovh-ux/manager-billing@0.6.0-alpha.0) (2021-11-08) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 1261] ([#5899](https://github.com/ovh/manager/issues/5899)) ([e35d431](https://github.com/ovh/manager/commit/e35d431d4955805e87c081fe2028a80a37dbdb7a)) + + +### Features + +* all dom termination enhancement ([#5574](https://github.com/ovh/manager/issues/5574)) ([7a2a4bd](https://github.com/ovh/manager/commit/7a2a4bdb084ceedcbb2307b9d22c8bf7ac81ca90)) + + + +# [0.5.0-alpha.1](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.5.0-alpha.0...@ovh-ux/manager-billing@0.5.0-alpha.1) (2021-11-04) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 1239] ([#5890](https://github.com/ovh/manager/issues/5890)) ([aa6da29](https://github.com/ovh/manager/commit/aa6da29a4acbbd8f8c1ef4fb781a9aed41e44149)) + + + +# [0.5.0-alpha.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.4.0-alpha.0...@ovh-ux/manager-billing@0.5.0-alpha.0) (2021-11-04) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 1246] ([489b27b](https://github.com/ovh/manager/commit/489b27bfd714edd65595b833780da751b9169899)) +* bump ng-ovh-payment-method to next major ([687f1e4](https://github.com/ovh/manager/commit/687f1e47daefb5c19563c5c434fa281a70be9049)) +* **billing.autorenew:** track service type on resiliation ([#5798](https://github.com/ovh/manager/issues/5798)) ([c77eb21](https://github.com/ovh/manager/commit/c77eb212b8f99035a2f95a7af434599b7445738a)) + + +### Features + +* **billing.payment:** use feature flipping for set as default choice ([4c597ce](https://github.com/ovh/manager/commit/4c597ce796072ba1eef8481688bef57d3ff40504)) + + + +# [0.4.0-alpha.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.3.0-alpha.2...@ovh-ux/manager-billing@0.4.0-alpha.0) (2021-10-28) + + +### Features + +* **navbar.marketplace:** add marketplace to top navbar ([#5828](https://github.com/ovh/manager/issues/5828)) ([815c49f](https://github.com/ovh/manager/commit/815c49f4f3cf7a598aee79d99798033ac5952bba)) + + + +# [0.3.0-alpha.2](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.3.0-alpha.1...@ovh-ux/manager-billing@0.3.0-alpha.2) (2021-10-27) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 1239] ([51239cf](https://github.com/ovh/manager/commit/51239cfb10e50f2d78aa4b42ae07d8e6a2021bc7)) +* add corresponding translations for netapp product ([f6b7039](https://github.com/ovh/manager/commit/f6b70399ae82b7c8a091a18a8d71d387c3043674)) + + + +# [0.3.0-alpha.1](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.3.0-alpha.0...@ovh-ux/manager-billing@0.3.0-alpha.1) (2021-10-26) + + +### Bug Fixes + +* **locales:** remove es_US translations files ([#5709](https://github.com/ovh/manager/issues/5709)) ([3894a13](https://github.com/ovh/manager/commit/3894a1388393ea08b51e08bbfda416e7746fc8ca)), closes [#5685](https://github.com/ovh/manager/issues/5685) +* **payment.ovhaccount:** update data on date change ([#5728](https://github.com/ovh/manager/issues/5728)) ([d2feb7a](https://github.com/ovh/manager/commit/d2feb7abf946cd29b9d5b9a9f5791d1908f5ba79)) + + + +# [0.3.0-alpha.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.2.0-alpha.4...@ovh-ux/manager-billing@0.3.0-alpha.0) (2021-10-21) + + +### Features + +* use feature availability to display renew actions ([#5054](https://github.com/ovh/manager/issues/5054)) ([d3de920](https://github.com/ovh/manager/commit/d3de92098fea3aa35d06cc9f9308bd330ee2bd7e)) + + + +# [0.2.0-alpha.4](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.2.0-alpha.3...@ovh-ux/manager-billing@0.2.0-alpha.4) (2021-10-07) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 1184] ([df03553](https://github.com/ovh/manager/commit/df035537b0d5271384d1cddb582d583279e15318)) +* **i18n:** add missing translations [CDS 1191] ([9c37bb4](https://github.com/ovh/manager/commit/9c37bb4748eebfdbe0a5e40f5593dede2afab073)) +* add anthos to services and contacts page ([d5b8b90](https://github.com/ovh/manager/commit/d5b8b90f6874356da88e8de74a367ccca407230f)), closes [#MANAGER-7385](https://github.com/ovh/manager/issues/MANAGER-7385) +* rename hosted private cloud to vmware ([030a38f](https://github.com/ovh/manager/commit/030a38f1421c52a86bc43c482a8c99fd912e69ad)), closes [#MANAGER-7545](https://github.com/ovh/manager/issues/MANAGER-7545) + + + +# [0.2.0-alpha.3](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.2.0-alpha.2...@ovh-ux/manager-billing@0.2.0-alpha.3) (2021-09-22) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 1140] ([ef28cc6](https://github.com/ovh/manager/commit/ef28cc6c77f0349bfc3f7355414a4d062d4a35f8)) +* **i18n:** add missing translations [CDS 1162] ([#5575](https://github.com/ovh/manager/issues/5575)) ([e4755ae](https://github.com/ovh/manager/commit/e4755ae99e0c1924a19ee2d8510c3532c23497b5)) + + + +# [0.2.0-alpha.2](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.2.0-alpha.1...@ovh-ux/manager-billing@0.2.0-alpha.2) (2021-09-15) + + +### Bug Fixes + +* **dedicated:** hide contracts tab ([d110434](https://github.com/ovh/manager/commit/d1104343bd4b46de9f7802d6d19f7bc892312355)), closes [#MANAGER-7598](https://github.com/ovh/manager/issues/MANAGER-7598) + + + +# [0.2.0-alpha.1](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.2.0-alpha.0...@ovh-ux/manager-billing@0.2.0-alpha.1) (2021-09-07) + + +### Bug Fixes + +* **i18n:** add missing translations [CDS 1118] ([58b7b7e](https://github.com/ovh/manager/commit/58b7b7e5c19798d3fcae828864717c57e07990d8)) +* **i18n:** add missing translations [CDS 1119] ([c9bb0db](https://github.com/ovh/manager/commit/c9bb0dbcd18fc9d2ba362c37c3b699d7c3e01128)) +* **i18n:** add missing translations [CDS 1135] ([0af5a82](https://github.com/ovh/manager/commit/0af5a8276a9ffb537aeeafd79f1925dc742854a2)) +* **i18n:** add missing translations [CDS 1137] ([6fd7f24](https://github.com/ovh/manager/commit/6fd7f24f314ea25f90e1ed5cb9d9fd722ec12d16)) + + + +# [0.2.0-alpha.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.1.0-alpha.4...@ovh-ux/manager-billing@0.2.0-alpha.0) (2021-08-25) + + +### Bug Fixes + +* **deps:** upgrade `@ovh-ux/ui-kit` to `v5.1.0` ([#5429](https://github.com/ovh/manager/issues/5429)) ([7099de9](https://github.com/ovh/manager/commit/7099de97320cdbdac5652b2c7ed70327251ed749)) +* **i18n:** add missing translations [CDS 1108] ([4742eca](https://github.com/ovh/manager/commit/4742eca51f26be6b0230c6738bdf189df630757d)) +* **i18n:** add missing translations [CDS 1111] ([d57157f](https://github.com/ovh/manager/commit/d57157f80118d997f4aa8064c84488fec7868ec8)) +* replace `oui-icon-external_link` by `oui-icon-external-link` ([645c8e6](https://github.com/ovh/manager/commit/645c8e675bad92c5928664a8aac2db36626fa397)) + + +### Features + +* **deps:** upgrade `@ovh-ux/ui-kit` to `v5.0.0` ([d09ca10](https://github.com/ovh/manager/commit/d09ca10f4b7ca629e0b2f1fcb59278ea7f309a9e)) + + + +# [0.1.0-alpha.4](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.1.0-alpha.3...@ovh-ux/manager-billing@0.1.0-alpha.4) (2021-08-11) + + +### Bug Fixes + +* name correctly `country_RE` translation ([#5394](https://github.com/ovh/manager/issues/5394)) ([5231dc6](https://github.com/ovh/manager/commit/5231dc6cd2daef573c6ce37180daa74c45ee6c1e)) + + + +# [0.1.0-alpha.3](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.1.0-alpha.2...@ovh-ux/manager-billing@0.1.0-alpha.3) (2021-07-29) + + +### Bug Fixes + +* **orders:** declare redirection order follow-up rule before lazyloading ([#5335](https://github.com/ovh/manager/issues/5335)) ([f9f8f39](https://github.com/ovh/manager/commit/f9f8f390383702755d0c6adc359a52da02b80a42)) + + + +# [0.1.0-alpha.2](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.1.0-alpha.1...@ovh-ux/manager-billing@0.1.0-alpha.2) (2021-07-28) + + +### Bug Fixes + +* bump @ovh-ux/ui-kit to v4.7.0 ([#5315](https://github.com/ovh/manager/issues/5315)) ([bd9b540](https://github.com/ovh/manager/commit/bd9b54015511a001a93866e43c48244fb81af907)) + + + +# [0.1.0-alpha.1](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.1.0-alpha.0...@ovh-ux/manager-billing@0.1.0-alpha.1) (2021-07-05) + + +### Bug Fixes + +* **payment.ovh-account:** update template cache url ([ed3be1d](https://github.com/ovh/manager/commit/ed3be1d0d0d713c6ddef1c237a3d99ba45f4a2f9)) +* **payment.ovh-account.renew:** fix translation parameter passing ([0efebb1](https://github.com/ovh/manager/commit/0efebb1f5c46edbcfc080715542839f22f3f2b7c)) + + + +# [0.1.0-alpha.0](https://github.com/ovh/manager/compare/@ovh-ux/manager-billing@0.0.0...@ovh-ux/manager-billing@0.1.0-alpha.0) (2021-06-29) + + +### Features + +* **billing:** set new content for split payment modal ([#5144](https://github.com/ovh/manager/issues/5144)) ([6e16b8c](https://github.com/ovh/manager/commit/6e16b8c0534571fc30384b58d0cf08e2de101429)) +* **dedicated:** move billing section into new module ([46975aa](https://github.com/ovh/manager/commit/46975aad8609e7678dc28ceac4bc8f36006045a6)) diff --git a/packages/manager/modules/new-billing/package.json b/packages/manager/modules/new-billing/package.json new file mode 100644 index 000000000000..34870a6fb77c --- /dev/null +++ b/packages/manager/modules/new-billing/package.json @@ -0,0 +1,59 @@ +{ + "name": "@ovh-ux/manager-new-billing", + "version": "0.23.0", + "private": true, + "description": "Manager billing section", + "repository": { + "type": "git", + "url": "git+https://github.com/ovh/manager.git", + "directory": "packages/manager/modules/new-billing" + }, + "license": "BSD-3-Clause", + "author": "OVH SAS", + "main": "./src/index.js", + "dependencies": { + "@ovh-ux/ui-kit": "^6.10.5", + "bootstrap": "^3.3.6", + "bootstrap4": "twbs/bootstrap#v4.0.0", + "components-jqueryui": "^1.12.1", + "jquery": "^2.1.3", + "lodash-es": "^4.17.15", + "moment": "^2.24.0" + }, + "peerDependencies": { + "@ovh-ux/manager-billing-components": "^2.0.0 || ^3.0.0", + "@ovh-ux/manager-config": "^8.0.0", + "@ovh-ux/manager-core": "^13.0.0", + "@ovh-ux/manager-exchange": "^2.0.0 || ^3.0.0", + "@ovh-ux/manager-models": "^2.1.0", + "@ovh-ux/manager-ng-layout-helpers": "^2.9.1", + "@ovh-ux/ng-at-internet": "^6.0.0", + "@ovh-ux/ng-at-internet-ui-router-plugin": "^3.5.0", + "@ovh-ux/ng-ovh-api-wrappers": "^5.1.0", + "@ovh-ux/ng-ovh-contacts": "^5.3.1", + "@ovh-ux/ng-ovh-export-csv": "^2.1.1", + "@ovh-ux/ng-ovh-feature-flipping": "^1.1.2", + "@ovh-ux/ng-ovh-order-tracking": "^2.5.1", + "@ovh-ux/ng-ovh-payment-method": "^9.16.5", + "@ovh-ux/ng-ovh-user-pref": "2.1.1", + "@ovh-ux/ng-ovh-utils": "^14.4.1", + "@ovh-ux/ng-translate-async-loader": "^2.1.4", + "@ovh-ux/ng-ui-router-breadcrumb": "^1.3.1", + "@ovh-ux/ng-ui-router-layout": "^4.3.1", + "@ovh-ux/ui-kit": "^6.10.5", + "@uirouter/angularjs": "^1.0.23", + "angular": "1.7.x", + "angular-route": "1.7.x", + "angular-sanitize": "1.7.x", + "angular-translate": "^2.17.0", + "angular-ui-bootstrap": "1.3.3", + "core-js": "^3.6.5", + "flatpickr": "~4.6.3", + "ipaddr.js": "^1.6.0", + "jsurl": "^0.1.4", + "lodash": "^4.17.15", + "oclazyload": "^1.1.0", + "ovh-api-services": "^17.0.0", + "ovh-ui-kit-bs": "^4.2.0" + } +} diff --git a/packages/manager/modules/new-billing/src/atInternetTracking.config.js b/packages/manager/modules/new-billing/src/atInternetTracking.config.js new file mode 100644 index 000000000000..6246962c62f9 --- /dev/null +++ b/packages/manager/modules/new-billing/src/atInternetTracking.config.js @@ -0,0 +1,73 @@ +import { + DISABLE_AUTOMATIC_PAYMENT_FOR_DOMAINS, + TERMINATE, + TERMINATE_AT_EXPIRATION, + CANCEL_TERMINATE, + ACTIVATE_AUTO_PAYMENT, + DEACTIVATE_AUTO_PAYMENT, + MODIFY, + PAY, +} from './constants/autorenewEvent.constants'; + +import { CREDIT } from './constants/fidelityEvent.constants'; + +import { + ALERT, + CREDIT as CREDIT_EVENT, + TRANSFER_TO_BANK_ACCOUNT, +} from './constants/ovhAccountEvent.constants'; + +import { PAYMENT_MEANS_DISPLAYED } from './constants/paymentEvent.constants'; + +export default /* @ngInject */ function BillingTracking( + $rootScope, + atInternet, +) { + function trackClickEvent(event) { + return atInternet.trackClick({ + name: event.name, + type: 'action', + }); + } + + function trackServiceClickEvent(event, data) { + const services = Array.isArray(data) ? data : [data]; + + services.forEach((s) => + atInternet.trackClick({ + name: `${s.serviceType}-${event.name}`, + type: 'action', + }), + ); + } + + $rootScope.$on(CREDIT_EVENT, trackClickEvent); + $rootScope.$on(TRANSFER_TO_BANK_ACCOUNT, trackClickEvent); + $rootScope.$on(ALERT, trackClickEvent); + $rootScope.$on(CREDIT, trackClickEvent); + $rootScope.$on(DISABLE_AUTOMATIC_PAYMENT_FOR_DOMAINS, trackClickEvent); + $rootScope.$on(TERMINATE, (event, data) => + trackServiceClickEvent(event, data), + ); + $rootScope.$on(TERMINATE_AT_EXPIRATION, (event, data) => + trackServiceClickEvent(event, data), + ); + $rootScope.$on(CANCEL_TERMINATE, (event, data) => + trackServiceClickEvent(event, data), + ); + $rootScope.$on(ACTIVATE_AUTO_PAYMENT, (event, data) => + trackServiceClickEvent(event, data), + ); + $rootScope.$on(DEACTIVATE_AUTO_PAYMENT, (event, data) => + trackServiceClickEvent(event, data), + ); + $rootScope.$on(MODIFY, (event, data) => trackServiceClickEvent(event, data)); + $rootScope.$on(PAY, (event, data) => trackServiceClickEvent(event, data)); + + $rootScope.$on(PAYMENT_MEANS_DISPLAYED, (event, data) => { + atInternet.trackEvent({ + event: `PaymentMeans-${data.count}`, + page: 'dedicated::billing::mean', + }); + }); +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/activation/activation.component.js b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/activation.component.js new file mode 100644 index 000000000000..8196335cec96 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/activation.component.js @@ -0,0 +1,11 @@ +import controller from './activation.controller'; +import template from './activation.html'; + +export default { + bindings: { + activateAutorenew: '<', + goBack: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/activation/activation.controller.js b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/activation.controller.js new file mode 100644 index 000000000000..9ba6c9ffbadf --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/activation.controller.js @@ -0,0 +1,38 @@ +import get from 'lodash/get'; + +export default class { + /* @ngInject */ + constructor($translate, atInternet) { + this.$translate = $translate; + this.atInternet = atInternet; + } + + activate() { + this.atInternet.trackClick({ + name: 'autorenew::activate', + type: 'action', + chapter1: 'dedicated', + chapter2: 'account', + chapter3: 'billing', + }); + + this.isActivating = true; + return this.activateAutorenew() + .then(() => + this.goBack( + this.$translate.instant( + 'billing_autorenew_service_activation_success', + ), + ), + ) + .catch((error) => + this.goBack( + this.$translate.instant( + 'billing_autorenew_service_activation_error', + { message: get(error, 'data.message') }, + ), + 'danger', + ), + ); + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/activation/activation.html b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/activation.html new file mode 100644 index 000000000000..c3971b32f399 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/activation.html @@ -0,0 +1,11 @@ + +

+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/activation/activation.module.js b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/activation.module.js new file mode 100644 index 000000000000..762daeffa749 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/activation.module.js @@ -0,0 +1,24 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngAtInternet from '@ovh-ux/ng-at-internet'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import component from './activation.component'; +import routing from './activation.routing'; + +const moduleName = 'ovhManagerBillingAutorenewActivation'; + +angular + .module(moduleName, [ + angularTranslate, + ngAtInternet, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .config(routing) + .component('billingAutorenewActivation', component); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/activation/activation.routing.js b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/activation.routing.js new file mode 100644 index 000000000000..0ef44a13aab3 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/activation.routing.js @@ -0,0 +1,20 @@ +import head from 'lodash/head'; + +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.activation', { + url: '/activate', + views: { + modal: { + component: 'billingAutorenewActivation', + }, + }, + layout: 'modal', + translations: { value: ['.'], format: 'json' }, + resolve: { + activateAutorenew: /* @ngInject */ (BillingAutoRenew, nicRenew) => () => + BillingAutoRenew.enableAutorenew(head(nicRenew.renewDays)), + goBack: /* @ngInject */ (goToAutorenew) => goToAutorenew, + breadcrumb: () => null, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_de_DE.json new file mode 100644 index 000000000000..bc0a31148380 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_de_DE.json @@ -0,0 +1,8 @@ +{ + "billing_autorenew_service_activation_title": "Automatische Verlängerung aktivieren", + "billing_autorenew_service_activation_success": "Die automatische Verlängerung wurde aktiviert.", + "billing_autorenew_service_activation_error": "Beim Aktivieren der automatischen Verlängerung ist ein Fehler aufgetreten {{message}}", + "billing_autorenew_service_activation_confirm": "Bestätigen", + "billing_autorenew_service_activation_cancel": "Abbrechen", + "billing_autorenew_service_activation_confirmation": "Möchten Sie die automatische Verlängerung aktivieren?" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_en_GB.json new file mode 100644 index 000000000000..c137a3ca7284 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_en_GB.json @@ -0,0 +1,8 @@ +{ + "billing_autorenew_service_activation_title": "Enable automatic renewal", + "billing_autorenew_service_activation_success": "Automatic renewal is now enabled.", + "billing_autorenew_service_activation_error": "An error has occurred enabling automatic renewal {{ message }}", + "billing_autorenew_service_activation_confirm": "Confirm", + "billing_autorenew_service_activation_cancel": "Cancel", + "billing_autorenew_service_activation_confirmation": "Do you want to enable automatic renewal?" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_es_ES.json new file mode 100644 index 000000000000..226e202dd301 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_es_ES.json @@ -0,0 +1,8 @@ +{ + "billing_autorenew_service_activation_title": "Activar la renovación automática", + "billing_autorenew_service_activation_success": "Se ha activado la renovación automática.", + "billing_autorenew_service_activation_error": "Se ha producido un error al activar la renovación automática: {{message}}.", + "billing_autorenew_service_activation_confirm": "Aceptar", + "billing_autorenew_service_activation_cancel": "Cancelar", + "billing_autorenew_service_activation_confirmation": "¿Seguro que quiere activar la renovación automática?" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..2f4b25faa54e --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_fr_CA.json @@ -0,0 +1,8 @@ +{ + "billing_autorenew_service_activation_title": "Activer le renouvellement automatique", + "billing_autorenew_service_activation_success": "Le renouvellement automatique a été activé.", + "billing_autorenew_service_activation_error": "Une erreur est survenue lors de l'activation du renouvellement automatique {{ message }}", + "billing_autorenew_service_activation_confirm": "Valider", + "billing_autorenew_service_activation_cancel": "Annuler", + "billing_autorenew_service_activation_confirmation": "Voulez-vous activer le renouvellement automatique ?" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..2f4b25faa54e --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_fr_FR.json @@ -0,0 +1,8 @@ +{ + "billing_autorenew_service_activation_title": "Activer le renouvellement automatique", + "billing_autorenew_service_activation_success": "Le renouvellement automatique a été activé.", + "billing_autorenew_service_activation_error": "Une erreur est survenue lors de l'activation du renouvellement automatique {{ message }}", + "billing_autorenew_service_activation_confirm": "Valider", + "billing_autorenew_service_activation_cancel": "Annuler", + "billing_autorenew_service_activation_confirmation": "Voulez-vous activer le renouvellement automatique ?" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_it_IT.json new file mode 100644 index 000000000000..b1a3397a9f16 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_it_IT.json @@ -0,0 +1,8 @@ +{ + "billing_autorenew_service_activation_title": "Attiva il rinnovo automatico", + "billing_autorenew_service_activation_success": "Il rinnovo automatico è stato attivato.", + "billing_autorenew_service_activation_error": "Si è verificato un errore durante l’attivazione del rinnovo automatico: {{ message }}", + "billing_autorenew_service_activation_confirm": "Conferma", + "billing_autorenew_service_activation_cancel": "Annulla", + "billing_autorenew_service_activation_confirmation": "Vuoi attivare il rinnovo automatico?" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..9ee850bd5f0a --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_pl_PL.json @@ -0,0 +1,8 @@ +{ + "billing_autorenew_service_activation_title": "Włącz automatyczne odnowienie", + "billing_autorenew_service_activation_success": "Automatyczne odnowienie domeny zostało włączone.", + "billing_autorenew_service_activation_error": "Wystąpił błąd podczas włączania automatycznego odnowienia {{message}}.", + "billing_autorenew_service_activation_confirm": "Zatwierdź", + "billing_autorenew_service_activation_cancel": "Anuluj", + "billing_autorenew_service_activation_confirmation": "Czy chcesz włączyć automatyczne odnowienie?" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..18a009755f8a --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/activation/translations/Messages_pt_PT.json @@ -0,0 +1,8 @@ +{ + "billing_autorenew_service_activation_title": "Ativar a renovação automática", + "billing_autorenew_service_activation_success": "A renovação automática foi ativada.", + "billing_autorenew_service_activation_error": "Ocorreu um erro ao ativar a renovação automática {{ message }}", + "billing_autorenew_service_activation_confirm": "Validar", + "billing_autorenew_service_activation_cancel": "Anular", + "billing_autorenew_service_activation_confirmation": "Pretende ativar a renovação automática?" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/autorenew-blocked.component.js b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/autorenew-blocked.component.js new file mode 100644 index 000000000000..dde49d49995e --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/autorenew-blocked.component.js @@ -0,0 +1,9 @@ +import template from './autorenew-blocked.html'; + +export default { + bindings: { + goToAutorenew: '<', + gotoContracts: '<', + }, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/autorenew-blocked.html b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/autorenew-blocked.html new file mode 100644 index 000000000000..7bb2c00dadf2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/autorenew-blocked.html @@ -0,0 +1,9 @@ + +

+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/autorenew-blocked.module.js b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/autorenew-blocked.module.js new file mode 100644 index 000000000000..acb661aae288 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/autorenew-blocked.module.js @@ -0,0 +1,24 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import atInternet from '@ovh-ux/ng-at-internet'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import component from './autorenew-blocked.component'; +import routing from './autorenew-blocked.routing'; + +const moduleName = 'ovhManagerBillingAutorenewBlocked'; + +angular + .module(moduleName, [ + angularTranslate, + atInternet, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .config(routing) + .component('billingAutorenewBlocked', component); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/autorenew-blocked.routing.js b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/autorenew-blocked.routing.js new file mode 100644 index 000000000000..18b9032f89aa --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/autorenew-blocked.routing.js @@ -0,0 +1,23 @@ +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.configure-renew-impossible', { + url: '/configure-renew-impossible', + views: { + modal: { + component: 'billingAutorenewBlocked', + }, + }, + layout: 'modal', + translations: { value: ['.'], format: 'json' }, + resolve: { + gotoContracts: /* @ngInject */ ($state, atInternet) => () => { + atInternet.trackClick({ + name: + 'dedicated::account::billing::autorenew::configure-renew-impossible::go-to-agreements', + type: 'action', + }); + return $state.go('billing.autorenew.agreements'); + }, + breadcrumb: () => null, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_de_DE.json new file mode 100644 index 000000000000..5e18c4211898 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_de_DE.json @@ -0,0 +1,5 @@ +{ + "autorenew_service_autorenew_blocked_title": "Die Konfiguration der Verlängerung ist nicht verfügbar.", + "autorenew_service_autorenew_blocked_description": "Die automatische Verlängerung ist bei unseren alten Verträgen nicht mehr möglich. Bitte lesen und Sie die neuen Verträge und nehmen Sie sie an, um Ihre Produkte automatisch verlängern zu können.", + "autorenew_service_autorenew_blocked_confirm": "Die neuen Allgemeinen Geschäftsbedingungen lesen und annehmen" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_en_GB.json new file mode 100644 index 000000000000..64638a876d59 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_en_GB.json @@ -0,0 +1,5 @@ +{ + "autorenew_service_autorenew_blocked_title": "Renewal configuration unavailable", + "autorenew_service_autorenew_blocked_description": "Automatic renewal is no longer available for older contracts. Please read and accept the new contracts in order to renew your products automatically.", + "autorenew_service_autorenew_blocked_confirm": "Read and accept the new General Terms & Conditions" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_es_ES.json new file mode 100644 index 000000000000..984c751b68de --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_es_ES.json @@ -0,0 +1,5 @@ +{ + "autorenew_service_autorenew_blocked_title": "Configuración de la renovación no disponible", + "autorenew_service_autorenew_blocked_description": "La renovación automática ya no está disponible en las soluciones activadas con los contratos antiguos. Por favor, lea y acepte los nuevos contratos para poder renovar sus productos automáticamente.", + "autorenew_service_autorenew_blocked_confirm": "Leer y aceptar las nuevas condiciones" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..cf210ac68388 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_fr_CA.json @@ -0,0 +1,5 @@ +{ + "autorenew_service_autorenew_blocked_title": "Configuration du renouvellement indisponible", + "autorenew_service_autorenew_blocked_description": "Le renouvellement automatique n'est plus possible sur nos anciens contrats. Veuillez lire et accepter les nouveaux contrats pour pouvoir renouveler vos produits automatiquement.", + "autorenew_service_autorenew_blocked_confirm": "Lire et accepter les nouvelles CGV" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..cf210ac68388 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_fr_FR.json @@ -0,0 +1,5 @@ +{ + "autorenew_service_autorenew_blocked_title": "Configuration du renouvellement indisponible", + "autorenew_service_autorenew_blocked_description": "Le renouvellement automatique n'est plus possible sur nos anciens contrats. Veuillez lire et accepter les nouveaux contrats pour pouvoir renouveler vos produits automatiquement.", + "autorenew_service_autorenew_blocked_confirm": "Lire et accepter les nouvelles CGV" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_it_IT.json new file mode 100644 index 000000000000..4d9b1fc619b2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_it_IT.json @@ -0,0 +1,5 @@ +{ + "autorenew_service_autorenew_blocked_title": "Configurazione del rinnovo non disponibile", + "autorenew_service_autorenew_blocked_description": "Il rinnovo automatico non è più disponibile per le soluzioni attivate con i vecchi contratti. Per continuare a usufruire del rinnovo automatico dei servizi, è necessario leggere e accettare i nuovi contratti.", + "autorenew_service_autorenew_blocked_confirm": "Leggi e accetta le nuove CGV" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..bae2f7128d8a --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_pl_PL.json @@ -0,0 +1,5 @@ +{ + "autorenew_service_autorenew_blocked_title": "Konfiguracja odnowienia niedostępna", + "autorenew_service_autorenew_blocked_description": "Automatyczne odnowienie nie jest już możliwe w przypadku starych regulaminów. Aby móc odnawiać usługi automatycznie, przeczytaj i zaakceptuj nowe regulaminy.", + "autorenew_service_autorenew_blocked_confirm": "Przeczytaj i zaakceptuj nowe regulaminy" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..0b814b1413a1 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/autorenew-blocked/translations/Messages_pt_PT.json @@ -0,0 +1,5 @@ +{ + "autorenew_service_autorenew_blocked_title": "Configuração da renovação indisponível", + "autorenew_service_autorenew_blocked_description": "A renovação automática já não é possível nos nossos contratos antigos. Leia e aceite os novos contratos para poder renovar os seus produtos automaticamente.", + "autorenew_service_autorenew_blocked_confirm": "Ler e aceitar os novos CGV" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/billing-autoRenew-debtBeforePaying.html b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/billing-autoRenew-debtBeforePaying.html new file mode 100644 index 000000000000..9ddd82bbca35 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/billing-autoRenew-debtBeforePaying.html @@ -0,0 +1,16 @@ + +

+

+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/debtBeforePaying.component.js b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/debtBeforePaying.component.js new file mode 100644 index 000000000000..f722edfdfc19 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/debtBeforePaying.component.js @@ -0,0 +1,10 @@ +import template from './billing-autoRenew-debtBeforePaying.html'; + +export default { + bindings: { + goBack: '<', + payDebt: '<', + serviceName: '<', + }, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/debtBeforePaying.module.js b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/debtBeforePaying.module.js new file mode 100644 index 000000000000..974e653ebbbf --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/debtBeforePaying.module.js @@ -0,0 +1,22 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import component from './debtBeforePaying.component'; +import routing from './debtBeforePaying.routing'; + +const moduleName = 'ovhManagerBillingAutorenewDebtBeforePaying'; + +angular + .module(moduleName, [ + angularTranslate, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .config(routing) + .component('billingAutorenewDebtBeforePaying', component); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/debtBeforePaying.routing.js b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/debtBeforePaying.routing.js new file mode 100644 index 000000000000..9ff2e0275bd5 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/debtBeforePaying.routing.js @@ -0,0 +1,29 @@ +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.payDebt', { + url: '/pay-debt?serviceName', + views: { + modal: { + component: 'billingAutorenewDebtBeforePaying', + }, + }, + layout: 'modal', + translations: { value: ['.'], format: 'json' }, + resolve: { + goBack: /* @ngInject */ (goToAutorenew) => goToAutorenew, + payDebt: /* @ngInject */ ($state, atInternet) => () => { + atInternet.trackClick({ + name: 'autorenew::pay-debt', + type: 'action', + chapter1: 'dedicated', + chapter2: 'account', + chapter3: 'billing', + }); + + $state.go('billing.main.history'); + }, + serviceName: /* @ngInject */ ($transition$) => + $transition$.params().serviceName, + breadcrumb: () => null, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_de_DE.json new file mode 100644 index 000000000000..3d5f5b4d2641 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_de_DE.json @@ -0,0 +1,7 @@ +{ + "autorenew_service_debt_before_paying_title": "Wichtige Information", + "autorenew_service_debt_before_paying_1": "Bevor Sie den Dienst für einen neuen Zeitraum abonnieren, begleichen Sie bitte den ausstehenden Betrag in Ihrem Kundencenter.", + "autorenew_service_debt_before_paying_2": "Gehen Sie in den Bereich „Abrechnung\", um die Rechnung für den Dienst {{service}} zu begleichen.", + "autorenew_service_debt_before_paying_settle": "Begleichen", + "autorenew_service_debt_before_paying_cancel": "Abbrechen" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_en_GB.json new file mode 100644 index 000000000000..22490fac0c77 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_en_GB.json @@ -0,0 +1,7 @@ +{ + "autorenew_service_debt_before_paying_title": "Important information", + "autorenew_service_debt_before_paying_1": "Before you subscribe for a new period, please settle the outstanding amount on your account.", + "autorenew_service_debt_before_paying_2": "Please go to the Billing section to pay the invoice for the {{service}} service.", + "autorenew_service_debt_before_paying_settle": "Pay", + "autorenew_service_debt_before_paying_cancel": "Cancel" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_es_ES.json new file mode 100644 index 000000000000..4c85f0cb4c1b --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_es_ES.json @@ -0,0 +1,7 @@ +{ + "autorenew_service_debt_before_paying_title": "Información importante", + "autorenew_service_debt_before_paying_1": "Antes de contratar el servicio por un nuevo período de tiempo, debe abonar el importe pendiente.", + "autorenew_service_debt_before_paying_2": "Acceda a la sección «Facturación» para regular la situación del servicio {{service}}.", + "autorenew_service_debt_before_paying_settle": "Regularizar", + "autorenew_service_debt_before_paying_cancel": "Cancelar" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..b4aa48cef9ac --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_fr_CA.json @@ -0,0 +1,7 @@ +{ + "autorenew_service_debt_before_paying_title": "Information importante", + "autorenew_service_debt_before_paying_1": "Avant de vous engager sur une nouvelle période de temps, nous vous invitons à d'abord régler votre dette restante.", + "autorenew_service_debt_before_paying_2": "Rendez-vous dans l’espace facturation afin de régulariser la facturation pour le service {{service}}.", + "autorenew_service_debt_before_paying_settle": "Régulariser", + "autorenew_service_debt_before_paying_cancel": "Annuler" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..b4aa48cef9ac --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_fr_FR.json @@ -0,0 +1,7 @@ +{ + "autorenew_service_debt_before_paying_title": "Information importante", + "autorenew_service_debt_before_paying_1": "Avant de vous engager sur une nouvelle période de temps, nous vous invitons à d'abord régler votre dette restante.", + "autorenew_service_debt_before_paying_2": "Rendez-vous dans l’espace facturation afin de régulariser la facturation pour le service {{service}}.", + "autorenew_service_debt_before_paying_settle": "Régulariser", + "autorenew_service_debt_before_paying_cancel": "Annuler" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_it_IT.json new file mode 100644 index 000000000000..c49b1aff1299 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_it_IT.json @@ -0,0 +1,7 @@ +{ + "autorenew_service_debt_before_paying_title": "Informazione importante", + "autorenew_service_debt_before_paying_1": "Prima di sottoscrivere un nuovo impegno contrattuale, è necessario saldare l'importo in sospeso.", + "autorenew_service_debt_before_paying_2": "Accedi alla sezione “Fatturazione” per effettuare il pagamento del servizio {{service}}.", + "autorenew_service_debt_before_paying_settle": "Salda", + "autorenew_service_debt_before_paying_cancel": "Annulla" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..89f445c74ead --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_pl_PL.json @@ -0,0 +1,7 @@ +{ + "autorenew_service_debt_before_paying_title": "Ważna informacja", + "autorenew_service_debt_before_paying_1": "Przedłużenie usługi będzie możliwe po uregulowaniu zaległej kwoty na Twoim koncie.", + "autorenew_service_debt_before_paying_2": "Aby opłacić fakturę za usługę {{service}}, przejdź do sekcji \"Płatności\".", + "autorenew_service_debt_before_paying_settle": "Zapłać", + "autorenew_service_debt_before_paying_cancel": "Anuluj" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..bc1370ea2327 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/debtBeforePaying/translations/Messages_pt_PT.json @@ -0,0 +1,7 @@ +{ + "autorenew_service_debt_before_paying_title": "Informações importantes", + "autorenew_service_debt_before_paying_1": "Antes de renovar para um novo período, recomendamos o pagamento da sua dívida.", + "autorenew_service_debt_before_paying_2": "Consulte a secção Faturação para proceder ao pagamento da fatura relativa ao serviço {{service}}.", + "autorenew_service_debt_before_paying_settle": "Regularizar", + "autorenew_service_debt_before_paying_cancel": "Anular" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/delete/billing-autoRenew-delete.html b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/billing-autoRenew-delete.html new file mode 100644 index 000000000000..1797c6d86438 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/billing-autoRenew-delete.html @@ -0,0 +1,13 @@ + +

+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/delete/delete.component.js b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/delete.component.js new file mode 100644 index 000000000000..ff78869c0197 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/delete.component.js @@ -0,0 +1,9 @@ +import template from './billing-autoRenew-delete.html'; + +export default { + bindings: { + goToAutorenew: '<', + supportPhoneNumber: '<', + }, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/delete/delete.module.js b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/delete.module.js new file mode 100644 index 000000000000..2751c06c4e59 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/delete.module.js @@ -0,0 +1,25 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import billingComponents from '@ovh-ux/manager-billing-components'; +import component from './delete.component'; +import routing from './delete.routing'; + +const moduleName = 'ovhManagerBillingAutorenewDelete'; + +angular + .module(moduleName, [ + angularTranslate, + billingComponents, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .config(routing) + .component('billingAutorenewDelete', component) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/delete/delete.routing.js b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/delete.routing.js new file mode 100644 index 000000000000..77e620be2a67 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/delete.routing.js @@ -0,0 +1,82 @@ +import kebabCase from 'lodash/kebabCase'; +import { BillingService } from '@ovh-ux/manager-models'; + +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.delete', { + url: '/delete?serviceId&serviceType', + component: 'billingConfirmTermination', + resolve: { + cancelResiliationUrl: /* @ngInject */ ($state, serviceId) => + $state.href('billing.autorenew.cancelResiliation', { + serviceId, + }), + engagement: /* @ngInject */ ($http, service) => + (service.canHaveEngagement() + ? $http + .get(`/services/${service.id}/billing/engagement`) + .then((data) => ({ engagement: data })) + .catch(() => ({ engagement: null })) + : Promise.resolve({ engagement: null }) + ).then(({ engagement }) => engagement), + + goBack: /* @ngInject */ ( + $translate, + cancelResiliationUrl, + goToAutorenew, + ) => (success = false) => + success + ? goToAutorenew( + `${$translate.instant('autorenew_service_delete_success')} + `, + ) + : goToAutorenew(), + serviceId: /* @ngInject */ ($transition$) => + $transition$.params().serviceId, + serviceType: /* @ngInject */ ($transition$) => + $transition$.params().serviceType, + service: /* @ngInject */ (BillingAutoRenew, serviceId, serviceType) => + BillingAutoRenew.findService({ + resourceName: serviceId, + serviceType, + }).then( + (service) => + new BillingService({ + ...service, + serviceId: service.id, + }), + ), + supportPhoneNumber: /* @ngInject */ (constants, currentUser) => + constants.SUPPORT[currentUser.ovhSubsidiary], + confirmTermination: /* @ngInject */ ( + $http, + atInternet, + service, + ) => () => { + atInternet.trackClick({ + name: `autorenew::${kebabCase(service.serviceType)}::delete::confirm`, + type: 'action', + chapter1: 'dedicated', + chapter2: 'account', + chapter3: 'billing', + }); + return $http.put(`/services/${service.serviceId}`, { + terminationPolicy: 'terminateAtExpirationDate', + }); + }, + questions: /* @ngInject */ (BillingTerminate, service) => + BillingTerminate.getTerminationForm(service.id).then( + ({ questions }) => questions, + ), + user: /* @ngInject */ (currentUser) => currentUser, + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('autorenew_service_delete_title'), + }, + atInternet: { + rename: /* @ngInject */ ($state) => + // We're limited with the possible injection as we listen to onBefore hook + `dedicated::account::billing::autorenew::${kebabCase( + $state.transition.params().serviceType, + )}::delete`, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_de_DE.json new file mode 100644 index 000000000000..4619e5cb8501 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_de_DE.json @@ -0,0 +1,10 @@ +{ + "autorenew_service_delete_title": "Am Ablaufdatum kündigen", + "autorenew_service_delete_confirm": "Der Dienst {{ service }} wird am {{ date }} automatisch gekündigt.", + "autorenew_service_delete_validate": "Bestätigen", + "autorenew_service_delete_warn": "Alle mit diesem Dienst verbundenen Daten werden automatisch unwiderruflich gelöscht. Sie können diese Entscheidung bis zu 24 Stunden vor dem Ablaufdatum ändern.", + "autorenew_service_delete_support": "Um diesen Dienst zu kündigen, kontaktieren Sie bitte unseren Support unter {{ phoneNumber }}. Vielen Dank für Ihr Verständnis.", + "autorenew_service_delete_success": "Die Kündigungsanfrage wurde erfolgreich durchgeführt. Wenn die Änderung nicht in der Liste angezeigt wird, laden Sie bitte die Seite neu.", + "autorenew_service_delete_error": "Bei der Kündigung des Dienstes ist ein Fehler aufgetreten {{ message }}", + "autorenew_service_delete_cancel": "Kündigung stornieren" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_en_GB.json new file mode 100644 index 000000000000..846f88c90c69 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_en_GB.json @@ -0,0 +1,10 @@ +{ + "autorenew_service_delete_title": "Terminate on expiry date", + "autorenew_service_delete_confirm": "The {{ service }} service will be automatically cancelled on {{ date }}.", + "autorenew_service_delete_validate": "Confirm", + "autorenew_service_delete_warn": "The data associated with this service will be automatically and permanently deleted. This process cannot be undone. You can change your mind up to 24 hours before the expiry date.", + "autorenew_service_delete_support": "To terminate this service, please contact our support team on: {{ phoneNumber }}. Thank you for your understanding.", + "autorenew_service_delete_success": "The cancellation request has been processed. If the change does not appear in the list, please refresh the page.", + "autorenew_service_delete_error": "An error has occurred terminating the service {{ message }}", + "autorenew_service_delete_cancel": "Cancel termination " +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_es_ES.json new file mode 100644 index 000000000000..923ff642d438 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_es_ES.json @@ -0,0 +1,10 @@ +{ + "autorenew_service_delete_title": "Dar de baja en la fecha de expiración", + "autorenew_service_delete_confirm": "El servicio {{ service }} se dará de baja automáticamente el {{ date }}.", + "autorenew_service_delete_validate": "Aceptar", + "autorenew_service_delete_warn": "Los datos asociados a este servicio se eliminarán automáticamente de forma irreversible. Puede cancelar esta operación hasta 24 horas antes de la fecha de expiración.", + "autorenew_service_delete_support": "Para dar de baja este servicio, puede ponerse en contacto con nuestro soporte en el siguiente número de teléfono: {{ phoneNumber }}. ¡Gracias por su comprensión!", + "autorenew_service_delete_success": "La solicitud de baja se ha enviado. Si el cambio no aparece en la lista, por favor, vuelva a cargar la página.", + "autorenew_service_delete_error": "Se ha producido un error durante la baja del servicio: {{ message }}.", + "autorenew_service_delete_cancel": "Cancelar la baja" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..48dd552660de --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_fr_CA.json @@ -0,0 +1,10 @@ +{ + "autorenew_service_delete_title": "Résilier à date d'échéance", + "autorenew_service_delete_confirm": "Le service {{ service }} sera automatiquement résilié le {{ date }}.", + "autorenew_service_delete_validate": "Valider", + "autorenew_service_delete_warn": "Les données liées à ce service seront automatiquement supprimées de manière irréversible. Vous pourrez revenir sur cette décision jusqu'à 24h avant la date d’expiration.", + "autorenew_service_delete_support": "Pour résilier ce service, merci de contacter notre support technique au numéro suivant : {{ phoneNumber }}. Merci pour votre compréhension.", + "autorenew_service_delete_success": "La demande de résiliation a bien été prise en compte. Si la modification n'apparaît pas dans la liste, veuillez rafraîchir la page.", + "autorenew_service_delete_error": "Une erreur est survenue lors de la résiliation du service {{ message }}", + "autorenew_service_delete_cancel": "Annuler la résiliation" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..48dd552660de --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_fr_FR.json @@ -0,0 +1,10 @@ +{ + "autorenew_service_delete_title": "Résilier à date d'échéance", + "autorenew_service_delete_confirm": "Le service {{ service }} sera automatiquement résilié le {{ date }}.", + "autorenew_service_delete_validate": "Valider", + "autorenew_service_delete_warn": "Les données liées à ce service seront automatiquement supprimées de manière irréversible. Vous pourrez revenir sur cette décision jusqu'à 24h avant la date d’expiration.", + "autorenew_service_delete_support": "Pour résilier ce service, merci de contacter notre support technique au numéro suivant : {{ phoneNumber }}. Merci pour votre compréhension.", + "autorenew_service_delete_success": "La demande de résiliation a bien été prise en compte. Si la modification n'apparaît pas dans la liste, veuillez rafraîchir la page.", + "autorenew_service_delete_error": "Une erreur est survenue lors de la résiliation du service {{ message }}", + "autorenew_service_delete_cancel": "Annuler la résiliation" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_it_IT.json new file mode 100644 index 000000000000..42976f5f7b41 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_it_IT.json @@ -0,0 +1,10 @@ +{ + "autorenew_service_delete_title": "Disattiva il servizio alla data di scadenza", + "autorenew_service_delete_confirm": "Il servizio {{ service }} verrà disattivato automaticamente il {{ date }}.", + "autorenew_service_delete_validate": "Conferma", + "autorenew_service_delete_warn": "I dati associati a questo servizio verranno eliminati automaticamente e in modo irreversibile. È possibile annullare l'operazione entro 24 ore prima della data di scadenza.", + "autorenew_service_delete_support": "Per disattivare questo servizio, contatta il nostro supporto tecnico al numero {{ phoneNumber }} o apri un ticket. Grazie per la comprensione e per la fiducia riposta in OVH.", + "autorenew_service_delete_success": "La tua richiesta di disattivazione è stata presa in carico. Se la modifica non compare nella lista, aggiorna la pagina.", + "autorenew_service_delete_error": "Si è verificato un errore durante la disattivazione del servizio {{ message }}", + "autorenew_service_delete_cancel": "Annulla disattivazione" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..48b3a72e8d14 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_pl_PL.json @@ -0,0 +1,10 @@ +{ + "autorenew_service_delete_title": "Rezygnacja z usługi w dniu wygaśnięcia", + "autorenew_service_delete_confirm": "Usługa {{service}} zostanie automatycznie wyłączona dnia {{date}}.", + "autorenew_service_delete_validate": "Zatwierdź", + "autorenew_service_delete_warn": "Dane powiązane z tą usługą zostaną automatycznie usunięte i operacja ta będzie nieodwracalna. Możesz zmienić tę decyzję do 24 godzin przed datą wygaśnięcia.", + "autorenew_service_delete_support": "Aby zrezygnować z usługi, skontaktuj się z pomocą techniczną, dzwoniąc na numer: {{phoneNumber}}. Dziękujemy za zaufanie.", + "autorenew_service_delete_success": "Zlecenie zakończenia usługi zostało zarejestrowane. Jeśli modyfikacja nie wyświetla się na liście, odśwież stronę.", + "autorenew_service_delete_error": "Wystąpił błąd podczas rezygnacji z usługi {{message}}.", + "autorenew_service_delete_cancel": "Anuluj rezygnację" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..654768cd5b4f --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/delete/translations/Messages_pt_PT.json @@ -0,0 +1,10 @@ +{ + "autorenew_service_delete_title": "Rescindir na data de expiração", + "autorenew_service_delete_confirm": "O serviço {{ service }} será cancelado automaticamente a {{ date }}.", + "autorenew_service_delete_validate": "Validar", + "autorenew_service_delete_warn": "Os dados relativos a este serviço serão automaticamente eliminados de forma irreversível. Poderá anular esta operação até 24h antes da data de expiração.", + "autorenew_service_delete_support": "Para rescindir este serviço, contacte o nosso suporte técnico através do número {{ phoneNumber }}. Agradecemos a sua compreensão.", + "autorenew_service_delete_success": "O pedido de rescisão foi registado com êxito. Se a alteração não aparecer na lista, atualize a página.", + "autorenew_service_delete_error": "Ocorreu um erro durante a rescisão do serviço {{ message }}", + "autorenew_service_delete_cancel": "Anular rescisão" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/exchange-renew.module.js b/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/exchange-renew.module.js new file mode 100644 index 000000000000..d208f3b3f503 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/exchange-renew.module.js @@ -0,0 +1,22 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import uiRouter from '@uirouter/angularjs'; + +import moduleExchange from '@ovh-ux/manager-exchange'; + +import routing from './exchange-renew.routing'; + +const moduleName = 'ovhManagerBillingAutorenewExchangeRenew'; + +angular + .module(moduleName, [ + angularTranslate, + moduleExchange, + ngTranslateAsyncLoader, + uiRouter, + ]) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/exchange-renew.routing.js b/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/exchange-renew.routing.js new file mode 100644 index 000000000000..1526f063b21d --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/exchange-renew.routing.js @@ -0,0 +1,39 @@ +import { Exchange as ExchangeModel } from '@ovh-ux/manager-exchange'; + +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.exchange', { + url: '/exchange?organization&exchangeName', + component: 'exchangeAccountRenew', + resolve: { + getAccounts: /* @ngInject */ (wucExchange, exchange) => ( + pageSize, + offset, + criteria, + ) => + wucExchange.getAccountsForExchange( + exchange, + pageSize, + offset, + criteria, + ), + goBack: /* @ngInject */ (goToAutorenew) => (message, type) => + goToAutorenew(message, type), + exchange: /* @ngInject */ (wucExchange, exchangeName, organization) => + wucExchange + .getExchangeDetails(organization, exchangeName) + .then((exchange) => new ExchangeModel(exchange)), + exchangeName: /* @ngInject */ ($transition$) => + $transition$.params().exchangeName, + organization: /* @ngInject */ ($transition$) => + $transition$.params().organization, + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('billing_autorenew_exchange'), + updateRenew: /* @ngInject */ (wucExchange, exchange) => (accounts) => + wucExchange.updateRenew( + exchange.organization, + exchange.domain, + accounts, + ), + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_de_DE.json new file mode 100644 index 000000000000..1b1440a69b98 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_de_DE.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_exchange": "Verlängerung konfigurieren" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_en_GB.json new file mode 100644 index 000000000000..a76b6ea070a0 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_en_GB.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_exchange": "Renewal configuration" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_es_ES.json new file mode 100644 index 000000000000..763d5c7cc6f5 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_es_ES.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_exchange": "Configuración de la renovación" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..fcbfb8a377f5 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_fr_CA.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_exchange": "Configuration du renouvellement" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..fcbfb8a377f5 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_fr_FR.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_exchange": "Configuration du renouvellement" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_it_IT.json new file mode 100644 index 000000000000..39c5be49b267 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_it_IT.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_exchange": "Configura il rinnovo" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..de694492672f --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_pl_PL.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_exchange": "Konfiguracja odnowienia" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..cd687274491b --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/exchange/translations/Messages_pt_PT.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_exchange": "Configuração da renovação" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/component.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/component.js new file mode 100644 index 000000000000..ad2344d2f2db --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/component.js @@ -0,0 +1,13 @@ +import controller from './controller'; +import template from './template.html'; + +export default { + bindings: { + goBack: '<', + id: '<', + serviceType: '<', + }, + controller, + template, + name: 'billingAutorenewTerminateAgoraService', +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/constants.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/constants.js new file mode 100644 index 000000000000..203add1344d7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/constants.js @@ -0,0 +1,5 @@ +export const TERMINATE_PATTERN = /^TERMINATE$/; + +export default { + TERMINATE_PATTERN, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/controller.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/controller.js new file mode 100644 index 000000000000..cd38f93dcfa5 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/controller.js @@ -0,0 +1,33 @@ +import { TERMINATE_PATTERN } from './constants'; + +export default class TerminateAgoraServiceController { + /* @ngInject */ + constructor($translate, BillingTerminate) { + this.TERMINATE_PATTERN = TERMINATE_PATTERN; + this.$translate = $translate; + this.BillingTerminate = BillingTerminate; + } + + terminate() { + return this.BillingTerminate.serviceTermination(this.id); + } + + onSuccess() { + this.goBack( + this.$translate.instant( + `autorenew_agora_terminate_service_success_${this.serviceType}`, + ), + 'success', + ); + } + + onError(error) { + this.goBack( + this.$translate.instant( + `autorenew_agora_terminate_service_error_${this.serviceType}`, + { error: error?.data?.message }, + ), + 'danger', + ); + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/index.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/index.js new file mode 100644 index 000000000000..4a44c92407fb --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/index.js @@ -0,0 +1,28 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngAtInternet from '@ovh-ux/ng-at-internet'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import component from './component'; +import routing from './routing'; + +import terminate from '../terminate/terminate.module'; + +const moduleName = 'ovhManagerBillingAutorenewTerminateAgoraService'; + +angular + .module(moduleName, [ + angularTranslate, + ngAtInternet, + ngTranslateAsyncLoader, + 'oui', + terminate, + uiRouter, + ]) + .config(routing) + .component(component.name, component) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/routing.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/routing.js new file mode 100644 index 000000000000..dc006cfe9c01 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/routing.js @@ -0,0 +1,21 @@ +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.terminateAgoraService', { + url: '/terminate-service?id&serviceType', + views: { + modal: { + component: 'billingAutorenewTerminateAgoraService', + }, + }, + layout: 'modal', + resolve: { + goBack: /* @ngInject */ (goToAutorenew) => goToAutorenew, + id: /* @ngInject */ ($transition$) => $transition$.params().id, + serviceType: /* @ngInject */ ($transition$) => + $transition$.params().serviceType, + breadcrumb: () => null, + }, + atInternet: { + ignore: true, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/template.html b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/template.html new file mode 100644 index 000000000000..a16168f4715c --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/template.html @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_de_DE.json new file mode 100644 index 000000000000..dc7df049291f --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_de_DE.json @@ -0,0 +1,19 @@ +{ + "autorenew_agora_terminate_service_OKMS_RESOURCE": "Meinen KMS kündigen", + "autorenew_agora_terminate_service_warning_OKMS_RESOURCE": "Bitte bestätigen Sie die Kündigung Ihres KMS", + "autorenew_agora_terminate_service_success_OKMS_RESOURCE": "Ihre Anfrage zur Kündigung Ihres KMS wurde registriert. Eine E-Mail mit weiteren Informationen wurde an Sie versandt.", + "autorenew_agora_terminate_service_error_OKMS_RESOURCE": "Bei der Anfrage zur Kündigung Ihres KMS ist ein Fehler aufgetreten. {{error}}", + "autorenew_agora_terminate_service_confirm_input": "Geben Sie „TERMINATE“ in das unten stehende Feld ein, um zu bestätigen", + "autorenew_agora_terminate_service_DBAAS_LOGS": "Meine LDP kündigen", + "autorenew_agora_terminate_service_warning_DBAAS_LOGS": "Bitte bestätigen Sie die Kündigung Ihrer LDP.", + "autorenew_agora_terminate_service_success_DBAAS_LOGS": "Ihre Anfrage zur Kündigung Ihrer LDP wurde registriert. Eine E-Mail mit weiteren Informationen zur Vorgehensweise wurde soeben an Sie versandt.", + "autorenew_agora_terminate_service_error_DBAAS_LOGS": "Bei der Anfrage zur Kündigung Ihrer LDP ist ein Fehler aufgetreten. {{error}}", + "autorenew_agora_terminate_service_VRACK_SERVICES_RESOURCE": "vRack Services kündigen", + "autorenew_agora_terminate_service_warning_VRACK_SERVICES_RESOURCE": "Bitte bestätigen Sie die Kündigung von vRack Services.", + "autorenew_agora_terminate_service_success_VRACK_SERVICES_RESOURCE": "Ihre Anfrage zur Kündigung von vRack Services wurde registriert. Eine E-Mail mit weiteren Informationen zur Vorgehensweise wurde soeben an Sie versandt.", + "autorenew_agora_terminate_service_error_VRACK_SERVICES_RESOURCE": "Bei der Kündigung von vRack Services ist ein Fehler aufgetreten. {{error}}", + "autorenew_agora_terminate_service_LICENSE_HYCU": "Meine HYCU-Lizenz kündigen", + "autorenew_agora_terminate_service_warning_LICENSE_HYCU": "Bitte bestätigen Sie die Kündigung Ihrer HYCU-Lizenz.", + "autorenew_agora_terminate_service_success_LICENSE_HYCU": "Ihre Anfrage zur Kündigung Ihrer HYCU-Lizenz wurde registriert. Eine E-Mail mit weiteren Informationen zur Vorgehensweise wurde soeben an Sie versandt.", + "autorenew_agora_terminate_service_error_LICENSE_HYCU": "Bei der Anfrage zur Kündigung Ihrer HYCU-Lizenz ist ein Fehler aufgetreten. {{error}}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_en_GB.json new file mode 100644 index 000000000000..fb9494baaf0e --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_en_GB.json @@ -0,0 +1,19 @@ +{ + "autorenew_agora_terminate_service_OKMS_RESOURCE": "Cancel my KMS", + "autorenew_agora_terminate_service_warning_OKMS_RESOURCE": "Please confirm the cancelation of your KMS", + "autorenew_agora_terminate_service_success_OKMS_RESOURCE": "Your KMS cancelation request has been processed. You have been sent an email detailing the procedure to follow.", + "autorenew_agora_terminate_service_error_OKMS_RESOURCE": "An error has occurred requesting to terminate your KMS. {{error}}", + "autorenew_agora_terminate_service_confirm_input": "Enter \"TERMINATE\" in the field below to confirm", + "autorenew_agora_terminate_service_DBAAS_LOGS": "Cancel my LDP", + "autorenew_agora_terminate_service_warning_DBAAS_LOGS": "Please confirm the cancellation of your LDP", + "autorenew_agora_terminate_service_success_DBAAS_LOGS": "Your LDP cancellation request has been submitted. You have been sent an email detailing the procedure to follow.", + "autorenew_agora_terminate_service_error_DBAAS_LOGS": "An error has occurred submitting your LDP cancellation request. {{error}}", + "autorenew_agora_terminate_service_VRACK_SERVICES_RESOURCE": "Cancel vRack Services", + "autorenew_agora_terminate_service_warning_VRACK_SERVICES_RESOURCE": "Please confirm the cancellation of vRack Services", + "autorenew_agora_terminate_service_success_VRACK_SERVICES_RESOURCE": "Your request to cancel vRack Services has been processed. You have been sent an email detailing the procedure to follow.", + "autorenew_agora_terminate_service_error_VRACK_SERVICES_RESOURCE": "An error has occurred cancelling vRack Services. {{error}}", + "autorenew_agora_terminate_service_LICENSE_HYCU": "Cancel my HYCU licence", + "autorenew_agora_terminate_service_warning_LICENSE_HYCU": "Please confirm the cancellation of your HYCU licence", + "autorenew_agora_terminate_service_success_LICENSE_HYCU": "Your request to cancel your HYCU licence has been processed. You have been sent an email detailing the procedure to follow.", + "autorenew_agora_terminate_service_error_LICENSE_HYCU": "An error has occurred submitting your HYCU licence cancellation request. {{error}}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_es_ES.json new file mode 100644 index 000000000000..1ce9b4cd8d09 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_es_ES.json @@ -0,0 +1,19 @@ +{ + "autorenew_agora_terminate_service_OKMS_RESOURCE": "Dar de baja mi KMS", + "autorenew_agora_terminate_service_warning_OKMS_RESOURCE": "Confirme la baja de su KMS", + "autorenew_agora_terminate_service_success_OKMS_RESOURCE": "La solicitud de baja de su KMS se ha enviado. Le hemos enviado el procedimiento por correo electrónico.", + "autorenew_agora_terminate_service_error_OKMS_RESOURCE": "Se ha producido un error al solicitar la baja del KMS. {{error}}", + "autorenew_agora_terminate_service_confirm_input": "Introduzca «TERMINATE» en el siguiente campo para confirmar la operación", + "autorenew_agora_terminate_service_DBAAS_LOGS": "Dar de baja mi LDP", + "autorenew_agora_terminate_service_warning_DBAAS_LOGS": "Por favor, confirme la baja de su LDP.", + "autorenew_agora_terminate_service_success_DBAAS_LOGS": "La solicitud de baja de su LDP se ha enviado correctamente. Le hemos enviado un mensaje de correo electrónico con el procedimiento que debe seguir.", + "autorenew_agora_terminate_service_error_DBAAS_LOGS": "Se ha producido un error al solicitar la baja de su LDP. {{error}}", + "autorenew_agora_terminate_service_VRACK_SERVICES_RESOURCE": "Dar de baja los vRack Services", + "autorenew_agora_terminate_service_warning_VRACK_SERVICES_RESOURCE": "Por favor, confirme la baja de los vRack Services", + "autorenew_agora_terminate_service_success_VRACK_SERVICES_RESOURCE": "La solicitud de baja de los vRack Services se ha enviado correctamente. Le hemos enviado un mensaje de correo electrónico con el procedimiento que debe seguir.", + "autorenew_agora_terminate_service_error_VRACK_SERVICES_RESOURCE": "Se ha producido un error al solicitar la baja de los vRack Services: {{error}}", + "autorenew_agora_terminate_service_LICENSE_HYCU": "Dar de baja mi licencia HYCU", + "autorenew_agora_terminate_service_warning_LICENSE_HYCU": "Por favor, confirme la baja de su licencia HYCU", + "autorenew_agora_terminate_service_success_LICENSE_HYCU": "La solicitud de baja de su licencia HYCU se ha enviado. Le hemos enviado un mensaje de correo electrónico con el procedimiento que debe seguir.", + "autorenew_agora_terminate_service_error_LICENSE_HYCU": "Se ha producido un error al solicitar la baja de su licencia HYCU. {{error}}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..93ad21923a09 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_fr_CA.json @@ -0,0 +1,19 @@ +{ + "autorenew_agora_terminate_service_LICENSE_HYCU": "Résilier ma licence HYCU", + "autorenew_agora_terminate_service_OKMS_RESOURCE": "Résilier mon KMS", + "autorenew_agora_terminate_service_VRACK_SERVICES_RESOURCE": "Résilier vRack Services", + "autorenew_agora_terminate_service_warning_LICENSE_HYCU": "Veuillez confirmer la résiliation de votre licence HYCU", + "autorenew_agora_terminate_service_warning_OKMS_RESOURCE": "Veuillez confirmer la résiliation de votre KMS", + "autorenew_agora_terminate_service_warning_VRACK_SERVICES_RESOURCE": "Veuillez confirmer la résiliation de vRAck Services", + "autorenew_agora_terminate_service_success_LICENSE_HYCU": "Votre demande de résiliation de votre licence HYCU a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.", + "autorenew_agora_terminate_service_success_OKMS_RESOURCE": "Votre demande de résiliation de votre KMS a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.", + "autorenew_agora_terminate_service_success_VRACK_SERVICES_RESOURCE": "Votre demande de résiliation de vRAck Services a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.", + "autorenew_agora_terminate_service_error_LICENSE_HYCU": "Une erreur est survenue lors de la demande de résiliation de votre licence HYCU. {{error}}", + "autorenew_agora_terminate_service_error_OKMS_RESOURCE": "Une erreur est survenue lors de la demande de résiliation de votre KMS. {{error}}", + "autorenew_agora_terminate_service_DBAAS_LOGS": "Résilier mon LDP", + "autorenew_agora_terminate_service_warning_DBAAS_LOGS": "Veuillez confirmer la résiliation de votre LDP", + "autorenew_agora_terminate_service_success_DBAAS_LOGS": "Votre demande de résiliation de votre LDP a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.", + "autorenew_agora_terminate_service_error_DBAAS_LOGS": "Une erreur est survenue lors de la demande de résiliation de votre LDP. {{error}}", + "autorenew_agora_terminate_service_error_VRACK_SERVICES_RESOURCE": "Une erreur est survenue lors de la demande de résiliation de vRack Services. {{error}}", + "autorenew_agora_terminate_service_confirm_input": "Entrez \"TERMINATE\" dans le champ ci-dessous pour confirmer" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..93ad21923a09 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_fr_FR.json @@ -0,0 +1,19 @@ +{ + "autorenew_agora_terminate_service_LICENSE_HYCU": "Résilier ma licence HYCU", + "autorenew_agora_terminate_service_OKMS_RESOURCE": "Résilier mon KMS", + "autorenew_agora_terminate_service_VRACK_SERVICES_RESOURCE": "Résilier vRack Services", + "autorenew_agora_terminate_service_warning_LICENSE_HYCU": "Veuillez confirmer la résiliation de votre licence HYCU", + "autorenew_agora_terminate_service_warning_OKMS_RESOURCE": "Veuillez confirmer la résiliation de votre KMS", + "autorenew_agora_terminate_service_warning_VRACK_SERVICES_RESOURCE": "Veuillez confirmer la résiliation de vRAck Services", + "autorenew_agora_terminate_service_success_LICENSE_HYCU": "Votre demande de résiliation de votre licence HYCU a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.", + "autorenew_agora_terminate_service_success_OKMS_RESOURCE": "Votre demande de résiliation de votre KMS a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.", + "autorenew_agora_terminate_service_success_VRACK_SERVICES_RESOURCE": "Votre demande de résiliation de vRAck Services a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.", + "autorenew_agora_terminate_service_error_LICENSE_HYCU": "Une erreur est survenue lors de la demande de résiliation de votre licence HYCU. {{error}}", + "autorenew_agora_terminate_service_error_OKMS_RESOURCE": "Une erreur est survenue lors de la demande de résiliation de votre KMS. {{error}}", + "autorenew_agora_terminate_service_DBAAS_LOGS": "Résilier mon LDP", + "autorenew_agora_terminate_service_warning_DBAAS_LOGS": "Veuillez confirmer la résiliation de votre LDP", + "autorenew_agora_terminate_service_success_DBAAS_LOGS": "Votre demande de résiliation de votre LDP a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.", + "autorenew_agora_terminate_service_error_DBAAS_LOGS": "Une erreur est survenue lors de la demande de résiliation de votre LDP. {{error}}", + "autorenew_agora_terminate_service_error_VRACK_SERVICES_RESOURCE": "Une erreur est survenue lors de la demande de résiliation de vRack Services. {{error}}", + "autorenew_agora_terminate_service_confirm_input": "Entrez \"TERMINATE\" dans le champ ci-dessous pour confirmer" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_it_IT.json new file mode 100644 index 000000000000..a81e2b690fb9 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_it_IT.json @@ -0,0 +1,19 @@ +{ + "autorenew_agora_terminate_service_OKMS_RESOURCE": "Disattiva il KMS", + "autorenew_agora_terminate_service_warning_OKMS_RESOURCE": "Conferma la disattivazione del KMS", + "autorenew_agora_terminate_service_success_OKMS_RESOURCE": "La richiesta di disattivazione del KMS è stata presa in carico. Ti abbiamo inviato un’email con la procedura da seguire.", + "autorenew_agora_terminate_service_error_OKMS_RESOURCE": "Si è verificato un errore durante la richiesta di disattivazione del KMS: {{error}}", + "autorenew_agora_terminate_service_confirm_input": "Inserisci \"TERMINATE\" nel campo qui sotto per confermare", + "autorenew_agora_terminate_service_DBAAS_LOGS": "Disattivare il mio LDP", + "autorenew_agora_terminate_service_warning_DBAAS_LOGS": "Conferma la disattivazione del tuo LDP", + "autorenew_agora_terminate_service_success_DBAAS_LOGS": "La tua richiesta di disattivazione del LDP è stata presa in carico. Ti abbiamo inviato un’email con la procedura da seguire.", + "autorenew_agora_terminate_service_error_DBAAS_LOGS": "Si è verificato un errore durante la richiesta di disattivazione del tuo LDP: {{error}}", + "autorenew_agora_terminate_service_VRACK_SERVICES_RESOURCE": "Disattivare vRack Services", + "autorenew_agora_terminate_service_warning_VRACK_SERVICES_RESOURCE": "Conferma la disattivazione di vRack Services", + "autorenew_agora_terminate_service_success_VRACK_SERVICES_RESOURCE": "La tua richiesta di disattivazione di vRack Services è stata presa in carico. Ti abbiamo inviato un’email con la procedura da seguire.", + "autorenew_agora_terminate_service_error_VRACK_SERVICES_RESOURCE": "Si è verificato un errore durante la richiesta di disattivazione di vRack Services. {{error}}", + "autorenew_agora_terminate_service_LICENSE_HYCU": "Disattivare la tua licenza HYCU", + "autorenew_agora_terminate_service_warning_LICENSE_HYCU": "Conferma la disattivazione della tua licenza HYCU", + "autorenew_agora_terminate_service_success_LICENSE_HYCU": "La tua richiesta di disattivazione della licenza HYCU è stata presa in carico. Ti abbiamo inviato un’email con la procedura da seguire.", + "autorenew_agora_terminate_service_error_LICENSE_HYCU": "Si è verificato un errore durante la richiesta di disattivazione della tua licenza HYCU: {{error}}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..4442eecb4ddf --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_pl_PL.json @@ -0,0 +1,19 @@ +{ + "autorenew_agora_terminate_service_OKMS_RESOURCE": "Rezygnacja z usługi KMS", + "autorenew_agora_terminate_service_warning_OKMS_RESOURCE": "Potwierdź rezygnację z usługi KMS", + "autorenew_agora_terminate_service_success_OKMS_RESOURCE": "Zlecenie rezygnacji z usługi KMS zostało zarejestrowane. Informacje dotyczące procedury zostały wysłane na Twój adres e-mail.", + "autorenew_agora_terminate_service_error_OKMS_RESOURCE": "Wystąpił błąd podczas zlecania rezygnacji z serwera KMS. {{error}}", + "autorenew_agora_terminate_service_confirm_input": "Wprowadź \"TERMINATE\" w poniższym polu, aby potwierdzić operację", + "autorenew_agora_terminate_service_DBAAS_LOGS": "Rezygnacja z LDP", + "autorenew_agora_terminate_service_warning_DBAAS_LOGS": "Potwierdź rezygnację z LDP", + "autorenew_agora_terminate_service_success_DBAAS_LOGS": "Rezygnacja z usługi LDP została zarejestrowana. Otrzymasz e-mail z opisem dalszej procedury.", + "autorenew_agora_terminate_service_error_DBAAS_LOGS": "Wystąpił błąd podczas rezygnacji z LDP. {{error}}", + "autorenew_agora_terminate_service_VRACK_SERVICES_RESOURCE": "Rezygnacja z vRack Services", + "autorenew_agora_terminate_service_warning_VRACK_SERVICES_RESOURCE": "Potwierdź rezygnację z vRAck Services", + "autorenew_agora_terminate_service_success_VRACK_SERVICES_RESOURCE": "Rezygnacja z vRAck Services została zarejestrowana. Otrzymasz e-mail z opisem dalszej procedury.", + "autorenew_agora_terminate_service_error_VRACK_SERVICES_RESOURCE": "Wystąpił błąd podczas rezygnacji z vRack Services. {{error}}", + "autorenew_agora_terminate_service_LICENSE_HYCU": "Rezygnacja z licencji HYCU", + "autorenew_agora_terminate_service_warning_LICENSE_HYCU": "Potwierdź rezygnację z licencji HYCU", + "autorenew_agora_terminate_service_success_LICENSE_HYCU": "Rezygnacja z licencji HYCU została przyjęta. Otrzymasz e-mail z opisem dalszej procedury.", + "autorenew_agora_terminate_service_error_LICENSE_HYCU": "Wystąpił błąd podczas składania rezygnacji z licencji HYCU. {{error}}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..57900007b479 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-agora-service/translations/Messages_pt_PT.json @@ -0,0 +1,19 @@ +{ + "autorenew_agora_terminate_service_OKMS_RESOURCE": "Rescindir o meu KMS", + "autorenew_agora_terminate_service_warning_OKMS_RESOURCE": "Confirme a rescisão do seu KMS", + "autorenew_agora_terminate_service_success_OKMS_RESOURCE": "O seu pedido de rescisão do KMS foi registado com êxito. Um e-mail com o procedimento foi-lhe enviado.", + "autorenew_agora_terminate_service_error_OKMS_RESOURCE": "Ocorreu um erro aquando do pedido de rescisão do seu KMS: {{error}}", + "autorenew_agora_terminate_service_confirm_input": "Introduza \"TERMINATE\" no seguinte campo para confirmar", + "autorenew_agora_terminate_service_DBAAS_LOGS": "Rescindir o meu LDP", + "autorenew_agora_terminate_service_warning_DBAAS_LOGS": "Confirme a rescisão do seu LDP", + "autorenew_agora_terminate_service_success_DBAAS_LOGS": "O seu pedido de rescisão do LDP foi registado com êxito. Um e-mail com o procedimento foi-lhe enviado.", + "autorenew_agora_terminate_service_error_DBAAS_LOGS": "Ocorreu um erro aquando do pedido de rescisão do seu LDP. {{error}}", + "autorenew_agora_terminate_service_VRACK_SERVICES_RESOURCE": "Rescindir vRack Services", + "autorenew_agora_terminate_service_warning_VRACK_SERVICES_RESOURCE": "Confirme a rescisão de vRack Services", + "autorenew_agora_terminate_service_success_VRACK_SERVICES_RESOURCE": "O seu pedido de rescisão de vRack Services foi registado com êxito. Um e-mail com o procedimento foi-lhe enviado.", + "autorenew_agora_terminate_service_error_VRACK_SERVICES_RESOURCE": "Ocorreu um erro aquando do pedido de rescisão de vRack Services. {{error}}", + "autorenew_agora_terminate_service_LICENSE_HYCU": "Cancelar a minha licença HYCU", + "autorenew_agora_terminate_service_warning_LICENSE_HYCU": "Confirme o cancelamento da sua licença HYCU", + "autorenew_agora_terminate_service_success_LICENSE_HYCU": "O seu pedido de cancelamento da sua licença HYCU foi registado com êxito. Um e-mail com o procedimento foi-lhe enviado.", + "autorenew_agora_terminate_service_error_LICENSE_HYCU": "Ocorreu um erro aquando do pedido de cancelamento da sua licença HYCU. {{error}}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/component.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/component.js new file mode 100644 index 000000000000..5fed2b3227e6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/component.js @@ -0,0 +1,13 @@ +import controller from './controller'; +import template from './template.html'; + +export default { + bindings: { + goBack: '<', + domains: '<', + serviceType: '<', + serviceId: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/controller.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/controller.js new file mode 100644 index 000000000000..4eee4b161521 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/controller.js @@ -0,0 +1,154 @@ +import set from 'lodash/set'; +import kebabCase from 'lodash/kebabCase'; +import map from 'lodash/map'; +import filter from 'lodash/filter'; +import { BillingService } from '@ovh-ux/manager-models'; + +const DOMAIN_SERVICE_TYPE = 'DOMAIN'; +export default class { + /* @ngInject */ + constructor($translate, $http, $q, atInternet, BillingAutoRenew) { + this.$translate = $translate; + this.$http = $http; + this.$q = $q; + this.atInternet = atInternet; + this.BillingAutoRenew = BillingAutoRenew; + } + + $onInit() { + this.isLoading = false; + this.cancelAllDom = true; + this.allDomainsSelected = false; + } + + toggleSelectAllDomains(selectAll) { + if (selectAll) { + this.domains.forEach((domain) => set(domain, 'selected', true)); + this.allDomainsSelected = true; + } else { + this.domains.forEach((domain) => set(domain, 'selected', false)); + this.allDomainsSelected = false; + } + } + + getSelectedDomains() { + return this.domains.filter((domain) => domain.selected); + } + + toggleSelectDomain(select) { + if (this.allDomainsSelected || !select) { + this.allDomainsSelected = false; + } else if ( + select && + this.getSelectedDomains().length + 1 === this.domains.length + ) { + this.allDomainsSelected = true; + } + } + + cancelServices() { + const domainsSelected = filter(this.domains, (domain) => domain.selected); + if (this.cancelAllDom || domainsSelected.length > 0) { + this.isLoading = true; + const servicesToTerminate = []; + if (this.cancelAllDom) { + servicesToTerminate.push( + this.$http.get(`/allDom/${this.serviceId}/serviceInfos`).then( + ({ data }) => + new BillingService({ + ...data, + serviceId: data.id, + serviceType: this.serviceType, + }), + ), + ); + this.trackCancel(this.serviceType); + } + domainsSelected.forEach((domain) => { + servicesToTerminate.push( + this.$http + .get(`/domain/${domain.name}/serviceInfos`) + .then(({ data }) => { + return new BillingService({ + ...data, + serviceId: data.id, + serviceType: DOMAIN_SERVICE_TYPE, + }); + }), + ); + this.trackCancel(DOMAIN_SERVICE_TYPE); + }); + this.$q + .all(servicesToTerminate) + .then((services) => + map(services, (service) => { + service.setForResiliation(); + return { + serviceId: service.domain, + serviceType: service.serviceType, + renew: service.renew, + }; + }), + ) + .then((services) => this.BillingAutoRenew.updateServices(services)) + .then(() => this.onSuccess()) + .catch((errorPromise) => { + this.$q.when(errorPromise).then((error) => { + if (error.messages) { + this.onPartialSuccess(error.messages); + } else { + this.onError(error); + } + }); + }); + } else { + this.goBack(); + } + } + + getService(serviceId, serviceType) { + return this.BillingAutoRenew.findService({ + resourceName: serviceId, + serviceType, + }).then( + (service) => + new BillingService({ + ...service, + serviceId: service.id, + }), + ); + } + + trackCancel(serviceType) { + this.atInternet.trackClick({ + name: `autorenew::${kebabCase(serviceType)}::delete::confirm`, + type: 'action', + chapter1: 'dedicated', + chapter2: 'account', + chapter3: 'billing', + }); + } + + onSuccess() { + this.goBack(this.$translate.instant('autorenew_all_dom_terminate_success')); + } + + onPartialSuccess(errors) { + const messages = [ + this.$translate.instant('autorenew_all_dom_terminate_error'), + ...errors.map( + (message) => `${message.id}: ${message.message}`, + ), + ]; + this.goBack(messages.join('
'), 'danger'); + } + + onError(error) { + this.goBack( + this.$translate.instant('autorenew_all_dom_terminate_error', { + message: error.data?.message || error.message, + }), + 'danger', + ); + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/module.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/module.js new file mode 100644 index 000000000000..4f1987ab1d78 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/module.js @@ -0,0 +1,25 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import component from './component'; +import routing from './routing'; + +import './style.less'; + +const moduleName = 'ovhManagerBillingAutorenewTerminateAllDom'; + +angular + .module(moduleName, [ + angularTranslate, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .config(routing) + .component('billingAutorenewTerminateAllDom', component) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/routing.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/routing.js new file mode 100644 index 000000000000..e05df3e8d18a --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/routing.js @@ -0,0 +1,53 @@ +import map from 'lodash/map'; +import get from 'lodash/get'; + +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.terminate-all-dom', { + url: '/delete-all-dom?serviceId&serviceType', + views: { + modal: { + component: 'billingAutorenewTerminateAllDom', + }, + }, + layout: 'modal', + resolve: { + goBack: /* @ngInject */ (goToAutorenew) => goToAutorenew, + serviceId: /* @ngInject */ ($transition$) => + $transition$.params().serviceId, + serviceType: /* @ngInject */ ($transition$) => + $transition$.params().serviceType, + domains: /* @ngInject */ ($http, $q, $translate, serviceId) => + $http.get(`/allDom/${serviceId}/domain`).then(({ data: domains }) => { + const promises = domains.map((domain) => + $http.get(`/domain/${domain}/serviceInfos`), + ); + promises.push($http.get(`/allDom/${serviceId}/serviceInfos`)); + return $q.all(promises).then((serviceInfos) => { + // serviceInfos array contains the serviceInfo of each domain at the same index and the serviceInfo of allDom as the last element + const allDomExpiration = get( + serviceInfos[serviceInfos.length - 1], + 'data.expiration', + ); + return map(domains, (domain, index) => { + return { + name: domain, + selected: false, + tooltip: moment( + get(serviceInfos[index], 'data.expiration'), + ).isAfter(allDomExpiration) + ? $translate.instant( + 'autorenew_all_dom_domain_free_if_renewed', + { + allDom: serviceId, + allDomExpiration, + }, + ) + : $translate.instant('autorenew_all_dom_domain_free'), + }; + }); + }); + }), + breadcrumb: () => null, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/style.less b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/style.less new file mode 100644 index 000000000000..579e5c5aa7bb --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/style.less @@ -0,0 +1,3 @@ +.all-dom-line-separator { + border-top: 1px solid #bef1ff; +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/template.html b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/template.html new file mode 100644 index 000000000000..3cddbcc54ea6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/template.html @@ -0,0 +1,50 @@ + + + + + +

+ + + +
+ + + + + + + +
+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_de_DE.json new file mode 100644 index 000000000000..751e90fc6c2b --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_de_DE.json @@ -0,0 +1,14 @@ +{ + "autorenew_all_dom_terminate_title": "Sie haben die Kündigung Ihres AllDom Pakets beantragt", + "autorenew_all_dom_terminate_effect_on_domains": "Bitte beachten Sie: Mit der Kündigung dieses Pakets werden nicht die damit verbundenen Domains gekündigt.", + "autorenew_all_dom_terminate_domain_renewal_info": "Die darin enthaltenen nicht gekündigten Domains werden bis zum endgültigen Ablauf Ihres Pakets kostenlos verlängert. Nach diesem Datum werden Ihre nicht gekündigten Domains einzeln abgerechnet.", + "autorenew_all_dom_terminate_choose_option": "Bitte wählen Sie die Domains aus, die Sie kündigen möchten:", + "autorenew_all_dom_terminate_select_all_dom": "AllDom Paket", + "autorenew_all_dom_terminate_select_all_domains": "Alles auswählen", + "autorenew_all_dom_terminate_confirm": "Bestätigen", + "autorenew_all_dom_terminate_cancel": "Abbrechen", + "autorenew_all_dom_terminate_success": "Ihre Kündigungsanfrage wurde erfolgreich durchgeführt.", + "autorenew_all_dom_terminate_error": "Ihre Kündigungsanfrage konnte für eine oder mehrere Domains nicht durchgeführt werden. Bitte versuchen Sie es später erneut.", + "autorenew_all_dom_domain_free_if_renewed": "Eine kostenlose Verlängerung erfolgt nur, wenn das Paket AllDom {{ allDom }} vor dem {{ allDomExpiration }} verlängert wird.", + "autorenew_all_dom_domain_free": "Die Verlängerung ist kostenlos, da im Paket AllDom inklusive" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_en_GB.json new file mode 100644 index 000000000000..aee09bd68ed5 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_en_GB.json @@ -0,0 +1,14 @@ +{ + "autorenew_all_dom_terminate_title": "You have requested the cancellation of your AllDom pack", + "autorenew_all_dom_terminate_effect_on_domains": "Warning: Cancelling this pack does not also cancel the domains attached to it.", + "autorenew_all_dom_terminate_domain_renewal_info": "The non-cancelled domains included in your pack will be renewed for free until your pack has expired permanently. After this date, your non-cancelled domains will be billed individually.", + "autorenew_all_dom_terminate_choose_option": "Please select the domain names you wish to cancel below:", + "autorenew_all_dom_terminate_select_all_dom": "AllDom Pack", + "autorenew_all_dom_terminate_select_all_domains": "Select all", + "autorenew_all_dom_terminate_confirm": "Confirm", + "autorenew_all_dom_terminate_cancel": "Cancel", + "autorenew_all_dom_terminate_success": "Your cancellation request has been processed.", + "autorenew_all_dom_terminate_error": "Your cancellation request could not be processed for one or more domains. Please try again later.", + "autorenew_all_dom_domain_free_if_renewed": "Free renewal only if the {{allDom}} Alldom pack is renewed before {{allDomExpiration}}", + "autorenew_all_dom_domain_free": "Free renewal as it is included in the Alldom pack" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_es_ES.json new file mode 100644 index 000000000000..dcd618bbde05 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_es_ES.json @@ -0,0 +1,14 @@ +{ + "autorenew_all_dom_terminate_title": "Ha solicitado la baja de su pack AllDom.", + "autorenew_all_dom_terminate_effect_on_domains": "Atención: la baja de este pack no conlleva la baja de los dominios asociados.", + "autorenew_all_dom_terminate_domain_renewal_info": "Los dominios incluidos el pack que no hayan sido dados de baja se renovarán de forma gratuita hasta la expiración definitiva del pack. A partir de esa fecha, los dominios que no hayan sido dados de baja se facturarán por separado.", + "autorenew_all_dom_terminate_choose_option": "Seleccione los dominios que quiere dar de baja:", + "autorenew_all_dom_terminate_select_all_dom": "Pack AllDom", + "autorenew_all_dom_terminate_select_all_domains": "Seleccionar todo", + "autorenew_all_dom_terminate_confirm": "Confirmar", + "autorenew_all_dom_terminate_cancel": "Cancelar", + "autorenew_all_dom_terminate_success": "La solicitud de baja se ha enviado correctamente.", + "autorenew_all_dom_terminate_error": "La solicitud de baja no se ha podido enviar para uno o varios dominios. Por favor, vuelva a intentarlo más adelante.", + "autorenew_all_dom_domain_free_if_renewed": "Renovación gratuita solo si el pack AllDom {{ allDom }} se renueva antes del {{ allDomExpiration }}.", + "autorenew_all_dom_domain_free": "Renovación gratuita por estar incluido en el pack AllDom." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..87a95680eb21 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_fr_CA.json @@ -0,0 +1,14 @@ +{ + "autorenew_all_dom_terminate_title": "Vous avez demandé la résiliation de votre pack alldom", + "autorenew_all_dom_terminate_effect_on_domains": "Attention, la résiliation de ce pack n'entraîne pas la résiliation des domaines qui y sont attachés.", + "autorenew_all_dom_terminate_domain_renewal_info": "Les domaines non résiliés inclus dans votre pack seront renouvelés gratuitment jusqu'a l'expiration definitive de votre pack. Au-delà de cette date, vos domaines non résiliés seront facturés individuellement.", + "autorenew_all_dom_terminate_choose_option": "Veuillez sélectionner les noms de domaines que vous souhaitez résilier ci-dessous :", + "autorenew_all_dom_terminate_select_all_dom": "Pack Alldom", + "autorenew_all_dom_terminate_select_all_domains": "Tout sélectionner", + "autorenew_all_dom_terminate_confirm": "Confirmer", + "autorenew_all_dom_terminate_cancel": "Annuler", + "autorenew_all_dom_terminate_success": "Votre demande de résiliation a bien été prise en compte", + "autorenew_all_dom_terminate_error": "Votre demande de résiliation n'a pas pu être prise en compte pour un ou plusieurs domaines. Merci d’essayer ultérieurement.", + "autorenew_all_dom_domain_free_if_renewed": "Renouvellement gratuit uniquement si le pack Allldom {{ allDom }} est renouvelé avant le {{ allDomExpiration }}", + "autorenew_all_dom_domain_free": "Renouvellement gratuit car inclus dans le pack Alldom" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..87a95680eb21 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_fr_FR.json @@ -0,0 +1,14 @@ +{ + "autorenew_all_dom_terminate_title": "Vous avez demandé la résiliation de votre pack alldom", + "autorenew_all_dom_terminate_effect_on_domains": "Attention, la résiliation de ce pack n'entraîne pas la résiliation des domaines qui y sont attachés.", + "autorenew_all_dom_terminate_domain_renewal_info": "Les domaines non résiliés inclus dans votre pack seront renouvelés gratuitment jusqu'a l'expiration definitive de votre pack. Au-delà de cette date, vos domaines non résiliés seront facturés individuellement.", + "autorenew_all_dom_terminate_choose_option": "Veuillez sélectionner les noms de domaines que vous souhaitez résilier ci-dessous :", + "autorenew_all_dom_terminate_select_all_dom": "Pack Alldom", + "autorenew_all_dom_terminate_select_all_domains": "Tout sélectionner", + "autorenew_all_dom_terminate_confirm": "Confirmer", + "autorenew_all_dom_terminate_cancel": "Annuler", + "autorenew_all_dom_terminate_success": "Votre demande de résiliation a bien été prise en compte", + "autorenew_all_dom_terminate_error": "Votre demande de résiliation n'a pas pu être prise en compte pour un ou plusieurs domaines. Merci d’essayer ultérieurement.", + "autorenew_all_dom_domain_free_if_renewed": "Renouvellement gratuit uniquement si le pack Allldom {{ allDom }} est renouvelé avant le {{ allDomExpiration }}", + "autorenew_all_dom_domain_free": "Renouvellement gratuit car inclus dans le pack Alldom" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_it_IT.json new file mode 100644 index 000000000000..4c9eee975524 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_it_IT.json @@ -0,0 +1,14 @@ +{ + "autorenew_all_dom_terminate_title": "Hai chiesto la disattivazione del tuo pack alldom", + "autorenew_all_dom_terminate_effect_on_domains": "Attenzione: la disattivazione di questo pack non comporta anche la dismissione dei domini ad esso associati.", + "autorenew_all_dom_terminate_domain_renewal_info": "I domini non disattivati inclusi nel pack saranno rinnovati gratuitamente fino alla scadenza definitiva del pacchetto. A partire da questa data, i domini non disattivati saranno fatturati individualmente.", + "autorenew_all_dom_terminate_choose_option": "Seleziona qui sotto i domini che vuoi disattivare:", + "autorenew_all_dom_terminate_select_all_dom": "Pack AllDom", + "autorenew_all_dom_terminate_select_all_domains": "Seleziona tutto", + "autorenew_all_dom_terminate_confirm": "Conferma", + "autorenew_all_dom_terminate_cancel": "Annulla", + "autorenew_all_dom_terminate_success": "La tua richiesta di disattivazione è stata presa in carico.", + "autorenew_all_dom_terminate_error": "Non è stato possibile prendere in carico la richiesta di disattivazione per uno o più domini. Ti preghiamo di riprovare.", + "autorenew_all_dom_domain_free_if_renewed": "Rinnovo gratuito solo se il pack Alldom {{ allDom }} viene rinnovato prima del {{ allDomExpiration }}", + "autorenew_all_dom_domain_free": "Rinnovo gratuito perché incluso nel pack Alldom" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..b8579ff7b577 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_pl_PL.json @@ -0,0 +1,14 @@ +{ + "autorenew_all_dom_terminate_title": "Zgłosiłeś rezygnację z pakietu Alldom", + "autorenew_all_dom_terminate_effect_on_domains": "Uwaga: rezygnacja z tego pakietu nie powoduje rezygnacji z przypisanych do niego domen.", + "autorenew_all_dom_terminate_domain_renewal_info": "Zawarte w pakiecie domeny, z których nie zrezygnujesz, będą odnawiane bezpłatnie aż do ostatecznego wygaśnięcia pakietu. Po tym terminie, domeny, z których nie zrezygnowałeś, będą fakturowane indywidualnie.", + "autorenew_all_dom_terminate_choose_option": "Wybierz domeny, z których chcesz zrezygnować:", + "autorenew_all_dom_terminate_select_all_dom": "Pakiet Alldom", + "autorenew_all_dom_terminate_select_all_domains": "Zaznacz wszystko", + "autorenew_all_dom_terminate_confirm": "Zatwierdź", + "autorenew_all_dom_terminate_cancel": "Anuluj", + "autorenew_all_dom_terminate_success": "Rezygnacja została zarejestrowana.", + "autorenew_all_dom_terminate_error": "Rezygnacja nie mogła zostać zarejestrowana dla jednej lub kilku domen. Spróbuj później.", + "autorenew_all_dom_domain_free_if_renewed": "Odnowienie gratis tylko wtedy, gdy pakiet Allldom {{allDom}} zostanie odnowiony przed {{allDomExpiration}}.", + "autorenew_all_dom_domain_free": "Odnowienie gratis, ponieważ domena zawarta w pakiecie Alldom" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..c84b0108a8fc --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-all-dom/translations/Messages_pt_PT.json @@ -0,0 +1,14 @@ +{ + "autorenew_all_dom_terminate_title": "Solicitou a rescisão do seu pack alldom", + "autorenew_all_dom_terminate_effect_on_domains": "Atenção: a rescisão deste pack não implica a rescisão dos domínios que lhe estão associados.", + "autorenew_all_dom_terminate_domain_renewal_info": "Os domínios incluídos que não tenham sido rescindidos serão renovados gratuitamente até à expiração definitiva do seu pack. Após essa data, os seus domínios não rescindidos serão faturados individualmente.", + "autorenew_all_dom_terminate_choose_option": "Selecione os domínios que deseja rescindir a seguir:", + "autorenew_all_dom_terminate_select_all_dom": "Pack Alldom", + "autorenew_all_dom_terminate_select_all_domains": "Selecionar tudo", + "autorenew_all_dom_terminate_confirm": "Confirmar", + "autorenew_all_dom_terminate_cancel": "Anular", + "autorenew_all_dom_terminate_success": "O seu pedido de rescisão foi registado com êxito.", + "autorenew_all_dom_terminate_error": "Não foi possível ter em conta o seu pedido de rescisão para um ou vários domínios. Tente mais tarde.", + "autorenew_all_dom_domain_free_if_renewed": "Renovação gratuita unicamente se o pack Allldom {{ allDom }} for renovado antes de {{ allDomExpiration }}", + "autorenew_all_dom_domain_free": "Renovação gratuita por estar incluída no pack Alldom" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/terminate-enterprise-cloud-database.component.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/terminate-enterprise-cloud-database.component.js new file mode 100644 index 000000000000..882023d75230 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/terminate-enterprise-cloud-database.component.js @@ -0,0 +1,11 @@ +import controller from './terminate-enterprise-cloud-database.controller'; +import template from './terminate-enterprise-cloud-database.html'; + +export default { + bindings: { + goBack: '<', + terminateEnterpriseCloudDatabase: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/terminate-enterprise-cloud-database.controller.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/terminate-enterprise-cloud-database.controller.js new file mode 100644 index 000000000000..0548383db20e --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/terminate-enterprise-cloud-database.controller.js @@ -0,0 +1,26 @@ +import get from 'lodash/get'; + +export default class { + /* @ngInject */ + constructor($translate) { + this.$translate = $translate; + } + + onSuccess() { + this.goBack( + this.$translate.instant( + 'autorenew_enterprise_cloud_database_close_service_success', + ), + ); + } + + onError(error) { + this.goBack( + this.$translate.instant( + 'autorenew_enterprise_cloud_database_close_service_error', + get(error, 'data.message'), + ), + 'danger', + ); + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/terminate-enterprise-cloud-database.html b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/terminate-enterprise-cloud-database.html new file mode 100644 index 000000000000..a70843ad33b8 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/terminate-enterprise-cloud-database.html @@ -0,0 +1,20 @@ + + + + +

+

+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/terminate-enterprise-cloud-database.module.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/terminate-enterprise-cloud-database.module.js new file mode 100644 index 000000000000..374670c50950 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/terminate-enterprise-cloud-database.module.js @@ -0,0 +1,27 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngAtInternet from '@ovh-ux/ng-at-internet'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import component from './terminate-enterprise-cloud-database.component'; +import routing from './terminate-enterprise-cloud-database.routing'; + +import terminate from '../terminate/terminate.module'; + +const moduleName = 'ovhManagerBillingAutorenewTerminateEnterpriseCloudDatabase'; + +angular + .module(moduleName, [ + angularTranslate, + ngAtInternet, + ngTranslateAsyncLoader, + 'oui', + terminate, + uiRouter, + ]) + .config(routing) + .component('billingAutorenewTerminateEnterpriseCloudDatabase', component); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/terminate-enterprise-cloud-database.routing.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/terminate-enterprise-cloud-database.routing.js new file mode 100644 index 000000000000..5ecbcad1a536 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/terminate-enterprise-cloud-database.routing.js @@ -0,0 +1,27 @@ +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.terminateEnterpriseCloudDatabase', { + url: '/delete-enterprise-cloud-database?serviceId', + views: { + modal: { + component: 'billingAutorenewTerminateEnterpriseCloudDatabase', + }, + }, + layout: 'modal', + translations: { value: ['.'], format: 'json' }, + resolve: { + goBack: /* @ngInject */ (goToAutorenew) => goToAutorenew, + serviceId: /* @ngInject */ ($transition$) => + $transition$.params().serviceId, + terminateEnterpriseCloudDatabase: /* @ngInject */ ( + OvhApiCloudDBEnterprise, + serviceId, + ) => () => + OvhApiCloudDBEnterprise.v6().terminate({ clusterId: serviceId }) + .$promise, + breadcrumb: () => null, + }, + atInternet: { + ignore: true, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_de_DE.json new file mode 100644 index 000000000000..5d42df75b0c7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_de_DE.json @@ -0,0 +1,11 @@ +{ + "autorenew_enterprise_cloud_database_service_guide": "Enterprise Cloud Databases sofort löschen", + "autorenew_enterprise_cloud_database_close_service_question": "Möchten Sie fortfahren?", + "autorenew_enterprise_cloud_database_close_service_success": "Ihre Anfrage zur Schließung der Enterprise Cloud Databases wurde erfasst. Eine E-Mail mit weiteren Informationen zur Vorgehensweise wurde soeben an Sie versandt.", + "autorenew_enterprise_cloud_database_close_service_error": "Bei der Anfrage zur Schließung Ihrer Enterprise Cloud Databases ist ein Fehler aufgetreten:", + "autorenew_enterprise_cloud_database_close_service": "Enterprise Cloud Databases sofort löschen", + "autorenew_enterprise_cloud_database_close_service_warning": "Beim Löschen von Enterprise Cloud Databases werden automatisch alle zugehörigen Daten unwiderruflich gelöscht. Das Löschen von Enterprise Cloud Databases bedeutet keine Garantie zur Rückerstattung.", + "autorenew_enterprise_cloud_database_close_service_desc1": "Sie erhalten in Kürze eine E-Mail mit Informationen zur Schließung Ihrer Enterprise Cloud Databases und können die sofortige Löschung dann bestätigen.", + "autorenew_enterprise_cloud_database_close_confirm": "Bestätigen", + "autorenew_enterprise_cloud_database_close_cancel": "Abbrechen" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_en_GB.json new file mode 100644 index 000000000000..3f1245c69e8e --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_en_GB.json @@ -0,0 +1,11 @@ +{ + "autorenew_enterprise_cloud_database_service_guide": "Delete Enterprise Cloud Database immediately", + "autorenew_enterprise_cloud_database_close_service_question": "Do you want to continue?", + "autorenew_enterprise_cloud_database_close_service_success": "Your request to close the Enterprise Cloud Database has been processed. You have been sent an email detailing the procedure to follow.", + "autorenew_enterprise_cloud_database_close_service_error": "An error has occurred requesting to close your Enterprise Cloud Database:", + "autorenew_enterprise_cloud_database_close_service": "Delete Enterprise Cloud Database immediately", + "autorenew_enterprise_cloud_database_close_service_warning": "Deleting an Enterprise Cloud Database will permanently erase all corresponding data. The process of deleting an Enterprise Cloud Database does not entitle you to a refund.", + "autorenew_enterprise_cloud_database_close_service_desc1": "You will get an email containing the procedure to close your Enterprise Cloud Database, so you can confirm that you want it deleted immediately.", + "autorenew_enterprise_cloud_database_close_confirm": "Confirm", + "autorenew_enterprise_cloud_database_close_cancel": "Cancel" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_es_ES.json new file mode 100644 index 000000000000..dae6b3726f59 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_es_ES.json @@ -0,0 +1,11 @@ +{ + "autorenew_enterprise_cloud_database_service_guide": "Eliminar inmediatamente Enterprise Cloud Databases", + "autorenew_enterprise_cloud_database_close_service_question": "¿Seguro que quiere continuar?", + "autorenew_enterprise_cloud_database_close_service_success": "Su solicitud de cierre de Enterprise Cloud Databases se ha enviado. Le hemos enviado un mensaje de correo electrónico con el procedimiento que debe seguir.", + "autorenew_enterprise_cloud_database_close_service_error": "Se ha producido un error al solicitar el cierre de su Enterprise Cloud Databases:", + "autorenew_enterprise_cloud_database_close_service": "Eliminar inmediatamente mi Enterprise Cloud Databases", + "autorenew_enterprise_cloud_database_close_service_warning": "La eliminación de Enterprise Cloud Databases provocará el borrado definitivo de todos los datos correspondientes. La acción de eliminar Enterprise Cloud Databases no implica ninguna devolución.", + "autorenew_enterprise_cloud_database_close_service_desc1": "Recibirá por correo electrónico un mensaje con el procedimiento de cierre de Enterprise Cloud Databases desde el que podrá confirmar la eliminación inmediata.", + "autorenew_enterprise_cloud_database_close_confirm": "Aceptar", + "autorenew_enterprise_cloud_database_close_cancel": "Cancelar" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..aec9239cd03f --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_fr_CA.json @@ -0,0 +1,11 @@ +{ + "autorenew_enterprise_cloud_database_service_guide": "Supprimer immédiatement l'enterprise cloud databases", + "autorenew_enterprise_cloud_database_close_service_question": "Voulez-vous continuer?", + "autorenew_enterprise_cloud_database_close_service_success": "Votre demande de fermeture d'enterprise cloud databases a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.", + "autorenew_enterprise_cloud_database_close_service_error": "Une erreur est survenue lors de la demande de fermeture de votre enterprise cloud databases :", + "autorenew_enterprise_cloud_database_close_service": "Supprimer immédiatement mon enterprise cloud databases", + "autorenew_enterprise_cloud_database_close_service_warning": "La suppression d'un enterprise cloud databases entraîne l'effacement définitif de toutes les données correspondantes. L'action de supprimer un enterprise cloud databases n'octroie aucun remboursement.", + "autorenew_enterprise_cloud_database_close_service_desc1": "Un e-mail contenant la procédure de fermeture de votre enterprise cloud databases vous permettant de valider la suppression immédiate vous sera envoyé.", + "autorenew_enterprise_cloud_database_close_confirm": "Valider", + "autorenew_enterprise_cloud_database_close_cancel": "Annuler" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..aec9239cd03f --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_fr_FR.json @@ -0,0 +1,11 @@ +{ + "autorenew_enterprise_cloud_database_service_guide": "Supprimer immédiatement l'enterprise cloud databases", + "autorenew_enterprise_cloud_database_close_service_question": "Voulez-vous continuer?", + "autorenew_enterprise_cloud_database_close_service_success": "Votre demande de fermeture d'enterprise cloud databases a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.", + "autorenew_enterprise_cloud_database_close_service_error": "Une erreur est survenue lors de la demande de fermeture de votre enterprise cloud databases :", + "autorenew_enterprise_cloud_database_close_service": "Supprimer immédiatement mon enterprise cloud databases", + "autorenew_enterprise_cloud_database_close_service_warning": "La suppression d'un enterprise cloud databases entraîne l'effacement définitif de toutes les données correspondantes. L'action de supprimer un enterprise cloud databases n'octroie aucun remboursement.", + "autorenew_enterprise_cloud_database_close_service_desc1": "Un e-mail contenant la procédure de fermeture de votre enterprise cloud databases vous permettant de valider la suppression immédiate vous sera envoyé.", + "autorenew_enterprise_cloud_database_close_confirm": "Valider", + "autorenew_enterprise_cloud_database_close_cancel": "Annuler" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_it_IT.json new file mode 100644 index 000000000000..93679c5d0a2b --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_it_IT.json @@ -0,0 +1,11 @@ +{ + "autorenew_enterprise_cloud_database_service_guide": "Elimina subito Enterprise Cloud Databases", + "autorenew_enterprise_cloud_database_close_service_question": "Vuoi continuare?", + "autorenew_enterprise_cloud_database_close_service_success": "La richiesta di disattivazione di Enterprise Cloud Databases è stata presa in carico. Ti abbiamo inviato un’email con la procedura da seguire.", + "autorenew_enterprise_cloud_database_close_service_error": "Si è verificato un errore durante la richiesta di disattivazione del tuo Enterprise Cloud Databases:", + "autorenew_enterprise_cloud_database_close_service": "Elimina subito il tuo Enterprise Cloud Databases", + "autorenew_enterprise_cloud_database_close_service_warning": "L'eliminazione di un Enterprise Cloud Databases comporta la cancellazione definitiva di tutti i dati ad esso associati. L'operazione di eliminazione non dà diritto ad alcun rimborso.", + "autorenew_enterprise_cloud_database_close_service_desc1": "Riceverai un'email con la procedura da seguire per confermare l'eliminazione immediata del tuo Enterprise Cloud Databases.", + "autorenew_enterprise_cloud_database_close_confirm": "Conferma", + "autorenew_enterprise_cloud_database_close_cancel": "Annulla" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..7d04e298b241 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_pl_PL.json @@ -0,0 +1,11 @@ +{ + "autorenew_enterprise_cloud_database_service_guide": "Usuń natychmiast Enterprise Cloud Databases", + "autorenew_enterprise_cloud_database_close_service_question": "Czy chcesz kontynuować?", + "autorenew_enterprise_cloud_database_close_service_success": "Zlecenie zamknięcia Enterprise Cloud Databases zostało zarejestrowane. Otrzymasz e-mail z opisem dalszej procedury.", + "autorenew_enterprise_cloud_database_close_service_error": "Wystąpił błąd podczas operacji zamykania Enterprise Cloud Databases:", + "autorenew_enterprise_cloud_database_close_service": "Usuń natychmiast moje bazy Enterprise Cloud Databases", + "autorenew_enterprise_cloud_database_close_service_warning": "Usunięcie usługi Enterprise Cloud Databases spowoduje trwałe usunięcie wszystkich powiązanych z nią danych. Usunięcie Enterprise Cloud Databases nie stanowi podstawy do zwrotu środków.", + "autorenew_enterprise_cloud_database_close_service_desc1": "Otrzymasz e-mail z opisem procedury zamknięcia Enterprise Cloud Databases.", + "autorenew_enterprise_cloud_database_close_confirm": "Zatwierdź", + "autorenew_enterprise_cloud_database_close_cancel": "Anuluj" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..515d5c00acf7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-enterprise-cloud-database/translations/Messages_pt_PT.json @@ -0,0 +1,11 @@ +{ + "autorenew_enterprise_cloud_database_service_guide": "Eliminar imediatamente o Enterprise Cloud Databases", + "autorenew_enterprise_cloud_database_close_service_question": "Deseja continuar?", + "autorenew_enterprise_cloud_database_close_service_success": "O seu pedido de desativação do Enterprise Cloud Databases foi realizado. Um e-mail com o procedimento foi-lhe enviado.", + "autorenew_enterprise_cloud_database_close_service_error": "Ocorreu um erro ao solicitar o encerramento do seu Enterprise Cloud Databases:", + "autorenew_enterprise_cloud_database_close_service": "Eliminar imediatamente o meu Enterprise Cloud Databases", + "autorenew_enterprise_cloud_database_close_service_warning": "A eliminação de um Enterprise Cloud Databases elimina definitivamente todos os dados correspondentes. A operação de eliminação de um Enterprise Cloud Databases não garante o direito a reembolso.", + "autorenew_enterprise_cloud_database_close_service_desc1": "Receberá por e-mail o procedimento de encerramento do seu Enterprise Cloud Databases, e assim que o confirmar, a eliminação será imediata.", + "autorenew_enterprise_cloud_database_close_confirm": "Validar", + "autorenew_enterprise_cloud_database_close_cancel": "Anular" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/terminate-webcoach.component.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/terminate-webcoach.component.js new file mode 100644 index 000000000000..b5748e0c71af --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/terminate-webcoach.component.js @@ -0,0 +1,11 @@ +import controller from './terminate-webcoach.controller'; +import template from './terminate-webcoach.html'; + +export default { + bindings: { + goBack: '<', + terminateWebCoach: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/terminate-webcoach.controller.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/terminate-webcoach.controller.js new file mode 100644 index 000000000000..66e5e965dd0c --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/terminate-webcoach.controller.js @@ -0,0 +1,24 @@ +import get from 'lodash/get'; + +export default class { + /* @ngInject */ + constructor($translate) { + this.$translate = $translate; + } + + onSuccess() { + this.goBack( + this.$translate.instant('autorenew_webcoach_close_service_success'), + ); + } + + onError(error) { + this.goBack( + this.$translate.instant( + 'autorenew_webcoach_close_service_error', + get(error, 'data.message'), + ), + 'danger', + ); + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/terminate-webcoach.html b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/terminate-webcoach.html new file mode 100644 index 000000000000..075f67b27650 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/terminate-webcoach.html @@ -0,0 +1,14 @@ + + + + +

+

+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/terminate-webcoach.module.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/terminate-webcoach.module.js new file mode 100644 index 000000000000..6fde8fc4fb13 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/terminate-webcoach.module.js @@ -0,0 +1,25 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import component from './terminate-webcoach.component'; +import routing from './terminate-webcoach.routing'; + +import terminate from '../terminate/terminate.module'; + +const moduleName = 'ovhManagerBillingAutorenewTerminateWebCoach'; + +angular + .module(moduleName, [ + angularTranslate, + ngTranslateAsyncLoader, + 'oui', + terminate, + uiRouter, + ]) + .config(routing) + .component('billingAutorenewTerminateWebCoach', component); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/terminate-webcoach.routing.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/terminate-webcoach.routing.js new file mode 100644 index 000000000000..f184162fdcb6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/terminate-webcoach.routing.js @@ -0,0 +1,23 @@ +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.terminateWebCoach', { + url: '/delete-webcoach?serviceId', + views: { + modal: { + component: 'billingAutorenewTerminateWebCoach', + }, + }, + layout: 'modal', + translations: { value: ['.'], format: 'json' }, + resolve: { + goBack: /* @ngInject */ (goToAutorenew) => goToAutorenew, + serviceId: /* @ngInject */ ($transition$) => + $transition$.params().serviceId, + terminateWebCoach: /* @ngInject */ (OvhApiWebCoach, serviceId) => () => + OvhApiWebCoach.v6().terminate({ serviceName: serviceId }).$promise, + breadcrumb: () => null, + }, + atInternet: { + ignore: true, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_de_DE.json new file mode 100644 index 000000000000..9d45573b61b9 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_de_DE.json @@ -0,0 +1,11 @@ +{ + "autorenew_webcoach_service_guide": "WebCoach sofort löschen", + "autorenew_webcoach_close_service_question": "Möchten Sie fortfahren?", + "autorenew_webcoach_close_service_success": "Ihre Anfrage zur Schließung von WebCoach wurde registriert. Eine E-Mail mit weiteren Informationen zur Vorgehensweise wurde soeben an Sie versandt.", + "autorenew_webcoach_close_service_error": "Bei der Anfrage zur Schließung von WebCoach ist ein Fehler aufgetreten:", + "autorenew_webcoach_close_service": "WebCoach sofort löschen", + "autorenew_webcoach_close_service_warning": "Beim Löschen von WebCoach werden automatisch alle zugehörigen Daten unwiderruflich gelöscht. Das Löschen von WebCoach bedeutet keine Garantie zur Rückerstattung.", + "autorenew_webcoach_close_service_desc1": "Sie erhalten in Kürze eine E-Mail mit Informationen zur Schließung von WebCoach, um die sofortige Löschung zu bestätigen.", + "autorenew_webcoach_close_confirm": "Bestätigen", + "autorenew_webcoach_close_cancel": "Abbrechen" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_en_GB.json new file mode 100644 index 000000000000..60a53035cc6e --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_en_GB.json @@ -0,0 +1,11 @@ +{ + "autorenew_webcoach_service_guide": "Delete Web Coach immediately", + "autorenew_webcoach_close_service_question": "Do you want to continue?", + "autorenew_webcoach_close_service_success": "Your request to close Web Coach has been processed. You have been sent an email detailing the procedure to follow.", + "autorenew_webcoach_close_service_error": "An error has occurred requesting to close your Web Coach:", + "autorenew_webcoach_close_service": "Delete my Web Coach immediately", + "autorenew_webcoach_close_service_warning": "Deleting a Web Coach will permanently erase all corresponding data. The process of deleting a Web Coach does not entitle you to a refund.", + "autorenew_webcoach_close_service_desc1": "You will get an email containing the procedure to close your Web Coach, so you can confirm that you want it deleted immediately.", + "autorenew_webcoach_close_confirm": "Confirm", + "autorenew_webcoach_close_cancel": "Cancel" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_es_ES.json new file mode 100644 index 000000000000..650012e287b7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_es_ES.json @@ -0,0 +1,11 @@ +{ + "autorenew_webcoach_service_guide": "Eliminar inmediatamente WebCoach", + "autorenew_webcoach_close_service_question": "¿Seguro que quiere continuar?", + "autorenew_webcoach_close_service_success": "La solicitud de cierre de WebCoach se ha enviado. Le hemos enviado un mensaje de correo electrónico con el procedimiento que debe seguir.", + "autorenew_webcoach_close_service_error": "Se ha producido un error al solicitar el cierre de WebCoach:", + "autorenew_webcoach_close_service": "Eliminar inmediatamente mi WebCoach", + "autorenew_webcoach_close_service_warning": "La eliminación de WebCoach provocará el borrado definitivo de todos los datos correspondientes. La acción de eliminar WebCoach no implica ninguna devolución.", + "autorenew_webcoach_close_service_desc1": "Recibirá por correo electrónico un mensaje con el procedimiento de cierre de WebCoach desde el que podrá confirmar la eliminación inmediata.", + "autorenew_webcoach_close_confirm": "Aceptar", + "autorenew_webcoach_close_cancel": "Cancelar" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..d7cb0adc623c --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_fr_CA.json @@ -0,0 +1,11 @@ +{ + "autorenew_webcoach_service_guide": "Supprimer immédiatement WebCoach", + "autorenew_webcoach_close_service_question": "Voulez-vous continuer?", + "autorenew_webcoach_close_service_success": "Votre demande de fermeture d'un WebCoach a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.", + "autorenew_webcoach_close_service_error": "Une erreur est survenue lors de la demande de fermeture de votre WebCoach :", + "autorenew_webcoach_close_service": "Supprimer immédiatement mon WebCoach", + "autorenew_webcoach_close_service_warning": "La suppression d'un WebCoach entraîne l'effacement définitif de toutes les données correspondantes. L'action de supprimer un WebCoach n'octroie aucun remboursement.", + "autorenew_webcoach_close_service_desc1": "Un e-mail contenant la procédure de fermeture de votre WebCoach vous permettant de valider la suppression immédiate vous sera envoyé.", + "autorenew_webcoach_close_confirm": "Valider", + "autorenew_webcoach_close_cancel": "Annuler" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..d7cb0adc623c --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_fr_FR.json @@ -0,0 +1,11 @@ +{ + "autorenew_webcoach_service_guide": "Supprimer immédiatement WebCoach", + "autorenew_webcoach_close_service_question": "Voulez-vous continuer?", + "autorenew_webcoach_close_service_success": "Votre demande de fermeture d'un WebCoach a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.", + "autorenew_webcoach_close_service_error": "Une erreur est survenue lors de la demande de fermeture de votre WebCoach :", + "autorenew_webcoach_close_service": "Supprimer immédiatement mon WebCoach", + "autorenew_webcoach_close_service_warning": "La suppression d'un WebCoach entraîne l'effacement définitif de toutes les données correspondantes. L'action de supprimer un WebCoach n'octroie aucun remboursement.", + "autorenew_webcoach_close_service_desc1": "Un e-mail contenant la procédure de fermeture de votre WebCoach vous permettant de valider la suppression immédiate vous sera envoyé.", + "autorenew_webcoach_close_confirm": "Valider", + "autorenew_webcoach_close_cancel": "Annuler" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_it_IT.json new file mode 100644 index 000000000000..7346f994d805 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_it_IT.json @@ -0,0 +1,11 @@ +{ + "autorenew_webcoach_service_guide": "Elimina subito WebCoach", + "autorenew_webcoach_close_service_question": "Vuoi continuare?", + "autorenew_webcoach_close_service_success": "La richiesta di disattivazione di WebCoach è stata presa in carico. Ti abbiamo inviato un’email con la procedura da seguire.", + "autorenew_webcoach_close_service_error": "Si è verificato un errore durante l'invio della richiesta di disattivazione del tuo WebCoach:", + "autorenew_webcoach_close_service": "Elimina subito il tuo WebCoach", + "autorenew_webcoach_close_service_warning": "L'eliminazione di un WebCoach comporta la cancellazione definitiva di tutti i dati ad esso associati. L'operazione di eliminazione non dà diritto ad alcun rimborso.", + "autorenew_webcoach_close_service_desc1": "Riceverai un'email con la procedura da seguire per confermare l'eliminazione immediata del tuo WebCoach.", + "autorenew_webcoach_close_confirm": "Conferma", + "autorenew_webcoach_close_cancel": "Annulla" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..9e93cac23a7c --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_pl_PL.json @@ -0,0 +1,11 @@ +{ + "autorenew_webcoach_service_guide": "Usuń natychmiast WebCoach", + "autorenew_webcoach_close_service_question": "Czy chcesz kontynuować?", + "autorenew_webcoach_close_service_success": "Zlecenie zamknięcia narzędzia WebCoach zostało zarejestrowane. Otrzymasz e-mail z opisem dalszej procedury.", + "autorenew_webcoach_close_service_error": "Wystąpił błąd podczas operacji zamykania narzędzia WebCoach:", + "autorenew_webcoach_close_service": "Usuń natychmiast moje narzędzie WebCoach", + "autorenew_webcoach_close_service_warning": "Usunięcie narzędzia WebCoach spowoduje trwałe usunięcie wszystkich powiązanych z nim danych. Usunięcie narzędzia WebCoach nie stanowi podstawy do zwrotu środków.", + "autorenew_webcoach_close_service_desc1": "Otrzymasz e-mail z opisem procedury zamknięcia narzędzia WebCoach.", + "autorenew_webcoach_close_confirm": "Zatwierdź", + "autorenew_webcoach_close_cancel": "Anuluj" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..286cd8bc4617 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-webcoach/translations/Messages_pt_PT.json @@ -0,0 +1,11 @@ +{ + "autorenew_webcoach_service_guide": "Eliminar imediatamente o WebCoach", + "autorenew_webcoach_close_service_question": "Deseja continuar?", + "autorenew_webcoach_close_service_success": "O seu pedido de desativação do WebCoach foi registado. Um e-mail com o procedimento foi-lhe enviado.", + "autorenew_webcoach_close_service_error": "Ocorreu um erro aquando do pedido de eliminação do seu WebCoach:", + "autorenew_webcoach_close_service": "Eliminar imediatamente o meu WebCoach", + "autorenew_webcoach_close_service_warning": "A eliminação de um WebCoach apaga definitivamente todos os dados correspondentes. A operação de eliminação de um WebCoach não garante o direito a reembolso.", + "autorenew_webcoach_close_service_desc1": "Receberá por e-mail o procedimento de encerramento do seu WebCoach, e assim que o confirmar, a eliminação será imediata.", + "autorenew_webcoach_close_confirm": "Validar", + "autorenew_webcoach_close_cancel": "Anular" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/terminate.component.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/terminate.component.js new file mode 100644 index 000000000000..4f8520711789 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/terminate.component.js @@ -0,0 +1,17 @@ +import controller from './terminate.controller'; +import template from './terminate.html'; + +export default { + bindings: { + goBack: '&', + onError: '&', + onSuccess: '&', + serviceType: '@', + terminateService: '&', + title: '<', + primaryDisabled: '=', + }, + controller, + template, + transclude: true, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/terminate.controller.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/terminate.controller.js new file mode 100644 index 000000000000..052065ea7a60 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/terminate.controller.js @@ -0,0 +1,33 @@ +import kebabCase from 'lodash/kebabCase'; + +export default class { + /* @ngInject */ + constructor($translate, atInternet) { + this.$translate = $translate; + this.atInternet = atInternet; + } + + $onInit() { + this.atInternet.trackPage({ + name: `autorenew::${kebabCase(this.serviceType)}::terminate`, + type: 'navigation', + chapter1: 'dedicated', + chapter2: 'account', + chapter3: 'billing', + }); + } + + terminate() { + this.atInternet.trackClick({ + name: `autorenew::${kebabCase(this.serviceType)}::terminate::confirm`, + type: 'action', + chapter1: 'dedicated', + chapter2: 'account', + chapter3: 'billing', + }); + this.isDeleting = true; + return this.terminateService() + .then(() => this.onSuccess()) + .catch((error) => this.onError({ error })); + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/terminate.html b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/terminate.html new file mode 100644 index 000000000000..ec91377b9121 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/terminate.html @@ -0,0 +1,12 @@ + +
+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/terminate.module.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/terminate.module.js new file mode 100644 index 000000000000..09eda6c0dd5c --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/terminate.module.js @@ -0,0 +1,23 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngAtInternet from '@ovh-ux/ng-at-internet'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import component from './terminate.component'; + +const moduleName = 'ovhManagerBillingAutorenewTerminate'; + +angular + .module(moduleName, [ + angularTranslate, + ngAtInternet, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .component('billingAutorenewTerminate', component) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_de_DE.json new file mode 100644 index 000000000000..d5f4665f1ca8 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_de_DE.json @@ -0,0 +1,4 @@ +{ + "autorenew_service_terminate": "Bestätigen", + "autorenew_service_terminate_cancel": "Abbrechen" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_en_GB.json new file mode 100644 index 000000000000..f85f89bcd8e8 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_en_GB.json @@ -0,0 +1,4 @@ +{ + "autorenew_service_terminate": "Confirm", + "autorenew_service_terminate_cancel": "Cancel" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_es_ES.json new file mode 100644 index 000000000000..b7eacf38c82d --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_es_ES.json @@ -0,0 +1,4 @@ +{ + "autorenew_service_terminate": "Aceptar", + "autorenew_service_terminate_cancel": "Cancelar" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..085e2b5eb9c4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_fr_CA.json @@ -0,0 +1,4 @@ +{ + "autorenew_service_terminate": "Valider", + "autorenew_service_terminate_cancel": "Annuler" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..085e2b5eb9c4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_fr_FR.json @@ -0,0 +1,4 @@ +{ + "autorenew_service_terminate": "Valider", + "autorenew_service_terminate_cancel": "Annuler" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_it_IT.json new file mode 100644 index 000000000000..ae3d65ccb3a6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_it_IT.json @@ -0,0 +1,4 @@ +{ + "autorenew_service_terminate": "Conferma", + "autorenew_service_terminate_cancel": "Annulla" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..c7deef30a53e --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_pl_PL.json @@ -0,0 +1,4 @@ +{ + "autorenew_service_terminate": "Zatwierdź", + "autorenew_service_terminate_cancel": "Anuluj" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..8b202ab8d978 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate/translations/Messages_pt_PT.json @@ -0,0 +1,4 @@ +{ + "autorenew_service_terminate": "Validar", + "autorenew_service_terminate_cancel": "Anular" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/billing-autoRenew-terminateEmail.controller.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/billing-autoRenew-terminateEmail.controller.js new file mode 100644 index 000000000000..3f0637e7966f --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/billing-autoRenew-terminateEmail.controller.js @@ -0,0 +1,26 @@ +import get from 'lodash/get'; + +export default class { + /* @ngInject */ + constructor($translate) { + this.$translate = $translate; + } + + onSuccess() { + this.goBack( + this.$translate.instant( + 'autorenew_service_EMAIL_DOMAIN_terminate_success', + ), + ); + } + + onError(error) { + this.goBack( + this.$translate.instant( + 'autorenew_service_EMAIL_DOMAIN_terminate_error', + { message: get(error, 'message') }, + ), + 'danger', + ); + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/billing-autoRenew-terminateEmail.html b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/billing-autoRenew-terminateEmail.html new file mode 100644 index 000000000000..131b2258ee3d --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/billing-autoRenew-terminateEmail.html @@ -0,0 +1,15 @@ + + + + +

+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/email.component.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/email.component.js new file mode 100644 index 000000000000..47468e624aa1 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/email.component.js @@ -0,0 +1,13 @@ +import controller from './billing-autoRenew-terminateEmail.controller'; +import template from './billing-autoRenew-terminateEmail.html'; + +export default { + bindings: { + email: '<', + goBack: '<', + isHosting: '<', + terminateEmail: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/email.module.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/email.module.js new file mode 100644 index 000000000000..253b959cf0eb --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/email.module.js @@ -0,0 +1,26 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import component from './email.component'; +import routing from './email.routing'; + +import terminate from '../terminate/terminate.module'; + +const moduleName = 'ovhManagerBillingAutorenewTerminateEmail'; + +angular + .module(moduleName, [ + angularTranslate, + ngTranslateAsyncLoader, + 'oui', + terminate, + uiRouter, + ]) + .config(routing) + .component('billingAutorenewTerminateEmail', component) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/email.routing.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/email.routing.js new file mode 100644 index 000000000000..5a851af18903 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/email.routing.js @@ -0,0 +1,43 @@ +export default /* @ngInject */ ($stateProvider, $urlRouterProvider) => { + $stateProvider.state('billing.autorenew.terminateEmail', { + url: '/delete-email?serviceId&name', + views: { + modal: { + component: 'billingAutorenewTerminateEmail', + }, + }, + layout: 'modal', + resolve: { + email: /* @ngInject */ (BillingAutoRenew, name) => + BillingAutoRenew.getEmailInfos(name), + isHosting: /* @ngInject */ (email) => /hosting/.test(email.offer), + redirection: /* @ngInject */ ($q, isHosting, email) => { + if (isHosting) { + window.location.href = `/web/#/hosting/${encodeURIComponent( + email.domain, + )}/terminateEmail?tab=GENERAL_INFORMATIONS`; + return $q.defer().promise; + } + return $q.when(); + }, + goBack: /* @ngInject */ (goToAutorenew) => goToAutorenew, + name: /* @ngInject */ ($transition$) => $transition$.params().name, + serviceId: /* @ngInject */ ($transition$) => + $transition$.params().serviceId, + terminateEmail: /* @ngInject */ (BillingAutoRenew, serviceId) => () => + BillingAutoRenew.terminateEmail(serviceId), + breadcrumb: () => null, + }, + atInternet: { + ignore: true, + }, + }); + + $urlRouterProvider.when(/\/delete-email-domain$/, ($location, $state) => { + const { name, serviceId } = $location.search(); + $state.go('billing.autorenew.terminateEmail', { + name, + serviceId, + }); + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_de_DE.json new file mode 100644 index 000000000000..3673045a1f51 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_de_DE.json @@ -0,0 +1,8 @@ +{ + "autorenew_service_EMAIL_DOMAIN_terminate": "MX Plan sofort löschen", + "autorenew_service_EMAIL_DOMAIN_terminate_info": "Beim Löschen von MX Plan werden automatisch alle zugehörigen Daten unwiderruflich gelöscht. Das Löschen von MX Plan bedeutet keine Garantie zur Rückerstattung.", + "autorenew_service_EMAIL_DOMAIN_terminate_info_impossible": "Sie können Ihre E-Mail-Adresse nicht löschen, da sie mit einem Webhosting verbunden ist.", + "autorenew_service_EMAIL_DOMAIN_terminate_procedure": "Sie erhalten in Kürze eine E-Mail mit Informationen zur Schließung Ihres MX Plan, um die sofortige Löschung zu bestätigen.", + "autorenew_service_EMAIL_DOMAIN_terminate_success": "Ihre Anfrage zur Schließung von MX Plan wurde registriert. Eine E-Mail mit weiteren Informationen zur Vorgehensweise wurde soeben an Sie versandt.", + "autorenew_service_EMAIL_DOMAIN_terminate_error": "Bei der Anfrage zur Schließung Ihres MX Plan ist ein Fehler aufgetreten: {{ message }}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_en_GB.json new file mode 100644 index 000000000000..8f4d605f22a8 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_en_GB.json @@ -0,0 +1,8 @@ +{ + "autorenew_service_EMAIL_DOMAIN_terminate": "Delete MX Plan immediately", + "autorenew_service_EMAIL_DOMAIN_terminate_info": "Deleting an MX Plan will permanently erase all corresponding data. The process of deleting an MX Plan does not entitle you to a refund.", + "autorenew_service_EMAIL_DOMAIN_terminate_info_impossible": "You cannot delete your email account because it is linked to a web hosting plan.", + "autorenew_service_EMAIL_DOMAIN_terminate_procedure": "You will get an email containing the procedure to close your MX Plan, so you can confirm that you want it deleted immediately. ", + "autorenew_service_EMAIL_DOMAIN_terminate_success": "Your request to close the MX Plan has been processed. You have been sent an email detailing the procedure to follow.", + "autorenew_service_EMAIL_DOMAIN_terminate_error": "An error has occurred requesting to close your MX Plan: {{ message }}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_es_ES.json new file mode 100644 index 000000000000..693de259f501 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_es_ES.json @@ -0,0 +1,8 @@ +{ + "autorenew_service_EMAIL_DOMAIN_terminate": "Eliminar inmediatamente el MX Plan", + "autorenew_service_EMAIL_DOMAIN_terminate_info": "La eliminación del MX Plan provocará el borrado definitivo de todos los datos correspondientes. La acción de eliminar un MX Plan no implica ninguna devolución.", + "autorenew_service_EMAIL_DOMAIN_terminate_info_impossible": "No puede eliminar la dirección de correo electrónico debido a que está asociada a un alojamiento web.", + "autorenew_service_EMAIL_DOMAIN_terminate_procedure": "Recibirá por correo electrónico un mensaje con el procedimiento de cierre del MX Plan desde el que podrá confirmar la eliminación inmediata.", + "autorenew_service_EMAIL_DOMAIN_terminate_success": "La solicitud de cierre de su MX Plan se ha enviado. Le hemos enviado un mensaje de correo electrónico con el procedimiento que debe seguir.", + "autorenew_service_EMAIL_DOMAIN_terminate_error": "Se ha producido un error al solicitar el cierre del MX Plan: {{ message }}." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..a96fa6805e4f --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_fr_CA.json @@ -0,0 +1,8 @@ +{ + "autorenew_service_EMAIL_DOMAIN_terminate": "Supprimer immédiatement le MX Plan", + "autorenew_service_EMAIL_DOMAIN_terminate_info": "La suppression d'un MX Plan entraîne l'effacement définitif de toutes les données correspondantes. L'action de supprimer un MX Plan n'octroie aucun remboursement.", + "autorenew_service_EMAIL_DOMAIN_terminate_info_impossible": "Vous ne pouvez pas supprimer votre adresse e-mail car elle est liée à un hébergement web.", + "autorenew_service_EMAIL_DOMAIN_terminate_procedure": "Un e-mail contenant la procédure de fermeture de votre MX Plan vous permettant de valider la suppression immédiate vous sera envoyé.", + "autorenew_service_EMAIL_DOMAIN_terminate_success": "Votre demande de fermeture de votre MX Plan a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.", + "autorenew_service_EMAIL_DOMAIN_terminate_error": "Une erreur est survenue lors de la demande de fermeture de votre MX Plan : {{ message }}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..a96fa6805e4f --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_fr_FR.json @@ -0,0 +1,8 @@ +{ + "autorenew_service_EMAIL_DOMAIN_terminate": "Supprimer immédiatement le MX Plan", + "autorenew_service_EMAIL_DOMAIN_terminate_info": "La suppression d'un MX Plan entraîne l'effacement définitif de toutes les données correspondantes. L'action de supprimer un MX Plan n'octroie aucun remboursement.", + "autorenew_service_EMAIL_DOMAIN_terminate_info_impossible": "Vous ne pouvez pas supprimer votre adresse e-mail car elle est liée à un hébergement web.", + "autorenew_service_EMAIL_DOMAIN_terminate_procedure": "Un e-mail contenant la procédure de fermeture de votre MX Plan vous permettant de valider la suppression immédiate vous sera envoyé.", + "autorenew_service_EMAIL_DOMAIN_terminate_success": "Votre demande de fermeture de votre MX Plan a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.", + "autorenew_service_EMAIL_DOMAIN_terminate_error": "Une erreur est survenue lors de la demande de fermeture de votre MX Plan : {{ message }}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_it_IT.json new file mode 100644 index 000000000000..9cb668990e33 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_it_IT.json @@ -0,0 +1,8 @@ +{ + "autorenew_service_EMAIL_DOMAIN_terminate": "Elimina subito MX Plan", + "autorenew_service_EMAIL_DOMAIN_terminate_info": "L'eliminazione di un MX Plan comporta la cancellazione definitiva di tutti i dati ad esso associati. L'operazione di eliminazione non dà diritto ad alcun rimborso.", + "autorenew_service_EMAIL_DOMAIN_terminate_info_impossible": "Impossibile eliminare l’indirizzo email in quanto risulta associato a un hosting Web.", + "autorenew_service_EMAIL_DOMAIN_terminate_procedure": "Riceverai un'email con la procedura da seguire per confermare l'eliminazione immediata del tuo MX Plan.", + "autorenew_service_EMAIL_DOMAIN_terminate_success": "La richiesta di disattivazione del servizio MX Plan è stata presa in carico. Ti abbiamo inviato un’email con la procedura da seguire.", + "autorenew_service_EMAIL_DOMAIN_terminate_error": "Si è verificato un errore durante l'invio della richiesta di disattivazione del tuo MX Plan: {{ message }}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..332ef82a68f0 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_pl_PL.json @@ -0,0 +1,8 @@ +{ + "autorenew_service_EMAIL_DOMAIN_terminate": "Usuń natychmiast MX Plan", + "autorenew_service_EMAIL_DOMAIN_terminate_info": "Usunięcie usługi MX Plan spowoduje trwałe usunięcie wszystkich powiązanych z nią danych. Usunięcie MX Plan nie stanowi podstawy do zwrotu środków.", + "autorenew_service_EMAIL_DOMAIN_terminate_info_impossible": "Nie możesz usunąć konta e-mail, ponieważ stanowi ono cześć pakietu hostingowego.", + "autorenew_service_EMAIL_DOMAIN_terminate_procedure": "Otrzymasz e-mail z opisem procedury zamknięcia usługi MX Plan.", + "autorenew_service_EMAIL_DOMAIN_terminate_success": "Zlecenie zamknięcia usługi MX Plan zostało zarejestrowane. Otrzymasz e-mail z opisem dalszej procedury.", + "autorenew_service_EMAIL_DOMAIN_terminate_error": "Wystąpił błąd podczas zlecenia zamknięcia usługi MX Plan: {{ message}}." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..0ecee38b094d --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateEmail/translations/Messages_pt_PT.json @@ -0,0 +1,8 @@ +{ + "autorenew_service_EMAIL_DOMAIN_terminate": "Eliminar imediatamente o MX Plan", + "autorenew_service_EMAIL_DOMAIN_terminate_info": "A eliminação de um MX Plan apaga definitivamente todos os dados correspondentes. A operação de eliminação de um MX Plan não garante o direito a reembolso.", + "autorenew_service_EMAIL_DOMAIN_terminate_info_impossible": "Não pode eliminar o seu endereço de e-mail uma vez que está associado a um alojamento web.", + "autorenew_service_EMAIL_DOMAIN_terminate_procedure": "Receberá por e-mail o procedimento de encerramento do seu MX Plan, e assim que o confirmar, a eliminação será imediata.", + "autorenew_service_EMAIL_DOMAIN_terminate_success": "O seu pedido de desativação do MX Plan foi registado. Um e-mail com o procedimento foi-lhe enviado.", + "autorenew_service_EMAIL_DOMAIN_terminate_error": "Ocorreu um erro aquando do pedido de eliminação do seu MX Plan: {{ message }}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/billing-autoRenew-terminateHostingWeb.controller.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/billing-autoRenew-terminateHostingWeb.controller.js new file mode 100644 index 000000000000..02994b92e589 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/billing-autoRenew-terminateHostingWeb.controller.js @@ -0,0 +1,25 @@ +import get from 'lodash/get'; + +export default class { + /* @ngInject */ + constructor($translate) { + this.$translate = $translate; + } + + onSuccess() { + this.goBack( + this.$translate.instant( + 'autorenew_hosting_dashboard_close_service_success', + ), + ); + } + + onError(error) { + this.goBack( + `${this.$translate.instant( + 'autorenew_hosting_dashboard_close_service_error', + )} ${get(error, 'data.message')}`, + 'danger', + ); + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/billing-autoRenew-terminateHostingWeb.html b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/billing-autoRenew-terminateHostingWeb.html new file mode 100644 index 000000000000..e623ea937c13 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/billing-autoRenew-terminateHostingWeb.html @@ -0,0 +1,16 @@ + + + + +

+

+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/hosting-web.component.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/hosting-web.component.js new file mode 100644 index 000000000000..cf1cc5b6e021 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/hosting-web.component.js @@ -0,0 +1,11 @@ +import controller from './billing-autoRenew-terminateHostingWeb.controller'; +import template from './billing-autoRenew-terminateHostingWeb.html'; + +export default { + bindings: { + goBack: '<', + terminateHosting: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/hosting-web.module.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/hosting-web.module.js new file mode 100644 index 000000000000..62ff42feb833 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/hosting-web.module.js @@ -0,0 +1,25 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import component from './hosting-web.component'; +import routing from './hosting-web.routing'; + +import terminate from '../terminate/terminate.module'; + +const moduleName = 'ovhManagerBillingAutorenewTerminateHostingWeb'; + +angular + .module(moduleName, [ + angularTranslate, + ngTranslateAsyncLoader, + 'oui', + terminate, + uiRouter, + ]) + .config(routing) + .component('billingAutorenewTerminateHostingWeb', component); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/hosting-web.routing.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/hosting-web.routing.js new file mode 100644 index 000000000000..7b1449a576c4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/hosting-web.routing.js @@ -0,0 +1,20 @@ +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.terminateHostingWeb', { + url: '/delete-hosting-web?serviceId', + views: { + modal: { + component: 'billingAutorenewTerminateHostingWeb', + }, + }, + layout: 'modal', + translations: { value: ['.'], format: 'json' }, + resolve: { + goBack: /* @ngInject */ (goToAutorenew) => goToAutorenew, + serviceId: /* @ngInject */ ($transition$) => + $transition$.params().serviceId, + terminateHosting: /* @ngInject */ (BillingAutoRenew, serviceId) => () => + BillingAutoRenew.terminateHosting(serviceId), + breadcrumb: () => null, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_de_DE.json new file mode 100644 index 000000000000..32ae1a02951b --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_de_DE.json @@ -0,0 +1,11 @@ +{ + "autorenew_hosting_dashboard_service_guide": "Hosting sofort löschen", + "autorenew_hosting_dashboard_close_service_question": "Möchten Sie fortfahren?", + "autorenew_hosting_dashboard_close_service_success": "Ihre Anfrage zur Schließung des Hostings wurde registriert. Eine E-Mail mit weiteren Informationen zur Vorgehensweise wurde soeben an Sie versandt.", + "autorenew_hosting_dashboard_close_service_error": "Bei der Anfrage zur Schließung Ihres Hostings ist ein Fehler aufgetreten:", + "autorenew_hosting_dashboard_close_service": "Mein Hosting sofort löschen", + "autorenew_hosting_dashboard_close_service_warning": "Beim Löschen eines Hostings werden automatisch alle zugehörigen Daten unwiderruflich gelöscht. Das Löschen des Hostings bedeutet keine Garantie zur Rückerstattung.", + "autorenew_hosting_dashboard_close_service_desc1": "Sie erhalten in Kürze eine E-Mail mit Informationen zur Schließung Ihres Hostings von uns und können die Löschung dann sofort bestätigen.", + "autorenew_hosting_dashboard_close_confirm": "Bestätigen", + "autorenew_hosting_dashboard_close_cancel": "Abbrechen" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_en_GB.json new file mode 100644 index 000000000000..b1563c96bf3d --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_en_GB.json @@ -0,0 +1,11 @@ +{ + "autorenew_hosting_dashboard_service_guide": "Delete web hosting plan immediately", + "autorenew_hosting_dashboard_close_service_question": "Do you want to continue?", + "autorenew_hosting_dashboard_close_service_success": "Your request to close the web hosting plan has been processed. You have been sent an email detailing the procedure to follow.", + "autorenew_hosting_dashboard_close_service_error": "Unable to close your web hosting plan due to the following error:", + "autorenew_hosting_dashboard_close_service": "Delete my web hosting plan immediately", + "autorenew_hosting_dashboard_close_service_warning": "Deleting a web hosting plan will permanently erase all corresponding data. The process of deleting a web hosting plan does not entitle you to a refund.", + "autorenew_hosting_dashboard_close_service_desc1": "You will get an email containing the procedure for closing your web hosting plan, so you can confirm that you want it deleted immediately.", + "autorenew_hosting_dashboard_close_confirm": "Confirm", + "autorenew_hosting_dashboard_close_cancel": "Cancel" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_es_ES.json new file mode 100644 index 000000000000..bd085a18f4b6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_es_ES.json @@ -0,0 +1,11 @@ +{ + "autorenew_hosting_dashboard_service_guide": "Eliminar inmediatamente el alojamiento", + "autorenew_hosting_dashboard_close_service_question": "¿Seguro que quiere continuar?", + "autorenew_hosting_dashboard_close_service_success": "La solicitud de cierre del alojamiento se ha enviado. Le hemos enviado un mensaje de correo electrónico con el procedimiento que debe seguir.", + "autorenew_hosting_dashboard_close_service_error": "Se ha producido un error al solicitar el cierre del alojamiento:", + "autorenew_hosting_dashboard_close_service": "Eliminar inmediatamente mi alojamiento", + "autorenew_hosting_dashboard_close_service_warning": "La eliminación de este alojamiento provocará el borrado definitivo de todos los datos correspondientes. La acción de eliminar un alojamiento no implica ninguna devolución.", + "autorenew_hosting_dashboard_close_service_desc1": "Recibirá por correo electrónico un mensaje con el procedimiento de cierre del alojamiento desde el que podrá confirmar la eliminación inmediata.", + "autorenew_hosting_dashboard_close_confirm": "Aceptar", + "autorenew_hosting_dashboard_close_cancel": "Cancelar" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..4644cbaf76b2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_fr_CA.json @@ -0,0 +1,11 @@ +{ + "autorenew_hosting_dashboard_service_guide": "Supprimer immédiatement l'hébergement", + "autorenew_hosting_dashboard_close_service_question": "Voulez-vous continuer?", + "autorenew_hosting_dashboard_close_service_success": "Votre demande de fermeture d'hébergement a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.", + "autorenew_hosting_dashboard_close_service_error": "Une erreur est survenue lors de la demande de fermeture de votre hébergement :", + "autorenew_hosting_dashboard_close_service": "Supprimer immédiatement mon hébergement", + "autorenew_hosting_dashboard_close_service_warning": "La suppression d'un hébergement entraîne l'effacement définitif de toutes les données correspondantes. L'action de supprimer un hébergement n'octroie aucun remboursement.", + "autorenew_hosting_dashboard_close_service_desc1": "Un e-mail contenant la procédure de fermeture de votre hébergement vous permettant de valider la suppression immédiate vous sera envoyé.", + "autorenew_hosting_dashboard_close_confirm": "Valider", + "autorenew_hosting_dashboard_close_cancel": "Annuler" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..4644cbaf76b2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_fr_FR.json @@ -0,0 +1,11 @@ +{ + "autorenew_hosting_dashboard_service_guide": "Supprimer immédiatement l'hébergement", + "autorenew_hosting_dashboard_close_service_question": "Voulez-vous continuer?", + "autorenew_hosting_dashboard_close_service_success": "Votre demande de fermeture d'hébergement a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.", + "autorenew_hosting_dashboard_close_service_error": "Une erreur est survenue lors de la demande de fermeture de votre hébergement :", + "autorenew_hosting_dashboard_close_service": "Supprimer immédiatement mon hébergement", + "autorenew_hosting_dashboard_close_service_warning": "La suppression d'un hébergement entraîne l'effacement définitif de toutes les données correspondantes. L'action de supprimer un hébergement n'octroie aucun remboursement.", + "autorenew_hosting_dashboard_close_service_desc1": "Un e-mail contenant la procédure de fermeture de votre hébergement vous permettant de valider la suppression immédiate vous sera envoyé.", + "autorenew_hosting_dashboard_close_confirm": "Valider", + "autorenew_hosting_dashboard_close_cancel": "Annuler" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_it_IT.json new file mode 100644 index 000000000000..80a9e6106058 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_it_IT.json @@ -0,0 +1,11 @@ +{ + "autorenew_hosting_dashboard_service_guide": "Elimina subito l'hosting", + "autorenew_hosting_dashboard_close_service_question": "Vuoi continuare?", + "autorenew_hosting_dashboard_close_service_success": "La richiesta di disattivazione dell’hosting è stata presa in carico. Ti abbiamo inviato un’email con la procedura da seguire.", + "autorenew_hosting_dashboard_close_service_error": "Si è verificato un errore durante la richiesta di disattivazione del tuo hosting:", + "autorenew_hosting_dashboard_close_service": "Elimina subito il tuo hosting", + "autorenew_hosting_dashboard_close_service_warning": "L'eliminazione di un hosting comporta la cancellazione definitiva di tutti i dati ad esso associati. L'operazione di eliminazione non dà diritto ad alcun rimborso.", + "autorenew_hosting_dashboard_close_service_desc1": "Riceverai un'email con la procedura da seguire per confermare l'eliminazione immediata del tuo hosting.", + "autorenew_hosting_dashboard_close_confirm": "Conferma", + "autorenew_hosting_dashboard_close_cancel": "Annulla" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..1d74b3ddb10e --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_pl_PL.json @@ -0,0 +1,11 @@ +{ + "autorenew_hosting_dashboard_service_guide": "Usuń natychmiast hosting", + "autorenew_hosting_dashboard_close_service_question": "Czy chcesz kontynuować?", + "autorenew_hosting_dashboard_close_service_success": "Zlecenie zamknięcia hostingu zostało zarejestrowane. Otrzymasz e-mail z opisem dalszej procedury.", + "autorenew_hosting_dashboard_close_service_error": "Wystąpił błąd podczas zlecania zakończenia hostingu:", + "autorenew_hosting_dashboard_close_service": "Usuń natychmiast hosting", + "autorenew_hosting_dashboard_close_service_warning": "Rezygnacja z hostingu spowoduje trwałe usunięcie wszystkich powiązanych z nim danych. Usunięcie hostingu nie stanowi podstawy do zwrotu środków.", + "autorenew_hosting_dashboard_close_service_desc1": "Otrzymasz e-mail z opisem procedury zamknięcia hostingu.", + "autorenew_hosting_dashboard_close_confirm": "Zatwierdź", + "autorenew_hosting_dashboard_close_cancel": "Anuluj" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..bc2dd8d9b1e8 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminateHostingWeb/translations/Messages_pt_PT.json @@ -0,0 +1,11 @@ +{ + "autorenew_hosting_dashboard_service_guide": "Eliminar imediatamente o alojamento", + "autorenew_hosting_dashboard_close_service_question": "Deseja continuar?", + "autorenew_hosting_dashboard_close_service_success": "O seu pedido de desativação do alojamento foi registado. Um e-mail com o procedimento foi-lhe enviado.", + "autorenew_hosting_dashboard_close_service_error": "Ocorreu um erro durante o pedido de eliminação do seu alojamento:", + "autorenew_hosting_dashboard_close_service": "Eliminar imediatamente o meu alojamento", + "autorenew_hosting_dashboard_close_service_warning": "A eliminação de um alojamento apaga definitivamente todos os dados correspondentes. A operação de eliminação de um alojamento não garante o direito a reembolso.", + "autorenew_hosting_dashboard_close_service_desc1": "Receberá por e-mail o procedimento de encerramento do seu alojamento, e assim que o confirmar, a eliminação será imediata.", + "autorenew_hosting_dashboard_close_confirm": "Validar", + "autorenew_hosting_dashboard_close_cancel": "Anular" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/billing-autoRenew-terminatePrivateDatabase.controller.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/billing-autoRenew-terminatePrivateDatabase.controller.js new file mode 100644 index 000000000000..13cc7db4e5af --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/billing-autoRenew-terminatePrivateDatabase.controller.js @@ -0,0 +1,26 @@ +import get from 'lodash/get'; + +export default class { + /* @ngInject */ + constructor($translate) { + this.$translate = $translate; + } + + onSuccess() { + this.goBack( + this.$translate.instant( + 'autorenew_privateDatabase_dashboard_close_service_success', + ), + ); + } + + onError(error) { + this.goBack( + this.$translate.instant( + 'autorenew_privateDatabase_dashboard_close_service_error', + get(error, 'data.message'), + ), + 'danger', + ); + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/billing-autoRenew-terminatePrivateDatabase.html b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/billing-autoRenew-terminatePrivateDatabase.html new file mode 100644 index 000000000000..39110d41793f --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/billing-autoRenew-terminatePrivateDatabase.html @@ -0,0 +1,17 @@ + + + + +

+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/private-database.component.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/private-database.component.js new file mode 100644 index 000000000000..f2c691641703 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/private-database.component.js @@ -0,0 +1,11 @@ +import controller from './billing-autoRenew-terminatePrivateDatabase.controller'; +import template from './billing-autoRenew-terminatePrivateDatabase.html'; + +export default { + bindings: { + goBack: '<', + terminateHostingPrivateDatabase: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/private-database.module.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/private-database.module.js new file mode 100644 index 000000000000..4c9cbc2eb9bf --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/private-database.module.js @@ -0,0 +1,22 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import component from './private-database.component'; +import routing from './private-database.routing'; + +const moduleName = 'ovhManagerBillingAutorenewTerminatePrivateDatabase'; + +angular + .module(moduleName, [ + angularTranslate, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .config(routing) + .component('billingAutorenewTerminatePrivateDatabase', component); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/private-database.routing.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/private-database.routing.js new file mode 100644 index 000000000000..5ee816e7a5a2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/private-database.routing.js @@ -0,0 +1,25 @@ +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.terminatePrivateDatabase', { + url: '/delete-hosting-private-database?serviceId', + views: { + modal: { + component: 'billingAutorenewTerminatePrivateDatabase', + }, + }, + layout: 'modal', + translations: { value: ['.'], format: 'json' }, + resolve: { + goBack: /* @ngInject */ (goToAutorenew) => goToAutorenew, + serviceId: /* @ngInject */ ($transition$) => + $transition$.params().serviceId, + terminateHostingPrivateDatabase: /* @ngInject */ ( + BillingAutoRenew, + serviceId, + ) => () => BillingAutoRenew.terminateHostingPrivateDatabase(serviceId), + breadcrumb: () => null, + }, + atInternet: { + ignore: true, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_de_DE.json new file mode 100644 index 000000000000..4c7be059b7f1 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_de_DE.json @@ -0,0 +1,9 @@ +{ + "autorenew_privateDatabase_dashboard_close_service": "Mein SQL Private Hosting sofort löschen", + "autorenew_privateDatabase_dashboard_close_service_success": "Ihre Anfrage zur Schließung des SQL Private Hostings wurde registriert. Eine E-Mail mit weiteren Informationen zur Vorgehensweise wurde soeben an Sie versandt.", + "autorenew_privateDatabase_dashboard_close_service_error": "Bei der Kündigungsanfrage für Ihr SQL Private Hosting ist ein Fehler aufgetreten:", + "autorenew_privateDatabase_dashboard_close_service_warning": "Beim Löschen eines Hostings werden automatisch alle zugehörigen Daten unwiderruflich gelöscht. Das Löschen des Hostings bedeutet keine Garantie zur Rückerstattung.", + "autorenew_privateDatabase_dashboard_close_service_desc1": "Sie erhalten in Kürze eine E-Mail mit Informationen zur Schließung Ihres Hostings von uns und können die Löschung dann sofort bestätigen.", + "autorenew_privateDatabase_dashboard_close_confirm": "Bestätigen", + "autorenew_privateDatabase_dashboard_close_cancel": "Abbrechen" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_en_GB.json new file mode 100644 index 000000000000..6e1b4acd59fb --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_en_GB.json @@ -0,0 +1,9 @@ +{ + "autorenew_privateDatabase_dashboard_close_service": "Delete my Private SQL hosting service immediately", + "autorenew_privateDatabase_dashboard_close_service_success": "Your request to close the Private SQL web hosting service has been processed. You have been sent an email detailing the procedure to follow.", + "autorenew_privateDatabase_dashboard_close_service_error": "An error has occurred submitting a request to close your Private SQL hosting service:", + "autorenew_privateDatabase_dashboard_close_service_warning": "Deleting a web hosting plan will permanently erase all corresponding data. The process of deleting a web hosting plan does not entitle you to a refund.", + "autorenew_privateDatabase_dashboard_close_service_desc1": "You will get an email containing the procedure for closing your web hosting plan, so you can confirm that you want it deleted immediately.", + "autorenew_privateDatabase_dashboard_close_confirm": "Confirm", + "autorenew_privateDatabase_dashboard_close_cancel": "Cancel" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_es_ES.json new file mode 100644 index 000000000000..9d55f6eb5fc6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_es_ES.json @@ -0,0 +1,9 @@ +{ + "autorenew_privateDatabase_dashboard_close_service": "Eliminar inmediatamente mi alojamiento SQL Privado", + "autorenew_privateDatabase_dashboard_close_service_success": "La solicitud de cierre de su alojamiento SQL Privado se ha enviado. Le hemos enviado un mensaje de correo electrónico con el procedimiento que debe seguir.", + "autorenew_privateDatabase_dashboard_close_service_error": "Se ha producido un error al solicitar el cierre de su alojamiento SQL Privado:", + "autorenew_privateDatabase_dashboard_close_service_warning": "La eliminación de este alojamiento provocará el borrado definitivo de todos los datos correspondientes. La acción de eliminar un alojamiento no implica ninguna devolución.", + "autorenew_privateDatabase_dashboard_close_service_desc1": "Recibirá por correo electrónico un mensaje con el procedimiento de cierre del alojamiento desde el que podrá confirmar la eliminación inmediata.", + "autorenew_privateDatabase_dashboard_close_confirm": "Aceptar", + "autorenew_privateDatabase_dashboard_close_cancel": "Cancelar" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..7ae3920ff294 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_fr_CA.json @@ -0,0 +1,9 @@ +{ + "autorenew_privateDatabase_dashboard_close_service": "Supprimer immédiatement mon hébergement SQL privé", + "autorenew_privateDatabase_dashboard_close_service_success": "Votre demande de fermeture d'hébergement SQL privé a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.", + "autorenew_privateDatabase_dashboard_close_service_error": "Une erreur est survenue lors de la demande de fermeture de votre hébergement SQL privé :", + "autorenew_privateDatabase_dashboard_close_service_warning": "La suppression d'un hébergement entraîne l'effacement définitif de toutes les données correspondantes. L'action de supprimer un hébergement n'octroie aucun remboursement.", + "autorenew_privateDatabase_dashboard_close_service_desc1": "Un e-mail contenant la procédure de fermeture de votre hébergement vous permettant de valider la suppression immédiate vous sera envoyé.", + "autorenew_privateDatabase_dashboard_close_confirm": "Valider", + "autorenew_privateDatabase_dashboard_close_cancel": "Annuler" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..7ae3920ff294 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_fr_FR.json @@ -0,0 +1,9 @@ +{ + "autorenew_privateDatabase_dashboard_close_service": "Supprimer immédiatement mon hébergement SQL privé", + "autorenew_privateDatabase_dashboard_close_service_success": "Votre demande de fermeture d'hébergement SQL privé a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.", + "autorenew_privateDatabase_dashboard_close_service_error": "Une erreur est survenue lors de la demande de fermeture de votre hébergement SQL privé :", + "autorenew_privateDatabase_dashboard_close_service_warning": "La suppression d'un hébergement entraîne l'effacement définitif de toutes les données correspondantes. L'action de supprimer un hébergement n'octroie aucun remboursement.", + "autorenew_privateDatabase_dashboard_close_service_desc1": "Un e-mail contenant la procédure de fermeture de votre hébergement vous permettant de valider la suppression immédiate vous sera envoyé.", + "autorenew_privateDatabase_dashboard_close_confirm": "Valider", + "autorenew_privateDatabase_dashboard_close_cancel": "Annuler" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_it_IT.json new file mode 100644 index 000000000000..17b4ae6a38c4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_it_IT.json @@ -0,0 +1,9 @@ +{ + "autorenew_privateDatabase_dashboard_close_service": "Elimina subito il tuo hosting SQL privato", + "autorenew_privateDatabase_dashboard_close_service_success": "La richiesta di disattivazione dell’hosting SQL Privato è stata presa in carico. Ti abbiamo inviato un’email con la procedura da seguire.", + "autorenew_privateDatabase_dashboard_close_service_error": "Si è verificato un errore durante la richiesta di disattivazione del tuo hosting SQL Privato:", + "autorenew_privateDatabase_dashboard_close_service_warning": "L'eliminazione di un hosting comporta la cancellazione definitiva di tutti i dati ad esso associati. L'operazione di eliminazione non dà diritto ad alcun rimborso.", + "autorenew_privateDatabase_dashboard_close_service_desc1": "Riceverai un'email con la procedura da seguire per confermare l'eliminazione immediata del tuo hosting.", + "autorenew_privateDatabase_dashboard_close_confirm": "Conferma", + "autorenew_privateDatabase_dashboard_close_cancel": "Annulla" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..6caf4dc3862a --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_pl_PL.json @@ -0,0 +1,9 @@ +{ + "autorenew_privateDatabase_dashboard_close_service": "Usuń natychmiast Serwer Private SQL", + "autorenew_privateDatabase_dashboard_close_service_success": "Zlecenie zamknięcia serwera Private SQL zostało zarejestrowane. Otrzymasz e-mail z opisem dalszej procedury.", + "autorenew_privateDatabase_dashboard_close_service_error": "Wystąpił błąd podczas zlecenia zakończenia umowy dla serwera Private SQL:", + "autorenew_privateDatabase_dashboard_close_service_warning": "Rezygnacja z hostingu spowoduje trwałe usunięcie wszystkich powiązanych z nim danych. Usunięcie hostingu nie stanowi podstawy do zwrotu środków.", + "autorenew_privateDatabase_dashboard_close_service_desc1": "Otrzymasz e-mail z opisem procedury zamknięcia hostingu.", + "autorenew_privateDatabase_dashboard_close_confirm": "Zatwierdź", + "autorenew_privateDatabase_dashboard_close_cancel": "Anuluj" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..4b668380fcfd --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminatePrivateDatabase/translations/Messages_pt_PT.json @@ -0,0 +1,9 @@ +{ + "autorenew_privateDatabase_dashboard_close_service": "Eliminar imediatamente o meu alojamento SQL privado", + "autorenew_privateDatabase_dashboard_close_service_success": "O seu pedido de desativação do alojamento SQL privado foi registado. Um e-mail com o procedimento foi-lhe enviado.", + "autorenew_privateDatabase_dashboard_close_service_error": "Ocorreu um erro ao solicitar o encerramento do seu alojamento SQL privado:", + "autorenew_privateDatabase_dashboard_close_service_warning": "A eliminação de um alojamento apaga definitivamente todos os dados correspondentes. A operação de eliminação de um alojamento não garante o direito a reembolso.", + "autorenew_privateDatabase_dashboard_close_service_desc1": "Receberá por e-mail o procedimento de encerramento do seu alojamento, e assim que o confirmar, a eliminação será imediata.", + "autorenew_privateDatabase_dashboard_close_confirm": "Validar", + "autorenew_privateDatabase_dashboard_close_cancel": "Anular" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/automatic.component.js b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/automatic.component.js new file mode 100644 index 000000000000..fd88951cea35 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/automatic.component.js @@ -0,0 +1,9 @@ +import template from './automatic.html'; + +export default { + bindings: { + paymentMean: '<', + service: '<', + }, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/automatic.html b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/automatic.html new file mode 100644 index 000000000000..9668c204873f --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/automatic.html @@ -0,0 +1,20 @@ +

+

+

diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/automatic.module.js b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/automatic.module.js new file mode 100644 index 000000000000..14a077ffaa1a --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/automatic.module.js @@ -0,0 +1,14 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; + +import component from './automatic.component'; + +const moduleName = 'ovhManagerBillingAutorenewUpdateAutomatic'; + +angular + .module(moduleName, [angularTranslate, ngTranslateAsyncLoader]) + .component('billingAutorenewUpdateAutomatic', component) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_de_DE.json new file mode 100644 index 000000000000..03d39789b19d --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_de_DE.json @@ -0,0 +1,5 @@ +{ + "billing_autorenew_service_update_automatic_sumup": "Sie haben für Ihren Dienst {{ serviceName }} die automatische Verlängerung ausgewählt", + "billing_autorenew_service_update_automatic_frequency": "Der Dienst wird ab dem {{ date }} alle {{ period }} Monate automatisch verlängert", + "billing_autorenew_service_update_automatic_paymentmean": "Der Betrag wird Ihrem Standardzahlungsmittel abgezogen: {{ type }} {{ name }}." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_en_GB.json new file mode 100644 index 000000000000..3cf2456311db --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_en_GB.json @@ -0,0 +1,5 @@ +{ + "billing_autorenew_service_update_automatic_sumup": "You have selected automatic payment for your {{ serviceName }} service", + "billing_autorenew_service_update_automatic_frequency": "This service will be automatically renewed every {{ period }} months from {{ date }}", + "billing_autorenew_service_update_automatic_paymentmean": "The payment will be taken via your default payment method: {{ type }} {{ name }}." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_es_ES.json new file mode 100644 index 000000000000..f62dee729cf5 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_es_ES.json @@ -0,0 +1,5 @@ +{ + "billing_autorenew_service_update_automatic_sumup": "Ha seleccionado el pago automático para el servicio {{ serviceName }}.", + "billing_autorenew_service_update_automatic_frequency": "El servicio se renovará automáticamente cada {{ period }} meses, a partir del {{ date }}.", + "billing_autorenew_service_update_automatic_paymentmean": "El importe se cargará en su forma de pago por defecto: {{ type }} {{ name }}." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..9233a26dae91 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_fr_CA.json @@ -0,0 +1,5 @@ +{ + "billing_autorenew_service_update_automatic_sumup": "Vous avez sélectionné le paiement automatique pour votre service {{ serviceName }}", + "billing_autorenew_service_update_automatic_frequency": "Ce service sera automatique renouvelé tous les {{ period }} mois à compter du {{ date }}", + "billing_autorenew_service_update_automatic_paymentmean": "Le montant sera prélevé sur votre moyen de paiement par défaut : {{ type }} {{ name }}." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..9233a26dae91 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_fr_FR.json @@ -0,0 +1,5 @@ +{ + "billing_autorenew_service_update_automatic_sumup": "Vous avez sélectionné le paiement automatique pour votre service {{ serviceName }}", + "billing_autorenew_service_update_automatic_frequency": "Ce service sera automatique renouvelé tous les {{ period }} mois à compter du {{ date }}", + "billing_autorenew_service_update_automatic_paymentmean": "Le montant sera prélevé sur votre moyen de paiement par défaut : {{ type }} {{ name }}." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_it_IT.json new file mode 100644 index 000000000000..a0e070bcaa7d --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_it_IT.json @@ -0,0 +1,5 @@ +{ + "billing_autorenew_service_update_automatic_sumup": "Hai selezionato il pagamento automatico per il servizio {{ serviceName }}.", + "billing_autorenew_service_update_automatic_frequency": "Il servizio verrà rinnovato ogni {{ period }} mesi a partire dal {{ date }}", + "billing_autorenew_service_update_automatic_paymentmean": "L’importo verrà prelevato dal tuo metodo di pagamento predefinito: {{ type }} {{ name }}." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..84ed737ac0e1 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_pl_PL.json @@ -0,0 +1,5 @@ +{ + "billing_autorenew_service_update_automatic_sumup": "Wybrałeś płatność automatyczną za usługę {{serviceName}}.", + "billing_autorenew_service_update_automatic_frequency": "Ta usługa będzie automatycznie odnawiana co {{period}} miesiąc począwszy od {{date}}.", + "billing_autorenew_service_update_automatic_paymentmean": "Należność będzie pobierana z Twojego domyślnego sposobu płatności: {{type}} {{name}}." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..2120183d3ca1 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/automatic/translations/Messages_pt_PT.json @@ -0,0 +1,5 @@ +{ + "billing_autorenew_service_update_automatic_sumup": "Selecionou o pagamento automático para o serviço {{ serviceName }}", + "billing_autorenew_service_update_automatic_frequency": "Este serviço será automaticamente renovado todos os {{ period }} meses a partir de {{ date }}", + "billing_autorenew_service_update_automatic_paymentmean": "O montante será debitado no seu método de pagamento predefinido: {{ type }} {{ name }}." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/form.component.js b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/form.component.js new file mode 100644 index 000000000000..236d1cd83798 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/form.component.js @@ -0,0 +1,12 @@ +import controller from './form.controller'; +import template from './form.html'; + +export default { + bindings: { + hasAgreed: '=', + autorenewAgreements: '<', + service: '=', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/form.constants.js b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/form.constants.js new file mode 100644 index 000000000000..cdecad72516f --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/form.constants.js @@ -0,0 +1,8 @@ +export const RENEWAL_TYPES = { + AUTOMATIC: 'automatic', + MANUAL: 'manualPayment', +}; + +export default { + RENEWAL_TYPES, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/form.controller.js b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/form.controller.js new file mode 100644 index 000000000000..7aae461d69b2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/form.controller.js @@ -0,0 +1,56 @@ +import find from 'lodash/find'; +import head from 'lodash/head'; +import remove from 'lodash/remove'; +import { RENEWAL_TYPES } from './form.constants'; + +export default class { + /* @ngInject */ + constructor($translate, Alerter, BillingAutorenewUpdateForm) { + this.Alerter = Alerter; + this.$translate = $translate; + this.BillingAutorenewUpdateForm = BillingAutorenewUpdateForm; + } + + $onInit() { + this.BillingAutorenewUpdateForm.getAvailableRenewPeriods(this.service) + .then((periods) => { + this.PERIODS = periods; + this.RENEWAL_TYPES = this.BillingAutorenewUpdateForm.getRenewalTypes(); + this.model = { + renewalType: + find(this.RENEWAL_TYPES, { type: this.service.getRenew() }) || + head(this.RENEWAL_TYPES), + period: + find(this.PERIODS, { period: this.service.renew.period }) || + head(this.PERIODS), + }; + this.onRenewalTypeChange(this.model.renewalType); + this.onPeriodChange(this.model.period); + }) + .catch((error) => + this.Alerter.set( + 'alert-danger', + this.$translate.instant('billing_autorenew_service_update_error', { + message: error.data?.message, + }), + ), + ); + + if (this.service.getRenew() === RENEWAL_TYPES.MANUAL) { + remove(this.RENEWAL_TYPES, { type: RENEWAL_TYPES.MANUAL }); + this.service.setAutomaticRenew(); + } + } + + onRenewalTypeChange(renewalType) { + if (renewalType.type === RENEWAL_TYPES.AUTOMATIC) { + this.service.setAutomaticRenew(this.model.period.period); + } else { + this.service.setManualRenew(); + } + } + + onPeriodChange(period) { + this.service.setRenewPeriod(period.period); + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/form.html b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/form.html new file mode 100644 index 000000000000..841378ca36df --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/form.html @@ -0,0 +1,47 @@ +

+

+ + +
+ + + +
+ + + + +
+
+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/form.module.js b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/form.module.js new file mode 100644 index 000000000000..a3eac9d38a16 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/form.module.js @@ -0,0 +1,23 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import component from './form.component'; +import service from './form.service'; + +const moduleName = 'ovhManagerBillingAutorenewUpdateForm'; + +angular + .module(moduleName, [ + angularTranslate, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .component('billingAutorenewUpdateForm', component) + .service('BillingAutorenewUpdateForm', service) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/form.service.js b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/form.service.js new file mode 100644 index 000000000000..b7d7acac7173 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/form.service.js @@ -0,0 +1,36 @@ +import get from 'lodash/get'; +import map from 'lodash/map'; +import values from 'lodash/values'; +import { RENEWAL_TYPES } from './form.constants'; + +export default class { + /* @ngInject */ + constructor($http, $translate) { + this.$http = $http; + this.$translate = $translate; + } + + getAvailableRenewPeriods(service) { + return this.$http + .get(`${get(service, 'route.url')}/serviceInfos`) + .then(({ data }) => get(data, 'possibleRenewPeriod')) + .then((possibleRenewPeriod) => { + return map(possibleRenewPeriod, (period) => ({ + period, + label: this.$translate.instant( + 'billing_autorenew_service_update_service_period_value', + { month: period }, + ), + })); + }); + } + + getRenewalTypes() { + return map(values(RENEWAL_TYPES), (type) => ({ + type, + label: this.$translate.instant( + `billing_autorenew_service_update_service_${type}`, + ), + })); + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_de_DE.json new file mode 100644 index 000000000000..7c88984f534d --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_de_DE.json @@ -0,0 +1,8 @@ +{ + "billing_autorenew_service_update_form_description": "Wählen Sie die gewünschte Verlängerungsart aus (automatisch oder manuell). Bei der automatischen Verlängerung können Sie auch das gewünschte Zahlungsintervall auswählen.", + "billing_autorenew_service_update_form_service_renewal": "Verlängerungsart", + "billing_autorenew_service_update_form_service_automatic": "Automatisch", + "billing_autorenew_service_update_form_service_manualPayment": "Manuell", + "billing_autorenew_service_update_form_service_period": "Intervall", + "billing_autorenew_service_update_form_service_period_value": "{{ month }} Monate" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_en_GB.json new file mode 100644 index 000000000000..ddebf91d7db6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_en_GB.json @@ -0,0 +1,8 @@ +{ + "billing_autorenew_service_update_form_description": "Choose the type of renewal you would like (automatic or manual). For automatic renewal, you can also choose how often you pay.", + "billing_autorenew_service_update_form_service_renewal": "Renewal type", + "billing_autorenew_service_update_form_service_automatic": "Automatic", + "billing_autorenew_service_update_form_service_manualPayment": "Manual", + "billing_autorenew_service_update_form_service_period": "Frequency", + "billing_autorenew_service_update_form_service_period_value": "{{ month }} months" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_es_ES.json new file mode 100644 index 000000000000..8b291c08950a --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_es_ES.json @@ -0,0 +1,8 @@ +{ + "billing_autorenew_service_update_form_description": "Elija el tipo de renovación que desee (automática o manual). Para la renovación automática, también puede elegir la frecuencia de los cargos.", + "billing_autorenew_service_update_form_service_renewal": "Modo de renovación", + "billing_autorenew_service_update_form_service_automatic": "Automática", + "billing_autorenew_service_update_form_service_manualPayment": "Manual", + "billing_autorenew_service_update_form_service_period": "Frecuencia", + "billing_autorenew_service_update_form_service_period_value": "{{ month }} mes(es)" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..b145fc6da888 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_fr_CA.json @@ -0,0 +1,8 @@ +{ + "billing_autorenew_service_update_form_description": "Choisissez le type de renouvellement souhaité (automatique ou manuel). Pour le renouvellement automatique, vous pourrez également choisir la fréquence des prélèvements.", + "billing_autorenew_service_update_form_service_renewal": "Type de renouvellement", + "billing_autorenew_service_update_form_service_automatic": "Automatique", + "billing_autorenew_service_update_form_service_manualPayment": "Manuel", + "billing_autorenew_service_update_form_service_period": "Fréquence", + "billing_autorenew_service_update_form_service_period_value": "{{ month }} mois" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..b145fc6da888 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_fr_FR.json @@ -0,0 +1,8 @@ +{ + "billing_autorenew_service_update_form_description": "Choisissez le type de renouvellement souhaité (automatique ou manuel). Pour le renouvellement automatique, vous pourrez également choisir la fréquence des prélèvements.", + "billing_autorenew_service_update_form_service_renewal": "Type de renouvellement", + "billing_autorenew_service_update_form_service_automatic": "Automatique", + "billing_autorenew_service_update_form_service_manualPayment": "Manuel", + "billing_autorenew_service_update_form_service_period": "Fréquence", + "billing_autorenew_service_update_form_service_period_value": "{{ month }} mois" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_it_IT.json new file mode 100644 index 000000000000..a639ee0b7b31 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_it_IT.json @@ -0,0 +1,8 @@ +{ + "billing_autorenew_service_update_form_description": "Scegli il tipo di rinnovo (automatico o manuale). Per il rinnovo automatico, è possibile scegliere anche la frequenza degli addebiti.", + "billing_autorenew_service_update_form_service_renewal": "Tipo di rinnovo", + "billing_autorenew_service_update_form_service_automatic": "Automatico", + "billing_autorenew_service_update_form_service_manualPayment": "Manuale", + "billing_autorenew_service_update_form_service_period": "Frequenza", + "billing_autorenew_service_update_form_service_period_value": "{{ month }} mesi" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..8a79b5f69d4d --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_pl_PL.json @@ -0,0 +1,8 @@ +{ + "billing_autorenew_service_update_form_description": "Wybierz sposób odnawiania (automatyczny lub ręczny). W przypadku odnowienia automatycznego będziesz mógł wybrać częstotliwość przelewów.", + "billing_autorenew_service_update_form_service_renewal": "Sposób odnowienia", + "billing_autorenew_service_update_form_service_automatic": "Automatycznie", + "billing_autorenew_service_update_form_service_manualPayment": "Ręcznie", + "billing_autorenew_service_update_form_service_period": "Częstotliwość", + "billing_autorenew_service_update_form_service_period_value": "{{month}} miesiąc" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..b9b1372ed176 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/form/translations/Messages_pt_PT.json @@ -0,0 +1,8 @@ +{ + "billing_autorenew_service_update_form_description": "Escolha o tipo de renovação desejada (automática ou manual). Para a renovação automática, deverá igualmente escolher a frequência dos débitos.", + "billing_autorenew_service_update_form_service_renewal": "Tipo de renovação", + "billing_autorenew_service_update_form_service_automatic": "Automático", + "billing_autorenew_service_update_form_service_manualPayment": "Manual", + "billing_autorenew_service_update_form_service_period": "Frequência", + "billing_autorenew_service_update_form_service_period_value": "{{ month }} mês/meses" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/manualPayment.component.js b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/manualPayment.component.js new file mode 100644 index 000000000000..7cb4ec21f535 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/manualPayment.component.js @@ -0,0 +1,10 @@ +import template from './manualPayment.html'; +import controller from './manualPayment.controller'; + +export default { + bindings: { + service: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/manualPayment.constants.js b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/manualPayment.constants.js new file mode 100644 index 000000000000..46f1f25a546e --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/manualPayment.constants.js @@ -0,0 +1,2 @@ +export const GUIDE_LINK = + ' https://help.ovhcloud.com/csm/fr-web-hosting-faq?id=kb_article_view&sysparm_article=KB0052676'; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/manualPayment.controller.js b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/manualPayment.controller.js new file mode 100644 index 000000000000..23573c564eaa --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/manualPayment.controller.js @@ -0,0 +1,8 @@ +import { GUIDE_LINK } from './manualPayment.constants'; + +export default class { + $onInit() { + this.GuideLink = GUIDE_LINK; + this.showAlertBanner = this.service.isHostingWeb; + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/manualPayment.html b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/manualPayment.html new file mode 100644 index 000000000000..b8cc72b721f6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/manualPayment.html @@ -0,0 +1,38 @@ + + +

+

+

+

+

diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/manualPayment.module.js b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/manualPayment.module.js new file mode 100644 index 000000000000..df7d580c46d6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/manualPayment.module.js @@ -0,0 +1,14 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; + +import component from './manualPayment.component'; + +const moduleName = 'ovhManagerBillingAutorenewUpdateManualPayment'; + +angular + .module(moduleName, [angularTranslate, ngTranslateAsyncLoader]) + .component('billingAutorenewUpdateManualPayment', component) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_de_DE.json new file mode 100644 index 000000000000..7271cf8357f6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_de_DE.json @@ -0,0 +1,10 @@ +{ + "billing_autorenew_service_update_manual_sumup": "Sie haben für Ihren Dienst {{ serviceName }} die manuelle Verlängerung ausgewählt", + "billing_autorenew_service_update_manual_non_automatic": "In diesem Verlängerungsmodus wird Ihr Dienst am Ablaufdatum nicht mehr automatisch verlängert.", + "billing_autorenew_service_update_manual_expiration": "In den Wochen/Tagen vor Ablauf des Dienstes erhalten Sie mehrere E-Mail-Benachrichtigungen, um Sie auf das Ablaufdatum am {{ expiration }} hinzuweisen.", + "billing_autorenew_service_update_manual_renew": "Wenn Sie Ihren Dienst weiterhin nutzen möchten, können Sie ihn einfach verlängern.", + "billing_autorenew_service_update_manual_warning": "Achtung: Sobald der Dienst abgelaufen ist, wird er umgehend geschlossen. Er ist dann nicht mehr erreichbar und die zugehörigen Daten werden ohne Aktion Ihrerseits innerhalb weniger Tage unwiderruflich gelöscht.", + "billing_autorenew_service_update_manual_warning_banner_hosting_impact": "Achtung: Die Deaktivierung der automatischen Verlängerung wirkt sich auch auf die mit Ihrem Shared Hosting verbundenen Produkte aus.", + "billing_autorenew_service_update_manual_warning_banner_email_instructions": "Wenn Sie die E-Mails behalten möchten, sollten Sie diese ab sofort trennen.", + "billing_autorenew_service_update_manual_warning_banner_guide_link": "Link zur Anleitung" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_en_GB.json new file mode 100644 index 000000000000..4829df8d8766 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_en_GB.json @@ -0,0 +1,10 @@ +{ + "billing_autorenew_service_update_manual_sumup": "You have selected manual renewal for your {{ serviceName }} service", + "billing_autorenew_service_update_manual_non_automatic": "With this renewal method, your service will not be renewed automatically when it reaches its expiry date.", + "billing_autorenew_service_update_manual_expiration": "You will be sent several email notifications in the weeks and days before the expiry date, and they will alert you regarding the expiry on {{ expiration }}.", + "billing_autorenew_service_update_manual_renew": "You will simply need to renew your service if you want to keep using it.", + "billing_autorenew_service_update_manual_warning": "Please note that once the service expires, it will be immediately suspended. It will no longer be accessible, and the data associated with the service will be permanently deleted within a few days if we do not receive any payment.", + "billing_autorenew_service_update_manual_warning_banner_hosting_impact": "Warning: Disabling automatic renewal will also impact the products linked to your web hosting plan.", + "billing_autorenew_service_update_manual_warning_banner_email_instructions": "If you would like to keep your emails, please unsync them.", + "billing_autorenew_service_update_manual_warning_banner_guide_link": "Link to the guide" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_es_ES.json new file mode 100644 index 000000000000..cbe0b3290ef6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_es_ES.json @@ -0,0 +1,10 @@ +{ + "billing_autorenew_service_update_manual_sumup": "Ha seleccionado la renovación manual para el servicio {{ serviceName }}.", + "billing_autorenew_service_update_manual_non_automatic": "Con esta modalidad, el servicio no se renovará automáticamente en la fecha de expiración.", + "billing_autorenew_service_update_manual_expiration": "Recibirá varios mensajes de correo electrónico en las semanas y días previos a la fecha de expiración ({{ expiration }}).", + "billing_autorenew_service_update_manual_renew": "Para conservar el servicio, solo tendrá que renovarlo.", + "billing_autorenew_service_update_manual_warning": "Atención: Una vez que el servicio haya expirado, se suspenderá de forma inmediata y no podrá acceder a él. Los datos asociados al servicio se eliminarán de forma definitiva, si no abona el importe pendiente.", + "billing_autorenew_service_update_manual_warning_banner_hosting_impact": "Atención: La desactivación de la renovación automática también afectará a los productos asociados a su alojamiento compartido.", + "billing_autorenew_service_update_manual_warning_banner_email_instructions": "Si desea conservar los mensajes de correo electrónico, le recomendamos que los desvincule.", + "billing_autorenew_service_update_manual_warning_banner_guide_link": "Enlace a la guía" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..818b6f3622f1 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_fr_CA.json @@ -0,0 +1,10 @@ +{ + "billing_autorenew_service_update_manual_sumup": "Vous avez sélectionné le renouvellement manuel pour votre service {{ serviceName }}", + "billing_autorenew_service_update_manual_non_automatic": "Dans ce mode de renouvellement, votre service n'est pas automatiquement reconduit lorsqu'il arrive à échéance.", + "billing_autorenew_service_update_manual_expiration": "Plusieurs notifications vous seront envoyées par mails durant les semaines/jours précédant son terme, afin de vous prévenir de son expiration le {{ expiration }}.", + "billing_autorenew_service_update_manual_renew": "Il vous suffira de renouveler votre service si vous souhaitez le conserver.", + "billing_autorenew_service_update_manual_warning": "Attention, une fois le service expiré, il sera immédiatement suspendu, il ne sera plus accessible, et les données liées à ce service seront définitivement supprimées au bout de quelques jours sans règlement de votre part.", + "billing_autorenew_service_update_manual_warning_banner_hosting_impact": "Attention : la désactivation du renouvellement automatique affectera aussi les produits liés à votre hébergement mutualisé.", + "billing_autorenew_service_update_manual_warning_banner_email_instructions": "Si vous souhaitez conserver les e-mails, nous vous invitons dès à présent à dissocier ces derniers.", + "billing_autorenew_service_update_manual_warning_banner_guide_link": "Lien vers le guide" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..818b6f3622f1 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_fr_FR.json @@ -0,0 +1,10 @@ +{ + "billing_autorenew_service_update_manual_sumup": "Vous avez sélectionné le renouvellement manuel pour votre service {{ serviceName }}", + "billing_autorenew_service_update_manual_non_automatic": "Dans ce mode de renouvellement, votre service n'est pas automatiquement reconduit lorsqu'il arrive à échéance.", + "billing_autorenew_service_update_manual_expiration": "Plusieurs notifications vous seront envoyées par mails durant les semaines/jours précédant son terme, afin de vous prévenir de son expiration le {{ expiration }}.", + "billing_autorenew_service_update_manual_renew": "Il vous suffira de renouveler votre service si vous souhaitez le conserver.", + "billing_autorenew_service_update_manual_warning": "Attention, une fois le service expiré, il sera immédiatement suspendu, il ne sera plus accessible, et les données liées à ce service seront définitivement supprimées au bout de quelques jours sans règlement de votre part.", + "billing_autorenew_service_update_manual_warning_banner_hosting_impact": "Attention : la désactivation du renouvellement automatique affectera aussi les produits liés à votre hébergement mutualisé.", + "billing_autorenew_service_update_manual_warning_banner_email_instructions": "Si vous souhaitez conserver les e-mails, nous vous invitons dès à présent à dissocier ces derniers.", + "billing_autorenew_service_update_manual_warning_banner_guide_link": "Lien vers le guide" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_it_IT.json new file mode 100644 index 000000000000..d74f2a2fa89a --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_it_IT.json @@ -0,0 +1,10 @@ +{ + "billing_autorenew_service_update_manual_sumup": "Hai selezionato il rinnovo manuale per il servizio {{ serviceName }} ", + "billing_autorenew_service_update_manual_non_automatic": "Questa modalità non consente il rinnovo automatico del servizio alla scadenza.", + "billing_autorenew_service_update_manual_expiration": "Riceverai alcune email di notifica nelle settimane/giorni precedenti alla scadenza, che ti ricorderanno che il servizio sarà attivo fino al {{ expiration }}.", + "billing_autorenew_service_update_manual_renew": "Per mantenere il servizio attivo, sarà sufficiente rinnovarlo.", + "billing_autorenew_service_update_manual_warning": "Attenzione: una volta giunto a scadenza, il servizio viene immediatamente sospeso e non sarà più accessibile. In caso di mancato pagamento da parte tua entro qualche giorno, i dati ad esso associati verranno eliminati definitivamente.", + "billing_autorenew_service_update_manual_warning_banner_hosting_impact": "Attenzione: la disattivazione del rinnovo automatico avrà impatto anche sui prodotti associati al tuo hosting condiviso.", + "billing_autorenew_service_update_manual_warning_banner_email_instructions": "Per conservare le email, ti consigliamo di disassociarle.", + "billing_autorenew_service_update_manual_warning_banner_guide_link": "Link alla guida" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..46304f5228aa --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_pl_PL.json @@ -0,0 +1,10 @@ +{ + "billing_autorenew_service_update_manual_sumup": "Wybrałeś ręczne odnowienie usługi {{serviceName}}.", + "billing_autorenew_service_update_manual_non_automatic": "W tej konfiguracji odnowienia Twoja usługa nie będzie automatycznie odnawiana w dniu jej wygaśnięcia.", + "billing_autorenew_service_update_manual_expiration": "Na kilka tygodni/dni przed wygaśnięciem usługi otrzymasz kilka przypomnień e-mailem o dacie wygaśnięcia {{expiration}}.", + "billing_autorenew_service_update_manual_renew": "Dzięki temu, jeśli chcesz zachować usługę, będziesz mógł ją odnowić.", + "billing_autorenew_service_update_manual_warning": "Uwaga: po wygaśnięciu usługi zostanie ona natychmiast zawieszona i nie będzie już dostępna. W przypadku braku uregulowania płatności dane powiązane z tą usługą zostaną definitywnie usunięte po kilku dniach.", + "billing_autorenew_service_update_manual_warning_banner_hosting_impact": "Uwaga: wyłączenie automatycznego odnowienia wpłynie również na produkty powiązane z Twoim hostingiem.", + "billing_autorenew_service_update_manual_warning_banner_email_instructions": "Jeśli chcesz zachować e-maile, zalecamy, abyś już teraz je odłączył.", + "billing_autorenew_service_update_manual_warning_banner_guide_link": "Link do przewodnika" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..96d7003d0600 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/manualPayment/translations/Messages_pt_PT.json @@ -0,0 +1,10 @@ +{ + "billing_autorenew_service_update_manual_sumup": "Selecionou a renovação manual para o serviço {{ serviceName }}", + "billing_autorenew_service_update_manual_non_automatic": "Neste modo de renovação, o seu serviço não é automaticamente renovado na sua data de expiração.", + "billing_autorenew_service_update_manual_expiration": "Nas semanas/dias anteriores à data de expiração, receberá várias notificações por e-mail a informá-lo da sua expiração a {{ expiration }}.", + "billing_autorenew_service_update_manual_renew": "Para manter o serviço, só precisará de o renovar.", + "billing_autorenew_service_update_manual_warning": "Atenção: uma vez expirado, o serviço será imediatamente suspenso e ficará inacessível. Em caso de falta de pagamento, os dados relativos a este serviço serão definitivamente eliminados ao fim de alguns dias.", + "billing_autorenew_service_update_manual_warning_banner_hosting_impact": "Atenção: a desativação da renovação automática afetará também os produtos associados ao seu alojamento partilhado.", + "billing_autorenew_service_update_manual_warning_banner_email_instructions": "Se pretender conservar os e-mails, convidamo-lo a dissociá-los agora.", + "billing_autorenew_service_update_manual_warning_banner_guide_link": "Link para o guia" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/noPaymentMean.component.js b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/noPaymentMean.component.js new file mode 100644 index 000000000000..12466d558e92 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/noPaymentMean.component.js @@ -0,0 +1,8 @@ +import template from './noPaymentMean.html'; + +export default { + bindings: { + service: '<', + }, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/noPaymentMean.html b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/noPaymentMean.html new file mode 100644 index 000000000000..156f61a54995 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/noPaymentMean.html @@ -0,0 +1,7 @@ +

+

diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/noPaymentMean.module.js b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/noPaymentMean.module.js new file mode 100644 index 000000000000..6158e69a1668 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/noPaymentMean.module.js @@ -0,0 +1,14 @@ +import angular from 'angular'; +import 'angular-translate'; +import '@ovh-ux/ng-translate-async-loader'; + +import component from './noPaymentMean.component'; + +const moduleName = 'ovhManagerBillingAutorenewUpdateWithoutPaymentMean'; + +angular + .module(moduleName, ['ngTranslateAsyncLoader', 'pascalprecht.translate']) + .component('billingAutorenewUpdateWithoutPaymentMean', component) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_de_DE.json new file mode 100644 index 000000000000..2c87381c7a0c --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_de_DE.json @@ -0,0 +1,4 @@ +{ + "billing_autorenew_service_update_no_payment_mean_description": "Sie haben für Ihren Dienst {{ service }} die automatische Verlängerung ausgewählt", + "billing_autorenew_service_update_no_payment_mean_add": "Um diesen Verlängerungsmodus zu verwenden, hinterlegen Sie bitte zunächst ein Zahlungsmittel im Bereich „Meine Zahlungsarten“" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_en_GB.json new file mode 100644 index 000000000000..4848bfaf552a --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_en_GB.json @@ -0,0 +1,4 @@ +{ + "billing_autorenew_service_update_no_payment_mean_description": "You have selected automatic payment for your {{ service }} service", + "billing_autorenew_service_update_no_payment_mean_add": "To use this renewal method, please enter a payment method in the “My payment methods” section." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_es_ES.json new file mode 100644 index 000000000000..d38fbb46639d --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_es_ES.json @@ -0,0 +1,4 @@ +{ + "billing_autorenew_service_update_no_payment_mean_description": "Ha seleccionado el pago automático para el servicio {{ service }}.", + "billing_autorenew_service_update_no_payment_mean_add": "Para poder utilizar esta forma de renovación, debe registrar una forma de pago en la sección «Formas de pago»." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..5f807dd665ab --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_fr_CA.json @@ -0,0 +1,4 @@ +{ + "billing_autorenew_service_update_no_payment_mean_description": "Vous avez sélectionné le paiement automatique pour votre service {{ service }}", + "billing_autorenew_service_update_no_payment_mean_add": "Afin de pouvoir utiliser ce mode de renouvellement, merci d'enregistrer au préalable un moyen de paiement dans la section moyens de paiement" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..5f807dd665ab --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_fr_FR.json @@ -0,0 +1,4 @@ +{ + "billing_autorenew_service_update_no_payment_mean_description": "Vous avez sélectionné le paiement automatique pour votre service {{ service }}", + "billing_autorenew_service_update_no_payment_mean_add": "Afin de pouvoir utiliser ce mode de renouvellement, merci d'enregistrer au préalable un moyen de paiement dans la section moyens de paiement" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_it_IT.json new file mode 100644 index 000000000000..f5406e1f5b4f --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_it_IT.json @@ -0,0 +1,4 @@ +{ + "billing_autorenew_service_update_no_payment_mean_description": "Hai selezionato il pagamento automatico per il servizio {{ service }}.", + "billing_autorenew_service_update_no_payment_mean_add": "Per utilizzare questo metodo di rinnovo è prima necessario salvare un metodo di pagamento valido." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..f46fe87cfb49 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_pl_PL.json @@ -0,0 +1,4 @@ +{ + "billing_autorenew_service_update_no_payment_mean_description": "Wybrałeś płatność automatyczną za usługę {{service}}.", + "billing_autorenew_service_update_no_payment_mean_add": "Aby korzystać z tego sposobu odnowienia, zarejestruj wcześniej sposób płatności w Panelu klienta w sekcji „Sposoby płatności”." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..1dfcc71ea86e --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/noPaymentMean/translations/Messages_pt_PT.json @@ -0,0 +1,4 @@ +{ + "billing_autorenew_service_update_no_payment_mean_description": "Selecionou o pagamento automático para o serviço {{ service }}", + "billing_autorenew_service_update_no_payment_mean_add": "Para poder utilizar este método de renovação, registe primeiro um método de pagamento na secção Métodos de pagamento" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_de_DE.json new file mode 100644 index 000000000000..0d99765cc1e4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_de_DE.json @@ -0,0 +1,15 @@ +{ + "billing_autorenew_service_update_title": "Verlängerung konfigurieren", + "billing_autorenew_service_update_description": "Wählen Sie die gewünschte Verlängerungsart aus (automatisch oder manuell). Bei der automatischen Verlängerung können Sie auch das gewünschte Zahlungsintervall auswählen.", + "billing_autorenew_service_update_service_renewal": "Verlängerungsart", + "billing_autorenew_service_update_service_automatic": "Automatisch", + "billing_autorenew_service_update_service_manualPayment": "Manuell", + "billing_autorenew_service_update_service_period": "Intervall", + "billing_autorenew_service_update_service_period_value": "{{ month }} Monate", + "billing_autorenew_service_update_confirm": "Bestätigen", + "billing_autorenew_service_update_success": "Die Verlängerung des Dienstes {{ service }} wurde erfolgreich aktualisiert. Wenn die Änderung nicht in der Liste angezeigt wird, laden Sie bitte die Seite neu.", + "billing_autorenew_service_update_error": "Bei der Konfiguration der Verlängerung ist ein Fehler aufgetreten {{ message }}", + "billing_autorenew_service_update_add_mean": "Zahlungsmittel hinzufügen", + "billing_autorenew_service_update_validate": "Bestätigung", + "billing_autorenew_service_update_next": "Weiter" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_en_GB.json new file mode 100644 index 000000000000..695a126feb1c --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_en_GB.json @@ -0,0 +1,15 @@ +{ + "billing_autorenew_service_update_title": "Renewal configuration", + "billing_autorenew_service_update_description": "Choose the type of renewal you would like (automatic or manual). For automatic renewal, you can also choose how often you pay.", + "billing_autorenew_service_update_service_renewal": "Renewal type", + "billing_autorenew_service_update_service_automatic": "Automatic", + "billing_autorenew_service_update_service_manualPayment": "Manual", + "billing_autorenew_service_update_service_period": "Frequency", + "billing_autorenew_service_update_service_period_value": "{{ month }} months", + "billing_autorenew_service_update_confirm": "Confirm", + "billing_autorenew_service_update_success": "Renewal for the {{service}} service has been updated. If the change does not appear in the list, please refresh the page.", + "billing_autorenew_service_update_error": "An error has occurred configuring the renewal {{ message }}", + "billing_autorenew_service_update_add_mean": "Add a payment method ", + "billing_autorenew_service_update_validate": "Confirmation", + "billing_autorenew_service_update_next": "Next" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_es_ES.json new file mode 100644 index 000000000000..d5552bbe7737 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_es_ES.json @@ -0,0 +1,15 @@ +{ + "billing_autorenew_service_update_title": "Configuración de la renovación", + "billing_autorenew_service_update_description": "Elija el tipo de renovación que desee (automática o manual). Para la renovación automática, también puede elegir la frecuencia de los cargos.", + "billing_autorenew_service_update_service_renewal": "Modo de renovación", + "billing_autorenew_service_update_service_automatic": "Automática", + "billing_autorenew_service_update_service_manualPayment": "Manual", + "billing_autorenew_service_update_service_period": "Frecuencia", + "billing_autorenew_service_update_service_period_value": "{{ month }} mes(es)", + "billing_autorenew_service_update_confirm": "Confirmar", + "billing_autorenew_service_update_success": "La renovación del servicio {{ service }} se ha actualizado. Si el cambio no aparece en la lista, por favor, vuelva a cargar la página.", + "billing_autorenew_service_update_error": "Se ha producido un error al configurar la renovación: {{message}}.", + "billing_autorenew_service_update_add_mean": "Añadir una forma de pago", + "billing_autorenew_service_update_validate": "Validación", + "billing_autorenew_service_update_next": "Siguiente" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..a5f161608d7d --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_fr_CA.json @@ -0,0 +1,15 @@ +{ + "billing_autorenew_service_update_title": "Configuration du renouvellement", + "billing_autorenew_service_update_description": "Choisissez le type de renouvellement souhaité (automatique ou manuel). Pour le renouvellement automatique, vous pourrez également choisir la fréquence des prélèvements.", + "billing_autorenew_service_update_service_renewal": "Type de renouvellement", + "billing_autorenew_service_update_service_automatic": "Automatique", + "billing_autorenew_service_update_service_manualPayment": "Manuel", + "billing_autorenew_service_update_service_period": "Fréquence", + "billing_autorenew_service_update_service_period_value": "{{ month }} mois", + "billing_autorenew_service_update_confirm": "Confirmer", + "billing_autorenew_service_update_success": "Le renouvellement du service {{ service }} a bien été mis à jour. Si la modification n'apparaît pas dans la liste, veuillez rafraîchir la page.", + "billing_autorenew_service_update_error": "Une erreur est survenue lors de la configuration du renouvellement {{ message }}", + "billing_autorenew_service_update_add_mean": "Ajouter un moyen de paiement", + "billing_autorenew_service_update_validate": "Validation", + "billing_autorenew_service_update_next": "Suivant" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..a5f161608d7d --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_fr_FR.json @@ -0,0 +1,15 @@ +{ + "billing_autorenew_service_update_title": "Configuration du renouvellement", + "billing_autorenew_service_update_description": "Choisissez le type de renouvellement souhaité (automatique ou manuel). Pour le renouvellement automatique, vous pourrez également choisir la fréquence des prélèvements.", + "billing_autorenew_service_update_service_renewal": "Type de renouvellement", + "billing_autorenew_service_update_service_automatic": "Automatique", + "billing_autorenew_service_update_service_manualPayment": "Manuel", + "billing_autorenew_service_update_service_period": "Fréquence", + "billing_autorenew_service_update_service_period_value": "{{ month }} mois", + "billing_autorenew_service_update_confirm": "Confirmer", + "billing_autorenew_service_update_success": "Le renouvellement du service {{ service }} a bien été mis à jour. Si la modification n'apparaît pas dans la liste, veuillez rafraîchir la page.", + "billing_autorenew_service_update_error": "Une erreur est survenue lors de la configuration du renouvellement {{ message }}", + "billing_autorenew_service_update_add_mean": "Ajouter un moyen de paiement", + "billing_autorenew_service_update_validate": "Validation", + "billing_autorenew_service_update_next": "Suivant" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_it_IT.json new file mode 100644 index 000000000000..3d6f53660e9a --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_it_IT.json @@ -0,0 +1,15 @@ +{ + "billing_autorenew_service_update_title": "Configura il rinnovo", + "billing_autorenew_service_update_description": "Scegli il tipo di rinnovo (automatico o manuale). Per il rinnovo automatico, è possibile scegliere anche la frequenza degli addebiti.", + "billing_autorenew_service_update_service_renewal": "Tipo di rinnovo", + "billing_autorenew_service_update_service_automatic": "Automatico", + "billing_autorenew_service_update_service_manualPayment": "Manuale", + "billing_autorenew_service_update_service_period": "Frequenza", + "billing_autorenew_service_update_service_period_value": "{{ month }} mesi", + "billing_autorenew_service_update_confirm": "Conferma", + "billing_autorenew_service_update_success": "Il rinnovo del servizio {{ service }} è stato aggiornato correttamente. Se la modifica non compare nella lista, aggiorna la pagina.", + "billing_autorenew_service_update_error": "Si è verificato un errore durante la configurazione del rinnovo: {{message}}", + "billing_autorenew_service_update_add_mean": "Aggiungi un metodo di pagamento", + "billing_autorenew_service_update_validate": "Conferma", + "billing_autorenew_service_update_next": "Continua" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..e6b265e81bc3 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_pl_PL.json @@ -0,0 +1,15 @@ +{ + "billing_autorenew_service_update_title": "Konfiguracja odnowienia", + "billing_autorenew_service_update_description": "Wybierz sposób odnawiania (automatyczny lub ręczny). W przypadku odnowienia automatycznego będziesz mógł wybrać częstotliwość przelewów.", + "billing_autorenew_service_update_service_renewal": "Sposób odnowienia", + "billing_autorenew_service_update_service_automatic": "Automatycznie", + "billing_autorenew_service_update_service_manualPayment": "Ręcznie", + "billing_autorenew_service_update_service_period": "Częstotliwość", + "billing_autorenew_service_update_service_period_value": "{{month}} miesiąc", + "billing_autorenew_service_update_confirm": "Zatwierdź", + "billing_autorenew_service_update_success": "Odnowienie usługi {{service}} zostało zaktualizowane. Jeśli modyfikacja nie wyświetla się na liście, odśwież stronę.", + "billing_autorenew_service_update_error": "Wystąpił błąd podczas konfiguracji odnowienia {{message}}.", + "billing_autorenew_service_update_add_mean": "Dodaj sposób płatności", + "billing_autorenew_service_update_validate": "Weryfikacja", + "billing_autorenew_service_update_next": "Dalej" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..f4ff9c8c4c46 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/translations/Messages_pt_PT.json @@ -0,0 +1,15 @@ +{ + "billing_autorenew_service_update_title": "Configuração da renovação", + "billing_autorenew_service_update_description": "Escolha o tipo de renovação desejada (automática ou manual). Para a renovação automática, deverá igualmente escolher a frequência dos débitos.", + "billing_autorenew_service_update_service_renewal": "Tipo de renovação", + "billing_autorenew_service_update_service_automatic": "Automático", + "billing_autorenew_service_update_service_manualPayment": "Manual", + "billing_autorenew_service_update_service_period": "Frequência", + "billing_autorenew_service_update_service_period_value": "{{ month }} mês/meses", + "billing_autorenew_service_update_confirm": "Confirmar", + "billing_autorenew_service_update_success": "A renovação do serviço {{ service }} foi atualizada. Se a alteração não aparecer na lista, atualize a página.", + "billing_autorenew_service_update_error": "Ocorreu um erro durante a configuração da renovação {{ message }}", + "billing_autorenew_service_update_add_mean": "Adicionar um método de pagamento", + "billing_autorenew_service_update_validate": "Validação", + "billing_autorenew_service_update_next": "Seguinte" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/update.component.js b/packages/manager/modules/new-billing/src/autoRenew/actions/update/update.component.js new file mode 100644 index 000000000000..11336c4a5ba5 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/update.component.js @@ -0,0 +1,15 @@ +import controller from './update.controller'; +import template from './update.html'; + +export default { + bindings: { + addPaymentMean: '<', + autorenewAgreements: '<', + defaultPaymentMean: '<', + goBack: '<', + service: '<', + updateRenew: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/update.controller.js b/packages/manager/modules/new-billing/src/autoRenew/actions/update/update.controller.js new file mode 100644 index 000000000000..973e3d32eef0 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/update.controller.js @@ -0,0 +1,81 @@ +import get from 'lodash/get'; +import kebabCase from 'lodash/kebabCase'; + +import { BillingService } from '@ovh-ux/manager-models'; + +export default class { + /* @ngInject */ + constructor($translate, atInternet, Alerter) { + this.$translate = $translate; + this.atInternet = atInternet; + this.Alerter = Alerter; + } + + $onInit() { + this.currentRenew = { ...this.service.renew }; + this.billingService = new BillingService(this.service); + + this.model = { + agreements: this.autorenewAgreements.length === 0, + }; + } + + switchStep() { + this.displayConfirmation = !this.displayConfirmation; + } + + update() { + this.isUpdating = true; + return this.updateRenew(this.billingService, this.autorenewAgreements) + .then(() => + this.goBack( + this.$translate.instant('billing_autorenew_service_update_success'), + ), + ) + .catch((error) => + this.Alerter.set( + 'alert-danger', + this.$translate.instant('billing_autorenew_service_update_error', { + message: get(error, 'data.message'), + }), + ), + ) + .finally(() => { + this.isUpdating = false; + }); + } + + onConfirmation() { + this.atInternet.trackEvent({ + event: `autorenew::${kebabCase( + this.service.serviceType, + )}::validate-config`, + page: `dedicated::account::billing::autorenew::${kebabCase( + this.service.serviceType, + )}::validate-config`, + chapter1: 'dedicated', + chapter2: 'account', + chapter3: 'billing', + }); + } + + onFinish() { + const previousType = this.currentRenew.automatic ? 'auto' : 'manual'; + const previousPeriod = this.currentRenew.period + ? `_${this.currentRenew.period}m` + : ''; + const type = this.service.renew.automatic ? 'auto' : 'manual'; + const period = this.service.renew.period + ? `_${this.service.renew.period}m` + : ''; + this.atInternet.trackClick({ + name: `autorenew::${kebabCase( + this.service.serviceType, + )}::update::from_${previousType}${previousPeriod}_to_${type}${period}`, + type: 'action', + chapter1: 'dedicated', + chapter2: 'account', + chapter3: 'billing', + }); + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/update.html b/packages/manager/modules/new-billing/src/autoRenew/actions/update/update.html new file mode 100644 index 000000000000..042221318efd --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/update.html @@ -0,0 +1,57 @@ +
+ + + + +
+ + + + + + + + + + + + + + + + + +
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/update.module.js b/packages/manager/modules/new-billing/src/autoRenew/actions/update/update.module.js new file mode 100644 index 000000000000..3557f9924539 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/update.module.js @@ -0,0 +1,36 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngAtInternet from '@ovh-ux/ng-at-internet'; +import ngOvhUtils from '@ovh-ux/ng-ovh-utils'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import automatic from './automatic/automatic.module'; +import form from './form/form.module'; +import manualPayment from './manualPayment/manualPayment.module'; +import noPaymentMean from './noPaymentMean/noPaymentMean.module'; + +import component from './update.component'; +import routing from './update.routing'; + +const moduleName = 'ovhManagerBillingAutorenewUpdate'; + +angular + .module(moduleName, [ + angularTranslate, + automatic, + form, + ngAtInternet, + ngOvhUtils, + ngTranslateAsyncLoader, + 'oui', + manualPayment, + noPaymentMean, + uiRouter, + ]) + .config(routing) + .component('billingAutorenewUpdate', component) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/update/update.routing.js b/packages/manager/modules/new-billing/src/autoRenew/actions/update/update.routing.js new file mode 100644 index 000000000000..9b93a90a1697 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/update/update.routing.js @@ -0,0 +1,53 @@ +import kebabCase from 'lodash/kebabCase'; + +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.update', { + url: '/update?serviceId&serviceType', + component: 'billingAutorenewUpdate', + redirectTo: (transition) => + transition + .injector() + .getAsync('accountMigrationService') + .then((accountMigrationService) => + accountMigrationService.getMigrationDates(), + ) + .then((migrationDates) => { + if (migrationDates) { + return moment().isBefore(moment(migrationDates.START, 'MM/DD/YYYY')) + ? null + : 'billing.autorenew.configure-renew-impossible'; + } + return null; + }) + .catch(() => null), + resolve: { + addPaymentMean: /* @ngInject */ ($state) => () => + $state.go('billing.payment.method.add'), + /* @ngInject */ + autorenewAgreements: (BillingAutoRenew) => + BillingAutoRenew.getAutorenewAgreements(), + goBack: /* @ngInject */ (goToAutorenew) => goToAutorenew, + serviceId: /* @ngInject */ ($transition$) => + $transition$.params().serviceId, + serviceType: /* @ngInject */ ($transition$) => + $transition$.params().serviceType, + service: /* @ngInject */ (BillingAutoRenew, serviceId, serviceType) => + BillingAutoRenew.findService({ resourceName: serviceId, serviceType }), + /* @ngInject */ + updateRenew: (BillingAutoRenew) => (service, agreements) => + BillingAutoRenew.updateRenew(service, agreements), + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('billing_autorenew_service_update_title'), + }, + atInternet: { + ignore: true, + }, + onEnter: /* @ngInject */ (atInternet, service) => + atInternet.trackPage({ + name: `account::billing::autorenew::${kebabCase( + service.serviceType, + )}::update`, + type: 'navigation', + }), + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/billing-autoRenew-warnNicBilling.html b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/billing-autoRenew-warnNicBilling.html new file mode 100644 index 000000000000..121264aa543b --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/billing-autoRenew-warnNicBilling.html @@ -0,0 +1,12 @@ + + + + diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_de_DE.json new file mode 100644 index 000000000000..b5b35faf4973 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_de_DE.json @@ -0,0 +1,5 @@ +{ + "autorenew_service_warn_nic_billing_title": "Wichtige Information", + "autorenew_service_warn_nic_billing_ok": "OK", + "autorenew_service_debt_nic_billing": "Um diesen Dienst zu bezahlen, loggen Sie sich über den Account des Rechnungskontakts {{ nicBilling }} ein." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_en_GB.json new file mode 100644 index 000000000000..e59d8dde1d60 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_en_GB.json @@ -0,0 +1,5 @@ +{ + "autorenew_service_warn_nic_billing_title": "Important information", + "autorenew_service_warn_nic_billing_ok": "OK", + "autorenew_service_debt_nic_billing": "To pay for this service, log in to your billing account {{ nicBilling }}." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_es_ES.json new file mode 100644 index 000000000000..c753420c7cd1 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_es_ES.json @@ -0,0 +1,5 @@ +{ + "autorenew_service_warn_nic_billing_title": "Información importante", + "autorenew_service_warn_nic_billing_ok": "OK", + "autorenew_service_debt_nic_billing": "Para abonar este servicio, conéctese desde la cuenta de cliente del contacto de facturación ({{ nicBilling }})." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..5214f2677fbd --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_fr_CA.json @@ -0,0 +1,5 @@ +{ + "autorenew_service_warn_nic_billing_title": "Information importante", + "autorenew_service_warn_nic_billing_ok": "Ok", + "autorenew_service_debt_nic_billing": "Pour payer ce service, connectez-vous depuis votre compte client de facturation {{ nicBilling }}." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..5214f2677fbd --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_fr_FR.json @@ -0,0 +1,5 @@ +{ + "autorenew_service_warn_nic_billing_title": "Information importante", + "autorenew_service_warn_nic_billing_ok": "Ok", + "autorenew_service_debt_nic_billing": "Pour payer ce service, connectez-vous depuis votre compte client de facturation {{ nicBilling }}." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_it_IT.json new file mode 100644 index 000000000000..93732a4292d7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_it_IT.json @@ -0,0 +1,5 @@ +{ + "autorenew_service_warn_nic_billing_title": "Informazione importante", + "autorenew_service_warn_nic_billing_ok": "OK", + "autorenew_service_debt_nic_billing": "Per pagare questo servizio, accedi con l'account di fatturazione {{ nicBilling }}." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..8ac35e720567 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_pl_PL.json @@ -0,0 +1,5 @@ +{ + "autorenew_service_warn_nic_billing_title": "Ważna informacja", + "autorenew_service_warn_nic_billing_ok": "OK", + "autorenew_service_debt_nic_billing": "Aby zapłacić za tę usługę, zaloguj się do Panelu Twojego konta kontaktu księgowego {{nicBilling}}." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..6fe8d8e3cb85 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/translations/Messages_pt_PT.json @@ -0,0 +1,5 @@ +{ + "autorenew_service_warn_nic_billing_title": "Informações importantes", + "autorenew_service_warn_nic_billing_ok": "Ok", + "autorenew_service_debt_nic_billing": "Para pagar este serviço, ligue-se a partir da conta de cliente de faturação {{ nicBilling }}." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/warnNicBilling.component.js b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/warnNicBilling.component.js new file mode 100644 index 000000000000..191bb22a4c62 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/warnNicBilling.component.js @@ -0,0 +1,9 @@ +import template from './billing-autoRenew-warnNicBilling.html'; + +export default { + bindings: { + goBack: '<', + nic: '<', + }, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/warnNicBilling.module.js b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/warnNicBilling.module.js new file mode 100644 index 000000000000..f807b54bf254 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/warnNicBilling.module.js @@ -0,0 +1,22 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import component from './warnNicBilling.component'; +import routing from './warnNicBilling.routing'; + +const moduleName = 'ovhManagerBillingAutorenewWarnNicBilling'; + +angular + .module(moduleName, [ + angularTranslate, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .config(routing) + .component('billingAutorenewWarnNicBilling', component); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/warnNicBilling.routing.js b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/warnNicBilling.routing.js new file mode 100644 index 000000000000..0945db4e688a --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnNicBilling/warnNicBilling.routing.js @@ -0,0 +1,17 @@ +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.warnNic', { + url: '/warn-nic?nic', + views: { + modal: { + component: 'billingAutorenewWarnNicBilling', + }, + }, + layout: 'modal', + translations: { value: ['.'], format: 'json' }, + resolve: { + goBack: /* @ngInject */ (goToAutorenew) => goToAutorenew, + nic: /* @ngInject */ ($transition$) => $transition$.params().nic, + breadcrumb: () => null, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/billing-autoRenew-warnPendingDebt.html b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/billing-autoRenew-warnPendingDebt.html new file mode 100644 index 000000000000..86a654469a30 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/billing-autoRenew-warnPendingDebt.html @@ -0,0 +1,16 @@ + + + + diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/pending-debt.component.js b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/pending-debt.component.js new file mode 100644 index 000000000000..e698a1f761ff --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/pending-debt.component.js @@ -0,0 +1,10 @@ +import template from './billing-autoRenew-warnPendingDebt.html'; + +export default { + bindings: { + goBack: '<', + payDebt: '<', + serviceName: '<', + }, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/pending-debt.module.js b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/pending-debt.module.js new file mode 100644 index 000000000000..05c4cd15eff1 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/pending-debt.module.js @@ -0,0 +1,22 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import component from './pending-debt.component'; +import routing from './pending-debt.routing'; + +const moduleName = 'ovhManagerBillingAutorenewWarnPendingDebt'; + +angular + .module(moduleName, [ + angularTranslate, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .config(routing) + .component('billingAutorenewWarnPendingDebt', component); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/pending-debt.routing.js b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/pending-debt.routing.js new file mode 100644 index 000000000000..2e8f16828108 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/pending-debt.routing.js @@ -0,0 +1,21 @@ +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.pendingDebt', { + url: '/warn-debt?serviceName', + views: { + modal: { + component: 'billingAutorenewWarnPendingDebt', + }, + }, + layout: 'modal', + translations: { value: ['.'], format: 'json' }, + resolve: { + goBack: /* @ngInject */ (goToAutorenew) => goToAutorenew, + payDebt: /* @ngInject */ ($state) => () => { + $state.go('billing.main.history'); + }, + serviceName: /* @ngInject */ ($transition$) => + $transition$.params().serviceName, + breadcrumb: () => null, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_de_DE.json new file mode 100644 index 000000000000..d7b6f3212686 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_de_DE.json @@ -0,0 +1,6 @@ +{ + "autorenew_service_debt_warn_title": "Wichtige Information", + "autorenew_service_debt_warn_settle": "Begleichen", + "autorenew_service_debt_warn_cancel": "Abbrechen", + "autorenew_service_debt_warn_deletion": "Sie können den Dienst erst kündigen, wenn der ausstehende Betrag beglichen wurde. Bitte gehen Sie in den Bereich „Abrechnung“, um die Rechnung für den Dienst {{service}} zu begleichen" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_en_GB.json new file mode 100644 index 000000000000..31f528a2fa01 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_en_GB.json @@ -0,0 +1,6 @@ +{ + "autorenew_service_debt_warn_title": "Important information", + "autorenew_service_debt_warn_settle": "Pay", + "autorenew_service_debt_warn_cancel": "Cancel", + "autorenew_service_debt_warn_deletion": "The service cannot be cancelled until the remaining amount due has been settled. Please go to the Billing section to pay the invoice for the {{service}} service." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_es_ES.json new file mode 100644 index 000000000000..809280772126 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_es_ES.json @@ -0,0 +1,6 @@ +{ + "autorenew_service_debt_warn_title": "Información importante", + "autorenew_service_debt_warn_settle": "Regularizar", + "autorenew_service_debt_warn_cancel": "Cancelar", + "autorenew_service_debt_warn_deletion": "Para poder dar de baja el servicio, es necesario abonar el importe pendiente. Acceda a la sección «Facturación» para regular la situación del servicio {{service}}." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..5f4acedec0aa --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_fr_CA.json @@ -0,0 +1,6 @@ +{ + "autorenew_service_debt_warn_title": "Information importante", + "autorenew_service_debt_warn_settle": "Régulariser", + "autorenew_service_debt_warn_cancel": "Annuler", + "autorenew_service_debt_warn_deletion": "La résiliation de ce service ne peut s’effectuer avant le paiement de la dette restante. Rendez-vous dans l’espace facturation afin de régulariser la facturation pour le service {{service}}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..5f4acedec0aa --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_fr_FR.json @@ -0,0 +1,6 @@ +{ + "autorenew_service_debt_warn_title": "Information importante", + "autorenew_service_debt_warn_settle": "Régulariser", + "autorenew_service_debt_warn_cancel": "Annuler", + "autorenew_service_debt_warn_deletion": "La résiliation de ce service ne peut s’effectuer avant le paiement de la dette restante. Rendez-vous dans l’espace facturation afin de régulariser la facturation pour le service {{service}}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_it_IT.json new file mode 100644 index 000000000000..187b3ecf98c6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_it_IT.json @@ -0,0 +1,6 @@ +{ + "autorenew_service_debt_warn_title": "Informazione importante", + "autorenew_service_debt_warn_settle": "Salda", + "autorenew_service_debt_warn_cancel": "Annulla", + "autorenew_service_debt_warn_deletion": "Per disattivare il servizio è prima necessario saldare l'importo in sospeso. Accedi alla sezione 'Fatturazione' per effettuare il pagamento del servizio {{service}}." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..01a69e4fe5a8 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_pl_PL.json @@ -0,0 +1,6 @@ +{ + "autorenew_service_debt_warn_title": "Ważna informacja", + "autorenew_service_debt_warn_settle": "Zapłać", + "autorenew_service_debt_warn_cancel": "Anuluj", + "autorenew_service_debt_warn_deletion": "Nie możesz zakończyć tej usługi, zanim nie opłacisz zaległej należności. Aby opłacić fakturę za usługę {{service}}, przejdź do sekcji \"Płatności\"." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..8a561995edfc --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/actions/warnPendingDebt/translations/Messages_pt_PT.json @@ -0,0 +1,6 @@ +{ + "autorenew_service_debt_warn_title": "Informações importantes", + "autorenew_service_debt_warn_settle": "Regularizar", + "autorenew_service_debt_warn_cancel": "Anular", + "autorenew_service_debt_warn_deletion": "Para rescindir o serviço, primeiro é preciso saldar o montante em falta. Consulte a secção Faturação para proceder ao pagamento da fatura relativa ao serviço {{service}}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/details/details.module.js b/packages/manager/modules/new-billing/src/autoRenew/agreements/details/details.module.js new file mode 100644 index 000000000000..87e23e9876af --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/details/details.module.js @@ -0,0 +1,8 @@ +import uiRouter from '@uirouter/angularjs'; +import routing from './details.routing'; + +const moduleName = 'ovhManagerBillingAgreementsDetails'; + +angular.module(moduleName, [uiRouter]).config(routing); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/details/details.routing.js b/packages/manager/modules/new-billing/src/autoRenew/agreements/details/details.routing.js new file mode 100644 index 000000000000..0c2402fc79f9 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/details/details.routing.js @@ -0,0 +1,29 @@ +import controller from './user-agreements-details.controller'; +import template from './user-agreements-details.html'; + +export default /* @ngInject */ ( + $stateProvider, + $urlServiceProvider, + coreConfigProvider, +) => { + if (coreConfigProvider.isRegion(['EU', 'CA'])) { + $stateProvider.state('billing.autorenew.agreements.agreement', { + url: '/details/{id:int}', + template, + controller, + controllerAs: 'ctrl', + resolve: { + agreementId: /* @ngInject */ ($transition$) => $transition$.params().id, + breadcrumb: /* @ngInject */ (agreementId) => agreementId, + }, + }); + + // ensure compatibility with links sended by emails + // like #/useraccount/agreements or #/useraccount/agreements/123456/details + // make a redirect to the new url of ui route + $urlServiceProvider.rules.when( + '/useraccount/agreements/:id/details', + '/billing/agreements/details/:id', + ); + } +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/details/user-agreements-details.controller.js b/packages/manager/modules/new-billing/src/autoRenew/agreements/details/user-agreements-details.controller.js new file mode 100644 index 000000000000..6ad27fd47f12 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/details/user-agreements-details.controller.js @@ -0,0 +1,84 @@ +import filter from 'lodash/filter'; +import get from 'lodash/get'; + +import { + AGREEMENT_GENERIC_MORE_INFORMATIONS_URL, + GDPR_AGREEMENTS_INFOS, + SUPPORT_URL, +} from '../user-agreements.constant'; + +export default /* @ngInject */ function UserAccountAgreementsDtailsController( + $q, + UserAccountServicesAgreements, + Alerter, + agreementId, + $translate, + coreConfig, +) { + const CGV_AGREEMENT_ID = 1635; + + this.$ngInit = () => { + this.accepted = false; + this.loading = true; + this.confirmed = false; + this.alreadyAccepted = false; + + $q.all([ + UserAccountServicesAgreements.getAgreement(agreementId), + UserAccountServicesAgreements.getContract(agreementId), + ]) + .then(([agreement, contract]) => { + const user = coreConfig.getUser(); + this.SUPPORT_URL = SUPPORT_URL + user.ovhSubsidiary; + this.agreement = agreement; + this.contract = contract; + this.isIndividual = user.legalform === 'individual'; + this.alreadyAccepted = this.agreement.agreed === 'ok'; + this.confirmed = this.alreadyAccepted; + this.accepted = this.alreadyAccepted; + this.isCGVContract = this.agreement.contractId === CGV_AGREEMENT_ID; + + this.appendicesLink = get( + filter( + GDPR_AGREEMENTS_INFOS, + (el) => el.subsidiary === user.ovhSubsidiary, + ), + '[0].more_informations_url', + AGREEMENT_GENERIC_MORE_INFORMATIONS_URL, + ); + }) + .catch((err) => { + Alerter.error( + $translate.instant('user_agreements_error'), + 'agreements_details_alerter', + ); + return $q.reject(err); + }) + .finally(() => { + this.loading = false; + }); + }; + + this.accept = () => { + UserAccountServicesAgreements.accept({ + ...this.agreement, + ...this.contract, + }) + .then(() => { + this.accepted = true; + Alerter.success( + $translate.instant('user_agreement_details_success'), + 'agreements_details_alerter', + ); + }) + .catch((err) => { + Alerter.error( + $translate.instant('user_agreement_details_error'), + 'agreements_details_alerter', + ); + $q.reject(err); + }); + }; + + this.$ngInit(); +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/details/user-agreements-details.html b/packages/manager/modules/new-billing/src/autoRenew/agreements/details/user-agreements-details.html new file mode 100644 index 000000000000..d89a2c1d3c48 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/details/user-agreements-details.html @@ -0,0 +1,84 @@ +
+ + + +
+ +
+ +
+ +
+

+

+

+ +
    +
  1. +
  2. +
  3. +
  4. +
+

+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
+ +
+

+

+

+    
+ +
+

+

+
+ +
+
+ + +
+ +
+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/popup-agreement.component.js b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/popup-agreement.component.js new file mode 100644 index 000000000000..114d2b6c0e31 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/popup-agreement.component.js @@ -0,0 +1,11 @@ +import controller from './popup-agreement.controller'; +import template from './popup-agreement.html'; + +export default { + bindings: { + agreements: '<', + goBack: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/popup-agreement.controller.js b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/popup-agreement.controller.js new file mode 100644 index 000000000000..ed70f16b57c6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/popup-agreement.controller.js @@ -0,0 +1,54 @@ +import get from 'lodash/get'; + +export default class { + /* @ngInject */ + constructor( + $translate, + accountMigrationService, + atInternet, + UserAccountServicesAgreements, + ) { + this.$translate = $translate; + this.accountMigrationService = accountMigrationService; + this.atInternet = atInternet; + this.UserAccountServicesAgreements = UserAccountServicesAgreements; + } + + $onInit() { + this.currentAgreementIndex = 0; + this.currentAgreement = this.agreements[this.currentAgreementIndex]; + this.AgreementUnderProcess = false; + } + + acceptAndNext() { + if (this.currentAgreementIndex === this.agreements.length - 1) { + this.atInternet.trackClick({ + name: + 'dedicated::account::billing::autorenew::agreements::popup-agreement::accept-all', + type: 'action', + }); + } + this.AgreementUnderProcess = true; + this.UserAccountServicesAgreements.accept(this.currentAgreement) + .then(() => { + if (this.currentAgreementIndex !== this.agreements.length - 1) { + this.currentAgreementIndex += 1; + this.currentAgreement = this.agreements[this.currentAgreementIndex]; + this.AgreementUnderProcess = false; + } else { + this.accountMigrationService.refreshMigrationDetails().then(() => { + this.goBack(false, 'success', true); + }); + } + }) + .catch((error) => + this.goBack( + this.$translate.instant('user_agreements_accept_all_error', { + message: get(error, 'data.message'), + }), + 'danger', + true, + ), + ); + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/popup-agreement.html b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/popup-agreement.html new file mode 100644 index 000000000000..33a193800674 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/popup-agreement.html @@ -0,0 +1,52 @@ + + +

+ +
+ + +
+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/popup-agreement.module.js b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/popup-agreement.module.js new file mode 100644 index 000000000000..85f288505657 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/popup-agreement.module.js @@ -0,0 +1,24 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import atInternet from '@ovh-ux/ng-at-internet'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import component from './popup-agreement.component'; +import routing from './popup-agreement.routes'; + +const moduleName = 'ovhManagerBillingAutorenewPopupAgreement'; + +angular + .module(moduleName, [ + angularTranslate, + atInternet, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .config(routing) + .component('billingAutorenewPopupAgreement', component); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/popup-agreement.routes.js b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/popup-agreement.routes.js new file mode 100644 index 000000000000..b892eca27abe --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/popup-agreement.routes.js @@ -0,0 +1,53 @@ +import head from 'lodash/head'; + +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.agreements.popup-agreement', { + url: '/popup-agreement', + views: { + modal: { + component: 'billingAutorenewPopupAgreement', + }, + }, + params: { + agreements: null, + }, + layout: 'modal', + translations: { value: ['.'], format: 'json' }, + resolve: { + activateAutorenew: /* @ngInject */ (BillingAutoRenew, nicRenew) => () => + BillingAutoRenew.enableAutorenew(head(nicRenew.renewDays)), + agreements: /* @ngInject */ ( + $transition$, + UserAccountServicesAgreements, + ) => + $transition$.params().agreements || + UserAccountServicesAgreements.getToValidate().then( + (result) => result.list.results, + ), + goBack: /* @ngInject */ ($state, $timeout, Alerter) => ( + message = false, + type = 'success', + reload = false, + ) => { + const promise = $state.go( + 'billing.autorenew.agreements', + {}, + { + reload, + }, + ); + + if (message) { + promise.then(() => + $timeout(() => + Alerter.set(`alert-${type}`, message, null, 'agreements_alerter'), + ), + ); + } + + return promise; + }, + breadcrumb: () => null, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_de_DE.json new file mode 100644 index 000000000000..ded3f88ff434 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_de_DE.json @@ -0,0 +1,7 @@ +{ + "user_agreements_accept_all_count": "Vertrag {{current}}/{{total}}", + "user_agreements_accept_all_accept_and_next": "Annehmen und zum nächsten wechseln", + "user_agreements_accept_all_read_and_accepted": "Ich habe {{contractTitle}} gelesen und nehme ihn an.", + "user_agreements_accept_all_annexes": "Über diesen Link gelangen Sie zu den Anhängen. Diese sind integrale Bestandteile des Vertrags, insbesondere die Allgemeinen Geschäftsbedingungen, die Besonderen Bedingungen und der Anhang zur Verarbeitung personenbezogener Daten (Data Processing Agreement, DPA).", + "user_agreements_accept_all_error": "Bei der Verarbeitung des Vertrags ist ein Fehler aufgetreten: {{message}}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_en_GB.json new file mode 100644 index 000000000000..df830cfcc0d3 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_en_GB.json @@ -0,0 +1,7 @@ +{ + "user_agreements_accept_all_count": "Contract {{current}}/{{total}}", + "user_agreements_accept_all_accept_and_next": "Accept and continue", + "user_agreements_accept_all_read_and_accepted": "I have read and accepted {{contractTitle}}", + "user_agreements_accept_all_annexes": "To read the appendices, which are an integral part of the contract (namely the General Conditions, Special Conditions, and the Data Processing Agreement (DPA)), click here", + "user_agreements_accept_all_error": "An error has occurred processing the contract: {{message}}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_es_ES.json new file mode 100644 index 000000000000..e1d54150ede1 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_es_ES.json @@ -0,0 +1,7 @@ +{ + "user_agreements_accept_all_count": "Contrato {{current}}/{{total}}", + "user_agreements_accept_all_accept_and_next": "Aceptar y pasar al siguiente", + "user_agreements_accept_all_read_and_accepted": "He leído y acepto {{contractTitle}}", + "user_agreements_accept_all_annexes": "Para consultar los anexos, parte integrante del contrato (en particular las Condiciones Generales, las Condiciones Particulares y el Contrato de Encargo de Tratamiento o «DPA»), haga clic en este enlace.", + "user_agreements_accept_all_error": "Se ha producido un error al aceptar el contrato: {{message}}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..d0df62a12052 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_fr_CA.json @@ -0,0 +1,7 @@ +{ + "user_agreements_accept_all_count": "Contrat {{current}}/{{total}}", + "user_agreements_accept_all_accept_and_next": "Accepter et passer au suivant", + "user_agreements_accept_all_read_and_accepted": "J'ai lu et j'accepte {{contractTitle}}", + "user_agreements_accept_all_annexes": "Pour consulter les annexes, partie intégrante du contrat (notamment les Conditions Générales, Conditions Particulières, l'annexe Traitement de données a caractère personnel (DPA)), consulter ce lien", + "user_agreements_accept_all_error": "Une erreur s'est produite lors du traitement du contrat: {{message}}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..d0df62a12052 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_fr_FR.json @@ -0,0 +1,7 @@ +{ + "user_agreements_accept_all_count": "Contrat {{current}}/{{total}}", + "user_agreements_accept_all_accept_and_next": "Accepter et passer au suivant", + "user_agreements_accept_all_read_and_accepted": "J'ai lu et j'accepte {{contractTitle}}", + "user_agreements_accept_all_annexes": "Pour consulter les annexes, partie intégrante du contrat (notamment les Conditions Générales, Conditions Particulières, l'annexe Traitement de données a caractère personnel (DPA)), consulter ce lien", + "user_agreements_accept_all_error": "Une erreur s'est produite lors du traitement du contrat: {{message}}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_it_IT.json new file mode 100644 index 000000000000..35fda6ca66d7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_it_IT.json @@ -0,0 +1,7 @@ +{ + "user_agreements_accept_all_count": "Contratto {{current}}/{{total}}", + "user_agreements_accept_all_accept_and_next": "Accetta e passa al successivo", + "user_agreements_accept_all_read_and_accepted": "Ho letto e accetto {{contractTitle}}", + "user_agreements_accept_all_annexes": "Per consultare gli allegati, parte integrante del contratto (in particolare le Condizioni Generali, le Condizioni Particolari, l'allegato Trattamento dei dati personali, accedi a questo link", + "user_agreements_accept_all_error": "Si è verificato un errore durante l'elaborazione della richiesta: {{message}}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..f25d7b25b5a7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_pl_PL.json @@ -0,0 +1,7 @@ +{ + "user_agreements_accept_all_count": "Konto {{current}}/{{total}}", + "user_agreements_accept_all_accept_and_next": "Zaakceptuj i przejdź dalej", + "user_agreements_accept_all_read_and_accepted": "Przeczytałem i akceptuję {{contractTitle}}", + "user_agreements_accept_all_annexes": "Aby zapoznać się z aneksami, które są częścią Regulaminów (w szczególności Regulaminów usług OVHcloud i Umową powierzenia przetwarzania danych osobowych), kliknij link", + "user_agreements_accept_all_error": "Wystąpił błąd podczas przetwarzania regulaminu: {{message}}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..99fddc21b243 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/popup-agreement/translations/Messages_pt_PT.json @@ -0,0 +1,7 @@ +{ + "user_agreements_accept_all_count": "Contrato {{current}}/{{total}}", + "user_agreements_accept_all_accept_and_next": "Aceitar e passar ao seguinte", + "user_agreements_accept_all_read_and_accepted": "Li e aceito {{contractTitle}}", + "user_agreements_accept_all_annexes": "Para consultar os anexos, parte integrante do Contrato (nomeadamente os Termos e Condições Gerais, os Termos e Condições Particulares, o anexo Tratamento de dados pessoais), consulte esta ligação", + "user_agreements_accept_all_error": "Ocorreu um erro durante o tratamento do contrato: {{message}}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_de_DE.json new file mode 100644 index 000000000000..37f55d14d8c7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_de_DE.json @@ -0,0 +1,49 @@ +{ + "user_agreements_title": "Meine Verträge", + "user_agreements_list_title": "Liste der Verträge", + "user_agreements_name": "Name", + "user_agreements_status": "Status", + "user_agreements_status_KO": "Zu validieren", + "user_agreements_status_OBSOLETE": "Veraltet", + "user_agreements_status_OK": "Validiert", + "user_agreements_status_TODO": "Zu validieren", + "user_agreements_date": "Datum", + "user_agreements_table_empty": "Keine Verträge zur Anzeige vorhanden", + "user_agreements_error": "Beim Laden der Informationen ist ein Fehler aufgetreten.", + "user_agreements_to_validate": "Meine zu validierenden Verträge", + "user_agreements_agreed": "Ich habe folgende Verträge gelesen und akzeptiere diese: \"{{t0}}\"", + "user_agreements_accept": "Akzeptieren", + "user_agreements_accept_title": "{{t0}}: Vertrag akzeptieren", + "user_agreements_accepting": "Wird ausgeführt...", + "user_agreements_download_pdf": "Herunterladen", + "user_agreements_download_pdf_title": "{{t0}}: als PDF herunterladen", + "user_agreements_alert_close": "Meldung schließen", + "user_agreement_GDPR_title": "Datenschutz-Grundverordnung", + "user_agreement_GDPR_helper_text": "Weitere Informationen zur neuen Verordnung finden Sie in unserer Anlage zur Verarbeitung personenbezogener Daten.", + "user_agreement_details_accept": "Akzeptieren", + "user_agreement_details_return": "Zurück zu meinen Verträgen", + "user_agreement_details_title": "Vertragsdetails", + "user_agreement_details_agreed": "Ich habe folgende Verträge gelesen und akzeptiere diese: \"{{t0}}\"", + "user_agreement_details_title1": "Änderung der allgemeinen Geschäftsbedingungen", + "user_agreement_details_subtitle1": "Die allgemeinen Geschäftsbedingungen von OVH werden aktualisiert!", + "user_agreement_details_paragraph1": "Mit dieser Änderung verfolgen wir vor allem vier Ziele:", + "user_agreement_details_paragraph1_point1": "Unsere AGB an Neuerungen in der Gesetzgebung anzupassen, vor allem in Bezug auf Verbraucherschutz, Schuldrecht und Schutz personenbezogener Daten,", + "user_agreement_details_paragraph1_point2": "Ihren Fragen und Forderungen nachzukommen,", + "user_agreement_details_paragraph1_point3": "Unsere Vorgehensweise und Organisation genauer zu erklären, auch in Bezug auf die Internationalisierung unserer Aktivitäten,", + "user_agreement_details_paragraph1_point4": "Die Lesbarkeit des Dokuments zu verbessern.", + "user_agreement_details_subtitle2": "Zu den Änderungen gehören:", + "user_agreement_details_paragraph2_point1": "ein neuer Paragraph, der alle Regelungen für Verbraucher (das heißt Kunden, die unsere Dienstleistungen privat nutzen) zusammenfasst, wie beispielsweise Widerrufsrecht oder Mediationsverfahren (Paragraph 12),", + "user_agreement_details_paragraph2_point2": "unsere Pflicht, Sie mindestens 30 Tage vor einer Änderung zu informieren, wenn diese die Bedingungen Ihrer Dienstleistung einschränken könnte (Paragraph 3.8),", + "user_agreement_details_paragraph2_point3": "der Hinweis, dass jeder Kunde alleiniger Eigentümer der Inhalte bleibt (Daten, Informationen etc.), die von ihm im Rahmen unserer Dienstleistungen gehostet werden (Paragraph 3.9),", + "user_agreement_details_paragraph2_point4": "die Präzisierung der Pflichten aller Parteien, vor allem in Bezug auf Drittanbieter, sowie der Bedingungen, unter denen OVH Haftung übernimmt (Paragraph 6),", + "user_agreement_details_paragraph2_point5": "eine Verschärfung der Pflichten seitens OVH bezüglich Datenschutz und Datensicherheit, vor allem in Bezug auf die neue EU-Datenschutz-Grundverordnung (Paragraph 8),", + "user_agreement_details_paragraph2_point6": "unsere Verpflichtung, je nach Art der Dienstleistung den Standort oder die geographische Zone der Rechenzentren, in denen die Inhalte gehostet werden, nicht zu ändern (Paragraph 8.2.3),", + "user_agreement_details_paragraph2_point7": "die Verpflichtung, ohne ausdrückliche Genehmigung Ihrerseits keine Dienstleistungen außerhalb der OVH Gruppe an Subunternehmer zu vergeben, die den Zugang zu von Ihnen im Rahmen unserer Dienstleistungen gespeicherten Daten ermöglichen, solange in den besonderen Vertragsbedingungen der jeweiligen Dienstleistung nichts Gegenteiliges festgelegt ist (Paragraph 2),", + "user_agreement_details_paragraph2_point8": "die Verschärfung der Geheimhaltungspflichten (Paragraph 9).", + "user_agreement_details_subtitle3": "Hinweis für unsere Kunden", + "user_agreement_details_paragraph3": "Wenn Sie nicht möchten, dass Ihre Dienste den neuen Bestimmungen unterliegen, können Sie diese ab dem 20. Juli 2017 innerhalb von 4 Monaten und in Übereinstimmung mit den geltenden Vorschriften kündigen. Bitte erstellen Sie dazu ein Ticket in Ihrem Kundencenter und geben Sie als Betreff an: „Kündigung meiner Dienste“ sowie das gewünschte Datum für die Kündigung (sofortige Kündigung oder Kündigung zur nächsten Verlängerung der Dienste).", + "user_agreement_details_success": "Ihr Vertrag wurde erfolgreich validiert.", + "user_agreement_details_error": "Beim Akzeptieren Ihres Vertrags ist ein Fehler aufgetreten.", + "user_agreement_appendices": "Um die Anhänge zu lesen, die ein integrierender Bestandteil des Vertrages sind (insbesondere die allgemeinen Geschäftsbedingungen, die besonderen Bedingungen sowie der Anhang zur Verarbeitung personenbezogener Daten (Data Processing Agreement oder DPA)), klicken Sie hier.", + "user_agreements_accept_all": "Alle Verträge annehmen" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_en_GB.json new file mode 100644 index 000000000000..eec1ae70d1db --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_en_GB.json @@ -0,0 +1,49 @@ +{ + "user_agreements_title": "My contracts", + "user_agreements_list_title": "Contract list", + "user_agreements_name": "Name", + "user_agreements_status": "Status", + "user_agreements_status_KO": "To confirm", + "user_agreements_status_OBSOLETE": "Obsolete", + "user_agreements_status_OK": "Confirmed", + "user_agreements_status_TODO": "To confirm", + "user_agreements_date": "Date", + "user_agreements_table_empty": "No contract to display", + "user_agreements_error": "An error has occurred loading the information.", + "user_agreements_to_validate": "My contracts to confirm", + "user_agreements_agreed": "I have read and accepted \"{{t0}}\"", + "user_agreements_accept": "Accept", + "user_agreements_accept_all": "Accept all contracts", + "user_agreements_accept_title": "{{t0}}: accept contract", + "user_agreements_accepting": "In progress...", + "user_agreements_download_pdf": "Download", + "user_agreements_download_pdf_title": "{{t0}}: Download in PDF format", + "user_agreements_alert_close": "Close alert", + "user_agreement_GDPR_title": "General Data Protection Regulation", + "user_agreement_GDPR_helper_text": "For more information regarding this new regulation, please read our Appendix related to personal data processing.", + "user_agreement_details_accept": "Accept", + "user_agreement_details_return": "Go back to my contracts ", + "user_agreement_details_title": "Contract details", + "user_agreement_details_agreed": "I have read and accepted \"{{t0}}\"", + "user_agreement_details_title1": "Change of General Terms of Service", + "user_agreement_details_subtitle1": "The OVHcloud General Terms of Service are changing!", + "user_agreement_details_paragraph1": "With these changes, we aim to achieve four main objectives:", + "user_agreement_details_paragraph1_point1": "Adapt to changes in legislation, particularly with regard to consumer law, contract law and personal data protection.", + "user_agreement_details_paragraph1_point2": "Provide answers to your questions and requests.", + "user_agreement_details_paragraph1_point3": "Explain our working practices and our organisation, as our business develops internationally.", + "user_agreement_details_paragraph1_point4": "Improve the document’s readability.", + "user_agreement_details_subtitle2": "These changes include:", + "user_agreement_details_paragraph2_point1": "The creation of an article that includes all clauses applicable to consumers - i.e. customers using our services for non-professional purposes. For example, it includes the right to withdraw, and the mediation process (article 12).", + "user_agreement_details_paragraph2_point2": "Our commitment to providing you with at least 30 days’ notice before making any changes that are likely to reduce the quality of your service’s conditions (article 3.8).", + "user_agreement_details_paragraph2_point3": "A reminder that each customer remains the owner of content (data, information, etc.) that they host using our services (article 3.9).", + "user_agreement_details_paragraph2_point4": "A clarification of the scope of each person’s responsibility, namely regarding third parties, as well as the conditions under which the liability of OVHcloud may be invoked (article 6).", + "user_agreement_details_paragraph2_point5": "A strengthening of OVHcloud’s commitments in relation to data protection and security, especially in the context of the GDPR, the new General Data Protection Regulation on personal data (article 8).", + "user_agreement_details_paragraph2_point6": "Our commitment not to change the location or geographical region of the datacenters in which you have chosen to host your data, depending on the type of service used (article 8.2.3).", + "user_agreement_details_paragraph2_point7": "Our commitment not to subcontract any services outside of OVHcloud that would involve accessing the data you store using our Services, unless we receive your express agreement, or if otherwise specified in the applicable Terms of Service (article 2).", + "user_agreement_details_paragraph2_point8": "A strengthening of our confidentiality obligations (article 9).", + "user_agreement_details_subtitle3": "Notice to customers ", + "user_agreement_details_paragraph3": "If you do not wish to be subject to these new changes, you can cancel the services you are currently using from 20 July 2017 within a maximum period of 4 months, in accordance with article L224-4 of the French consumer code. To do this, open a ticket via the OVHcloud Control Panel with the following subject: “Cancellation of my services”, as well as an indication of when you would like your services to be cancelled (immediately or on the renewal date).", + "user_agreement_details_success": "Your contract has been confirmed.", + "user_agreement_details_error": "An error has occurred confirming the contract. ", + "user_agreement_appendices": "To read the appendices, which are an integral part of the contract (namely the General Conditions, Special Conditions, and the Data Processing Agreement (DPA)), click here." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_es_ES.json new file mode 100644 index 000000000000..9c5d8f2fc7d9 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_es_ES.json @@ -0,0 +1,49 @@ +{ + "user_agreement_appendices": "Para consultar los anexos, parte integrante del Contrato (en particular las Condiciones Generales, las Condiciones Particulares y el Contrato de Encargo de Tratamiento o «DPA»), haga clic en este enlace.", + "user_agreements_title": "Mis contratos", + "user_agreements_list_title": "Contratos", + "user_agreements_name": "Nombre", + "user_agreements_status": "Estado", + "user_agreements_status_KO": "Pendiente de aceptar", + "user_agreements_status_OBSOLETE": "Obsoleto", + "user_agreements_status_OK": "Aceptado", + "user_agreements_status_TODO": "Pendiente de aceptar", + "user_agreements_date": "Fecha", + "user_agreements_table_empty": "No hay contratos", + "user_agreements_error": "Se ha producido un error al cargar los datos.", + "user_agreements_to_validate": "Contratos pendientes de aceptar", + "user_agreements_agreed": "He leído y acepto «{{t0}}»", + "user_agreements_accept": "Aceptar", + "user_agreements_accept_title": "{{t0}}: Aceptar el contrato", + "user_agreements_accepting": "En curso...", + "user_agreements_download_pdf": "Descargar", + "user_agreements_download_pdf_title": "{{t0}}: Descargar en formato PDF", + "user_agreements_alert_close": "Cerrar la alerta", + "user_agreement_GDPR_title": "Reglamento general de protección de datos", + "user_agreement_GDPR_helper_text": "Para más información sobre el nuevo reglamento, consulte nuestro Anexo relativo al tratamiento de datos personales.", + "user_agreement_details_accept": "Aceptar", + "user_agreement_details_return": "Volver a los contratos", + "user_agreement_details_title": "Detalles del contrato", + "user_agreement_details_agreed": "He leído y acepto «{{t0}}»", + "user_agreement_details_title1": "Cambio de las Condiciones Generales del Servicio", + "user_agreement_details_subtitle1": "¡OVH actualiza sus Condiciones Generales del Servicio!", + "user_agreement_details_paragraph1": "Esta actualización persigue cuatro objetivos principales:", + "user_agreement_details_paragraph1_point1": "Adaptarnos a los cambios reglamentarios, especialmente en materia de derecho del consumo, de derecho de las obligaciones y de protección de datos de carácter personal;", + "user_agreement_details_paragraph1_point2": "Aportar respuestas a sus dudas y preguntas.", + "user_agreement_details_paragraph1_point3": "Especificar nuestro modo de funcionamiento y nuestra organización en el contexto de la internacionalización de nuestras actividades.", + "user_agreement_details_paragraph1_point4": "Mejorar la legibilidad del documento.", + "user_agreement_details_subtitle2": "Entre las modificaciones realizadas, se encuentran las siguientes:", + "user_agreement_details_paragraph2_point1": "Creación de una cláusula que recoge todas las disposiciones aplicables a los consumidores, es decir, a los clientes que utilizan nuestros servicios en un contexto no profesional, tales como el derecho de desistimiento o el procedimiento de mediación (cláusula 12).", + "user_agreement_details_paragraph2_point2": "Compromiso de notificar con una antelación mínima de 30 días toda modificación susceptible de degradar las condiciones del servicio (cláusula 3.8).", + "user_agreement_details_paragraph2_point3": "Reconocimiento de que cada cliente es propietario de los contenidos (datos, información, etc.) que aloja en nuestros servicios (cláusula 3.9).", + "user_agreement_details_paragraph2_point4": "Especificación de los perímetros de responsabilidad de cada una de las partes, especialmente en lo relativo a terceros, así como de las condiciones en las que pueda exigírsele responsabilidad a OVH (cláusula 5).", + "user_agreement_details_paragraph2_point5": "Consolidación de nuestro compromiso en materia de seguridad y de protección de datos, especialmente en el marco del nuevo Reglamento General de Protección de Datos de Carácter Personal (cláusula 8).", + "user_agreement_details_paragraph2_point6": "Nuestro compromiso de no modificar, según el tipo de servicio, la localización o la zona geográfica acordada de los centros de datos en los que se alojan los contenidos (cláusula 8.2.3).", + "user_agreement_details_paragraph2_point7": "Nuestro compromiso de no subcontratar fuera del Grupo OVH prestaciones que impliquen un acceso a los datos almacenados en el marco de nuestros servicios sin el consentimiento del cliente, a menos que las Condiciones Particulares del Servicio aplicables estipulen lo contrario (cláusula 2).", + "user_agreement_details_paragraph2_point8": "Refuerzo de nuestras obligaciones en materia de confidencialidad (cláusula 9).", + "user_agreement_details_subtitle3": "Recordatorio a los clientes consumidores", + "user_agreement_details_paragraph3": "De conformidad con el artículo L224-33 del Código de Consumo francés, si el Cliente no ha aceptado expresamente las nuevas condiciones contractuales, dispondrá de la facultad de cancelar los servicios hasta en un plazo de cuatro (4) meses. Para ello, puede crear un tíquet desde el área de cliente con el asunto «Baja de mis servicios» y la fecha en la que desea dar de baja el servicio (inmediatamente o en la fecha de renovación).", + "user_agreement_details_success": "Se ha aceptado el contrato.", + "user_agreement_details_error": "Se ha producido un error al aceptar el contrato.", + "user_agreements_accept_all": "Aceptar todos los contratos" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..2d4663ccd2b9 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_fr_CA.json @@ -0,0 +1,49 @@ +{ + "user_agreements_title": "Mes contrats", + "user_agreements_list_title": "Liste des contrats", + "user_agreements_name": "Nom", + "user_agreements_status": "État", + "user_agreements_status_KO": "A valider", + "user_agreements_status_OBSOLETE": "Obsolète", + "user_agreements_status_OK": "Validé", + "user_agreements_status_TODO": "A valider", + "user_agreements_date": "Date", + "user_agreements_table_empty": "Aucun contrat à afficher", + "user_agreements_error": "Une erreur est survenue lors du chargements des informations.", + "user_agreements_to_validate": "Mes contrats à valider", + "user_agreements_agreed": "J'ai lu et j'accepte \"{{t0}}\"", + "user_agreements_accept": "Accepter", + "user_agreements_accept_all": "Accepter tous les contrats", + "user_agreements_accept_title": "{{t0}} : accepter le contrat", + "user_agreements_accepting": "En cours...", + "user_agreements_download_pdf": "Télécharger", + "user_agreements_download_pdf_title": "{{t0}} : télécharger au format pdf", + "user_agreements_alert_close": "Fermer l'alerte", + "user_agreement_GDPR_title": "Règlement Général sur la Protection des Données Personnelles", + "user_agreement_GDPR_helper_text": "Pour plus d'information concernant la nouvelle réglementation, consultez notre Annexe relative au traitement des données personnelles.", + "user_agreement_details_accept": "Accepter", + "user_agreement_details_return": "Retourner à mes contrats", + "user_agreement_details_title": "Détails du contrat", + "user_agreement_details_agreed": "J'ai lu et j'accepte \"{{t0}}\"", + "user_agreement_details_title1": "Changement des Conditions générales de service", + "user_agreement_details_subtitle1": "Les Conditions générales de service d’OVH évoluent !", + "user_agreement_details_paragraph1": "À travers ce changement, nous poursuivons quatre principaux objectifs :", + "user_agreement_details_paragraph1_point1": "Prendre en compte les évolutions de la réglementation, notamment en matière de droit de la consommation, de droit des obligations et de protection des données à caractère personnel ;", + "user_agreement_details_paragraph1_point2": "Apporter des réponses à vos sollicitations et interrogations ;", + "user_agreement_details_paragraph1_point3": "Préciser notre mode de fonctionnement et notre organisation, et ce dans le contexte de l’internationalisation de nos activités ;", + "user_agreement_details_paragraph1_point4": "Améliorer la lisibilité du document.", + "user_agreement_details_subtitle2": "Parmi les modifications opérées, vous noterez :", + "user_agreement_details_paragraph2_point1": "La création d’un article regroupant l’ensemble des dispositions applicables aux consommateurs – c’est-à-dire aux clients utilisant nos services dans un cadre non-professionnel, telles que le droit de rétractation ou la procédure de médiation (article 12) ;", + "user_agreement_details_paragraph2_point2": "Notre engagement de vous notifier au minimum 30 jours avant toute modification susceptible de dégrader vos conditions de service (article 3.8) ;", + "user_agreement_details_paragraph2_point3": "Le rappel que chaque client reste propriétaire des contenus (données, informations, etc.) qu’il héberge dans le cadre de nos services (article 3.9) ;", + "user_agreement_details_paragraph2_point4": "Une précision des périmètres de responsabilité de chacun, notamment à l’égard des tiers, ainsi que les conditions dans lesquelles la responsabilité d’OVH peut être engagée (article 6) ;", + "user_agreement_details_paragraph2_point5": "Un renforcement des engagements d’OVH en matière de sécurité et de protection des données, spécialement dans le contexte du nouveau Règlement général de protection des données à caractère personnel (article 8) ;", + "user_agreement_details_paragraph2_point6": "Notre engagement de ne pas modifier, selon le type de service, la localisation ou la zone géographique convenue des centres de données dans lesquels vous hébergez vos contenus (article 8.2.3) ;", + "user_agreement_details_paragraph2_point7": "Notre engagement de ne pas sous-traiter, en dehors du Groupe OVH, de prestations impliquant un accès aux données que vous stockez dans le cadre de nos Services, sans accord de votre part ou disposition contraire des Conditions particulières de service applicables (article 2) ;", + "user_agreement_details_paragraph2_point8": "Un renforcement des obligations en matière de confidentialité (articles 9).", + "user_agreement_details_subtitle3": "Rappel aux clients consommateurs", + "user_agreement_details_paragraph3": "Si vous ne souhaitez pas être soumis à ces nouvelles dispositions, vous avez la possibilité de résilier vos services en cours d’utilisation à compter du 20 juillet 2017 dans un délai maximum de 4 mois, conformément à l’article L224-33 du code de la consommation. Pour ce faire, veuillez créer un ticket depuis votre espace client en mentionnant en objet: «Résiliation de mes services» ainsi que le moment souhaité de résiliation (immédiatement ou à la date de renouvellement des services).", + "user_agreement_details_success": "Votre contrat a bien été validé.", + "user_agreement_details_error": "Une erreur s'est produite lors de l'acceptation de votre contrat.", + "user_agreement_appendices": "Pour consulter les annexes, partie intégrante du Contrat (notamment les Conditions Générales, Conditions Particulières, l’annexe Traitement de données à caractère personnel (DPA), consultez ce lien." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..2d4663ccd2b9 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_fr_FR.json @@ -0,0 +1,49 @@ +{ + "user_agreements_title": "Mes contrats", + "user_agreements_list_title": "Liste des contrats", + "user_agreements_name": "Nom", + "user_agreements_status": "État", + "user_agreements_status_KO": "A valider", + "user_agreements_status_OBSOLETE": "Obsolète", + "user_agreements_status_OK": "Validé", + "user_agreements_status_TODO": "A valider", + "user_agreements_date": "Date", + "user_agreements_table_empty": "Aucun contrat à afficher", + "user_agreements_error": "Une erreur est survenue lors du chargements des informations.", + "user_agreements_to_validate": "Mes contrats à valider", + "user_agreements_agreed": "J'ai lu et j'accepte \"{{t0}}\"", + "user_agreements_accept": "Accepter", + "user_agreements_accept_all": "Accepter tous les contrats", + "user_agreements_accept_title": "{{t0}} : accepter le contrat", + "user_agreements_accepting": "En cours...", + "user_agreements_download_pdf": "Télécharger", + "user_agreements_download_pdf_title": "{{t0}} : télécharger au format pdf", + "user_agreements_alert_close": "Fermer l'alerte", + "user_agreement_GDPR_title": "Règlement Général sur la Protection des Données Personnelles", + "user_agreement_GDPR_helper_text": "Pour plus d'information concernant la nouvelle réglementation, consultez notre Annexe relative au traitement des données personnelles.", + "user_agreement_details_accept": "Accepter", + "user_agreement_details_return": "Retourner à mes contrats", + "user_agreement_details_title": "Détails du contrat", + "user_agreement_details_agreed": "J'ai lu et j'accepte \"{{t0}}\"", + "user_agreement_details_title1": "Changement des Conditions générales de service", + "user_agreement_details_subtitle1": "Les Conditions générales de service d’OVH évoluent !", + "user_agreement_details_paragraph1": "À travers ce changement, nous poursuivons quatre principaux objectifs :", + "user_agreement_details_paragraph1_point1": "Prendre en compte les évolutions de la réglementation, notamment en matière de droit de la consommation, de droit des obligations et de protection des données à caractère personnel ;", + "user_agreement_details_paragraph1_point2": "Apporter des réponses à vos sollicitations et interrogations ;", + "user_agreement_details_paragraph1_point3": "Préciser notre mode de fonctionnement et notre organisation, et ce dans le contexte de l’internationalisation de nos activités ;", + "user_agreement_details_paragraph1_point4": "Améliorer la lisibilité du document.", + "user_agreement_details_subtitle2": "Parmi les modifications opérées, vous noterez :", + "user_agreement_details_paragraph2_point1": "La création d’un article regroupant l’ensemble des dispositions applicables aux consommateurs – c’est-à-dire aux clients utilisant nos services dans un cadre non-professionnel, telles que le droit de rétractation ou la procédure de médiation (article 12) ;", + "user_agreement_details_paragraph2_point2": "Notre engagement de vous notifier au minimum 30 jours avant toute modification susceptible de dégrader vos conditions de service (article 3.8) ;", + "user_agreement_details_paragraph2_point3": "Le rappel que chaque client reste propriétaire des contenus (données, informations, etc.) qu’il héberge dans le cadre de nos services (article 3.9) ;", + "user_agreement_details_paragraph2_point4": "Une précision des périmètres de responsabilité de chacun, notamment à l’égard des tiers, ainsi que les conditions dans lesquelles la responsabilité d’OVH peut être engagée (article 6) ;", + "user_agreement_details_paragraph2_point5": "Un renforcement des engagements d’OVH en matière de sécurité et de protection des données, spécialement dans le contexte du nouveau Règlement général de protection des données à caractère personnel (article 8) ;", + "user_agreement_details_paragraph2_point6": "Notre engagement de ne pas modifier, selon le type de service, la localisation ou la zone géographique convenue des centres de données dans lesquels vous hébergez vos contenus (article 8.2.3) ;", + "user_agreement_details_paragraph2_point7": "Notre engagement de ne pas sous-traiter, en dehors du Groupe OVH, de prestations impliquant un accès aux données que vous stockez dans le cadre de nos Services, sans accord de votre part ou disposition contraire des Conditions particulières de service applicables (article 2) ;", + "user_agreement_details_paragraph2_point8": "Un renforcement des obligations en matière de confidentialité (articles 9).", + "user_agreement_details_subtitle3": "Rappel aux clients consommateurs", + "user_agreement_details_paragraph3": "Si vous ne souhaitez pas être soumis à ces nouvelles dispositions, vous avez la possibilité de résilier vos services en cours d’utilisation à compter du 20 juillet 2017 dans un délai maximum de 4 mois, conformément à l’article L224-33 du code de la consommation. Pour ce faire, veuillez créer un ticket depuis votre espace client en mentionnant en objet: «Résiliation de mes services» ainsi que le moment souhaité de résiliation (immédiatement ou à la date de renouvellement des services).", + "user_agreement_details_success": "Votre contrat a bien été validé.", + "user_agreement_details_error": "Une erreur s'est produite lors de l'acceptation de votre contrat.", + "user_agreement_appendices": "Pour consulter les annexes, partie intégrante du Contrat (notamment les Conditions Générales, Conditions Particulières, l’annexe Traitement de données à caractère personnel (DPA), consultez ce lien." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_it_IT.json new file mode 100644 index 000000000000..6ec233d9c9be --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_it_IT.json @@ -0,0 +1,49 @@ +{ + "user_agreements_title": "I tuoi contratti ", + "user_agreements_list_title": "Lista dei contratti", + "user_agreements_name": "Nome", + "user_agreements_status": "Stato", + "user_agreements_status_KO": "Da confermare ", + "user_agreements_status_OBSOLETE": "Scaduto ", + "user_agreements_status_OK": "Convalidato", + "user_agreements_status_TODO": "Da confermare ", + "user_agreements_date": "Data", + "user_agreements_table_empty": "Non sono presenti contratti da visualizzare ", + "user_agreements_error": "Si è verificato un errore durante il caricamento delle informazioni. ", + "user_agreements_to_validate": "Contratti da convalidare", + "user_agreements_agreed": "Ho letto e accetto \"{{t0}}\"", + "user_agreements_accept": "Accetta", + "user_agreements_accept_title": "{{t0}}: accetta il contratto", + "user_agreements_accepting": "In corso", + "user_agreements_download_pdf": "Scarica", + "user_agreements_download_pdf_title": "{{t0}}: scarica in formato PDF", + "user_agreements_alert_close": "Chiudi l'alert", + "user_agreement_GDPR_title": "Regolamento Generale sulla Protezione dei Dati Personali", + "user_agreement_GDPR_helper_text": "Per maggiori informazioni sul nuovo regolamento, consulta la nostra Appendice relativa al trattamento dei dati personali.", + "user_agreement_details_accept": "Accetta", + "user_agreement_details_return": "Ritorna ai tuoi contratti", + "user_agreement_details_title": "Dettagli del contratto", + "user_agreement_details_agreed": "Ho letto e accetto \"{{t0}}\"", + "user_agreement_details_title1": "Modifica delle Condizioni Generali di Servizio", + "user_agreement_details_subtitle1": "Le Condizioni Generali di Servizio di OVH si aggiornano!", + "user_agreement_details_paragraph1": "Le modifiche apportate sono volte a perseguire quattro obiettivi principali:", + "user_agreement_details_paragraph1_point1": "adeguarsi alle evoluzioni della normativa, in particolare in materia di diritto del consumo, diritto delle obbligazioni e della protezione dei dati a carattere personale;", + "user_agreement_details_paragraph1_point2": "fornire risposte alle tue richieste;", + "user_agreement_details_paragraph1_point3": "determinare il nostro \"modus operandi\" e la nostra organizzazione in ambito internazionale;", + "user_agreement_details_paragraph1_point4": "migliorare la leggibilità del documento.", + "user_agreement_details_subtitle2": "Tra le modifiche apportate:", + "user_agreement_details_paragraph2_point1": "introduzione di un articolo che raccoglie l'insieme delle disposizioni applicabili ai clienti consumatori – coloro che utilizzano i nostri servizi in ambito non professionale, quali il diritto di recesso o la procedura di mediazione (articolo 12);", + "user_agreement_details_paragraph2_point2": "impegno di notificare con un preavviso minimo di 30 giorni una qualsiasi modifica suscettibile di degradare le tue condizioni di servizio (articolo 3.8);", + "user_agreement_details_paragraph2_point3": "introduzione di un promemoria che ricorda che ogni cliente resta proprietario dei contenuti (dati, informazioni, ecc...) ospitati nell'ambito dei nostri servizi (articolo 3.9);", + "user_agreement_details_paragraph2_point4": "precisazione del perimetro di responsabilità di ciascuna parte, specialmente nei confronti di terzi, così come delle condizioni in cui la responsabilità può essere ricondotta a OVH (articolo 6);", + "user_agreement_details_paragraph2_point5": "rafforzamento degli impegni di OVH in materia di sicurezza e protezione dei dati, con particolare riferimento al contesto del nuovo Regolamento Generale sulla Protezione dei Dati a carattere personale (articolo 8);", + "user_agreement_details_paragraph2_point6": "impegno a non modificare, secondo il tipo di servizio, la localizzazione o l'area geografica convenuta dei datacenter in cui vengono ospitati i contenuti (articolo 8.2.3);", + "user_agreement_details_paragraph2_point7": "impegno a non subappaltare, al di fuori al Gruppo OVH, prestazioni che implicano un accesso ai dati archiviati nell'ambito dei nostri servizi, senza esplicito consenso da parte del cliente e salvo disposizione contraria delle Condizioni Particolari di Servizio applicabili (articolo 2);", + "user_agreement_details_paragraph2_point8": "rafforzamento degli obblighi in materia di confidenzialità (articolo 9).", + "user_agreement_details_subtitle3": "Avviso ai clienti consumatori", + "user_agreement_details_paragraph3": "Se non vuoi essere soggetto alle nuove disposizioni, hai la possibilità di recedere dai tuoi servizi a partire dal 20 luglio 2017 ed entro un termine massimo di 4 mesi, conformemente a quanto disposto dall’articolo L224-33 del Codice del consumo. Per inviare la richiesta, crea un ticket dal tuo Spazio Cliente OVHcloud riportando nell'oggetto: \"Recesso dai miei servizi\" e indicando la data in cui desideri che il recesso diventi effettivo (immediatamente o alla data di rinnovo dei servizi).", + "user_agreement_details_success": "Il tuo contratto è stato convalidato.", + "user_agreement_details_error": "Si è verificato un errore durante la conferma del tuo contratto.", + "user_agreements_accept_all": "Accetta tutti i contratti", + "user_agreement_appendices": "Per consultare gli allegati, parte integrante del Contratto (in particolare le Condizioni Generali, le Condizioni Particolari, l'allegato Trattamento dei dati a carattere personale (DPA), consulta questo link." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..19cf85d5b594 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_pl_PL.json @@ -0,0 +1,49 @@ +{ + "user_agreement_appendices": "Aby zapoznać się z aneksami, które są częścią Regulaminów (w szczególności Regulaminami usług OVH i Umową powierzenia przetwarzania danych osobowych, kliknij link. ", + "user_agreements_title": "Regulaminy", + "user_agreements_list_title": "Lista regulaminów", + "user_agreements_name": "Nazwa", + "user_agreements_status": "Status", + "user_agreements_status_KO": "Do zaakceptowania", + "user_agreements_status_OBSOLETE": "Przestarzały", + "user_agreements_status_OK": "Zaakceptowany", + "user_agreements_status_TODO": "Do zaakceptowania", + "user_agreements_date": "Data", + "user_agreements_table_empty": "Brak regulaminów do wyświetlenia", + "user_agreements_error": "Wystąpił błąd podczas pobierania informacji.", + "user_agreements_to_validate": "Regulaminy do zaakceptowania", + "user_agreements_agreed": "Przeczytałem i akceptuję \"{{t0}}\"", + "user_agreements_accept": "Zaakceptuj", + "user_agreements_accept_title": "{{t0}}: zaakceptuj regulamin", + "user_agreements_accepting": "W realizacji", + "user_agreements_download_pdf": "Pobierz", + "user_agreements_download_pdf_title": "{{t0}}: pobierz w formacie pdf", + "user_agreements_alert_close": "Zamknij alert", + "user_agreement_GDPR_title": "Umowa powierzenia przetwarzania danych osobowych", + "user_agreement_GDPR_helper_text": "Więcej informacji na temat nowego rozporządzenia znajdziesz w Dokumencie dotyczącym przetwarzania danych osobowych.", + "user_agreement_details_accept": "Zaakceptuj", + "user_agreement_details_return": "Powrót do Regulaminów", + "user_agreement_details_title": "Szczegółowe informacje na temat regulaminu", + "user_agreement_details_agreed": "Przeczytałem i akceptuję \"{{t0}}\"", + "user_agreement_details_title1": "Zmiany w Regulaminach", + "user_agreement_details_subtitle1": "Wprowadzamy zmiany w Regulaminach.", + "user_agreement_details_paragraph1": "Wprowadzając te zmiany, mamy cztery główne cele:", + "user_agreement_details_paragraph1_point1": "Uwzględnienie zmian w prawie dotyczącym praw konsumentów oraz ochrony danych osobowych;", + "user_agreement_details_paragraph1_point2": "Dostarczenie odpowiedzi na pytania klientów;", + "user_agreement_details_paragraph1_point3": "Wyjaśnienie naszego trybu działania oraz organizacji w kontekście działalności międzynarodowej;", + "user_agreement_details_paragraph1_point4": "Zwiększenie czytelności dokumentu.", + "user_agreement_details_subtitle2": "Wśród wprowadzonych zmian znajdują się:", + "user_agreement_details_paragraph2_point1": "Dodanie artykułu, który zbiera wszystkie przepisy dotyczące konsumentów, czyli osób fizycznych korzystających z naszych usług w celach niezwiązanych z ich działalnością gospodarczą lub zawodową. Wśród przepisów tych znajduje się prawo do odstąpienia od umowy oraz procedura postępowania mediacyjnego (artykuł 12);", + "user_agreement_details_paragraph2_point2": "Zobowiązanie do informowania z przynajmniej 30-dniowym wyprzedzeniem o każdej zmianie mogącej mieć wpływ na warunki dotyczące usług (artykuł 3.8);", + "user_agreement_details_paragraph2_point3": "Przypomnienie, że każdy klient pozostaje właścicielem swoich treści (dane, informacje, itp.), które przechowuje w ramach naszych usług (artykuł 3.9);", + "user_agreement_details_paragraph2_point4": "Określenie zakresu odpowiedzialności każdej osoby, zwłaszcza względem osób trzecich, oraz warunków, w których OVH ponosi odpowiedzialność (artykuł 6);", + "user_agreement_details_paragraph2_point5": "Wzmocnienie zobowiązań OVH w zakresie bezpieczeństwa i ochrony danych, przede wszystkim w kontekście nowego Rozporządzenia o ochronie danych osobowych (artykuł 8);", + "user_agreement_details_paragraph2_point6": "Nasze zobowiązanie do niemodyfikowania, w zależności od typu usługi, lokalizacji lub strefy geograficznej centrów danych, w której klient instaluje swoje treści (artykuł 8.2.3);", + "user_agreement_details_paragraph2_point7": "Nasze zobowiązanie do niekorzystania, poza Grupą OVH, z usług wymagających dostępu do danych, które klienci przechowują w ramach naszych Usług, bez zgody klienta lub dyspozycji niezgodnej ze Szczegółowymi warunkami usług (artykuł 2);", + "user_agreement_details_paragraph2_point8": "Wzmocnienie zobowiązań w zakresie poufności (artykuł 9).", + "user_agreement_details_subtitle3": "Przypomnienie dla klientów będących konsumentami", + "user_agreement_details_paragraph3": "Jeśli nie chcesz podlegać tym nowym przepisom, możesz zrezygnować z usług, z których korzystasz w ciągu maksymalnie 4 miesięcy począwszy od 20 lipca 2017. W tym celu utwórz zgłoszenie w Panelu klienta, wpisując temat: „Rezygnacja z usług” oraz termin rezygnacji (natychmiastowo lub w dniu odnowienia usług).", + "user_agreement_details_success": "Regulamin został zaakceptowany.", + "user_agreement_details_error": "Wystąpił błąd podczas akceptowania regulaminu.", + "user_agreements_accept_all": "Zaakceptuj wszystkie regulaminy" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..fc039c6d1a04 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/translations/Messages_pt_PT.json @@ -0,0 +1,49 @@ +{ + "user_agreement_appendices": "Para consultar os anexos, parte integrante do Contrato (nomeadamente os Termos e Condições Gerais, os Termos e Condições Particulares, o anexo Tratamento de dados pessoais), consulte esta ligação.", + "user_agreements_title": "Contratos", + "user_agreements_list_title": "Lista dos contratos", + "user_agreements_name": "Nome", + "user_agreements_status": "Estado", + "user_agreements_status_KO": "Por validar", + "user_agreements_status_OBSOLETE": "Obsoleto", + "user_agreements_status_OK": "Validado", + "user_agreements_status_TODO": "Por validar", + "user_agreements_date": "Data", + "user_agreements_table_empty": "Nenhum contrato para mostrar", + "user_agreements_error": "Ocorreu um erro aquando do carregamento das informações.", + "user_agreements_to_validate": "Os meus contratos por validar", + "user_agreements_agreed": "Li e aceito \"{{t0}}\"", + "user_agreements_accept": "Aceitar", + "user_agreements_accept_title": "{{t0}}: aceitar contrato", + "user_agreements_accepting": "Em curso...", + "user_agreements_download_pdf": "Transferir", + "user_agreements_download_pdf_title": "{{t0}}: descarregar em formato pdf", + "user_agreements_alert_close": "Fechar aviso", + "user_agreement_GDPR_title": "Regulamento Geral de Proteção de Dados", + "user_agreement_GDPR_helper_text": "Para mais informação referente a este regulamento, consulte o nosso anexo referente ao processamento de dados pessoais.", + "user_agreement_details_accept": "Aceitar", + "user_agreement_details_return": "Voltar para os meus contratos", + "user_agreement_details_title": "Detalhes do contrato", + "user_agreement_details_agreed": "Li e aceito \"{{t0}}\"", + "user_agreement_details_title1": "Alteração das Condições gerais de serviço", + "user_agreement_details_subtitle1": "As Condições gerais do serviço da OVH evoluem!", + "user_agreement_details_paragraph1": "Através desta alteração, queremos cumprir quatro objetivos:", + "user_agreement_details_paragraph1_point1": "Ter em conta a evolução da regulamentação, nomeadamente ao nível dos direitos do consumidor, das obrigações contratuais e da proteção de dados pessoais;", + "user_agreement_details_paragraph1_point2": "Responder às suas dúvidas e perguntas;", + "user_agreement_details_paragraph1_point3": "Especificar o nosso modo de funcionamento e a nossa organização, no contexto da internacionalização das nossas atividades;", + "user_agreement_details_paragraph1_point4": "Melhorar a legibilidade do documento.", + "user_agreement_details_subtitle2": "Estas alterações incluem:", + "user_agreement_details_paragraph2_point1": "A criação de um artigo que reúne as disposições aplicáveis aos consumidores, ou seja, aos clientes que utilizam os nossos serviços num contexto não profissional, tais como o direito de retratação ou o procedimento de mediação (artigo 12º);", + "user_agreement_details_paragraph2_point2": "O nosso compromisso de notificar pelo menos 30 dias antes sobre qualquer modificação às condições de serviço (artigo 3.8);", + "user_agreement_details_paragraph2_point3": "Recordar aos clientes que estes são os proprietários dos conteúdos (dados, informações, etc.) alojados nos nossos serviços (artigo 3.9);", + "user_agreement_details_paragraph2_point4": "Clarificação do âmbito de responsabilidade das partes, especialmente no que respeita a terceiros, e das condições que permitem a invocação da responsabilidade da OVH (artigo 6º);", + "user_agreement_details_paragraph2_point5": "Reforço dos compromissos da OVH em matéria de segurança e proteção dos dados, no contexto do novo Regulamento Geral sobre a Proteção de Dados pessoais (artigo 8º);", + "user_agreement_details_paragraph2_point6": "Compromisso para não alterar a localização ou a zona geográfica dos datacenters definida para alojar os seus conteúdos (artigo 8.2.3);", + "user_agreement_details_paragraph2_point7": "Compromisso para não subcontratar, fora do Grupo da OVH, serviços que impliquem um acesso aos dados associados aos seus serviços sem a sua autorização, salvo disposto o contrário nas Condições Particulares aplicáveis (artigo 2º);", + "user_agreement_details_paragraph2_point8": "Reforço das obrigações em matéria de confidencialidade (artigo 9º).", + "user_agreement_details_subtitle3": "Aviso aos clientes consumidores", + "user_agreement_details_paragraph3": "Se não pretender ficar sujeito a estas novas disposições, pode rescindir os seus serviços a partir de 20 de julho de 2017 num prazo máximo de 4 meses, de acordo com o artigo aplicável do Código do Consumidor. Para isso, deve criar um ticket na sua Área de Cliente, indicando no assunto: “Rescisão dos meus serviços” e a data na qual pretende rescindi-los (de imediato ou na data de renovação dos serviços).", + "user_agreement_details_success": "O seu contrato foi validado.", + "user_agreement_details_error": "Ocorreu um erro na validação do seu contrato.", + "user_agreements_accept_all": "Aceitar todos os contratos" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/user-agreements.constant.js b/packages/manager/modules/new-billing/src/autoRenew/agreements/user-agreements.constant.js new file mode 100644 index 000000000000..dca57b3ab6b2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/user-agreements.constant.js @@ -0,0 +1,86 @@ +export const AGREEMENT_GENERIC_MORE_INFORMATIONS_URL = + 'https://www.ovh.com/world/support/contracts'; + +export const SUPPORT_URL = + 'https://help.ovhcloud.com/csm?id=csm_cases_requests&ovhSubsidiary='; + +export const GDPR_AGREEMENTS_INFOS = [ + { + agreementId: 1800, + subsidiary: 'DE', + url: 'https://www.ovh.de/privacy', + more_informations_url: 'https://www.ovh.de/support/agb-vertrage/', + }, + { + agreementId: 1801, + subsidiary: 'LT', + url: 'https://www.ovh.lt/privacy', + more_informations_url: null, + }, + { + agreementId: 1802, + subsidiary: 'CZ', + url: 'https://www.ovh.cz/privacy', + more_informations_url: null, + }, + { + agreementId: 1803, + subsidiary: 'IT', + url: 'https://www.ovh.it/privacy', + more_informations_url: 'https://www.ovh.it/supporto/contratti', + }, + { + agreementId: 1804, + subsidiary: 'PT', + url: 'https://www.ovh.pt/privacy', + more_informations_url: 'https://www.ovh.pt/suporte/contratos', + }, + { + agreementId: 1805, + subsidiary: 'ES', + url: 'https://www.ovh.es/privacy', + more_informations_url: 'https://www.ovh.es/soporte/contratos', + }, + { + agreementId: 1806, + subsidiary: 'NL', + url: 'https://www.ovh.nl/privacy', + more_informations_url: 'https://www.ovh.nl/support/contracten', + }, + { + agreementId: 1807, + subsidiary: 'FI', + url: 'https://www.ovh-hosting.fi/privacy', + more_informations_url: 'https://www.ovh.com/world/support/contracts', + }, + { + agreementId: 1808, + subsidiary: 'PL', + url: 'https://www.ovh.pl/privacy', + more_informations_url: 'https://www.ovh.pl/pomoc/regulaminy', + }, + { + agreementId: 1821, + subsidiary: 'EN', + url: 'https://www.ovh.co.uk/privacy', + more_informations_url: 'https://www.ovh.co.uk/support/contracts', + }, + { + agreementId: 1822, + subsidiary: 'IE', + url: 'https://www.ovh.ie/privacy', + more_informations_url: 'https://www.ovh.ie/support/contracts', + }, + { + agreementId: 1826, + subsidiary: 'FR', + url: 'https://www.ovh.com/fr/protection-donnees-personnelles', + more_informations_url: 'https://www.ovh.com/fr/support/contrats/', + }, +]; + +export default { + AGREEMENT_GENERIC_MORE_INFORMATIONS_URL, + SUPPORT_URL, + GDPR_AGREEMENTS_INFOS, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/user-agreements.controller.js b/packages/manager/modules/new-billing/src/autoRenew/agreements/user-agreements.controller.js new file mode 100644 index 000000000000..01343c9a50c9 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/user-agreements.controller.js @@ -0,0 +1,104 @@ +import get from 'lodash/get'; + +export default /* @ngInject */ function UserAccountAgreementsController( + $scope, + $translate, + Alerter, + atInternet, + gotoAcceptAllAgreements, + UserAccountServicesAgreements, +) { + function init() { + $scope.loading = true; + $scope.list = []; + + $scope.getToValidate(); + } + + $scope.loaders = { + toActivate: true, + toActivateList: true, + }; + + $scope.toActivate = []; + + $scope.agreed = {}; + + $scope.gotoAcceptAllAgreements = gotoAcceptAllAgreements; + + $scope.loadAgreementsList = function loadAgreementsList(count, offset) { + init(); + + UserAccountServicesAgreements.getList(count, offset) + .then( + (agreements) => { + $scope.list = agreements; + }, + (err) => { + Alerter.error( + `${$translate.instant('user_agreements_error')} ${get( + err, + 'message', + ) || err}`, + 'agreements_alerter', + ); + }, + ) + .then(() => { + $scope.loading = false; + }); + }; + + $scope.getToValidate = function getToValidate() { + $scope.toActivate = []; + $scope.loaders.toActivate = true; + + UserAccountServicesAgreements.getToValidate().then( + (agreements) => { + $scope.toActivate = agreements; + $scope.loaders.toActivate = false; + }, + angular.noop, + (contract) => { + $scope.toActivate.push(contract); + $scope.agreed[contract.id] = false; + }, + ); + }; + + $scope.accept = function accept(contract) { + atInternet.trackClick({ + name: + 'dedicated::account::billing::autorenew::agreements::go-to-accept-agreement', + type: 'action', + }); + $scope.loaders[`accept_${contract.id}`] = true; + + UserAccountServicesAgreements.accept(contract) + .then( + () => { + $scope.getToValidate(); + $scope.$broadcast('paginationServerSide.reload', 'agreementsList'); + }, + (d) => { + Alerter.set( + 'alert-danger', + `${$translate.instant('user_agreement_details_error')} ${get( + d, + 'data.message', + d, + )}`, + null, + 'agreements_alerter', + ); + }, + ) + .finally(() => { + $scope.loaders[`accept_${contract.id}`] = false; + }); + }; + + $scope.resetMessages = function resetMessages() { + Alerter.resetMessage('agreements_alerter'); + }; +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/user-agreements.html b/packages/manager/modules/new-billing/src/autoRenew/agreements/user-agreements.html new file mode 100644 index 000000000000..6ebdaaeb4e6e --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/user-agreements.html @@ -0,0 +1,196 @@ +
+
+ +
+ + +
+ +
+
+

+
+ + + +
+
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + +
+
+ +
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+ + + + + + + + + +
+
+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/user-agreements.module.js b/packages/manager/modules/new-billing/src/autoRenew/agreements/user-agreements.module.js new file mode 100644 index 000000000000..6439e32d1b79 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/user-agreements.module.js @@ -0,0 +1,29 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngAtInternet from '@ovh-ux/ng-at-internet'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import acceptAll from './popup-agreement/popup-agreement.module'; +import details from './details/details.module'; +import routing from './user-agreements.routes'; +import service from './user-agreements.service'; + +const moduleName = 'ovhManagerBillingAgreements'; + +angular + .module(moduleName, [ + acceptAll, + angularTranslate, + details, + ngAtInternet, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .config(routing) + .service('UserAccountServicesAgreements', service) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/user-agreements.routes.js b/packages/manager/modules/new-billing/src/autoRenew/agreements/user-agreements.routes.js new file mode 100644 index 000000000000..6280a1d53238 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/user-agreements.routes.js @@ -0,0 +1,49 @@ +import controller from './user-agreements.controller'; +import template from './user-agreements.html'; + +export default /* @ngInject */ ( + $stateProvider, + $urlServiceProvider, + coreConfigProvider, +) => { + if (coreConfigProvider.isRegion(['EU', 'CA'])) { + $stateProvider.state('billing.autorenew.agreements', { + url: '/agreements', + template, + controller, + redirectTo: (transition) => + transition + .injector() + .getAsync('currentUser') + .then((currentUser) => currentUser.isTrusted && 'billing.autorenew'), + resolve: { + gotoAcceptAllAgreements: /* @ngInject */ ($state, atInternet) => ( + agreements, + ) => { + atInternet.trackClick({ + name: + 'dedicated::account::billing::autorenew::agreements::go-to-accept-all', + type: 'action', + }); + return $state.go('billing.autorenew.agreements.popup-agreement', { + agreements, + }); + }, + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('user_agreements_list_title'), + }, + }); + + // ensure compatibility with links sended by emails + // like #/useraccount/agreements or #/useraccount/agreements/123456/details + // make a redirect to the new url of ui route + $urlServiceProvider.rules.when( + '/useraccount/agreements', + '/billing/autorenew/agreements', + ); + $urlServiceProvider.rules.when( + '/billing/agreements', + '/billing/autorenew/agreements', + ); + } +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/agreements/user-agreements.service.js b/packages/manager/modules/new-billing/src/autoRenew/agreements/user-agreements.service.js new file mode 100644 index 000000000000..369b7c2531d9 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/agreements/user-agreements.service.js @@ -0,0 +1,167 @@ +import filter from 'lodash/filter'; +import find from 'lodash/find'; +import map from 'lodash/map'; +import set from 'lodash/set'; + +import { GDPR_AGREEMENTS_INFOS } from './user-agreements.constant'; + +export default /* @ngInject */ function UserAccountAgreementsService( + $cacheFactory, + $http, + $q, + $translate, + accountMigrationService, + constants, +) { + const userAgreementsCache = $cacheFactory('USER_AGREEMENTS'); + + const proxyPath = `${constants.swsProxyRootPath}me`; + + function getSuccessDataOrReject(response) { + return response.status < 300 ? response.data : $q.reject(response.data); + } + + function formatList(response) { + if ( + response.data.list && + response.data.list.results && + response.data.list.results.length + ) { + response.data.list.results.forEach((agreement) => { + if ( + find(GDPR_AGREEMENTS_INFOS, { agreementId: agreement.contractId }) + ) { + set( + agreement, + 'name', + $translate.instant('user_agreement_GDPR_title'), + ); + } + }); + } + return response; + } + + this.getList = function getList(count, offset) { + return $http + .get('/sws/agreements', { + cache: userAgreementsCache, + params: { + count, + offset, + }, + serviceType: 'aapi', + }) + .then(formatList) + .then(getSuccessDataOrReject); + }; + + this.getAgreementIds = function getAgreementIds() { + return $http + .get(`${proxyPath}/agreements`) + .then((response) => response.data); + }; + + this.getAgreement = function getAgreement(agreementId) { + return this.getAgreementIds().then((agreementIds) => + agreementIds.includes(agreementId) + ? $http + .get(`${proxyPath}/agreements/${agreementId}`) + .then((response) => { + if (response.data && response.data.contractId) { + const gdprAgreement = find(GDPR_AGREEMENTS_INFOS, { + agreementId: response.data.contractId, + }); + if (gdprAgreement) { + response.data.title = $translate.instant( + 'user_agreement_GDPR_title', + ); + response.data.helperText = $translate.instant( + 'user_agreement_GDPR_helper_text', + { agreementLink: gdprAgreement.url }, + ); + } + } + return response; + }) + .then(getSuccessDataOrReject) + : accountMigrationService.getAgreementDetails(agreementId), + ); + }; + + this.getContract = function getContract(contractId) { + return this.getAgreementIds().then((agreementIds) => + agreementIds.includes(contractId) + ? $http + .get(`${proxyPath}/agreements/${contractId}/contract`) + .then(getSuccessDataOrReject) + : accountMigrationService.getContractInfo(contractId), + ); + }; + + this.getPendingAgreements = function getPendingAgreements() { + return $http + .get('/sws/agreements', { + cache: userAgreementsCache, + params: { + count: 0, + offset: 0, + agreed: 'todo', + }, + serviceType: 'aapi', + }) + .then(formatList) + .then(getSuccessDataOrReject); + }; + + this.getToValidate = function getToValidate() { + return $q + .all([ + this.getPendingAgreements(), + this.getPendingAccountMigrationAgreements(), + ]) + .then(([pendingAgreements, pendingAccountMigrationAgreements]) => { + const sortByDate = (a, b) => { + const dateA = new Date(a.date); + const dateB = new Date(b.date); + return dateB - dateA; + }; + pendingAccountMigrationAgreements.sort(sortByDate); + pendingAgreements.list.results.sort(sortByDate); + set( + pendingAgreements, + 'list.results', + pendingAgreements.list.results.concat( + pendingAccountMigrationAgreements, + ), + ); + set(pendingAgreements, 'count', pendingAgreements.list.results.length); + return pendingAgreements; + }); + }; + + this.getPendingAccountMigrationAgreements = function getAccountMigrationAgreements() { + return accountMigrationService + .getAllContracts() + .then((agreements) => filter(agreements, { agreed: 'todo' })) + .then((agreements) => + map(agreements, (agreement) => ({ + ...agreement, + pdfUrl: agreement.pdf, + })), + ); + }; + + this.accept = function accept(contract) { + return contract.migrationId + ? accountMigrationService.acceptAgreement(contract.contractId) + : $http + .post(`${proxyPath}/agreements/${contract.id}/accept`) + .then(formatList) + .then(getSuccessDataOrReject) + .then((response) => { + userAgreementsCache.removeAll(); + return response; + }); + }; +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/autorenew.component.js b/packages/manager/modules/new-billing/src/autoRenew/autorenew.component.js new file mode 100644 index 000000000000..b19e0bd6e6dd --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/autorenew.component.js @@ -0,0 +1,43 @@ +import controller from './autorenew.controller'; +import template from './autorenew.html'; + +export default { + bindings: { + activationLink: '<', + agreementsLink: '<', + billingServices: '<', + canDisableAllDomains: '<', + currentActiveLink: '<', + currentUser: '<', + defaultPaymentMean: '<', + disableAutorenewForDomains: '<', + disableBulkAutorenew: '<', + enableBulkAutorenew: '<', + filters: '<', + getServices: '<', + goToAutorenew: '<', + hasAutoRenew: '<', + homeLink: '<', + isAutorenewManagementAvailable: '<', + isAutorenew2016DeploymentBannerAvailable: '<', + isEnterpriseCustomer: '<', + nicBilling: '<', + nicRenew: '<', + nics: '<', + offset: '<', + onListParamChanges: '<', + pageNumber: '<', + pageSize: '<', + searchText: '<', + selectedType: '<', + services: '<', + serviceTypes: '<', + sort: '<', + sshLink: '<', + guides: '<', + trackClick: '<', + choiceRenewDayTooltipAvailable: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/autorenew.constants.js b/packages/manager/modules/new-billing/src/autoRenew/autorenew.constants.js new file mode 100644 index 000000000000..f2a739553aaf --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/autorenew.constants.js @@ -0,0 +1,86 @@ +export const ALIGNMENT_URLS = { + ASIA: 'https://www.ovh.co.uk/cgi-bin/order/renew.cgi?alignDate=1&csid=0', + AU: 'https://www.ovh.co.uk/cgi-bin/order/renew.cgi?alignDate=1&csid=0', + CA: 'https://www.ovh.co.uk/cgi-bin/order/renew.cgi?alignDate=1&csid=0', + CZ: 'https://www.ovh.cz/cgi-bin/order/renew.cgi?alignDate=1&csid=0', + DE: 'https://www.ovh.de/cgi-bin/order/renew.cgi?alignDate=1&csid=0', + ES: 'https://www.ovh.es/cgi-bin/order/renew.cgi?alignDate=1&csid=0', + FI: 'https://www.ovh-hosting.fi/cgi-bin/order/renew.cgi?alignDate=1&csid=0', + FR: 'https://eu.ovh.com/fr/cgi-bin/order/renew.cgi?alignDate=1', + GB: 'https://www.ovh.co.uk/cgi-bin/order/renew.cgi?alignDate=1&csid=0', + IE: 'https://www.ovh.ie/cgi-bin/order/renew.cgi?alignDate=1&csid=0', + IT: 'https://www.ovh.it/cgi-bin/order/renew.cgi?alignDate=1&csid=0', + LT: 'https://www.ovh.lt/cgi-bin/order/renew.cgi?alignDate=1&csid=0', + NL: 'https://www.ovh.nl/cgi-bin/order/renew.cgi?alignDate=1&csid=0', + PL: 'https://www.ovh.pl/cgi-bin/order/renew.cgi?alignDate=1&csid=0', + PT: 'https://www.ovh.pt/cgi-bin/order/renew.cgi?alignDate=1&csid=0', + QC: 'https://eu.ovh.com/fr/cgi-bin/order/renew.cgi?alignDate=1', + SG: 'https://www.ovh.co.uk/cgi-bin/order/renew.cgi?alignDate=1&csid=0', + US: 'https://www.ovh.co.uk/cgi-bin/order/renew.cgi?alignDate=1&csid=0', + WE: 'https://www.ovh.co.uk/cgi-bin/order/renew.cgi?alignDate=1&csid=0', + WS: 'https://www.ovh.es/cgi-bin/order/renew.cgi?alignDate=1&csid=0', + IN: 'https://www.ovh.co.uk/cgi-bin/order/renew.cgi?alignDate=1&csid=0', +}; + +export const AUTORENEW_EVENT = 'billing.autorenew.changed'; + +export const COLUMNS_CONFIG = [ + { + property: 'serviceId', + }, + { + property: 'serviceType', + }, + { + property: 'state', + }, + { + property: 'status', + }, + { + property: 'expiration', + }, +]; + +export const CONTRACTS_IDS = { + CA: 1752, + QC: 1753, + WE: 1754, + WS: 1755, +}; + +export const MIN_DOMAIN_LENGTH = 50; + +export const NIC_ALL = 'billing_autorenew_nic_all'; + +export const SERVICE_EXPIRATION = { + EXPIRES_IN_A_WEEK: 'weeks', + EXPIRES_IN_A_MONTH: 'months', + RENEWED_IN_AMONTH: 'renew_month', +}; + +export const SERVICE_STATES = { + UP: 'UP', + EXPIRED: 'EXPIRED', +}; + +export const SERVICE_STATUS = { + AUTOMATIC: 'auto', + MANUAL: 'manual', + PENDING_DEBT: 'pending_debt', + PENDING_RESILIATION: 'delete_at_expiration', + RESILIATED: 'expired', +}; + +export const URL_PARAMETER_SEPARATOR = '%20'; + +export default { + AUTORENEW_EVENT, + CONTRACTS_IDS, + MIN_DOMAIN_LENGTH, + NIC_ALL, + SERVICE_EXPIRATION, + SERVICE_STATES, + SERVICE_STATUS, + URL_PARAMETER_SEPARATOR, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/autorenew.controller.js b/packages/manager/modules/new-billing/src/autoRenew/autorenew.controller.js new file mode 100644 index 000000000000..daf037281bd6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/autorenew.controller.js @@ -0,0 +1,307 @@ +import find from 'lodash/find'; +import get from 'lodash/get'; +import map from 'lodash/map'; +import reduce from 'lodash/reduce'; +import set from 'lodash/set'; +import upperFirst from 'lodash/upperFirst'; + +import { RENEW_URL } from '@ovh-ux/manager-billing-components'; +import { + ALIGNMENT_URLS, + COLUMNS_CONFIG, + NIC_ALL, + URL_PARAMETER_SEPARATOR, +} from './autorenew.constants'; + +export default class AutorenewCtrl { + /* @ngInject */ + constructor( + $filter, + $q, + $translate, + atInternet, + BillingAutoRenew, + billingRenewHelper, + coreConfig, + ouiDatagridService, + ) { + this.$filter = $filter; + this.$q = $q; + this.$translate = $translate; + this.atInternet = atInternet; + this.BillingAutoRenew = BillingAutoRenew; + this.renewHelper = billingRenewHelper; + this.coreConfig = coreConfig; + this.ouiDatagridService = ouiDatagridService; + } + + $onInit() { + this.ALIGNMENT_URL = this.coreConfig.isRegion('EU') + ? ALIGNMENT_URLS[this.currentUser.ovhSubsidiary] || ALIGNMENT_URLS.FR + : null; + + this.selectedServices = []; + + this.nicBillingFilter = this.nicBilling || this.$translate.instant(NIC_ALL); + + this.filtersOptions = { + serviceType: { + hideOperators: true, + values: this.serviceTypes, + }, + status: { + hideOperators: true, + values: this.BillingAutoRenew.getStatusTypes(), + }, + state: { + hideOperators: true, + values: this.BillingAutoRenew.getStatesTypes(), + }, + expiration: { + hideOperators: true, + values: this.BillingAutoRenew.getExpirationFilterTypes(), + }, + }; + + this.criteria = map(this.filters, (value, property) => ({ + property, + value, + operator: 'is', + title: this.getCriterionTitle( + property, + get(this.filtersOptions, `${property}.values.${value}`), + ), + })); + + this.parseExtraCriteria(); + + if (this.sort.predicate) { + this.columnsConfig = map(COLUMNS_CONFIG, (column) => + column.property === this.sort.predicate + ? { + ...this.columnsConfig, + sortable: this.sort.reverse ? 'desc' : 'asc', + } + : column, + ); + } + + if (!this.isAutorenewManagementAvailable) { + delete this.guides.url.my_services.automatic_renewal; + this.hideHeaderGuide = + Object.keys(this.guides.url.my_services).length === 0; + } + } + + descriptionOfHeading() { + return this.coreConfig.getRegion() !== 'US' + ? this.$translate.instant('billing_description') + : ''; + } + + getCriterionTitle(type, value) { + return `${this.$translate.instant( + `billing_autorenew_criterion_${type}`, + )} ${this.$translate.instant( + 'common_criteria_adder_operator_options_is', + )} ${value}`; + } + + parseExtraCriteria() { + if (this.selectedType) { + this.criteria.push({ + property: 'serviceType', + operator: 'is', + value: this.selectedType, + title: this.getCriterionTitle( + 'serviceType', + this.serviceTypes[this.selectedType], + ), + }); + } + + if (this.searchText) { + this.criteria.push({ + title: this.searchText, + property: null, + operator: 'contains', + value: this.searchText, + }); + } + } + + getDatasToExport() { + const servicesToExport = + this.selectedServices.length === 0 + ? this.services + : this.selectedServices; + const datasToReturn = [ + [ + this.$translate.instant('billing_autorenew_service_name'), + this.$translate.instant('billing_autorenew_service'), + this.$translate.instant('billing_autorenew_service_status'), + this.$translate.instant('billing_autorenew_service_date'), + ], + ]; + + servicesToExport.forEach((service) => { + datasToReturn.push([ + service.serviceId, + this.$translate.instant( + `billing_autorenew_service_type_${service.serviceType}`, + ), + service.renewLabel, + `${this.renewHelper.getRenewDateFormated(service)} ${this.$filter( + 'date', + )(service.expiration, 'mediumDate')}`, + ]); + }); + + return datasToReturn; + } + + onRowSelection($rows) { + this.selectedServices = $rows; + this.manualRenewUrl = this.getManualRenewUrl(); + } + + trackCSVExport() { + this.atInternet.trackClick({ + name: 'export_csv', + type: 'action', + chapter1: 'services', + chapter2: 'export', + }); + } + + static getCriterion(criteria, property) { + return get(find(criteria, { property }), 'value'); + } + + loadServices() { + if (get(this.ouiDatagridService, 'datagrids.services')) { + set( + this.ouiDatagridService, + 'datagrids.services.paging.offset', + this.offset + 1, + ); + } + + return this.$q.resolve({ + meta: { + totalCount: this.services.count, + }, + data: this.billingServices, + }); + } + + onPageChange({ pageSize, offset }) { + return this.onListParamChanges({ + pageNumber: parseInt(offset / pageSize, 10) + 1, + pageSize, + }); + } + + onCriteriaChange($criteria) { + const selectedType = find($criteria, { property: 'serviceType' }); + const searchText = find($criteria, { property: null }); + const filters = reduce( + $criteria, + (criteria, { property, value }) => { + if (![null, 'serviceType'].includes(property)) { + return { + ...criteria, + [property]: value, + }; + } + + return criteria; + }, + {}, + ); + + this.onListParamChanges({ + filters: JSON.stringify(filters), + selectedType: get(selectedType, 'value'), + searchText: get(searchText, 'value'), + pageNumber: 1, + }); + } + + onSortChange({ name, order }) { + this.onListParamChanges({ + sort: JSON.stringify({ predicate: name, reverse: order === 'DESC' }), + }); + } + + onNicBillingChange(nicBilling) { + this.onListParamChanges({ + nicBilling: + nicBilling === this.$translate.instant(NIC_ALL) ? null : nicBilling, + }); + } + + onAutoRenewChange(nicRenew) { + this.nicRenewLoading = true; + + this.BillingAutoRenew.setNicRenew(nicRenew) + .catch(({ message }) => { + this.goToAutorenew(message, 'danger'); + }) + .finally(() => { + this.nicRenewLoading = false; + }); + } + + getManualRenewUrl() { + const urlParameterDomains = this.selectedServices + .map(({ domain }) => domain) + .join(URL_PARAMETER_SEPARATOR); + + return `${get( + RENEW_URL, + this.currentUser.ovhSubsidiary, + RENEW_URL.default, + )}${urlParameterDomains}`; + } + + getAutomaticExpirationDate(service) { + return upperFirst( + new Intl.DateTimeFormat(this.$translate.use().replace('_', '-'), { + year: 'numeric', + month: 'long', + }).format(new Date(service.expiration)), + ); + } + + getDisplayedDateOfEffect(service) { + if (service.hasDebt()) { + return this.$translate.instant('billing_autorenew_service_date_now'); + } + if (service.hasPendingResiliation() || service.isResiliated()) { + return this.$translate.instant('billing_autorenew_service_date_renew', { + date: service.formattedExpiration, + }); + } + if (service.hasParticularRenew() || service.isOneShot()) { + return '-'; + } + if (service.hasManualRenew() && !service.isResiliated()) { + return this.$translate.instant('billing_autorenew_service_date_before', { + date: service.formattedExpiration, + }); + } + if (service.hasAutomaticRenewal()) { + return this.getAutomaticExpirationDate(service); + } + return '-'; + } + + shouldDisplayAutoRenewActionRequired() { + return ( + this.BillingAutoRenew.isAutomaticRenewV2Available() && + (!this.defaultPaymentMean || !this.nicRenew.active) && + !this.currentUser.hasAutorenew2016() + ); + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/autorenew.html b/packages/manager/modules/new-billing/src/autoRenew/autorenew.html new file mode 100644 index 000000000000..a67a9c68107c --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/autorenew.html @@ -0,0 +1,298 @@ + + + + + + + + + + + + + + + + +
+
+ + + + +

+

+ + +
+
+ + + +

+
+ +
+ + + +
+ +
+ + + + + +
+ + + + +
+ + + + + + + + + + +
+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/autorenew.module.js b/packages/manager/modules/new-billing/src/autoRenew/autorenew.module.js new file mode 100644 index 000000000000..afb15c98a527 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/autorenew.module.js @@ -0,0 +1,84 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngAtInternet from '@ovh-ux/ng-at-internet'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; +import ovhManagerBillingComponents from '@ovh-ux/manager-billing-components'; +import ovhManagerCore from '@ovh-ux/manager-core'; + +import activation from './actions/activation/activation.module'; +import agreements from './agreements/user-agreements.module'; +import autorenewBlocked from './actions/autorenew-blocked/autorenew-blocked.module'; +import bulk from './bulk/bulk.module'; +import cancelCommitment from './cancel-commitment'; +import cancelResiliation from './cancel-resiliation'; +import commitment from './commitment'; +import debtBeforePaying from './actions/debtBeforePaying/debtBeforePaying.module'; +import deleteModule from './actions/delete/delete.module'; +import disable from './disable/disable.module'; +import disableDomainsBulk from './disable-domains-bulk/disable-domains-bulk.module'; +import exchangeRenew from './actions/exchange/exchange-renew.module'; +import enable from './enable/enable.module'; +import resiliation from './resiliation'; +import ssh from './ssh/ssh.module'; +import terminate from './actions/terminate/terminate.module'; +import terminateEmail from './actions/terminateEmail/email.module'; +import terminateAgoraService from './actions/terminate-agora-service'; +import terminateEnterpriseCloudDatabase from './actions/terminate-enterprise-cloud-database/terminate-enterprise-cloud-database.module'; +import terminateHostingWeb from './actions/terminateHostingWeb/hosting-web.module'; +import terminatePrivateDatabase from './actions/terminatePrivateDatabase/private-database.module'; +import terminateWebCoach from './actions/terminate-webcoach/terminate-webcoach.module'; +import terminateAllDOm from './actions/terminate-all-dom/module'; +import update from './actions/update/update.module'; +import warnNicBilling from './actions/warnNicBilling/warnNicBilling.module'; +import warnPendingDebt from './actions/warnPendingDebt/pending-debt.module'; + +import component from './autorenew.component'; +import routing from './autorenew.routing'; +import service from './autorenew.service'; + +const moduleName = 'ovhManagerBillingAutorenew'; + +angular + .module(moduleName, [ + activation, + agreements, + angularTranslate, + autorenewBlocked, + bulk, + cancelCommitment, + cancelResiliation, + commitment, + debtBeforePaying, + deleteModule, + disable, + disableDomainsBulk, + exchangeRenew, + enable, + ngAtInternet, + ngTranslateAsyncLoader, + ovhManagerBillingComponents, + ovhManagerCore, + 'oui', + resiliation, + ssh, + terminate, + terminateEmail, + terminateAgoraService, + terminateEnterpriseCloudDatabase, + terminateHostingWeb, + terminatePrivateDatabase, + terminateWebCoach, + terminateAllDOm, + uiRouter, + update, + warnNicBilling, + warnPendingDebt, + ]) + .config(routing) + .component('autoRenew', component) + .service('BillingAutoRenew', service) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/autorenew.routing.js b/packages/manager/modules/new-billing/src/autoRenew/autorenew.routing.js new file mode 100644 index 000000000000..9b111a1cd25f --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/autorenew.routing.js @@ -0,0 +1,260 @@ +import assign from 'lodash/assign'; +import get from 'lodash/get'; +import map from 'lodash/map'; +import range from 'lodash/range'; + +import { BillingService } from '@ovh-ux/manager-models'; + +import { NIC_ALL } from './autorenew.constants'; + +export default /* @ngInject */ ($stateProvider, coreConfigProvider) => { + $stateProvider.state('billing.autorenewRedirection', { + url: + '/autoRenew?selectedType&pageSize&pageNumber&filters&searchText&nicBilling&sort', + redirectTo: 'billing.autorenew', + }); + + $stateProvider.state('billing.autorenew', { + url: + '/autorenew?selectedType&pageSize&pageNumber&filters&searchText&nicBilling&sort', + component: 'autoRenew', + translations: { value: ['.'], format: 'json' }, + params: { + filters: { + value: '{}', + squash: true, + }, + nicBilling: { + value: null, + squash: true, + }, + pageNumber: { + value: '1', + squash: true, + }, + pageSize: { + value: '25', + squash: true, + }, + searchText: { + value: null, + squash: true, + }, + selectedType: { + value: null, + squash: true, + }, + sort: { + value: JSON.stringify({ predicate: 'serviceId', reverse: false }), + squash: true, + }, + }, + resolve: assign( + { + currentActiveLink: /* @ngInject */ ($state) => () => + $state.href($state.current.name, {}, { inherit: false }), + sshLink: /* @ngInject */ ($state) => + $state.href('billing.autorenew.ssh', {}, { inherit: false }), + queryParameters: /* @ngInject */ ($transition$, BillingAutoRenew) => { + if ($transition$.to()?.name === 'billing.autorenew') { + BillingAutoRenew.setQueryParams($transition$.params()); + } + return BillingAutoRenew.getQueryParams(); + }, + goToAutorenew: /* @ngInject */ ( + $state, + $timeout, + Alerter, + queryParameters, + ) => (message = false, type = 'success') => { + const reload = message && type === 'success'; + + const promise = $state.go( + 'billing.autorenew', + queryParameters || {}, + { + reload, + }, + ); + + if (message) { + promise.then(() => + $timeout(() => Alerter.set(`alert-${type}`, message)), + ); + } + + return promise; + }, + featureAvailability: /* @ngInject */ (ovhFeatureFlipping) => + ovhFeatureFlipping.checkFeatureAvailability([ + 'billing:management', + 'billing:autorenew2016Deployment', + ]), + isAutorenewManagementAvailable: /* @ngInject */ (featureAvailability) => + featureAvailability?.isFeatureAvailable('billing:management') || + false, + isAutorenew2016DeploymentBannerAvailable: /* @ngInject */ ( + featureAvailability, + ) => + featureAvailability?.isFeatureAvailable( + 'billing:autorenew2016Deployment', + ) || false, + hideBreadcrumb: /* @ngInject */ () => true, + trackingPrefix: () => 'dedicated::account::billing::autorenew', + }, + !coreConfigProvider.isRegion('US') + ? { + activationLink: /* @ngInject */ ($state) => + $state.href('billing.autorenew.activation'), + agreementsLink: /* @ngInject */ ($state) => + $state.href( + 'billing.autorenew.agreements', + {}, + { inherit: false }, + ), + billingServices: /* @ngInject */ (services) => + map( + services.list.results, + (service) => new BillingService(service), + ), + canDisableAllDomains: /* @ngInject */ (services) => + services.bulkDomains, + /* @ngInject */ + defaultPaymentMean: (ovhPaymentMethod) => + ovhPaymentMethod.getDefaultPaymentMethod(), + disableAutorenewForDomains: /* @ngInject */ ($state) => () => + $state.go('billing.autorenew.disableDomainsBulk'), + disableBulkAutorenew: /* @ngInject */ ($state) => (services) => + $state.go('billing.autorenew.disable', { + services: map(services, 'id').join(','), + }), + + enableBulkAutorenew: /* @ngInject */ ($state) => (services) => + $state.go('billing.autorenew.enable', { + services: map(services, 'id').join(','), + }), + endStrategies: /* @ngInject */ (endStrategyEnum) => + endStrategyEnum.reduce( + (object, strategy) => ({ + ...object, + [strategy]: strategy, + }), + {}, + ), + endStrategyEnum: /* @ngInject */ ($http) => + $http + .get('/services.json') + .then( + ({ data }) => + data.models['services.billing.engagement.EndStrategyEnum'] + ?.enum, + ), + filters: /* @ngInject */ ($transition$) => + JSON.parse($transition$.params().filters), + isEnterpriseCustomer: /* @ngInject */ (currentUser) => + currentUser.isEnterprise, + + hasAutoRenew: /* @ngInject */ (billingRenewHelper) => (service) => + billingRenewHelper.serviceHasAutomaticRenew(service), + + homeLink: /* @ngInject */ ($state) => + $state.href('billing.autorenew', {}, { inherit: false }), + + nicBilling: /* @ngInject */ ($transition$) => + $transition$.params().nicBilling, + nicRenew: /* @ngInject */ (BillingAutoRenew, services) => + BillingAutoRenew.getAutorenew().then((nicRenew) => ({ + ...nicRenew, + isMandatory: services.userMustApproveAutoRenew, + renewDays: range(1, 30), + })), + + nics: /* @ngInject */ ($translate, services) => [ + $translate.instant(NIC_ALL), + ...get(services, 'nicBilling', []), + ], + + offset: /* @ngInject */ (pageNumber, pageSize) => + pageSize * (pageNumber - 1), + + onListParamChanges: /* @ngInject */ ($state) => (params) => + $state.go('.', params, { notify: false }), + + pageNumber: /* @ngInject */ ($transition$) => + parseInt($transition$.params().pageNumber, 10), + pageSize: /* @ngInject */ ($transition$) => + parseInt($transition$.params().pageSize, 10), + + searchText: /* @ngInject */ ($transition$) => + $transition$.params().searchText, + + selectedType: /* @ngInject */ ($transition$) => + $transition$.params().selectedType, + + services: /* @ngInject */ ( + BillingAutoRenew, + filters, + nicBilling, + pageSize, + offset, + searchText, + selectedType, + sort, + ) => + BillingAutoRenew.getServices( + pageSize, + offset, + searchText, + selectedType, + filters.expiration, + filters.status, + filters.state, + sort, + nicBilling, + ), + + choiceRenewDayTooltipAvailable: /* @ngInject */ ( + ovhFeatureFlipping, + ) => + ovhFeatureFlipping + .checkFeatureAvailability(['billing:choiceRenewDayTooltip']) + .then((commitmentAvailability) => + commitmentAvailability.isFeatureAvailable( + 'billing:choiceRenewDayTooltip', + ), + ), + + serviceTypes: /* @ngInject */ (BillingAutoRenew, services) => + BillingAutoRenew.getServicesTypes(services), + + sort: /* @ngInject */ ($transition$) => + JSON.parse($transition$.params().sort), + + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('billing_title'), + } + : {}, + ), + redirectTo: (transition) => + transition + .injector() + .getAsync('isAutorenewManagementAvailable') + .then( + (isAutorenewManagementAvailable) => + !isAutorenewManagementAvailable && 'billing.autorenew.ssh', + ), + }); + + $stateProvider.state('billing.autorenew.service', { + url: '/:serviceId', + template: '
', + redirectTo: 'billing.autorenew', + resolve: { + serviceId: /* @ngInject */ ($transition$) => + $transition$.params().serviceId, + service: /* @ngInject */ (BillingAutoRenew, serviceId) => + BillingAutoRenew.findService({ serviceId }), + breadcrumb: /* @ngInject */ (serviceId) => serviceId, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/autorenew.service.js b/packages/manager/modules/new-billing/src/autoRenew/autorenew.service.js new file mode 100644 index 000000000000..c27dd7caca87 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/autorenew.service.js @@ -0,0 +1,324 @@ +import get from 'lodash/get'; +import head from 'lodash/head'; +import map from 'lodash/map'; +import pick from 'lodash/pick'; +import reduce from 'lodash/reduce'; +import set from 'lodash/set'; +import values from 'lodash/values'; + +import { BillingService } from '@ovh-ux/manager-models'; +import { + AUTORENEW_EVENT, + CONTRACTS_IDS, + SERVICE_EXPIRATION, + SERVICE_STATES, + SERVICE_STATUS, +} from './autorenew.constants'; + +export default class { + /* @ngInject */ + constructor( + $q, + $translate, + $window, + constants, + coreConfig, + DucUserContractService, + OvhApiBillingAutorenewServices, + OvhApiEmailExchange, + OvhApiMeAutorenew, + OvhHttp, + ovhPaymentMethod, + ) { + this.$q = $q; + this.$translate = $translate; + this.$window = $window; + this.constants = constants; + this.coreConfig = coreConfig; + this.DucUserContractService = DucUserContractService; + this.OvhApiBillingAutorenewServices = OvhApiBillingAutorenewServices; + this.OvhApiEmailExchange = OvhApiEmailExchange; + this.OvhHttp = OvhHttp; + this.ovhPaymentMethod = ovhPaymentMethod; + this.OvhApiMeAutorenew = OvhApiMeAutorenew; + this.queryParams = {}; + + this.events = { + AUTORENEW_CHANGES: AUTORENEW_EVENT, + }; + } + + getAllServices() { + return this.OvhApiBillingAutorenewServices.Aapi().query().$promise; + } + + getServices( + count, + offset, + search, + type, + renewDateType, + status, + state, + order, + nicBilling, + ) { + return this.OvhHttp.get('/billing/services', { + rootPath: '2api', + params: { + count, + offset, + search, + type, + renewDateType, + status, + state, + order: JSON.stringify(order), + nicBilling, + }, + }); + } + + findService({ resourceName, serviceType, serviceId }) { + return this.OvhHttp.get('/billing/services', { + rootPath: '2api', + params: { + resourceName, + serviceId, + serviceType, + count: 1, + offset: 0, + }, + }) + .then((services) => head(services.list.results)) + .then((service) => new BillingService(service)); + } + + getServicesTypes(services) { + return reduce( + services.servicesTypes, + (serviceTypes, service) => ({ + ...serviceTypes, + [service]: this.$translate.instant( + `billing_autorenew_service_type_${service}`, + ), + }), + {}, + ); + } + + getStatusTypes() { + return reduce( + SERVICE_STATUS, + (translatedStatus, status) => ({ + ...translatedStatus, + [status]: this.$translate.instant( + `billing_autorenew_service_status_${status}`, + ), + }), + {}, + ); + } + + getStatesTypes() { + return reduce( + SERVICE_STATES, + (states, state) => ({ + ...states, + [state]: this.$translate.instant( + `billing_autorenew_service_state_${state}`, + ), + }), + {}, + ); + } + + getExpirationFilterTypes() { + return reduce( + SERVICE_EXPIRATION, + (expirations, expirationType) => ({ + ...expirations, + [expirationType]: this.$translate.instant( + `billing_autorenew_service_expiration_${expirationType}`, + ), + }), + {}, + ); + } + + updateServices(updateList) { + return this.OvhApiBillingAutorenewServices.Aapi() + .put( + {}, + { + updateList, + }, + ) + .$promise.then((result) => { + if (result.state === 'OK') { + return result; + } + set(result, 'state', 'ERROR'); + return this.$q.reject(result); + }); + } + + updateService(service) { + return this.OvhApiBillingAutorenewServices.Aapi() + .put( + {}, + { + updateList: [service], + }, + ) + .$promise.then((result) => { + if (result.state === 'OK') { + return result; + } + return this.$q.reject(result); + }); + } + + getAutorenew() { + return this.OvhApiMeAutorenew.v6() + .query() + .$promise.catch((err) => { + if (err.status === 404) { + return { + active: false, + }; + } + throw err; + }); + } + + putAutorenew(renewParam) { + return this.OvhApiMeAutorenew.v6().update(renewParam).$promise; + } + + enableAutorenew(renewDay) { + return this.OvhApiMeAutorenew.v6().create({ + renewDay, + }).$promise; + } + + disableAutoRenewForDomains() { + return this.OvhHttp.post('/me/manualDomainPayment', { + rootPath: 'apiv6', + }); + } + + terminateHosting(serviceName) { + return this.OvhHttp.post('/hosting/web/{hosting}/terminate', { + rootPath: 'apiv6', + urlParams: { + hosting: serviceName, + }, + }); + } + + terminateEmail(serviceName) { + return this.OvhHttp.post('/email/domain/{domain}/terminate', { + rootPath: 'apiv6', + urlParams: { + domain: serviceName, + }, + }); + } + + terminateHostingPrivateDatabase(serviceName) { + return this.OvhHttp.post( + '/hosting/privateDatabase/{serviceName}/terminate', + { + rootPath: 'apiv6', + urlParams: { + serviceName, + }, + }, + ); + } + + getEmailInfos(serviceName) { + return this.OvhHttp.get('/email/domain/{domain}', { + rootPath: 'apiv6', + urlParams: { + domain: serviceName, + }, + }); + } + + getUserCertificates() { + return this.OvhHttp.get('/me/certificates', { + rootPath: 'apiv6', + }); + } + + getExchangeService(organization, exchange) { + return this.OvhApiEmailExchange.service() + .Aapi() + .get({ + organization, + exchange, + }).$promise; + } + + getAutorenewAgreements() { + return this.DucUserContractService.getAgreementsToValidate( + ({ contractId }) => values(CONTRACTS_IDS).includes(contractId), + ).then((contracts) => + map(contracts, ({ code: name, pdf: url, id }) => ({ name, url, id })), + ); + } + + updateRenew(service, agreements) { + const agreementsPromise = service.hasAutomaticRenew() + ? this.DucUserContractService.acceptAgreements(agreements) + : Promise.resolve([]); + return agreementsPromise.then(() => { + const toUpdate = pick(service, ['serviceId', 'serviceType', 'renew']); + toUpdate.route = get(service, 'route.url'); + return this.updateServices([toUpdate]); + }); + } + + /* eslint-disable class-methods-use-this */ + userIsBillingOrAdmin(service, user) { + return ( + service && + Boolean( + user && + (service.contactBilling === user.nichandle || + service.contactAdmin === user.nichandle), + ) + ); + } + /* eslint-enable class-methods-use-this */ + + hasRenewDay() { + return this.ovhPaymentMethod + .hasDefaultPaymentMethod() + .then( + (hasDefaultPaymentMethod) => + hasDefaultPaymentMethod && this.coreConfig.isRegion('EU'), + ); + } + + setNicRenew(nicRenew) { + const { active, renewDay, isMandatory } = nicRenew; + return !isMandatory + ? this.enableAutorenew(renewDay) + : this.putAutorenew({ active, renewDay }); + } + + isAutomaticRenewV2Available() { + return this.coreConfig.isRegion('EU'); + } + + setQueryParams(params) { + this.queryParams = params; + } + + getQueryParams() { + return this.queryParams || {}; + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/bulk/bulk.component.js b/packages/manager/modules/new-billing/src/autoRenew/bulk/bulk.component.js new file mode 100644 index 000000000000..46cfae3edb3d --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/bulk/bulk.component.js @@ -0,0 +1,17 @@ +import controller from './bulk.controller'; +import template from './bulk.html'; + +export default { + bindings: { + descriptions: '<', + goBack: '&', + services: '<', + updateRenew: '&', + }, + controller, + template, + transclude: { + infoMessage: 'bulkInfoMessage', + title: 'bulkTitle', + }, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/bulk/bulk.controller.js b/packages/manager/modules/new-billing/src/autoRenew/bulk/bulk.controller.js new file mode 100644 index 000000000000..f639fb772e4f --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/bulk/bulk.controller.js @@ -0,0 +1,21 @@ +import flatten from 'lodash/flatten'; +import omit from 'lodash/omit'; +import reduce from 'lodash/reduce'; +import values from 'lodash/values'; + +export default class { + $onInit() { + this.expand = {}; + + this.availableServices = this.services.available; + this.unavailableServices = omit(this.services, 'available'); + + this.servicesCount = flatten(values(this.services)).length; + + this.unavailableServicesCount = reduce( + this.unavailableServices, + (count, services) => count + services.length, + 0, + ); + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/bulk/bulk.html b/packages/manager/modules/new-billing/src/autoRenew/bulk/bulk.html new file mode 100644 index 000000000000..156d1fee626f --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/bulk/bulk.html @@ -0,0 +1,91 @@ +
+ + + + +
+
+ +
+ + +

+

+
    +
  • +

    + + + + +

    +
      +
    • +
    +
  • +
+
+ +
    +
  • +
+
+
+ + + + + + +
+
+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/bulk/bulk.module.js b/packages/manager/modules/new-billing/src/autoRenew/bulk/bulk.module.js new file mode 100644 index 000000000000..841573322f9e --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/bulk/bulk.module.js @@ -0,0 +1,21 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import component from './bulk.component'; + +const moduleName = 'ovhManagerBillingAutorenewBulk'; + +angular + .module(moduleName, [ + angularTranslate, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .component('billingAutorenewBulk', component) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_de_DE.json new file mode 100644 index 000000000000..6dd2a46658b4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_de_DE.json @@ -0,0 +1,20 @@ +{ + "billing_autorenew_bulk": "Sie haben {{ count }} Dienste ausgewählt", + "billing_autorenew_bulk_cancel": "Abbrechen", + "billing_autorenew_bulk_confirm": "Bestätigen", + "billing_autorenew_bulk_unavailable_pending_debt": "Dienste mit ausstehender Rechnung", + "billing_autorenew_bulk_unavailable_already_automatic": "Dienste mit automatischer Verlängerung", + "billing_autorenew_bulk_unavailable_already_manual": "Dienste mit manueller Verlängerung", + "billing_autorenew_bulk_unavailable_one_shot_automatic": "Dienste, für die keine automatische Verlängerung möglich ist", + "billing_autorenew_bulk_unavailable_one_shot_manual": "Dienste, für die keine manuelle Verlängerung möglich ist ", + "billing_autorenew_bulk_unavailable_nic_rights": "Dienste, für die Sie nicht als Rechnungskontakt eingetragen sind", + "billing_autorenew_bulk_unavailable_resiliation_pending": "Dienste mit ausstehender Kündigungsanfrage", + "billing_autorenew_bulk_unavailable_expired": "Gekündigte Dienste", + "billing_autorenew_bulk_service": "(1 Dienst)", + "billing_autorenew_bulk_services": "({{ count }} Dienste)", + "billing_autorenew_bulk_more": "Mehr anzeigen", + "billing_autorenew_bulk_less": "Weniger anzeigen", + "billing_autorenew_bulk_one": "Sie haben 1 Dienst gewählt", + "billing_autorenew_bulk_available_more": "Details der kompatiblen Dienste anzeigen", + "billing_autorenew_bulk_available_less": "Details der kompatiblen Dienste verbergen" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_en_GB.json new file mode 100644 index 000000000000..e95c222a9d91 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_en_GB.json @@ -0,0 +1,20 @@ +{ + "billing_autorenew_bulk": "You have selected {{ count }} services", + "billing_autorenew_bulk_cancel": "Cancel", + "billing_autorenew_bulk_confirm": "Confirm", + "billing_autorenew_bulk_unavailable_pending_debt": "Services with a bill pending payment", + "billing_autorenew_bulk_unavailable_already_automatic": "Services with automatic payment", + "billing_autorenew_bulk_unavailable_already_manual": "Services with manual renewal", + "billing_autorenew_bulk_unavailable_one_shot_automatic": "Services that cannot be paid for automatically", + "billing_autorenew_bulk_unavailable_one_shot_manual": "Services that cannot be renewed manually ", + "billing_autorenew_bulk_unavailable_nic_rights": "Services for which you are not the billing contact", + "billing_autorenew_bulk_unavailable_resiliation_pending": "Services with an ongoing termination request", + "billing_autorenew_bulk_unavailable_expired": "Terminated services", + "billing_autorenew_bulk_service": "(1 service)", + "billing_autorenew_bulk_services": "({{ count }} services)", + "billing_autorenew_bulk_more": "See more", + "billing_autorenew_bulk_less": "See less", + "billing_autorenew_bulk_one": "You have selected 1 service", + "billing_autorenew_bulk_available_more": "Show details on compatible services", + "billing_autorenew_bulk_available_less": "Hide details on compatible services" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_es_ES.json new file mode 100644 index 000000000000..52f1a01b2b6c --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_es_ES.json @@ -0,0 +1,20 @@ +{ + "billing_autorenew_bulk": "Ha seleccionado {{ count }} servicios.", + "billing_autorenew_bulk_cancel": "Cancelar", + "billing_autorenew_bulk_confirm": "Aceptar", + "billing_autorenew_bulk_unavailable_pending_debt": "Servicios con una factura pendiente de pago", + "billing_autorenew_bulk_unavailable_already_automatic": "Servicios con pago automático", + "billing_autorenew_bulk_unavailable_already_manual": "Servicios con renovación manual", + "billing_autorenew_bulk_unavailable_one_shot_automatic": "Servicios incompatibles con el pago automático", + "billing_autorenew_bulk_unavailable_one_shot_manual": "Servicios incompatibles con la renovación manual ", + "billing_autorenew_bulk_unavailable_nic_rights": "Servicios en los que usted no es el contacto de facturación", + "billing_autorenew_bulk_unavailable_resiliation_pending": "Servicios con solicitud de baja en curso", + "billing_autorenew_bulk_unavailable_expired": "Servicios dados de baja", + "billing_autorenew_bulk_service": "(1 servicio)", + "billing_autorenew_bulk_services": "({{ count }} servicios)", + "billing_autorenew_bulk_more": "Ver más", + "billing_autorenew_bulk_less": "Ver menos", + "billing_autorenew_bulk_one": "Ha seleccionado un servicio.", + "billing_autorenew_bulk_available_more": "Ver la información de los servicios compatibles", + "billing_autorenew_bulk_available_less": "Ocultar la información de los servicios compatibles" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..f64b296036ac --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_fr_CA.json @@ -0,0 +1,20 @@ +{ + "billing_autorenew_bulk": "Vous avez sélectionné {{ count }} services", + "billing_autorenew_bulk_one": "Vous avez sélectionné 1 service", + "billing_autorenew_bulk_cancel": "Annuler", + "billing_autorenew_bulk_confirm": "Valider", + "billing_autorenew_bulk_unavailable_pending_debt": "Les services ayant une facture en attente de réglement", + "billing_autorenew_bulk_unavailable_already_automatic": "Les services bénéficiant déjà du paiement automatique", + "billing_autorenew_bulk_unavailable_already_manual": "Les services bénéficiant déjà du renouvellement manuel", + "billing_autorenew_bulk_unavailable_one_shot_automatic": "Les services ne pouvant pas bénéficier du paiement automatique", + "billing_autorenew_bulk_unavailable_one_shot_manual": "Les services ne pouvant pas bénéficier du renouvellement manuel ", + "billing_autorenew_bulk_unavailable_nic_rights": "Les services pour lesquels vous n'êtes pas le contact de facturation", + "billing_autorenew_bulk_unavailable_resiliation_pending": "Les services ayant une demande de résiliation en cours", + "billing_autorenew_bulk_unavailable_expired": "Les services résiliés", + "billing_autorenew_bulk_service": "(1 service)", + "billing_autorenew_bulk_services": "({{ count }} services)", + "billing_autorenew_bulk_more": "Voir plus", + "billing_autorenew_bulk_less": "Voir moins", + "billing_autorenew_bulk_available_more": "Voir le détail des services compatibles", + "billing_autorenew_bulk_available_less": "Masquer le détail des services compatibles" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..f64b296036ac --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_fr_FR.json @@ -0,0 +1,20 @@ +{ + "billing_autorenew_bulk": "Vous avez sélectionné {{ count }} services", + "billing_autorenew_bulk_one": "Vous avez sélectionné 1 service", + "billing_autorenew_bulk_cancel": "Annuler", + "billing_autorenew_bulk_confirm": "Valider", + "billing_autorenew_bulk_unavailable_pending_debt": "Les services ayant une facture en attente de réglement", + "billing_autorenew_bulk_unavailable_already_automatic": "Les services bénéficiant déjà du paiement automatique", + "billing_autorenew_bulk_unavailable_already_manual": "Les services bénéficiant déjà du renouvellement manuel", + "billing_autorenew_bulk_unavailable_one_shot_automatic": "Les services ne pouvant pas bénéficier du paiement automatique", + "billing_autorenew_bulk_unavailable_one_shot_manual": "Les services ne pouvant pas bénéficier du renouvellement manuel ", + "billing_autorenew_bulk_unavailable_nic_rights": "Les services pour lesquels vous n'êtes pas le contact de facturation", + "billing_autorenew_bulk_unavailable_resiliation_pending": "Les services ayant une demande de résiliation en cours", + "billing_autorenew_bulk_unavailable_expired": "Les services résiliés", + "billing_autorenew_bulk_service": "(1 service)", + "billing_autorenew_bulk_services": "({{ count }} services)", + "billing_autorenew_bulk_more": "Voir plus", + "billing_autorenew_bulk_less": "Voir moins", + "billing_autorenew_bulk_available_more": "Voir le détail des services compatibles", + "billing_autorenew_bulk_available_less": "Masquer le détail des services compatibles" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_it_IT.json new file mode 100644 index 000000000000..0c92ee991f66 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_it_IT.json @@ -0,0 +1,20 @@ +{ + "billing_autorenew_bulk": "Hai selezionato {{ count }} servizi", + "billing_autorenew_bulk_cancel": "Annulla", + "billing_autorenew_bulk_confirm": "Conferma", + "billing_autorenew_bulk_unavailable_pending_debt": "Servizi con fattura in attesa di pagamento", + "billing_autorenew_bulk_unavailable_already_automatic": "Servizi con pagamento automatico attivo", + "billing_autorenew_bulk_unavailable_already_manual": "Servizi in rinnovo manuale", + "billing_autorenew_bulk_unavailable_one_shot_automatic": "Servizi che non possono usufruire del pagamento automatico", + "billing_autorenew_bulk_unavailable_one_shot_manual": "Servizi che non possono usufruire del rinnovo manuale ", + "billing_autorenew_bulk_unavailable_nic_rights": "Servizi per cui non risulti contatto di fatturazione", + "billing_autorenew_bulk_unavailable_resiliation_pending": "Servizi con una richiesta di disattivazione in corso", + "billing_autorenew_bulk_unavailable_expired": "Servizi disattivati", + "billing_autorenew_bulk_service": "(1 servizio)", + "billing_autorenew_bulk_services": "({{ count }} servizi)", + "billing_autorenew_bulk_more": "Espandi", + "billing_autorenew_bulk_less": "Nascondi", + "billing_autorenew_bulk_one": "Hai selezionato 1 servizio", + "billing_autorenew_bulk_available_more": "Mostra i dettagli dei servizi compatibili", + "billing_autorenew_bulk_available_less": "Nascondi i dettagli dei servizi compatibili" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..7fb6cc27a061 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_pl_PL.json @@ -0,0 +1,20 @@ +{ + "billing_autorenew_bulk": "Wybrałeś {{count}} usług", + "billing_autorenew_bulk_cancel": "Anuluj", + "billing_autorenew_bulk_confirm": "Zatwierdź", + "billing_autorenew_bulk_unavailable_pending_debt": "Usługi oczekujące na płatność", + "billing_autorenew_bulk_unavailable_already_automatic": "Usługi automatycznie opłacane", + "billing_autorenew_bulk_unavailable_already_manual": "Usługi odnawiane ręcznie", + "billing_autorenew_bulk_unavailable_one_shot_automatic": "Usługi, które nie mogą być objęte automatyczną płatnością", + "billing_autorenew_bulk_unavailable_one_shot_manual": "Usługi, które nie mogą być objęte ręcznym odnowieniem ", + "billing_autorenew_bulk_unavailable_nic_rights": "Usługi, w przypadku których nie jesteś kontaktem księgowym", + "billing_autorenew_bulk_unavailable_resiliation_pending": "Usługi, dla których wysłałeś zlecenie rezygnacji", + "billing_autorenew_bulk_unavailable_expired": "Zakończone usługi", + "billing_autorenew_bulk_service": "(1 usługa)", + "billing_autorenew_bulk_services": "({{ count}} usługi/usług)", + "billing_autorenew_bulk_more": "Wyświetl więcej", + "billing_autorenew_bulk_less": "Wyświetl mniej", + "billing_autorenew_bulk_one": "Wybrałeś jedną usługę", + "billing_autorenew_bulk_available_more": "Wyświetl szczegóły dotyczące kompatybilnych usług", + "billing_autorenew_bulk_available_less": "Ukryj szczegóły dotyczące kompatybilnych usług" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..4b0176a4bbac --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/bulk/translations/Messages_pt_PT.json @@ -0,0 +1,20 @@ +{ + "billing_autorenew_bulk": "Selecionou {{ count }} serviços", + "billing_autorenew_bulk_cancel": "Anular", + "billing_autorenew_bulk_confirm": "Validar", + "billing_autorenew_bulk_unavailable_pending_debt": "Os serviços com fatura com pagamento pendente", + "billing_autorenew_bulk_unavailable_already_automatic": "Os serviços com pagamento automático", + "billing_autorenew_bulk_unavailable_already_manual": "Os serviços com renovação manual", + "billing_autorenew_bulk_unavailable_one_shot_automatic": "Os serviços que não podem usufruir do pagamento automático", + "billing_autorenew_bulk_unavailable_one_shot_manual": "Os serviços que não podem usufruir da renovação manual ", + "billing_autorenew_bulk_unavailable_nic_rights": "Os serviços para o quais não é o contacto de faturação", + "billing_autorenew_bulk_unavailable_resiliation_pending": "Os serviços com um pedido de rescisão em curso", + "billing_autorenew_bulk_unavailable_expired": "Os serviços rescindidos", + "billing_autorenew_bulk_service": "(1 serviço)", + "billing_autorenew_bulk_services": "({{ count }} serviços)", + "billing_autorenew_bulk_more": "Mostrar mais", + "billing_autorenew_bulk_less": "Mostrar menos", + "billing_autorenew_bulk_available_more": "Ver os detalhes dos serviços compatíveis", + "billing_autorenew_bulk_available_less": "Ocultar os detalhes dos serviços compatíveis", + "billing_autorenew_bulk_one": "Selecionou 1 serviço" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/cancel-commitment/cancel-commitment.module.js b/packages/manager/modules/new-billing/src/autoRenew/cancel-commitment/cancel-commitment.module.js new file mode 100644 index 000000000000..8a3f6fa6bd6e --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/cancel-commitment/cancel-commitment.module.js @@ -0,0 +1,14 @@ +import angular from 'angular'; +import ngUiRouterLayout from '@ovh-ux/ng-ui-router-layout'; +import ovhManagerBillingComponents from '@ovh-ux/manager-billing-components'; +import uiRouter from '@uirouter/angularjs'; + +import routing from './cancel-commitment.routing'; + +const moduleName = 'ovhManagerBillingAutorenewCancelCommitment'; + +angular + .module(moduleName, [ngUiRouterLayout, ovhManagerBillingComponents, uiRouter]) + .config(routing); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/cancel-commitment/cancel-commitment.routing.js b/packages/manager/modules/new-billing/src/autoRenew/cancel-commitment/cancel-commitment.routing.js new file mode 100644 index 000000000000..6785cb93d908 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/cancel-commitment/cancel-commitment.routing.js @@ -0,0 +1,33 @@ +import kebabCase from 'lodash/kebabCase'; + +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.service.cancel-commitment', { + url: '/cancel-commitment', + views: { + modal: { + component: 'billingCancelCommitment', + }, + }, + layout: 'modal', + atInternet: { + ignore: true, + }, + onEnter: /* @ngInject */ (atInternet, service) => + atInternet.trackPage({ + name: `account::billing::autorenew::${kebabCase( + service.serviceType, + )}::cancel-commitment`, + type: 'navigation', + }), + resolve: { + goBack: /* @ngInject */ (goToAutorenew) => goToAutorenew, + breadcrumb: () => null, + service: /* @ngInject */ (BillingAutoRenew, serviceId) => + BillingAutoRenew.findService({ serviceId }), + confirmCancelTracking: /* @ngInject */ (service) => + `dedicated::account::billing::${kebabCase( + service.serviceType, + )}::cancel-commitment::confirm`, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/cancel-commitment/index.js b/packages/manager/modules/new-billing/src/autoRenew/cancel-commitment/index.js new file mode 100644 index 000000000000..1e4dc0e60d16 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/cancel-commitment/index.js @@ -0,0 +1,22 @@ +import angular from 'angular'; + +import '@uirouter/angularjs'; +import 'oclazyload'; + +const moduleName = 'ovhManagerBillingAutorenewCancelCommitmentLazyLoading'; + +angular.module(moduleName, ['ui.router', 'oc.lazyLoad']).config( + /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.service.cancel-commitment.**', { + url: '/cancel-commitment', + lazyLoad: ($transition$) => { + const $ocLazyLoad = $transition$.injector().get('$ocLazyLoad'); + return import('./cancel-commitment.module').then((mod) => + $ocLazyLoad.inject(mod.default || mod), + ); + }, + }); + }, +); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/cancel-resiliation/cancel-resiliation.module.js b/packages/manager/modules/new-billing/src/autoRenew/cancel-resiliation/cancel-resiliation.module.js new file mode 100644 index 000000000000..5d34e9cbdf8c --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/cancel-resiliation/cancel-resiliation.module.js @@ -0,0 +1,13 @@ +import angular from 'angular'; +import ovhManagerBillingComponents from '@ovh-ux/manager-billing-components'; +import uiRouter from '@uirouter/angularjs'; + +import routing from './cancel-resiliation.routing'; + +const moduleName = 'ovhManagerBillingAutorenewCancelResiliation'; + +angular + .module(moduleName, [ovhManagerBillingComponents, uiRouter]) + .config(routing); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/cancel-resiliation/cancel-resiliation.routing.js b/packages/manager/modules/new-billing/src/autoRenew/cancel-resiliation/cancel-resiliation.routing.js new file mode 100644 index 000000000000..419980baaebb --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/cancel-resiliation/cancel-resiliation.routing.js @@ -0,0 +1,100 @@ +import kebabCase from 'lodash/kebabCase'; +import get from 'lodash/get'; +import { EngagementConfiguration } from '@ovh-ux/manager-models'; + +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.cancel-resiliation', { + url: '/cancel-resiliation?serviceId&serviceType', + views: { + modal: { + component: 'billingCancelResiliation', + }, + }, + layout: 'modal', + translations: { value: ['.'], format: 'json' }, + atInternet: { + ignore: true, + }, + onEnter: /* @ngInject */ (atInternet, service) => + atInternet.trackPage({ + name: `account::billing::autorenew::${kebabCase( + service.serviceType, + )}::cancel-resiliation`, + type: 'navigation', + }), + resolve: { + goBack: /* @ngInject */ (goToAutorenew) => goToAutorenew, + cancelResiliation: /* @ngInject */ ( + $q, + BillingAutoRenew, + engagement, + hasEndRuleStrategies, + setReactivateEngagementStrategy, + ) => (service) => { + return (engagement && hasEndRuleStrategies + ? setReactivateEngagementStrategy() + : $q.when(0) + ).then(() => { + service.cancelResiliation(); + return BillingAutoRenew.updateService({ + serviceId: service.serviceId, + serviceType: service.serviceType, + renew: service.renew, + route: get(service, 'route.url'), + }); + }); + }, + engagement: /* @ngInject */ ($http, service) => + (service.canHaveEngagement() + ? $http + .get(`/services/${service.id}`) + .then(({ data }) => + data.billing?.pricing?.engagementConfiguration + ? new EngagementConfiguration( + data.billing?.pricing?.engagementConfiguration, + ) + : { engagement: null }, + ) + .catch({ engagement: null }) + : Promise.resolve({ engagement: null }) + ).then(({ engagement }) => engagement), + hasEndRuleStrategies: /* @ngInject */ (engagement, endStrategies) => + engagement && + engagement.endRule && + engagement.endRule.possibleStrategies.includes( + endStrategies.REACTIVATE_ENGAGEMENT, + ), + serviceId: /* @ngInject */ ($transition$) => + $transition$.params().serviceId, + serviceType: /* @ngInject */ ($transition$) => + $transition$.params().serviceType, + service: /* @ngInject */ (BillingAutoRenew, serviceId, serviceType) => + BillingAutoRenew.findService({ resourceName: serviceId, serviceType }), + fetchRenewInfos: /* @ngInject */ ($http, service) => + $http + .get(`${service.route.url}/serviceInfos`) + .then(({ data }) => data) + .then(({ renew }) => Object.assign(service, { renew })), + setReactivateEngagementStrategy: /* @ngInject */ ( + BillingService, + endStrategies, + service, + ) => () => + BillingService.putEndRuleStrategy( + service.id, + endStrategies.REACTIVATE_ENGAGEMENT, + ), + trackClick: /* @ngInject */ (atInternet, service) => () => + atInternet.trackClick({ + name: `autorenew::${kebabCase( + service.serviceType, + )}::cancel-resiliation::confirm`, + type: 'action', + chapter1: 'dedicated', + chapter2: 'account', + chapter3: 'billing', + }), + breadcrumb: () => null, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/cancel-resiliation/index.js b/packages/manager/modules/new-billing/src/autoRenew/cancel-resiliation/index.js new file mode 100644 index 000000000000..6fbdc9db1f7f --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/cancel-resiliation/index.js @@ -0,0 +1,22 @@ +import angular from 'angular'; + +import '@uirouter/angularjs'; +import 'oclazyload'; + +const moduleName = 'ovhManagerBillingAutorenewCancelResiliationLazyLoading'; + +angular.module(moduleName, ['ui.router', 'oc.lazyLoad']).config( + /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.cancel-resiliation.**', { + url: '/cancel-resiliation?serviceId&serviceType', + lazyLoad: ($transition$) => { + const $ocLazyLoad = $transition$.injector().get('$ocLazyLoad'); + return import('./cancel-resiliation.module').then((mod) => + $ocLazyLoad.inject(mod.default || mod), + ); + }, + }); + }, +); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/commitment/commitment.module.js b/packages/manager/modules/new-billing/src/autoRenew/commitment/commitment.module.js new file mode 100644 index 000000000000..01203b48587c --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/commitment/commitment.module.js @@ -0,0 +1,14 @@ +import angular from 'angular'; +import ovhManagerBillingComponents from '@ovh-ux/manager-billing-components'; +import uiRouter from '@uirouter/angularjs'; + +import routing from './commitment.routing'; + +const moduleName = 'ovhManagerBillingAutorenewCommitment'; + +angular + .module(moduleName, [ovhManagerBillingComponents, uiRouter]) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/commitment/commitment.routing.js b/packages/manager/modules/new-billing/src/autoRenew/commitment/commitment.routing.js new file mode 100644 index 000000000000..ca6053e22ad0 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/commitment/commitment.routing.js @@ -0,0 +1,28 @@ +import kebabCase from 'lodash/kebabCase'; + +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.service.commitment', { + url: '/commitment?duration', + component: 'billingCommitment', + resolve: { + goBack: /* @ngInject */ (goToAutorenew) => goToAutorenew, + duration: /* @ngInject */ ($transition$) => + $transition$.params().duration, + me: /* @ngInject */ (currentUser) => currentUser, + trackingPrefix: /* @ngInject */ (service) => + `account::billing::autorenew::${kebabCase(service.serviceType)}`, + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('billing_autorenew_commitment'), + }, + onEnter: /* @ngInject */ (atInternet, service) => + atInternet.trackPage({ + name: `account::billing::autorenew::${kebabCase( + service.serviceType, + )}::commit`, + type: 'navigation', + }), + atInternet: { + ignore: true, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/commitment/index.js b/packages/manager/modules/new-billing/src/autoRenew/commitment/index.js new file mode 100644 index 000000000000..0c161bb229fe --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/commitment/index.js @@ -0,0 +1,22 @@ +import angular from 'angular'; + +import '@uirouter/angularjs'; +import 'oclazyload'; + +const moduleName = 'ovhManagerBillingAutorenewCommitmentLazyLoading'; + +angular.module(moduleName, ['ui.router', 'oc.lazyLoad']).config( + /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.service.commitment.**', { + url: '/commitment', + lazyLoad: ($transition$) => { + const $ocLazyLoad = $transition$.injector().get('$ocLazyLoad'); + return import('./commitment.module').then((mod) => + $ocLazyLoad.inject(mod.default || mod), + ); + }, + }); + }, +); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_de_DE.json new file mode 100644 index 000000000000..2704a5e612b4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_de_DE.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_commitment": "Verwaltung des Abonnements" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_en_GB.json new file mode 100644 index 000000000000..cf2b9559dfda --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_en_GB.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_commitment": "Manage subscription" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_es_ES.json new file mode 100644 index 000000000000..934e87eb6359 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_es_ES.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_commitment": "Gestionar el compromiso" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..9470e33d987b --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_fr_CA.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_commitment": "Gérer l'engagement" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..9470e33d987b --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_fr_FR.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_commitment": "Gérer l'engagement" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_it_IT.json new file mode 100644 index 000000000000..686c8b9ee92d --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_it_IT.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_commitment": "Gestisci l'impegno" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..32f304a64858 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_pl_PL.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_commitment": "Zarządzanie umową terminową" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..a2862f60be64 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/commitment/translations/Messages_pt_PT.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_commitment": "Gerir o compromisso" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/disable-domains-bulk.component.js b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/disable-domains-bulk.component.js new file mode 100644 index 000000000000..1e89b1bbb728 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/disable-domains-bulk.component.js @@ -0,0 +1,11 @@ +import controller from './disable-domains-bulk.controller'; +import template from './disable-domains-bulk.html'; + +export default { + bindings: { + disableDomainsBulk: '<', + goBack: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/disable-domains-bulk.controller.js b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/disable-domains-bulk.controller.js new file mode 100644 index 000000000000..8f6da6783ca2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/disable-domains-bulk.controller.js @@ -0,0 +1,48 @@ +import { DISABLE_AUTOMATIC_PAYMENT_FOR_DOMAINS } from '../../constants/autorenewEvent.constants'; + +export default class BillingAutorenewDisableDomainsBulkCtrl { + /* @ngInject */ + constructor($scope, $translate, atInternet, BillingAutoRenew) { + this.$scope = $scope; + this.$translate = $translate; + + this.atInternet = atInternet; + this.BillingAutoRenew = BillingAutoRenew; + } + + $onInit() { + this.$scope.disableAutoRenewForDomains = () => + this.disableAutoRenewForDomains(); + } + + disableAutoRenewForDomains() { + this.loading = true; + + return this.disableDomainsBulk() + .then(() => { + this.$scope.$emit(DISABLE_AUTOMATIC_PAYMENT_FOR_DOMAINS); + this.goBack( + this.$translate.instant( + 'autorenew_service_disable_all_domains_success', + ), + ); + }) + .catch(({ message }) => { + this.goBack( + this.$translate.instant( + 'autorenew_service_disable_all_domains_error', + { message }, + ), + 'danger', + ); + }) + .finally(() => { + this.atInternet.trackClick({ + name: 'validation_autoRenew_domains', + type: 'action', + chapter1: 'services', + chapter2: 'autoRenew', + }); + }); + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/disable-domains-bulk.html b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/disable-domains-bulk.html new file mode 100644 index 000000000000..9b2a57b022c6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/disable-domains-bulk.html @@ -0,0 +1,22 @@ + +

+

+

+

+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/disable-domains-bulk.module.js b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/disable-domains-bulk.module.js new file mode 100644 index 000000000000..2f0265c09742 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/disable-domains-bulk.module.js @@ -0,0 +1,22 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import component from './disable-domains-bulk.component'; +import routing from './disable-domains-bulk.routing'; + +const moduleName = 'ovhManagerBillingAutorenewDisableDomainsBulk'; + +angular + .module(moduleName, [ + angularTranslate, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .config(routing) + .component('billingAutorenewDisableDomainsBulk', component); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/disable-domains-bulk.routing.js b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/disable-domains-bulk.routing.js new file mode 100644 index 000000000000..11392ad2928f --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/disable-domains-bulk.routing.js @@ -0,0 +1,18 @@ +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.disableDomainsBulk', { + url: '/disable-domains-bulk', + views: { + modal: { + component: 'billingAutorenewDisableDomainsBulk', + }, + }, + layout: 'modal', + translations: { value: ['.'], format: 'json' }, + resolve: { + disableDomainsBulk: /* @ngInject */ (BillingAutoRenew) => () => + BillingAutoRenew.disableAutoRenewForDomains(), + goBack: /* @ngInject */ (goToAutorenew) => goToAutorenew, + breadcrumb: () => null, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_de_DE.json new file mode 100644 index 000000000000..61b4db545e5a --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_de_DE.json @@ -0,0 +1,11 @@ +{ + "autorenew_service_disable_all_domains_title": "Automatische Verlängerung deaktivieren", + "autorenew_service_disable_all_domains_desc1": "Diese Aktion deaktiviert die automatische Verlängerung aller Domainnamen, für die Sie als Rechnungskontakt eingetragen sind.", + "autorenew_service_disable_all_domains_desc2": "Um Ihre Dienste weiterhin nutzen zu können, müssen Sie die Zahlungen vor deren nächstem Ablaufdatum vornehmen.", + "autorenew_service_disable_all_domains_desc3": "Ihre Dienste werden standardmäßig automatisch an ihrem Ablaufdatum gelöscht. Alle mit der automatischen Zahlung dieser Dienste verbundenen Daten werden unwiderruflich gelöscht.", + "autorenew_service_disable_all_domains_desc4": "Sie können die automatische Zahlung bis zu 24 Stunden vor dem Ablaufdatum Ihrer Dienste reaktivieren.", + "autorenew_service_disable_all_domains_success": "Ihre Anfrage zur Deaktivierung der automatischen Zahlung wurde registriert. Sie wird in einigen Stunden wirksam.", + "autorenew_service_disable_all_domains_error": "Es ist ein Fehler aufgetreten. Bitte entschuldigen Sie die entstandenen Unannehmlichkeiten.", + "autorenew_service_disable_all_domains_validate": "Bestätigen", + "autorenew_service_disable_all_domains_cancel": "Abbrechen" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_en_GB.json new file mode 100644 index 000000000000..39d18d64cbe2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_en_GB.json @@ -0,0 +1,11 @@ +{ + "autorenew_service_disable_all_domains_title": "Disable automatic renewal", + "autorenew_service_disable_all_domains_desc1": "This action will disable automatic renewal for all domain names that you are the billing contact for.", + "autorenew_service_disable_all_domains_desc2": "To keep using your services, you will need to make your next payments before their expiry date.", + "autorenew_service_disable_all_domains_desc3": "By default, your services will close automatically on their expiry. The data associated with automatic payment for your services will be automatically and permanently deleted. This process cannot be undone.", + "autorenew_service_disable_all_domains_desc4": "You can reactivate automatic payment for your services up to 24 days before they expire.", + "autorenew_service_disable_all_domains_success": "Your request to disable automatic payment has been received. It will take effect in a few hours.", + "autorenew_service_disable_all_domains_error": "An error has occurred. We apologise for any inconvenience caused.", + "autorenew_service_disable_all_domains_validate": "Confirm", + "autorenew_service_disable_all_domains_cancel": "Cancel" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_es_ES.json new file mode 100644 index 000000000000..fe082fe1b403 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_es_ES.json @@ -0,0 +1,11 @@ +{ + "autorenew_service_disable_all_domains_title": "Desactivar la renovación automática", + "autorenew_service_disable_all_domains_desc1": "Esta acción desactivará la renovación automática de todos los dominios de los que usted es el contacto de facturación.", + "autorenew_service_disable_all_domains_desc2": "Si desea conservar sus servicios, deberá realizar los próximos pagos antes de la fecha de expiración.", + "autorenew_service_disable_all_domains_desc3": "De lo contrario, sus servicios serán dados de baja automáticamente en su fecha de expiración. Los datos asociados al pago automático de sus servicios se eliminarán de forma irreversible.", + "autorenew_service_disable_all_domains_desc4": "Podrá reactivar el pago automático hasta 24 horas antes de la fecha de expiración de los servicios.", + "autorenew_service_disable_all_domains_success": "La solicitud de desactivación del pago automático se ha enviado. Será efectiva en las próximas horas.", + "autorenew_service_disable_all_domains_error": "Se ha producido un error, disculpe las molestias.", + "autorenew_service_disable_all_domains_validate": "Aceptar", + "autorenew_service_disable_all_domains_cancel": "Cancelar" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..4ec5ff9db8fc --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_fr_CA.json @@ -0,0 +1,11 @@ +{ + "autorenew_service_disable_all_domains_title": "Désactiver le renouvellement automatique", + "autorenew_service_disable_all_domains_desc1": "Cette action désactivera le renouvellement automatique de l'intégralité des noms de domaines dont vous êtes le contact de facturation.", + "autorenew_service_disable_all_domains_desc2": "Pour conserver vos services, vous devez effectuer vos prochains paiements avant leurs dates d’expiration.", + "autorenew_service_disable_all_domains_desc3": "A défaut, vos services seront automatiquement résiliés à leurs dates d'expiration. Les données liées au paiement automatique de vos services seront supprimées de manière irréversible.", + "autorenew_service_disable_all_domains_desc4": "Vous pourrez réactiver le paiement automatique de vos services jusqu'à 24 heures avant leurs dates d'expiration.", + "autorenew_service_disable_all_domains_success": "Votre demande de désactivation du paiement automatique a été prise en compte. Elle sera effective d'ici quelques heures.", + "autorenew_service_disable_all_domains_error": "Une erreur est survenue, veuillez nous excuser pour la gêne occasionnée.", + "autorenew_service_disable_all_domains_validate": "Valider", + "autorenew_service_disable_all_domains_cancel": "Annuler" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..4ec5ff9db8fc --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_fr_FR.json @@ -0,0 +1,11 @@ +{ + "autorenew_service_disable_all_domains_title": "Désactiver le renouvellement automatique", + "autorenew_service_disable_all_domains_desc1": "Cette action désactivera le renouvellement automatique de l'intégralité des noms de domaines dont vous êtes le contact de facturation.", + "autorenew_service_disable_all_domains_desc2": "Pour conserver vos services, vous devez effectuer vos prochains paiements avant leurs dates d’expiration.", + "autorenew_service_disable_all_domains_desc3": "A défaut, vos services seront automatiquement résiliés à leurs dates d'expiration. Les données liées au paiement automatique de vos services seront supprimées de manière irréversible.", + "autorenew_service_disable_all_domains_desc4": "Vous pourrez réactiver le paiement automatique de vos services jusqu'à 24 heures avant leurs dates d'expiration.", + "autorenew_service_disable_all_domains_success": "Votre demande de désactivation du paiement automatique a été prise en compte. Elle sera effective d'ici quelques heures.", + "autorenew_service_disable_all_domains_error": "Une erreur est survenue, veuillez nous excuser pour la gêne occasionnée.", + "autorenew_service_disable_all_domains_validate": "Valider", + "autorenew_service_disable_all_domains_cancel": "Annuler" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_it_IT.json new file mode 100644 index 000000000000..e650645b04af --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_it_IT.json @@ -0,0 +1,11 @@ +{ + "autorenew_service_disable_all_domains_title": "Disattiva il rinnovo automatico", + "autorenew_service_disable_all_domains_desc1": "Questa azione disattiverà il rinnovo automatico di tutti i domini di cui sei il contatto di fatturazione.", + "autorenew_service_disable_all_domains_desc2": "Per conservare i tuoi servizi, effettua il pagamento prima della loro data di scadenza.", + "autorenew_service_disable_all_domains_desc3": "In caso contrario, i servizi saranno disattivati automaticamente alla data di scadenza. I dati associati al pagamento automatico dei servizi saranno eliminati in modo irreversibile.", + "autorenew_service_disable_all_domains_desc4": "È possibile riattivare il pagamento automatico dei tuoi servizi fino a 24 ore prima della loro data di scadenza.", + "autorenew_service_disable_all_domains_success": "La richiesta di disattivazione del pagamento automatico è stata presa in carico. Diventerà effettiva tra poche ore.", + "autorenew_service_disable_all_domains_error": "Si è verificato un errore, ci scusiamo per il disagio.", + "autorenew_service_disable_all_domains_validate": "Conferma", + "autorenew_service_disable_all_domains_cancel": "Annulla" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..4c5277d8588a --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_pl_PL.json @@ -0,0 +1,11 @@ +{ + "autorenew_service_disable_all_domains_title": "Wyłącz automatyczne odnowienie", + "autorenew_service_disable_all_domains_desc1": "Operacja ta spowoduje wyłączenie automatycznego odnawiania wszystkich domen, dla których jesteś kontaktem księgowym.", + "autorenew_service_disable_all_domains_desc2": "Aby zachować usługi, dokonaj płatności przed terminem ich wygaśnięcia.", + "autorenew_service_disable_all_domains_desc3": "W przeciwnym razie Twoje usługi zostaną automatycznie zakończone w dniu ich wygaśnięcia. Dane związane z płatnością automatyczną za Twoje usługi zostaną nieodwracalnie usunięte.", + "autorenew_service_disable_all_domains_desc4": "Będziesz mógł przywrócić płatność automatyczną za usługi do 24 godzin przed datą ich wygaśnięcia.", + "autorenew_service_disable_all_domains_success": "Twoje zlecenie wyłączenia automatycznej płatności zostało zarejestrowane. Zmiana zostanie wykonana w ciągu kilku minut.", + "autorenew_service_disable_all_domains_error": "Wystąpił błąd. Przepraszamy za niedogodności.", + "autorenew_service_disable_all_domains_validate": "Zatwierdź", + "autorenew_service_disable_all_domains_cancel": "Anuluj" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..66715e64a0c4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable-domains-bulk/translations/Messages_pt_PT.json @@ -0,0 +1,11 @@ +{ + "autorenew_service_disable_all_domains_title": "Desativar a renovação automática", + "autorenew_service_disable_all_domains_desc1": "Esta ação desativará a renovação automática de todos os nomes de domínio cujo contacto de faturação é o seu.", + "autorenew_service_disable_all_domains_desc2": "Para conservar os seus serviços, deve efetuar os próximos pagamentos antes da data de expiração.", + "autorenew_service_disable_all_domains_desc3": "Por predefinição, os seus serviços serão automaticamente rescindidos na sua data de expiração. Os dados relativos a este serviço serão automaticamente eliminados de forma irreversível.", + "autorenew_service_disable_all_domains_desc4": "Poderá reativar o pagamento automático dos seus serviços até 24 horas antes da data de expiração dos mesmos.", + "autorenew_service_disable_all_domains_success": "O pedido de desativação do pagamento automático foi registado pelo sistema. O cancelamento será efetivo algumas horas depois.", + "autorenew_service_disable_all_domains_error": "Ocorreu um erro. Pedimos desculpa pelo incómodo.", + "autorenew_service_disable_all_domains_validate": "Validar", + "autorenew_service_disable_all_domains_cancel": "Anular" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable/disable.component.js b/packages/manager/modules/new-billing/src/autoRenew/disable/disable.component.js new file mode 100644 index 000000000000..84603ffaeaf2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable/disable.component.js @@ -0,0 +1,12 @@ +import controller from './disable.controller'; +import template from './disable.html'; + +export default { + bindings: { + goBack: '<', + servicesList: '<', + updateRenew: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable/disable.controller.js b/packages/manager/modules/new-billing/src/autoRenew/disable/disable.controller.js new file mode 100644 index 000000000000..ce40c37094ef --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable/disable.controller.js @@ -0,0 +1,45 @@ +import get from 'lodash/get'; + +export default class { + /* @ngInject */ + constructor($translate) { + this.$translate = $translate; + } + + $onInit() { + this.descriptions = { + getSingleUpdate: (service) => + this.$translate.instant('billing_autorenew_disable_bulk_single', { + serviceName: service.getServiceName(), + }), + getCompleteUpdate: () => + this.$translate.instant('billing_autorenew_disable_bulk'), + getUncompleteUpdate: (count) => + count === 1 + ? this.$translate.instant( + 'billing_autorenew_disable_bulk_unavailable_one', + ) + : this.$translate.instant( + 'billing_autorenew_disable_bulk_unavailable', + { count }, + ), + }; + } + + update(services) { + return this.updateRenew(services) + .then(() => + this.goBack( + this.$translate.instant('billing_autorenew_disable_success'), + ), + ) + .catch((error) => + this.goBack( + this.$translate.instant('billing_autorenew_disable_error', { + message: get(error, 'data.message'), + }), + 'danger', + ), + ); + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable/disable.html b/packages/manager/modules/new-billing/src/autoRenew/disable/disable.html new file mode 100644 index 000000000000..01996ec3efba --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable/disable.html @@ -0,0 +1,26 @@ +
+ + + + + +

+ + +

+

+ +
+
+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable/disable.module.js b/packages/manager/modules/new-billing/src/autoRenew/disable/disable.module.js new file mode 100644 index 000000000000..99e0ee47294c --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable/disable.module.js @@ -0,0 +1,26 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import uiRouter from '@uirouter/angularjs'; + +import bulk from '../bulk/bulk.module'; + +import component from './disable.component'; +import routing from './disable.routing'; +import service from './disable.service'; + +const moduleName = 'ovhManagerBillingAutorenewDisable'; + +angular + .module(moduleName, [ + angularTranslate, + bulk, + ngTranslateAsyncLoader, + uiRouter, + ]) + .config(routing) + .component('billingAutorenewDisable', component) + .service('BillingAutorenewDisable', service) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable/disable.routing.js b/packages/manager/modules/new-billing/src/autoRenew/disable/disable.routing.js new file mode 100644 index 000000000000..27538537e760 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable/disable.routing.js @@ -0,0 +1,36 @@ +import filter from 'lodash/filter'; +import map from 'lodash/map'; + +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.disable', { + url: '/disable?services', + component: 'billingAutorenewDisable', + resolve: { + goBack: /* @ngInject */ (goToAutorenew) => goToAutorenew, + servicesId: /* @ngInject */ ($transition$) => + $transition$.params().services.split(','), + servicesList: /* @ngInject */ ( + BillingAutorenewDisable, + billingServices, + currentUser, + servicesId, + ) => + BillingAutorenewDisable.constructor.groupByManualRenewCapabilities( + filter(billingServices, (service) => + servicesId.includes(service.id.toString()), + ), + currentUser.auth.account, + ), + /* @ngInject */ + updateRenew: (BillingAutoRenew) => (services) => + BillingAutoRenew.updateServices( + map(services, (service) => { + service.setManualRenew(); + return service; + }), + ), + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('billing_autorenew_disable_breadcrumb'), + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable/disable.service.js b/packages/manager/modules/new-billing/src/autoRenew/disable/disable.service.js new file mode 100644 index 000000000000..cf5c68ed934d --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable/disable.service.js @@ -0,0 +1,10 @@ +import groupBy from 'lodash/groupBy'; + +export default class { + static groupByManualRenewCapabilities(services, nichandle) { + return groupBy( + services, + (service) => service.getManualRenewCapability(nichandle).reason, + ); + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_de_DE.json new file mode 100644 index 000000000000..0134d72a53e4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_de_DE.json @@ -0,0 +1,14 @@ +{ + "billing_autorenew_disable_title": "Automatische Verlängerung für die ausgewählten Dienste deaktivieren", + "billing_autorenew_disable_description": "Sie haben angegeben, dass Sie die automatische Verlängerung für die ausgewählten Dienste deaktivieren möchten.", + "billing_autorenew_disable_warning": "In diesem Verlängerungsmodus wird Ihr Dienst am Ablaufdatum nicht mehr automatisch verlängert. In den Wochen/Tagen vor Ablauf des Dienstes erhalten Sie mehrere E-Mail-Benachrichtigungen, um Sie auf das Ablaufdatum hinzuweisen.", + "billing_autorenew_disable_renew": "Wenn Sie Ihren Dienst weiterhin nutzen möchten, können Sie ihn einfach verlängern.", + "billing_autorenew_disable_data": "Achtung: Sobald der Dienst abgelaufen ist, wird er umgehend geschlossen. Er ist dann nicht mehr erreichbar und die zugehörigen Daten werden ohne Aktion Ihrerseits innerhalb weniger Tage unwiderruflich gelöscht", + "billing_autorenew_disable_bulk_unavailable": "Die automatische Verlängerung wird für alle ausgewählten Dienste deaktiviert, mit Ausnahme von {{ count }} Diensten:", + "billing_autorenew_disable_success": "Die Verlängerung der Dienste wurde erfolgreich aktualisiert", + "billing_autorenew_disable_error": "Beim Deaktivieren der automatischen Verlängerung ist ein Fehler aufgetreten {{message}}", + "billing_autorenew_disable_bulk_unavailable_one": "Die automatische Verlängerung wird für alle ausgewählten Dienste deaktiviert, mit Ausnahme von 1 Dienst:", + "billing_autorenew_disable_bulk": "Die automatische Verlängerung wird für alle ausgewählten Dienste deaktiviert.", + "billing_autorenew_disable_bulk_single": "Die automatische Verlängerung für Ihren Dienst {{ serviceName }} wird deaktiviert.", + "billing_autorenew_disable_breadcrumb": "Automatische Verlängerung deaktivieren" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_en_GB.json new file mode 100644 index 000000000000..1428a270b911 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_en_GB.json @@ -0,0 +1,14 @@ +{ + "billing_autorenew_disable_title": "Disable automatic renewal for the services selected", + "billing_autorenew_disable_description": "You wanted to disable manual renewal for the services selected.", + "billing_autorenew_disable_warning": "With this renewal method, your service will not be renewed automatically when it reaches its expiry date. You will be sent several email notifications in the weeks and days before the expiry date, and they will alert you regarding the expiry.", + "billing_autorenew_disable_renew": "You will simply need to renew your service if you want to keep using it.", + "billing_autorenew_disable_data": "Please note that once the service expires, it will be immediately suspended. It will no longer be accessible, and the data associated with the service will be permanently deleted within a few days if we do not receive any payment.", + "billing_autorenew_disable_bulk_unavailable": "Automatic renewal will be disabled for all of the services selected, excluding {{ count }} services:", + "billing_autorenew_disable_success": "The service renewals have been updated", + "billing_autorenew_disable_error": "An error has occurred disabling automatic renewal {{ message }}", + "billing_autorenew_disable_bulk_unavailable_one": "Automatic renewal will be disabled for all of the services selected, excluding 1 service:", + "billing_autorenew_disable_bulk": "Automatic renewal will be disabled for all of the services selected.", + "billing_autorenew_disable_bulk_single": "Automatic renewal for the {{ serviceName }} service will be disabled.", + "billing_autorenew_disable_breadcrumb": "Disable automatic renewal" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_es_ES.json new file mode 100644 index 000000000000..d83aa5a61d1b --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_es_ES.json @@ -0,0 +1,14 @@ +{ + "billing_autorenew_disable_description": "Ha solicitado desactivar la renovación automática para los servicios seleccionados.", + "billing_autorenew_disable_title": "Desactivar la renovación automática para los servicios seleccionados.", + "billing_autorenew_disable_warning": "Con esta modalidad, el servicio no se renovará automáticamente en la fecha de expiración. Recibirá varios mensajes de correo electrónico en las semanas y días previos a la fecha de expiración.", + "billing_autorenew_disable_renew": "Para conservar el servicio, solo tendrá que renovarlo.", + "billing_autorenew_disable_data": "Atención: Una vez que el servicio haya expirado, se suspenderá de forma inmediata y no podrá acceder a él. Si no abona el importe pendiente, los datos asociados al servicio se eliminarán de forma definitiva.", + "billing_autorenew_disable_bulk_unavailable": "La renovación automática se desactivará en todos los servicios seleccionados, excepto en {{ count }} servicios:", + "billing_autorenew_disable_success": "La renovación de los servicios se ha actualizado.", + "billing_autorenew_disable_error": "Se ha producido un error al desactivar la renovación automática: {{message}}.", + "billing_autorenew_disable_bulk_unavailable_one": "La renovación automática se desactivará en todos los servicios seleccionados, excepto en 1 servicio:", + "billing_autorenew_disable_bulk": "La renovación automática se desactivará en todos los servicios seleccionados.", + "billing_autorenew_disable_bulk_single": "La renovación automática se desactivará en el servicio {{ serviceName }}.", + "billing_autorenew_disable_breadcrumb": "Desactivar la renovación automática" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..dc89a3efbcd4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_fr_CA.json @@ -0,0 +1,14 @@ +{ + "billing_autorenew_disable_breadcrumb": "Désactiver le renouvellement automatique", + "billing_autorenew_disable_title": "Désactiver le renouvellement automatique pour les services sélectionnés", + "billing_autorenew_disable_description": "Vous avez souhaité désactiver le renouvellement automatique pour les services sélectionnés.", + "billing_autorenew_disable_warning": "Dans ce mode de renouvellement, votre service n'est pas automatiquement reconduit lorsqu'il arrive à échéance. Plusieurs notifications vous seront envoyées par e-mails durant les semaines/jours précédents son terme, afin de vous prévenir de son expiration.", + "billing_autorenew_disable_renew": "Il vous suffira de renouveler votre service si vous souhaitez le conserver.", + "billing_autorenew_disable_data": "Attention, une fois le service expiré, il sera immédiatement suspendu, il ne sera plus accessible, et les données liées à ce service seront définitivement supprimées au bout de quelques jours sans règlement de votre part", + "billing_autorenew_disable_bulk_unavailable": "Le renouvellement automatique sera désactivé pour l'ensemble de vos services sélectionnés, exceptés pour {{ count }} services :", + "billing_autorenew_disable_bulk_unavailable_one": "Le renouvellement automatique sera désactivé pour l'ensemble de vos services sélectionnés, exceptés pour 1 service :", + "billing_autorenew_disable_bulk": "Le renouvellement automatique sera désactivé pour l'ensemble de vos services sélectionnés.", + "billing_autorenew_disable_bulk_single": "Le renouvellement automatique pour votre service {{ serviceName }} sera désactivé.", + "billing_autorenew_disable_success": "Le renouvellement des services a bien été mis à jour", + "billing_autorenew_disable_error": "Une erreur est survenue lors de la désactivation du renouvellement automatique {{ message }}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..dc89a3efbcd4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_fr_FR.json @@ -0,0 +1,14 @@ +{ + "billing_autorenew_disable_breadcrumb": "Désactiver le renouvellement automatique", + "billing_autorenew_disable_title": "Désactiver le renouvellement automatique pour les services sélectionnés", + "billing_autorenew_disable_description": "Vous avez souhaité désactiver le renouvellement automatique pour les services sélectionnés.", + "billing_autorenew_disable_warning": "Dans ce mode de renouvellement, votre service n'est pas automatiquement reconduit lorsqu'il arrive à échéance. Plusieurs notifications vous seront envoyées par e-mails durant les semaines/jours précédents son terme, afin de vous prévenir de son expiration.", + "billing_autorenew_disable_renew": "Il vous suffira de renouveler votre service si vous souhaitez le conserver.", + "billing_autorenew_disable_data": "Attention, une fois le service expiré, il sera immédiatement suspendu, il ne sera plus accessible, et les données liées à ce service seront définitivement supprimées au bout de quelques jours sans règlement de votre part", + "billing_autorenew_disable_bulk_unavailable": "Le renouvellement automatique sera désactivé pour l'ensemble de vos services sélectionnés, exceptés pour {{ count }} services :", + "billing_autorenew_disable_bulk_unavailable_one": "Le renouvellement automatique sera désactivé pour l'ensemble de vos services sélectionnés, exceptés pour 1 service :", + "billing_autorenew_disable_bulk": "Le renouvellement automatique sera désactivé pour l'ensemble de vos services sélectionnés.", + "billing_autorenew_disable_bulk_single": "Le renouvellement automatique pour votre service {{ serviceName }} sera désactivé.", + "billing_autorenew_disable_success": "Le renouvellement des services a bien été mis à jour", + "billing_autorenew_disable_error": "Une erreur est survenue lors de la désactivation du renouvellement automatique {{ message }}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_it_IT.json new file mode 100644 index 000000000000..de0f61992d69 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_it_IT.json @@ -0,0 +1,14 @@ +{ + "billing_autorenew_disable_title": "Disattiva il rinnovo automatico sui servizi selezionati.", + "billing_autorenew_disable_description": "Hai richiesto di disattivare il rinnovo manuale sui servizi selezionati.", + "billing_autorenew_disable_warning": "Questa modalità non consente il rinnovo automatico del servizio alla scadenza. Riceverai alcune email di notifica nelle settimane/giorni precedenti alla scadenza e, per mantenere il servizio attivo, sarà sufficiente rinnovarlo.", + "billing_autorenew_disable_renew": "", + "billing_autorenew_disable_data": "Attenzione: una volta giunto a scadenza, il servizio viene immediatamente sospeso e non sarà più accessibile. In caso di mancato pagamento da parte tua entro qualche giorno, i dati ad esso associati verranno eliminati definitivamente.", + "billing_autorenew_disable_bulk_unavailable": "Il rinnovo automatico verrà disattivato su tutti i servizi selezionati, fatta eccezione per {{ count }} servizi:", + "billing_autorenew_disable_success": "Il rinnovo dei servizi è stato aggiornato correttamente", + "billing_autorenew_disable_error": "Si è verificato un errore durante la disattivazione del rinnovo automatico: {{ message }}", + "billing_autorenew_disable_bulk_unavailable_one": "Il rinnovo automatico verrà disattivato su tutti i servizi selezionati, fatta eccezione per 1 servizio:", + "billing_autorenew_disable_bulk": "Il rinnovo automatico verrà disattivato su tutti i servizi selezionati.", + "billing_autorenew_disable_bulk_single": "Il rinnovo automatico verrà disattivato sul servizio {{ serviceName }}.", + "billing_autorenew_disable_breadcrumb": "Disattiva il rinnovo automatico" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..4e3d4a199d41 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_pl_PL.json @@ -0,0 +1,14 @@ +{ + "billing_autorenew_disable_description": "Wybrałeś wyłączenie ręcznego odnowienia dla wybranych usług.", + "billing_autorenew_disable_title": "Wyłączanie automatycznego odnowienia dla wybranych usług", + "billing_autorenew_disable_warning": "W tej konfiguracji odnowienia Twoja usługa nie będzie automatycznie odnawiana w dniu jej wygaśnięcia. Na kilka tygodni/dni przed wygaśnięciem usługi otrzymasz kilka przypomnień e-mailem.", + "billing_autorenew_disable_renew": "Dzięki temu, jeśli chcesz zachować usługę, będziesz mógł ją odnowić.", + "billing_autorenew_disable_data": "Uwaga: po wygaśnięciu usługi zostanie ona natychmiast zawieszona i nie będzie już dostępna. W przypadku braku uregulowania płatności dane powiązane z tą usługą zostaną definitywnie usunięte po kilku dniach.", + "billing_autorenew_disable_bulk_unavailable": "Automatyczne odnowienie zostanie wyłączone dla wszystkich wybranych usług, z wyjątkiem {{count}} usług:", + "billing_autorenew_disable_success": "Odnowienie usług zostało zaktualizowane.", + "billing_autorenew_disable_error": "Wystąpił błąd podczas wyłączania automatycznego odnowienia {{message}}.", + "billing_autorenew_disable_bulk_unavailable_one": "Automatyczne odnowienie zostanie wyłączone dla wszystkich wybranych usług, z wyjątkiem jednej usługi:", + "billing_autorenew_disable_bulk": "Automatyczne odnowienie zostanie wyłączone dla wszystkich wybranych usług.", + "billing_autorenew_disable_bulk_single": "Automatyczne odnowienie usługi {{serviceName}} zostanie wyłączone.", + "billing_autorenew_disable_breadcrumb": "Wyłącz automatyczne odnowienie" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..ab08a1deffa5 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/disable/translations/Messages_pt_PT.json @@ -0,0 +1,14 @@ +{ + "billing_autorenew_disable_description": "Pretende desativar a renovação automática para os serviços selecionados.", + "billing_autorenew_disable_title": "Desativar a renovação automática para os serviços selecionados", + "billing_autorenew_disable_warning": "Neste modo de renovação, o seu serviço não é automaticamente renovado na sua data de expiração. Nas semanas/dias anteriores à data de expiração, receberá várias notificações por e-mail.", + "billing_autorenew_disable_renew": "Para manter o serviço, só precisará de o renovar.", + "billing_autorenew_disable_data": "Atenção: uma vez expirado, o serviço será imediatamente suspenso e ficará inacessível. Em caso de falta de pagamento, os dados relativos a este serviço serão definitivamente eliminados ao fim de alguns dias.", + "billing_autorenew_disable_bulk_unavailable": "A renovação automática será desativada para todos os serviços selecionados, exceto para {{ count }} serviços:", + "billing_autorenew_disable_success": "A renovação dos serviços foi atualizada", + "billing_autorenew_disable_error": "Ocorreu um erro ao desativar a renovação automática {{ message }}", + "billing_autorenew_disable_bulk_unavailable_one": "A renovação automática será desativada para todos os serviços selecionados, exceto para 1 serviço:", + "billing_autorenew_disable_bulk": "A renovação automática será desativada para todos os serviços selecionados.", + "billing_autorenew_disable_bulk_single": "A renovação automática do seu serviço {{ serviceName }} será desativada.", + "billing_autorenew_disable_breadcrumb": "Desativar a renovação automática" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/enable/enable.component.js b/packages/manager/modules/new-billing/src/autoRenew/enable/enable.component.js new file mode 100644 index 000000000000..69fee29faad3 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/enable/enable.component.js @@ -0,0 +1,13 @@ +import controller from './enable.controller'; +import template from './enable.html'; + +export default { + bindings: { + defaultPaymentMean: '<', + goBack: '<', + servicesList: '<', + updateRenew: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/enable/enable.controller.js b/packages/manager/modules/new-billing/src/autoRenew/enable/enable.controller.js new file mode 100644 index 000000000000..bc6488113cbe --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/enable/enable.controller.js @@ -0,0 +1,45 @@ +import get from 'lodash/get'; + +export default class { + /* @ngInject */ + constructor($translate) { + this.$translate = $translate; + } + + $onInit() { + this.descriptions = { + getSingleUpdate: (service) => + this.$translate.instant('billing_autorenew_enable_bulk_single', { + serviceName: service.getServiceName(), + }), + getCompleteUpdate: () => + this.$translate.instant('billing_autorenew_enable_bulk'), + getUncompleteUpdate: (count) => + count === 1 + ? this.$translate.instant( + 'billing_autorenew_enable_bulk_unavailable_one', + ) + : this.$translate.instant( + 'billing_autorenew_enable_bulk_unavailable', + { count }, + ), + }; + } + + update(services) { + return this.updateRenew(services) + .then(() => + this.goBack( + this.$translate.instant('billing_autorenew_enable_success'), + ), + ) + .catch((error) => + this.goBack( + this.$translate.instant('billing_autorenew_enable_error', { + message: get(error, 'data.message'), + }), + 'danger', + ), + ); + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/enable/enable.html b/packages/manager/modules/new-billing/src/autoRenew/enable/enable.html new file mode 100644 index 000000000000..a655744417c2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/enable/enable.html @@ -0,0 +1,31 @@ +
+ + + + + + + + + + + +
diff --git a/packages/manager/modules/new-billing/src/autoRenew/enable/enable.module.js b/packages/manager/modules/new-billing/src/autoRenew/enable/enable.module.js new file mode 100644 index 000000000000..65bce7c67d55 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/enable/enable.module.js @@ -0,0 +1,26 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import uiRouter from '@uirouter/angularjs'; + +import bulk from '../bulk/bulk.module'; + +import component from './enable.component'; +import routing from './enable.routing'; +import service from './enable.service'; + +const moduleName = 'ovhManagerBillingAutorenewEnable'; + +angular + .module(moduleName, [ + angularTranslate, + bulk, + ngTranslateAsyncLoader, + uiRouter, + ]) + .config(routing) + .component('billingAutorenewEnable', component) + .service('BillingAutorenewEnable', service) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/enable/enable.routing.js b/packages/manager/modules/new-billing/src/autoRenew/enable/enable.routing.js new file mode 100644 index 000000000000..a1aa6a49e91c --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/enable/enable.routing.js @@ -0,0 +1,37 @@ +import filter from 'lodash/filter'; +import map from 'lodash/map'; + +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.enable', { + url: '/enable?services', + component: 'billingAutorenewEnable', + translations: { value: ['.'], format: 'json' }, + resolve: { + goBack: /* @ngInject */ (goToAutorenew) => goToAutorenew, + servicesId: /* @ngInject */ ($transition$) => + $transition$.params().services.split(','), + servicesList: /* @ngInject */ ( + BillingAutorenewEnable, + billingServices, + currentUser, + servicesId, + ) => + BillingAutorenewEnable.constructor.groupByAutorenewCapabilities( + filter(billingServices, (service) => + servicesId.includes(service.id.toString()), + ), + currentUser.auth.account, + ), + /* @ngInject */ + updateRenew: (BillingAutoRenew) => (services) => + BillingAutoRenew.updateServices( + map(services, (service) => { + service.setAutomaticRenew(); + return service; + }), + ), + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('billing_autorenew_enable_breadcrumb'), + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/enable/enable.service.js b/packages/manager/modules/new-billing/src/autoRenew/enable/enable.service.js new file mode 100644 index 000000000000..02062f6abc84 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/enable/enable.service.js @@ -0,0 +1,10 @@ +import groupBy from 'lodash/groupBy'; + +export default class { + static groupByAutorenewCapabilities(services, nichandle) { + return groupBy( + services, + (service) => service.getAutorenewCapability(nichandle).reason, + ); + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_de_DE.json new file mode 100644 index 000000000000..4b5c00d0dccc --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_de_DE.json @@ -0,0 +1,13 @@ +{ + "billing_autorenew_enable_title": "Automatische Verlängerung für die ausgewählten Dienste aktivieren", + "billing_autorenew_enable_payment_mean": "Sobald die automatische Verlängerung für die ausgewählten Dienste aktiviert ist, wird für die Zahlung dieser Funktion Ihr Standardzahlungsmittel verwendet: {{ type }} {{ label }}", + "billing_autorenew_enable_payment_mean_default": "Um Ihr Standardzahlungsmittel zu ändern, gehen Sie in den Bereich „Meine Zahlungsarten“", + "billing_autorenew_enable_payment_mean_frequency": "Das Zahlungsintervall wird für jeden Dienst auf den Mindestwert eingestellt.", + "billing_autorenew_enable_bulk_unavailable": "Die automatische Verlängerung wird für alle ausgewählten Dienste aktiviert, mit Ausnahme von {{ count }} Diensten:", + "billing_autorenew_enable_bulk_unavailable_one": "Die automatische Verlängerung wird für alle ausgewählten Dienste aktiviert, mit Ausnahme von 1 Dienst:", + "billing_autorenew_enable_bulk": "Die automatische Verlängerung wird für alle ausgewählten Dienste aktiviert.", + "billing_autorenew_enable_bulk_single": "Die automatische Verlängerung für Ihren Dienst {{ serviceName }} wird aktiviert.", + "billing_autorenew_enable_success": "Die Verlängerung der Dienste wurde erfolgreich aktualisiert", + "billing_autorenew_enable_error": "Beim Aktivieren der automatischen Verlängerung ist ein Fehler aufgetreten {{message}}", + "billing_autorenew_enable_breadcrumb": "Automatische Verlängerung aktivieren" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_en_GB.json new file mode 100644 index 000000000000..4c26b8d37a26 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_en_GB.json @@ -0,0 +1,13 @@ +{ + "billing_autorenew_enable_title": "Enable automatic renewal for the services selected", + "billing_autorenew_enable_payment_mean": "Once you have set up automatic renewal for the services selected, the payment method used will be your default payment method, i.e.: {{ type }} {{ label }}", + "billing_autorenew_enable_payment_mean_default": "To change your default payment method, go to the “My payment methods” section", + "billing_autorenew_enable_payment_mean_frequency": "The payment frequency will be configured with the maximum frequency possible per service.", + "billing_autorenew_enable_bulk_unavailable": "Automatic renewal will be enabled for all of the services selected, excluding {{ count }} services:", + "billing_autorenew_enable_bulk_unavailable_one": "Automatic renewal will be enabled for all of the services selected, excluding 1 service:", + "billing_autorenew_enable_bulk": "Automatic renewal will be enabled for all of the services selected", + "billing_autorenew_enable_bulk_single": "Automatic renewal for the {{ serviceName }} service will be enabled", + "billing_autorenew_enable_success": "The service renewals have been updated", + "billing_autorenew_enable_error": "An error has occurred enabling automatic renewal {{ message }}", + "billing_autorenew_enable_breadcrumb": "Enable automatic renewal" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_es_ES.json new file mode 100644 index 000000000000..c9012d128b69 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_es_ES.json @@ -0,0 +1,13 @@ +{ + "billing_autorenew_enable_title": "Activar la renovación automática para los servicios seleccionados.", + "billing_autorenew_enable_payment_mean": "Una vez activada la renovación automática en los servicios seleccionados, la forma de pago utilizada por defecto será la siguiente: {{ type }} {{ label }}.", + "billing_autorenew_enable_payment_mean_default": "Para modificar la forma de pago por defecto, acceda a la sección «Mis formas de pago».", + "billing_autorenew_enable_payment_mean_frequency": "La frecuencia de pago se configurará con la frecuencia mínima posible por servicio.", + "billing_autorenew_enable_bulk_unavailable": "La renovación automática se activará en todos los servicios seleccionados, excepto en {{ count }} servicios:", + "billing_autorenew_enable_bulk_unavailable_one": "La renovación automática se activará en todos los servicios seleccionados, excepto en 1 servicio:", + "billing_autorenew_enable_bulk": "La renovación automática se activará en todos los servicios seleccionados.", + "billing_autorenew_enable_bulk_single": "La renovación automática se activará en el servicio {{ serviceName }}.", + "billing_autorenew_enable_success": "La renovación de los servicios se ha actualizado.", + "billing_autorenew_enable_error": "Se ha producido un error al activar la renovación automática: {{message}}.", + "billing_autorenew_enable_breadcrumb": "Activar la renovación automática" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..584ac88dafed --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_fr_CA.json @@ -0,0 +1,13 @@ +{ + "billing_autorenew_enable_breadcrumb": "Activer le renouvellement automatique", + "billing_autorenew_enable_title": "Activer le renouvellement automatique pour les services sélectionnés", + "billing_autorenew_enable_payment_mean": "Une fois le renouvellement automatique mis en place pour vos services sélectionnés, le moyen de paiement utilisé sera votre moyen de paiement par défaut à savoir : {{ type }} {{ label }}", + "billing_autorenew_enable_payment_mean_default": "Pour changer votre moyen de paiement par défaut, rendez-vous dans la section \"Mes moyens de paiement\"", + "billing_autorenew_enable_payment_mean_frequency": "La fréquence de paiement sera configurée sur la fréquence minimum possible par service.", + "billing_autorenew_enable_bulk_unavailable": "Le renouvellement automatique sera activé pour l'ensemble de vos services sélectionnés, exceptés pour {{ count }} services :", + "billing_autorenew_enable_bulk_unavailable_one": "Le renouvellement automatique sera activé pour l'ensemble de vos services sélectionnés, exceptés pour 1 service :", + "billing_autorenew_enable_bulk": "Le renouvellement automatique sera activé pour l'ensemble de vos services sélectionnés", + "billing_autorenew_enable_bulk_single": "Le renouvellement automatique pour votre service {{ serviceName }} sera activé", + "billing_autorenew_enable_success": "Le renouvellement des services a bien été mis à jour", + "billing_autorenew_enable_error": "Une erreur est survenue lors de l'activation du renouvellement automatique {{ message }}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..584ac88dafed --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_fr_FR.json @@ -0,0 +1,13 @@ +{ + "billing_autorenew_enable_breadcrumb": "Activer le renouvellement automatique", + "billing_autorenew_enable_title": "Activer le renouvellement automatique pour les services sélectionnés", + "billing_autorenew_enable_payment_mean": "Une fois le renouvellement automatique mis en place pour vos services sélectionnés, le moyen de paiement utilisé sera votre moyen de paiement par défaut à savoir : {{ type }} {{ label }}", + "billing_autorenew_enable_payment_mean_default": "Pour changer votre moyen de paiement par défaut, rendez-vous dans la section \"Mes moyens de paiement\"", + "billing_autorenew_enable_payment_mean_frequency": "La fréquence de paiement sera configurée sur la fréquence minimum possible par service.", + "billing_autorenew_enable_bulk_unavailable": "Le renouvellement automatique sera activé pour l'ensemble de vos services sélectionnés, exceptés pour {{ count }} services :", + "billing_autorenew_enable_bulk_unavailable_one": "Le renouvellement automatique sera activé pour l'ensemble de vos services sélectionnés, exceptés pour 1 service :", + "billing_autorenew_enable_bulk": "Le renouvellement automatique sera activé pour l'ensemble de vos services sélectionnés", + "billing_autorenew_enable_bulk_single": "Le renouvellement automatique pour votre service {{ serviceName }} sera activé", + "billing_autorenew_enable_success": "Le renouvellement des services a bien été mis à jour", + "billing_autorenew_enable_error": "Une erreur est survenue lors de l'activation du renouvellement automatique {{ message }}" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_it_IT.json new file mode 100644 index 000000000000..ba492f998179 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_it_IT.json @@ -0,0 +1,13 @@ +{ + "billing_autorenew_enable_title": "Attiva il rinnovo automatico sui servizi selezionati", + "billing_autorenew_enable_payment_mean": "Una volta attivato il rinnovo automatico sui servizi selezionati, il pagamento di questa funzionalità verrà effettuato sul metodo di pagamento predefinito: {{ type }} {{ label }}", + "billing_autorenew_enable_payment_mean_default": "Per modificare il metodo di pagamento predefinito accedi alla sezione “I tuoi metodi di pagamento”", + "billing_autorenew_enable_payment_mean_frequency": "La frequenza di pagamento verrà configurata sul valore minimo per ogni servizio.", + "billing_autorenew_enable_bulk_unavailable": "Il rinnovo automatico verrà attivato su tutti i servizi selezionati, fatta eccezione per {{ count }} servizi:", + "billing_autorenew_enable_bulk_unavailable_one": "Il rinnovo automatico verrà attivato su tutti i servizi selezionati, fatta eccezione per 1 servizio:", + "billing_autorenew_enable_bulk": "Il rinnovo automatico verrà attivato su tutti i servizi selezionati.", + "billing_autorenew_enable_bulk_single": "Il rinnovo automatico verrà attivato sul servizio {{ serviceName }}.", + "billing_autorenew_enable_success": "Il rinnovo dei servizi è stato aggiornato correttamente", + "billing_autorenew_enable_error": "Si è verificato un errore durante l’attivazione del rinnovo automatico: {{ message }}", + "billing_autorenew_enable_breadcrumb": "Attiva il rinnovo automatico" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..a8a054ebaca5 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_pl_PL.json @@ -0,0 +1,13 @@ +{ + "billing_autorenew_enable_title": "Włączanie automatycznego odnowienia dla wybranych usług", + "billing_autorenew_enable_payment_mean": "Po włączeniu automatycznego odnowienia dla wybranych usług, zastosowany przez Ciebie sposób płatności zostanie wskazany jako domyślny sposób płatności: {{type}} {{label}}.", + "billing_autorenew_enable_payment_mean_default": "Aby zmienić domyślny sposób płatności, przejdź do sekcji „Moje sposoby płatności”.", + "billing_autorenew_enable_payment_mean_frequency": "Częstotliwość płatności zostanie ustawiona na minimalną możliwą częstotliwość dla usługi.", + "billing_autorenew_enable_bulk_unavailable": "Automatyczne odnowienie zostanie włączone dla wszystkich wybranych usług, z wyjątkiem {{count}} usług:", + "billing_autorenew_enable_bulk_unavailable_one": "Automatyczne odnowienie zostanie włączone dla wszystkich wybranych usług, z wyjątkiem jednej usługi:", + "billing_autorenew_enable_bulk": "Automatyczne odnowienie zostanie włączone dla wszystkich wybranych usług.", + "billing_autorenew_enable_bulk_single": "Automatyczne odnowienie usługi {{serviceName}} zostanie włączone.", + "billing_autorenew_enable_success": "Odnowienie usług zostało zaktualizowane.", + "billing_autorenew_enable_error": "Wystąpił błąd podczas włączania automatycznego odnowienia {{message}}.", + "billing_autorenew_enable_breadcrumb": "Włącz automatyczne odnowienie" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..700e594b6c1b --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/enable/translations/Messages_pt_PT.json @@ -0,0 +1,13 @@ +{ + "billing_autorenew_enable_title": "Ativar a renovação automática para os serviços selecionados", + "billing_autorenew_enable_payment_mean": "Uma vez a renovação automática ativada para os seus serviços selecionados, o método de pagamento utilizado será o seu método de pagamento predefinido: {{ type }} {{ label }}", + "billing_autorenew_enable_payment_mean_default": "Para alterar o seu método de pagamento predefinido, consulte a secção “Métodos de pagamento”", + "billing_autorenew_enable_payment_mean_frequency": "A frequência do pagamento será configurada para a frequência mínima possível por serviço.", + "billing_autorenew_enable_bulk_unavailable": "A renovação automática será ativada para todos os serviços selecionados, exceto para {{ count }} serviços:", + "billing_autorenew_enable_bulk_unavailable_one": "A renovação automática será ativada para todos os serviços selecionados, exceto para 1 serviço:", + "billing_autorenew_enable_bulk": "A renovação automática será ativada para todos os serviços selecionados.", + "billing_autorenew_enable_bulk_single": "A renovação automática do seu serviço {{ serviceName }} será ativada.", + "billing_autorenew_enable_success": "A renovação dos serviços foi atualizada", + "billing_autorenew_enable_error": "Ocorreu um erro ao ativar a renovação automática {{ message }}", + "billing_autorenew_enable_breadcrumb": "Ativar a renovação automática" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/popoverMenu.html b/packages/manager/modules/new-billing/src/autoRenew/popoverMenu.html new file mode 100644 index 000000000000..bdb6e4dc9eb0 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/popoverMenu.html @@ -0,0 +1,15 @@ +
+

+ + +
diff --git a/packages/manager/modules/new-billing/src/autoRenew/resiliation/index.js b/packages/manager/modules/new-billing/src/autoRenew/resiliation/index.js new file mode 100644 index 000000000000..cd01ee218814 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/resiliation/index.js @@ -0,0 +1,22 @@ +import angular from 'angular'; + +import '@uirouter/angularjs'; +import 'oclazyload'; + +const moduleName = 'ovhManagerBillingAutorenewResiliationLazyLoading'; + +angular.module(moduleName, ['ui.router', 'oc.lazyLoad']).config( + /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.resiliation.**', { + url: '/resiliation', + lazyLoad: ($transition$) => { + const $ocLazyLoad = $transition$.injector().get('$ocLazyLoad'); + return import('./resiliation.module').then((mod) => + $ocLazyLoad.inject(mod.default || mod), + ); + }, + }); + }, +); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/resiliation/resiliation.module.js b/packages/manager/modules/new-billing/src/autoRenew/resiliation/resiliation.module.js new file mode 100644 index 000000000000..18b51e907e7e --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/resiliation/resiliation.module.js @@ -0,0 +1,15 @@ +import angular from 'angular'; +import ngUiRouterLayout from '@ovh-ux/ng-ui-router-layout'; +import ovhManagerBillingComponents from '@ovh-ux/manager-billing-components'; +import uiRouter from '@uirouter/angularjs'; + +import routing from './resiliation.routing'; + +const moduleName = 'ovhManagerBillingAutorenewResiliation'; + +angular + .module(moduleName, [ngUiRouterLayout, ovhManagerBillingComponents, uiRouter]) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/resiliation/resiliation.routing.js b/packages/manager/modules/new-billing/src/autoRenew/resiliation/resiliation.routing.js new file mode 100644 index 000000000000..021332bd6766 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/resiliation/resiliation.routing.js @@ -0,0 +1,50 @@ +import kebabCase from 'lodash/kebabCase'; + +import { BillingService as Service } from '@ovh-ux/manager-models'; + +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.resiliation', { + url: '/resiliation?serviceId&serviceName&serviceType', + component: 'ovhManagerBillingResiliation', + resolve: { + availableStrategies: /* @ngInjecgt */ (endStrategyEnum, service) => + endStrategyEnum + .filter((strategy) => + service.billing.engagement?.endRule.possibleStrategies.includes( + strategy, + ), + ) + .map((strategy) => ({ + strategy, + })), + displayErrorMessage: /* @ngInject */ (Alerter) => (message) => + Alerter.set('alert-danger', message), + goBack: /* @ngInject */ ($state) => () => $state.go('^'), + onSuccess: /* @ngInject */ (Alerter, goBack) => (successMessage) => + goBack().then(() => { + Alerter.success(successMessage); + }), + service: /* @ngInject */ ($http, coreConfig, serviceId) => + $http + .get(`/services/${serviceId}`) + .then(({ data }) => new Service(data, coreConfig.getUserLocale())), + serviceId: /* @ngInject */ ($transition$) => + $transition$.params().serviceId, + serviceName: /* @ngInject */ ($transition$) => + $transition$.params().serviceName, + serviceType: /* @ngInject */ ($transition$) => + $transition$.params().serviceType, + validate: /* @ngInject */ (BillingService, serviceId) => (strategy) => + BillingService.putEndRuleStrategy(serviceId, strategy), + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('billing_autorenew_resiliate'), + }, + atInternet: { + rename: /* @ngInject */ ($state) => + // We're limited with the possible injection as we listen to onBefore hook + `dedicated::account::billing::autorenew::${kebabCase( + $state.transition.params().serviceType, + )}::resiliation`, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_de_DE.json new file mode 100644 index 000000000000..48d3d3f51628 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_de_DE.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_resiliate": "Kündigen" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_en_GB.json new file mode 100644 index 000000000000..5a0e5dd4e139 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_en_GB.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_resiliate": "Close" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_es_ES.json new file mode 100644 index 000000000000..2c19a980d619 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_es_ES.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_resiliate": "Dar de baja" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_fr_CA.json new file mode 100644 index 000000000000..5a0c792b504a --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_fr_CA.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_resiliate": "Résilier" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_fr_FR.json new file mode 100644 index 000000000000..5a0c792b504a --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_fr_FR.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_resiliate": "Résilier" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_it_IT.json new file mode 100644 index 000000000000..61d2b44c64df --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_it_IT.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_resiliate": "Disattiva" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_pl_PL.json new file mode 100644 index 000000000000..0b4239c3cd02 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_pl_PL.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_resiliate": "Rezygnacja" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_pt_PT.json new file mode 100644 index 000000000000..4c9623995cda --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/resiliation/translation/Messages_pt_PT.json @@ -0,0 +1,3 @@ +{ + "billing_autorenew_resiliate": "Rescindir" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/add/cloud/user-ssh-add-cloud.controller.js b/packages/manager/modules/new-billing/src/autoRenew/ssh/add/cloud/user-ssh-add-cloud.controller.js new file mode 100644 index 000000000000..6dd2ce75769d --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/add/cloud/user-ssh-add-cloud.controller.js @@ -0,0 +1,44 @@ +import isObject from 'lodash/isObject'; +import set from 'lodash/set'; + +export default /* @ngInject */ function UserAccountSshCloudAddController( + $scope, + $window, + atInternet, + UseraccountSshService, +) { + $scope.model = {}; + $scope.data = { + projects: [], + selectedProject: null, + loader: true, + }; + + UseraccountSshService.getCloudProjects() + .then((projects) => { + $scope.data.projects = projects; + }) + .finally(() => { + $scope.data.loader = false; + }); + + $scope.addCloudSshKey = function addCloudSshKey() { + $scope.resetAction(); + set( + $window, + 'location.href', + UseraccountSshService.getSshCloudUrl($scope.data.selectedProject.id), + ); + atInternet.trackClick({ + name: 'validation_add_ssh_key', + type: 'action', + chapter1: 'account', + chapter2: 'ssh', + chapter3: 'cloud', + }); + }; + + $scope.formIsValid = function formIsValid() { + return isObject($scope.data.selectedProject); + }; +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/add/cloud/user-ssh-add-cloud.html b/packages/manager/modules/new-billing/src/autoRenew/ssh/add/cloud/user-ssh-add-cloud.html new file mode 100644 index 000000000000..2dc112fe28cc --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/add/cloud/user-ssh-add-cloud.html @@ -0,0 +1,39 @@ +
+
+
+

+ +
+ +
+ +
+
+ + + +
+
+
+
+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/add/cloud/user-ssh-add-cloud.module.js b/packages/manager/modules/new-billing/src/autoRenew/ssh/add/cloud/user-ssh-add-cloud.module.js new file mode 100644 index 000000000000..c366109b0f63 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/add/cloud/user-ssh-add-cloud.module.js @@ -0,0 +1,24 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngAtInternet from '@ovh-ux/ng-at-internet'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import controller from './user-ssh-add-cloud.controller'; +import template from './user-ssh-add-cloud.html'; + +const moduleName = 'ovhManagerBillingAutorenewSshAddCloud'; + +angular + .module(moduleName, [angularTranslate, ngAtInternet, 'oui', uiRouter]) + .controller('UserAccountSshCloudAdd', controller) + .run( + /* @ngInject */ ($templateCache) => { + $templateCache.put( + 'billing/autoRenew/ssh/add/cloud/user-ssh-add-cloud.html', + template, + ); + }, + ); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/add/dedicated/user-ssh-add-dedicated.controller.js b/packages/manager/modules/new-billing/src/autoRenew/ssh/add/dedicated/user-ssh-add-dedicated.controller.js new file mode 100644 index 000000000000..5cda6520066c --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/add/dedicated/user-ssh-add-dedicated.controller.js @@ -0,0 +1,61 @@ +import get from 'lodash/get'; + +export default /* @ngInject */ function UserAccountSshDedicatedAddController( + $scope, + $timeout, + $translate, + Alerter, + atInternet, + UseraccountSshService, +) { + const fullSshList = $scope.currentActionData || []; + + $scope.model = {}; + $scope.sshKeyAlreadyCreatedError = false; + + $scope.addDedicatedSshKey = function addDedicatedSshKey() { + UseraccountSshService.addDedicatedSshKey($scope.model) + .then(() => { + Alerter.success( + $translate.instant('user_ssh_add_success_message'), + 'userSsh', + ); + }) + .catch((err) => { + Alerter.error( + `${this.$translate.instant('user_ssh_add_error_message')} ${get( + err, + 'message', + ) || err}`, + 'userSsh', + ); + }) + .finally(() => { + atInternet.trackClick({ + name: 'validation_add_ssh_key', + type: 'action', + chapter1: 'account', + chapter2: 'ssh', + chapter3: 'dedicated', + }); + }); + $scope.resetAction(); + }; + + $scope.formIsValid = function formIsValid() { + if ($scope.model.keyName && ~fullSshList.indexOf($scope.model.keyName)) { + $scope.sshKeyAlreadyCreatedError = true; + return false; + } + if (!$scope.model.keyName || !$scope.model.keyIsValid) { + $scope.sshKeyAlreadyCreatedError = false; + return false; + } + $scope.sshKeyAlreadyCreatedError = false; + return true; + }; + + $timeout(() => { + angular.element('#sshAddKeyNameLabel').focus(); + }, 600); +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/add/dedicated/user-ssh-add-dedicated.html b/packages/manager/modules/new-billing/src/autoRenew/ssh/add/dedicated/user-ssh-add-dedicated.html new file mode 100644 index 000000000000..52725fa58701 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/add/dedicated/user-ssh-add-dedicated.html @@ -0,0 +1,69 @@ +
+
+
+

+ +
+ +
+ + + + +
+ + +
+ + +
+
+
+
+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/add/dedicated/user-ssh-add-dedicated.module.js b/packages/manager/modules/new-billing/src/autoRenew/ssh/add/dedicated/user-ssh-add-dedicated.module.js new file mode 100644 index 000000000000..4e2104d12baf --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/add/dedicated/user-ssh-add-dedicated.module.js @@ -0,0 +1,24 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngAtInternet from '@ovh-ux/ng-at-internet'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import controller from './user-ssh-add-dedicated.controller'; +import template from './user-ssh-add-dedicated.html'; + +const moduleName = 'ovhManagerBillingAutorenewSshAddDedicated'; + +angular + .module(moduleName, [angularTranslate, ngAtInternet, 'oui', uiRouter]) + .controller('UserAccountSshDedicatedAdd', controller) + .run( + /* @ngInject */ ($templateCache) => { + $templateCache.put( + 'billing/autoRenew/ssh/add/dedicated/user-ssh-add-dedicated.html', + template, + ); + }, + ); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/delete/user-ssh-delete.controller.js b/packages/manager/modules/new-billing/src/autoRenew/ssh/delete/user-ssh-delete.controller.js new file mode 100644 index 000000000000..694f7e16f0ac --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/delete/user-ssh-delete.controller.js @@ -0,0 +1,39 @@ +import get from 'lodash/get'; + +export default /* @ngInject */ function UserAccountSshDeleteController( + $scope, + $translate, + UseraccountSshService, + Alerter, +) { + $scope.data = $scope.currentActionData; + + $scope.deleteSshKey = function deleteSshKey() { + $scope.resetAction(); + const promise = + $scope.data.category === 'dedicated' + ? UseraccountSshService.deleteDedicatedSshKey($scope.data.keyName) + : UseraccountSshService.deleteCloudSshKey( + $scope.data.serviceName, + $scope.data.id, + ); + + promise.then( + () => { + Alerter.success( + $translate.instant('user_ssh_delete_success_message'), + 'userSsh', + ); + }, + (err) => { + Alerter.error( + `${$translate.instant('user_ssh_delete_error_message')} ${get( + err, + 'message', + ) || err}`, + 'userSsh', + ); + }, + ); + }; +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/delete/user-ssh-delete.html b/packages/manager/modules/new-billing/src/autoRenew/ssh/delete/user-ssh-delete.html new file mode 100644 index 000000000000..01b877c7fcc4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/delete/user-ssh-delete.html @@ -0,0 +1,16 @@ +
+
+
+

+
+
+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/delete/user-ssh-delete.module.js b/packages/manager/modules/new-billing/src/autoRenew/ssh/delete/user-ssh-delete.module.js new file mode 100644 index 000000000000..a1995ff18047 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/delete/user-ssh-delete.module.js @@ -0,0 +1,23 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngOvhUtils from '@ovh-ux/ng-ovh-utils'; +import uiRouter from '@uirouter/angularjs'; + +import controller from './user-ssh-delete.controller'; +import template from './user-ssh-delete.html'; + +const moduleName = 'ovhManagerBillingAutorenewSshDelete'; + +angular + .module(moduleName, [angularTranslate, ngOvhUtils, uiRouter]) + .controller('UserAccountSshDelete', controller) + .run( + /* @ngInject */ ($templateCache) => { + $templateCache.put( + 'billing/autoRenew/ssh/delete/user-ssh-delete.html', + template, + ); + }, + ); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/ssh.module.js b/packages/manager/modules/new-billing/src/autoRenew/ssh/ssh.module.js new file mode 100644 index 000000000000..07a512a6b608 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/ssh.module.js @@ -0,0 +1,25 @@ +import uiRouter from '@uirouter/angularjs'; +import sshAddCloud from './add/cloud/user-ssh-add-cloud.module'; +import sshAddDedicated from './add/dedicated/user-ssh-add-dedicated.module'; +import sshDelete from './delete/user-ssh-delete.module'; +import sshView from './view/user-ssh-view.module'; +import sshkeyMinFilter from './sshkeyMin'; +import routing from './ssh.routing'; +import service from './user-ssh.service'; + +const moduleName = 'ovhManagerBillingSshKeys'; + +angular + .module(moduleName, [ + sshAddCloud, + sshAddDedicated, + sshDelete, + sshView, + uiRouter, + ]) + .config(routing) + .filter('sshkeyMin', sshkeyMinFilter) + .service('UseraccountSshService', service) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/ssh.routing.js b/packages/manager/modules/new-billing/src/autoRenew/ssh/ssh.routing.js new file mode 100644 index 000000000000..913d3b606314 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/ssh.routing.js @@ -0,0 +1,17 @@ +import controller from './user-ssh.controller'; +import template from './user-ssh.html'; + +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.autorenew.ssh', { + url: '/ssh', + template, + controller, + controllerAs: 'ctrlSsh', + resolve: { + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('user_ssh_title'), + hideBreadcrumb: /* @ngInject */ (isAutorenewManagementAvailable) => + !isAutorenewManagementAvailable, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/sshkeyMin.js b/packages/manager/modules/new-billing/src/autoRenew/ssh/sshkeyMin.js new file mode 100644 index 000000000000..e91acf51d1cf --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/sshkeyMin.js @@ -0,0 +1,86 @@ +const SSHKEY_REGEX = [ + { + name: 'RSA', + regex: /^(ssh-rsa)\s+(A{4}[0-9A-Za-z +/]+[=]{0,3})(\s+.*)?$/, + }, + { + name: 'ECDSA', + regex: /^(ecdsa-sha2-nistp[0-9]+)\s+(A{4}[0-9A-Za-z +/]+[=]{0,3})(\s+.*)?$/, + }, + { + name: 'ED25519', + regex: /^(ssh-ed25519)\s+(A{4}[0-9A-Za-z +/]+[=]{0,3})(\s+.*)?$/, + }, +]; + +export default /* @ngInject */ function sshkeyMinFilter() { + let splitted; + let minLength; + let innerkeyLength; + let subLength; + const toLength = 50; + const dots = '...'; + let type = false; + let i; + + return function sshkeyMin(keyParam) { + let key = keyParam; + + key = key.trim().replace(/\n/, ''); + type = false; + + /* eslint-disable */ + for (i = SSHKEY_REGEX.length; i--; ) { + if (SSHKEY_REGEX[i].regex.test(key)) { + type = SSHKEY_REGEX[i]; + splitted = key.match(SSHKEY_REGEX[i].regex); + break; + } + } + /* eslint-enable */ + + if (type && type.name === 'RSA1' && splitted.length === 5) { + // special rule... + + // '3' = 3 spaces + minLength = + splitted[1].length + splitted[2].length + splitted[4].length + 3; + + if (minLength < toLength - dots.length - 2) { + // ('2' = min 2 chars each side of dots) + innerkeyLength = splitted[3].length; + subLength = (toLength - minLength - dots.length) / 2; + return `${splitted[1]} ${splitted[2]} ${splitted[3].substr( + 0, + subLength, + )}${dots}${splitted[3].substr( + innerkeyLength - subLength, + innerkeyLength, + )} ${splitted[4]}`; + } + } else if (type && splitted.length === 4) { + minLength = splitted[1].length + splitted[3].length + 2; // '2' = 2 spaces + + if (minLength < toLength - dots.length - 2) { + // ('2' = min 2 chars each side of dots) + innerkeyLength = splitted[2].length; + subLength = (toLength - minLength - dots.length) / 2; + return `${splitted[1]} ${splitted[2].substr( + 0, + subLength, + )}${dots}${splitted[2].substr( + innerkeyLength - subLength, + innerkeyLength, + )} ${splitted[3]}`; + } + } + + // else...Split /2 + /* eslint-disable no-mixed-operators */ + return ( + key.substr(0, toLength / 2 - dots.length) + + dots + + key.substr(key.length - toLength / 2 + dots.length, key.length) + ); + }; +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_de_DE.json new file mode 100644 index 000000000000..3107773b8a98 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_de_DE.json @@ -0,0 +1,36 @@ +{ + "user_ssh_title": "Meine öffentlichen SSH-Schlüssel", + "user_ssh_error": "Beim Laden der Liste Ihrer SSH-Schlüssel ist ein Fehler aufgetreten.", + "user_ssh_keyname": "Name", + "user_ssh_keyid": "Kennung", + "user_ssh_key": "Schlüssel", + "user_ssh_table_key_show": "Anzeigen", + "user_ssh_table_empty": "Sie haben keine gespeicherten SSH-Schlüssel.", + "user_ssh_tooltip_default_true": "Nicht mehr als Standardschlüssel für Dedicated verwenden.", + "user_ssh_tooltip_default_false": "Als Standardschlüssel für Dedicated einrichten.", + "user_ssh_key_show": "Schlüsselanzeige", + "user_ssh_key_delete": "Schlüssel löschen", + "user_ssh_category_filter": "Filter-Kategorien", + "user_ssh_category_all": "Alle Kategorien", + "user_ssh_category_cloud": "Public Cloud", + "user_ssh_category_dedicated": "Dedicated", + "user_ssh_key_explain_1": "Bei der Kommunikation zwischen den OVH Servern wird das gesicherte Netzwerkprotokoll SSH zur Verschlüsselung der Daten verwendet.", + "user_ssh_key_explain_2": "Es gibt SSH-Clients für jedes Betriebssystem.", + "user_ssh_key_explain_2_guide": "Weitere Informationen finden Sie in der Anleitung zur Erstellung von SSH-Schlüsseln .", + "user_ssh_key_explain_3": "Sie können außerdem zusätzliche SSH-Schlüssel auf Ihrer Instanz konfigurieren und so weiteren Personen Zugriff gewähren. Es besteht auch die Möglichkeit den SSH-Schlüssel bei Verlust zu ändern.", + "user_ssh_add_title_button": "SSH-Schlüssel hinzufügen", + "user_ssh_add_modal_title": "SSH-Schlüssel hinzufügen", + "user_ssh_add_modal_step1_question": "Bitte tragen Sie einen Namen und einen Schlüssel in die unten stehenden Felder ein.", + "user_ssh_add_cloud_modal_step1_question": "Bitte wählen Sie das Projekt, für das Sie einen SSH-Schlüssel hinzufügen möchten.", + "user_ssh_add_cloud_modal_step1_confirm_text": "Projekt öffnen", + "user_ssh_add_cloud_modal_project": "Projekt", + "user_ssh_add_success_message": "Der SSH-Schlüssel wurde hinzugefügt.", + "user_ssh_add_error_message": "Beim Hinzufügen des SSH-Schlüssels ist ein Fehler aufgetreten.", + "user_ssh_keyname_already_created_error": "Fehler: Diese Kennung existiert bereits.", + "user_ssh_delete_modal_title": "SSH-Schlüssel löschen", + "user_ssh_delete_modal_step1_question": "Sind Sie sicher, dass Sie den Schlüssel {{t0}} löschen möchten?", + "user_ssh_delete_success_message": "Der Schlüssel wurde gelöscht.", + "user_ssh_delete_error_message": "Beim Löschen des SSH-Schlüssels ist ein Fehler aufgetreten.", + "user_ssh_view_modal_title": "Anzeige des SSH-Schlüssels", + "user_ssh_view_modal_close": "Schließen" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_en_GB.json new file mode 100644 index 000000000000..507a94e5cba5 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_en_GB.json @@ -0,0 +1,36 @@ +{ + "user_ssh_title": "My public SSH keys", + "user_ssh_error": "An error has occurred loading your SSH key list.", + "user_ssh_keyname": "Name", + "user_ssh_keyid": "ID", + "user_ssh_key": "Key", + "user_ssh_table_key_show": "Display", + "user_ssh_table_empty": "You don't have any SSH keys saved.", + "user_ssh_tooltip_default_true": "Stop using as default key for dedicated. ", + "user_ssh_tooltip_default_false": "Set as the default key for dedicated. ", + "user_ssh_key_show": "Key overview ", + "user_ssh_key_delete": "Delete key", + "user_ssh_category_filter": "Filter categories ", + "user_ssh_category_all": "All categories ", + "user_ssh_category_cloud": "Public Cloud", + "user_ssh_category_dedicated": "Dedicated", + "user_ssh_key_explain_1": "OVH uses SSH to secure encrypted data communications between servers. ", + "user_ssh_key_explain_2": "There are SSH clients for each operating system.", + "user_ssh_key_explain_2_guide": "Please refer to our guide on creating SSH keys for more information.", + "user_ssh_key_explain_3": "Please note that you can also configure additional SSH keys on your instance to grant access to other people, or change the SSH key if you lose it.", + "user_ssh_add_title_button": "Add an SSH key", + "user_ssh_add_modal_title": "Add an SSH key", + "user_ssh_add_modal_step1_question": "Please enter a name and key in the fields below.", + "user_ssh_add_cloud_modal_step1_question": "Please select the project you want to add an SSH key to. ", + "user_ssh_add_cloud_modal_step1_confirm_text": "Open the project ", + "user_ssh_add_cloud_modal_project": "Project", + "user_ssh_add_success_message": "The SSH key has been added.", + "user_ssh_add_error_message": "An error has occurred adding the SSH key.", + "user_ssh_keyname_already_created_error": "Error: This ID already exists.", + "user_ssh_delete_modal_title": "Delete an SSH key", + "user_ssh_delete_modal_step1_question": "Are you sure you want to delete the key {{t0}}?", + "user_ssh_delete_success_message": "The key has been deleted.", + "user_ssh_delete_error_message": "An error has occurred deleting the SSH key.", + "user_ssh_view_modal_title": "SSH key overview", + "user_ssh_view_modal_close": "Close" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_es_ES.json new file mode 100644 index 000000000000..f37cd70927c0 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_es_ES.json @@ -0,0 +1,36 @@ +{ + "user_ssh_title": "Mis llaves SSH públicas", + "user_ssh_error": "Se ha producido un error al cargar la lista de llaves SSH.", + "user_ssh_keyname": "Nombre", + "user_ssh_keyid": "Usuario", + "user_ssh_key": "Clave", + "user_ssh_table_key_show": "Ver", + "user_ssh_table_empty": "No hay llaves SSH guardadas.", + "user_ssh_tooltip_default_true": "Dejar de utilizar como clave por defecto para el universo Dedicado.", + "user_ssh_tooltip_default_false": "Establecer como llave por defecto para el universo Dedicado.", + "user_ssh_key_show": "Vista previa de la llave", + "user_ssh_key_delete": "Eliminar la llave", + "user_ssh_category_filter": "Filtro de categorías", + "user_ssh_category_all": "Todas las categorías", + "user_ssh_category_cloud": "Public Cloud", + "user_ssh_category_dedicated": "Dedicado", + "user_ssh_key_explain_1": "La comunicación entre los servidores de OVH utiliza el protocolo de seguridad (SSH) para la encriptación de los datos.", + "user_ssh_key_explain_2": "Existen clientes SSH para cada sistema operativo.", + "user_ssh_key_explain_2_guide": "Para más información, consulte la guía sobre la creación de claves SSH.", + "user_ssh_key_explain_3": "Tenga en cuenta que también puede configurar claves SSH adicionales en su instancia para dar acceso a otras personas o modificar su clave SSH en caso de pérdida.", + "user_ssh_add_title_button": "Añadir una llave SSH", + "user_ssh_add_modal_title": "Añadir una llave SSH", + "user_ssh_add_modal_step1_question": "Introduzca un nombre y una llave en los siguientes campos.", + "user_ssh_add_cloud_modal_step1_question": "Seleccione el proyecto al que quiere añadir una llave SSH.", + "user_ssh_add_cloud_modal_step1_confirm_text": "Abrir el proyecto", + "user_ssh_add_cloud_modal_project": "Proyecto", + "user_ssh_add_success_message": "Se ha añadido la llave SSH.", + "user_ssh_add_error_message": "Se ha producido un error al añadir la llave SSH.", + "user_ssh_keyname_already_created_error": "Error: Ese identificador ya existe.", + "user_ssh_delete_modal_title": "Eliminar una llave SSH", + "user_ssh_delete_modal_step1_question": "¿Seguro que quiere eliminar la llave {{t0}}?", + "user_ssh_delete_success_message": "Se ha eliminado la llave.", + "user_ssh_delete_error_message": "Se ha producido un error al eliminar la llave SSH.", + "user_ssh_view_modal_title": "Vista previa de la llave SSH", + "user_ssh_view_modal_close": "Cerrar" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..d23291d1e623 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_fr_CA.json @@ -0,0 +1,36 @@ +{ + "user_ssh_title": "Mes clés SSH publiques", + "user_ssh_error": "Une erreur est survenue lors du chargement de la liste de vos clés SSH.", + "user_ssh_keyname": "Nom", + "user_ssh_keyid": "Identifiant", + "user_ssh_key": "Clé", + "user_ssh_table_key_show": "Afficher", + "user_ssh_table_empty": "Vous n'avez pas de clés SSH enregistrées.", + "user_ssh_tooltip_default_true": "Ne plus utiliser comme clé par défaut pour dédié.", + "user_ssh_tooltip_default_false": "Définir comme clé par défaut pour dédié.", + "user_ssh_key_show": "Aperçu de la clé", + "user_ssh_key_delete": "Supprimer la clé", + "user_ssh_category_filter": "Filtre des catégories", + "user_ssh_category_all": "Toutes les catégories", + "user_ssh_category_cloud": "Public Cloud", + "user_ssh_category_dedicated": "Dédié", + "user_ssh_key_explain_1": "La communication entre les serveurs OVH utilise le protocole sécurisé (SSH) pour l’encryption des données.", + "user_ssh_key_explain_2": "Il existe des clients SSH pour chaque système d'exploitation.", + "user_ssh_key_explain_2_guide": "Consultez le guide de création de clés SSH pour en savoir plus.", + "user_ssh_key_explain_3": "Notez qu’il est également possible de configurer des clés SSH supplémentaires sur votre instance pour donner l’accès à d'autres personnes ou de changer sa clé SSH en cas de perte.", + "user_ssh_add_title_button": "Ajouter une clé SSH", + "user_ssh_add_modal_title": "Ajouter une clé SSH", + "user_ssh_add_modal_step1_question": "Veuillez insérer un nom et une clé dans les champs ci-dessous.", + "user_ssh_add_cloud_modal_step1_question": "Veuillez sélectionner le projet pour lequel vous voulez ajouter une clé ssh.", + "user_ssh_add_cloud_modal_step1_confirm_text": "Ouvrir le projet", + "user_ssh_add_cloud_modal_project": "Projet", + "user_ssh_add_success_message": "La clé SSH a été ajoutée.", + "user_ssh_add_error_message": "Une erreur s'est produite lors de l'ajout de la clé SSH.", + "user_ssh_keyname_already_created_error": "Erreur : Cet identifiant existe déjà.", + "user_ssh_delete_modal_title": "Supprimer une clé SSH", + "user_ssh_delete_modal_step1_question": "Etes-vous sûr de vouloir supprimer la clé {{t0}} ?", + "user_ssh_delete_success_message": "La clé a été supprimée.", + "user_ssh_delete_error_message": "Une erreur s'est produite lors de la suppression de la clé SSH.", + "user_ssh_view_modal_title": "Aperçu de la clé SSH", + "user_ssh_view_modal_close": "Fermer" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..d23291d1e623 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_fr_FR.json @@ -0,0 +1,36 @@ +{ + "user_ssh_title": "Mes clés SSH publiques", + "user_ssh_error": "Une erreur est survenue lors du chargement de la liste de vos clés SSH.", + "user_ssh_keyname": "Nom", + "user_ssh_keyid": "Identifiant", + "user_ssh_key": "Clé", + "user_ssh_table_key_show": "Afficher", + "user_ssh_table_empty": "Vous n'avez pas de clés SSH enregistrées.", + "user_ssh_tooltip_default_true": "Ne plus utiliser comme clé par défaut pour dédié.", + "user_ssh_tooltip_default_false": "Définir comme clé par défaut pour dédié.", + "user_ssh_key_show": "Aperçu de la clé", + "user_ssh_key_delete": "Supprimer la clé", + "user_ssh_category_filter": "Filtre des catégories", + "user_ssh_category_all": "Toutes les catégories", + "user_ssh_category_cloud": "Public Cloud", + "user_ssh_category_dedicated": "Dédié", + "user_ssh_key_explain_1": "La communication entre les serveurs OVH utilise le protocole sécurisé (SSH) pour l’encryption des données.", + "user_ssh_key_explain_2": "Il existe des clients SSH pour chaque système d'exploitation.", + "user_ssh_key_explain_2_guide": "Consultez le guide de création de clés SSH pour en savoir plus.", + "user_ssh_key_explain_3": "Notez qu’il est également possible de configurer des clés SSH supplémentaires sur votre instance pour donner l’accès à d'autres personnes ou de changer sa clé SSH en cas de perte.", + "user_ssh_add_title_button": "Ajouter une clé SSH", + "user_ssh_add_modal_title": "Ajouter une clé SSH", + "user_ssh_add_modal_step1_question": "Veuillez insérer un nom et une clé dans les champs ci-dessous.", + "user_ssh_add_cloud_modal_step1_question": "Veuillez sélectionner le projet pour lequel vous voulez ajouter une clé ssh.", + "user_ssh_add_cloud_modal_step1_confirm_text": "Ouvrir le projet", + "user_ssh_add_cloud_modal_project": "Projet", + "user_ssh_add_success_message": "La clé SSH a été ajoutée.", + "user_ssh_add_error_message": "Une erreur s'est produite lors de l'ajout de la clé SSH.", + "user_ssh_keyname_already_created_error": "Erreur : Cet identifiant existe déjà.", + "user_ssh_delete_modal_title": "Supprimer une clé SSH", + "user_ssh_delete_modal_step1_question": "Etes-vous sûr de vouloir supprimer la clé {{t0}} ?", + "user_ssh_delete_success_message": "La clé a été supprimée.", + "user_ssh_delete_error_message": "Une erreur s'est produite lors de la suppression de la clé SSH.", + "user_ssh_view_modal_title": "Aperçu de la clé SSH", + "user_ssh_view_modal_close": "Fermer" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_it_IT.json new file mode 100644 index 000000000000..ac7b158ff908 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_it_IT.json @@ -0,0 +1,36 @@ +{ + "user_ssh_title": "Le tue chiavi SSH pubbliche", + "user_ssh_error": "Si è verificato un errore nel caricamento della lista delle tue chiavi SSH", + "user_ssh_keyname": "Nome", + "user_ssh_keyid": "Identificativo", + "user_ssh_key": "Chiave", + "user_ssh_table_key_show": "Mostra", + "user_ssh_table_empty": "Nessuna chiave SSH registrata", + "user_ssh_tooltip_default_true": "Non utilizzare più come chiave predefinita per l'universo \"Dedicato\".", + "user_ssh_tooltip_default_false": "Definisci come chiave predefinita per l'universo \"Dedicato\".", + "user_ssh_key_show": "Visualizza la chiave", + "user_ssh_key_delete": "Elimina la chiave", + "user_ssh_category_filter": "Filtro categorie", + "user_ssh_category_all": "Tutte le categorie", + "user_ssh_category_cloud": "Public Cloud", + "user_ssh_category_dedicated": "Dedicated", + "user_ssh_key_explain_1": "La comunicazione tra i server OVH utilizza il protocollo sicuro SSH per la cifratura dei dati.", + "user_ssh_key_explain_2": "Esistono clienti SSH per ogni sistema operativo.", + "user_ssh_key_explain_2_guide": "Per saperne di più, consulta la guida alla creazione di chiavi SSH.", + "user_ssh_key_explain_3": "Ti ricordiamo che è anche possibile configurare chiavi SSH aggiuntive sulla tua istanza per consentire l'accesso ad altre persone o cambiare la chiave SSH in caso di perdita.", + "user_ssh_add_title_button": "Aggiungi una chiave SSH", + "user_ssh_add_modal_title": "Aggiungi una chiave SSH", + "user_ssh_add_modal_step1_question": "Inserisci un nome e una chiave nei campi qui sotto.", + "user_ssh_add_cloud_modal_step1_question": "Seleziona il progetto su cui vuoi aggiungere una chiave SSH.", + "user_ssh_add_cloud_modal_step1_confirm_text": "Apri il progetto", + "user_ssh_add_cloud_modal_project": "Progetto", + "user_ssh_add_success_message": "La chiave SSH è stata aggiunta.", + "user_ssh_add_error_message": "Si è verificato un errore nell'aggiunta della chiave SSH.", + "user_ssh_keyname_already_created_error": "Errore: questo identificativo esiste già.", + "user_ssh_delete_modal_title": "Elimina una chiave SSH", + "user_ssh_delete_modal_step1_question": "Vuoi davvero eliminare la chiave {{t0}}?", + "user_ssh_delete_success_message": "La chiave è stata eliminata", + "user_ssh_delete_error_message": "Si è verificato un errore durante l'eliminazione della chiave SSH.", + "user_ssh_view_modal_title": "Anteprima chiave SSH", + "user_ssh_view_modal_close": "Chiudi" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..0029410d2bf0 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_pl_PL.json @@ -0,0 +1,36 @@ +{ + "user_ssh_title": "Publiczne klucze SSH", + "user_ssh_error": "Wystąpił błąd podczas pobierania listy kluczy SSH.", + "user_ssh_keyname": "Nazwa", + "user_ssh_keyid": "Identyfikator", + "user_ssh_key": "Klucz", + "user_ssh_table_key_show": "Wyświetl", + "user_ssh_table_empty": "Nie posiadasz zarejestrowanych kluczy SSH.", + "user_ssh_tooltip_default_true": "Nie używaj jako klucza domyślnego dla serwera dedykowanego.", + "user_ssh_tooltip_default_false": "Zdefiniuj jako klucz domyślny dla serwera dedykowanego.", + "user_ssh_key_show": "Podgląd klucza", + "user_ssh_key_delete": "Usuń klucz", + "user_ssh_category_filter": "Filtrowanie kategorii", + "user_ssh_category_all": "Wszystkie kategorie", + "user_ssh_category_cloud": "Public Cloud", + "user_ssh_category_dedicated": "Serwery dedykowane", + "user_ssh_key_explain_1": "Komunikacja między serwerami OVH odbywa się za pomocą zabezpieczonego protokołu (SSH), dzięki któremu dane są szyfrowane.", + "user_ssh_key_explain_2": "Istnieją programy klienckie SSH dla każdego systemu operacyjnego.", + "user_ssh_key_explain_2_guide": "Aby dowiedzieć się więcej, zapoznaj się z przewodnikiem dotyczącym tworzenia kluczy SSH.", + "user_ssh_key_explain_3": "Możesz również skonfigurować dodatkowe klucze SSH dla swojej instancji, aby udzielić dostępu innym użytkownikom lub zmienić klucz SSH w przypadku utraty.", + "user_ssh_add_title_button": "Dodaj klucz SSH", + "user_ssh_add_modal_title": "Dodaj klucz SSH", + "user_ssh_add_modal_step1_question": "Wpisz nazwę i klucz w poniższe pola.", + "user_ssh_add_cloud_modal_step1_question": "Wybierz projekt, dla którego chcesz dodać klucz SSH.", + "user_ssh_add_cloud_modal_step1_confirm_text": "Otwórz projekt", + "user_ssh_add_cloud_modal_project": "Projekt", + "user_ssh_add_success_message": "Klucz SSH został dodany.", + "user_ssh_add_error_message": "Wystąpił błąd podczas dodawania klucza SSH.", + "user_ssh_keyname_already_created_error": "Błąd: Ten identyfikator już istnieje.", + "user_ssh_delete_modal_title": "Usuwanie klucz SSH", + "user_ssh_delete_modal_step1_question": "Czy chcesz usunąć klucz {{t0}}?", + "user_ssh_delete_success_message": "Klucz został usunięty.", + "user_ssh_delete_error_message": "Wystąpił błąd podczas usuwania klucza SSH.", + "user_ssh_view_modal_title": "Podgląd klucza SSH", + "user_ssh_view_modal_close": "Zamknij" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..9e65cf8c50e0 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/translations/Messages_pt_PT.json @@ -0,0 +1,36 @@ +{ + "user_ssh_title": "As minhas chaves SSH públicas", + "user_ssh_error": "Ocorreu um erro ao carregar a lista das suas chaves SSH.", + "user_ssh_keyname": "Nome", + "user_ssh_keyid": "ID de utilizador", + "user_ssh_key": "Chave", + "user_ssh_table_key_show": "Mostrar", + "user_ssh_table_empty": "Não tem qualquer chave SSH registada.", + "user_ssh_tooltip_default_true": "Não usar como chave predefinida para o universo dos Servidores Dedicados.", + "user_ssh_tooltip_default_false": "Definir chave predefinida para o universo dos Servidores Dedicados.", + "user_ssh_key_show": "Pré-visualização da chave", + "user_ssh_key_delete": "Eliminar chave", + "user_ssh_category_filter": "Filtrar categorias", + "user_ssh_category_all": "Todas as categorias", + "user_ssh_category_cloud": "Public Cloud", + "user_ssh_category_dedicated": "Serviços Dedicados", + "user_ssh_key_explain_1": "A comunicação entre os servidores OVH utiliza o protocolo seguro (SSH) para a encriptação dos dados.", + "user_ssh_key_explain_2": "Existem clientes SSH para cada sistema operativo.", + "user_ssh_key_explain_2_guide": "Para saber mais, consulte o manual de criação de chaves SSH.", + "user_ssh_key_explain_3": "Tenha em conta que também é possível configurar chaves SSH adicionais na sua instância para dar acesso a outras pessoas ou alterar a sua chave SSH em caso de perda.", + "user_ssh_add_title_button": "Adicionar chave SSH", + "user_ssh_add_modal_title": "Adicionar chave SSH", + "user_ssh_add_modal_step1_question": "Introduza um nome e uma chave nos campos abaixo.", + "user_ssh_add_cloud_modal_step1_question": "Selecione o projeto para o qual pretende adicionar uma chave SSH.", + "user_ssh_add_cloud_modal_step1_confirm_text": "Abrir projeto", + "user_ssh_add_cloud_modal_project": "Projeto", + "user_ssh_add_success_message": "A chave SSH foi adicionada.", + "user_ssh_add_error_message": "Ocorreu um erro ao adicionar a chave SSH.", + "user_ssh_keyname_already_created_error": "Erro: este identificador já existe.", + "user_ssh_delete_modal_title": "Eliminar chave SSH", + "user_ssh_delete_modal_step1_question": "Tem a certeza de que quer eliminar a chave {{t0}}?", + "user_ssh_delete_success_message": "A chave foi eliminada.", + "user_ssh_delete_error_message": "Ocorreu um erro ao processar a eliminação da chave SSH.", + "user_ssh_view_modal_title": "Pré-visualização da chave SSH", + "user_ssh_view_modal_close": "Fechar" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/user-ssh-guides.js b/packages/manager/modules/new-billing/src/autoRenew/ssh/user-ssh-guides.js new file mode 100644 index 000000000000..58a5e9d9ec00 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/user-ssh-guides.js @@ -0,0 +1,73 @@ +export const SSH_CREATE_GUIDES = { + ES: 'https://www.ovh.es/g1769.creating_ssh_keys', + FR: 'https://docs.ovh.com/fr/public-cloud/creation-des-cles-ssh/', + DE: + 'https://docs.ovh.com/gb/en/public-cloud/configuring_additional_ssh_keys/', + IT: 'https://www.ovh.it/g1769.creating_ssh_keys', + LT: 'https://www.ovh.lt/g1769.creating_ssh_keys', + NL: 'https://www.ovh.nl/g1769.creating_ssh_keys', + PL: 'https://www.ovh.pl/g1769.creating_ssh_keys', + PT: 'https://www.ovh.pt/g1769.creating_ssh_keys', + ASIA: 'https://www.ovh.com/ca/en/g1769.creating_ssh_keys', + AU: 'https://www.ovh.com/ca/en/g1769.creating_ssh_keys', + CA: 'https://www.ovh.com/ca/en/g1769.creating_ssh_keys', + QC: 'https://www.ovh.com/ca/fr/g1769.creation_des_cles_ssh', + SG: 'https://www.ovh.com/ca/en/g1769.creating_ssh_keys', + WE: 'https://www.ovh.com/ca/en/g1769.creating_ssh_keys', + WS: 'https://www.ovh.com/ca/en/g1769.creating_ssh_keys', + US: + 'http://support.us.ovhcloud.com/hc/en-us/articles/115001588250-SSH-Key-Management', + IN: 'https://www.ovh.com/ca/en/g1769.creating_ssh_keys', +}; + +export const SSH_ADD_GUIDES = { + ES: 'https://www.ovh.es/g1924.configuring_additionnal_ssh_key', + FR: + 'https://docs.ovh.com/fr/public-cloud/configurer-des-cles-ssh-supplementaires/', + GB: + 'https://docs.ovh.com/gb/en/public-cloud/configuring_additional_ssh_keys/', + IT: 'https://www.ovh.it/g1924.configuring_additionnal_ssh_key', + PL: 'https://www.ovh.pl/g1924.configuring_additionnal_ssh_key', + PT: 'https://www.ovh.pt/g1924.configuring_additionnal_ssh_key', + IE: 'https://www.ovh.ie/g1924.configuring_additionnal_ssh_key', + ASIA: 'https://www.ovh.com/ca/en/g1924.configuring_additionnal_ssh_key', + AU: 'https://www.ovh.com/ca/en/g1924.configuring_additionnal_ssh_key', + CA: 'https://www.ovh.com/ca/en/g1924.configuring_additionnal_ssh_key', + QC: 'https://www.ovh.com/ca/fr/g1924.configurer_des_cles_ssh_supplementaires', + SG: 'https://www.ovh.com/ca/en/g1924.configuring_additionnal_ssh_key', + WE: 'https://www.ovh.com/ca/en/g1924.configuring_additionnal_ssh_key', + WS: 'https://www.ovh.com/ca/en/g1924.configuring_additionnal_ssh_key', + US: + 'http://support.us.ovhcloud.com/hc/en-us/articles/115001588250-SSH-Key-Management', + IN: 'https://www.ovh.com/ca/en/g1924.configuring_additionnal_ssh_key', +}; + +export const SSH_CHANGE_GUIDES = { + DE: 'https://www.ovh.de/g2069.replacing_your_lost_ssh_key_pair', + ES: 'https://www.ovh.es/g2069.replacing_your_lost_ssh_key_pair', + FR: + 'https://docs.ovh.com/fr/public-cloud/changer-sa-cle-ssh-en-cas-de-perte/', + GB: + 'https://docs.ovh.com/gb/en/public-cloud/replacing_your_lost_ssh_key_pair/', + IT: 'https://www.ovh.it/g2069.replacing_your_lost_ssh_key_pair', + LT: 'https://www.ovh.lt/g2069.replacing_your_lost_ssh_key_pair', + NL: 'https://www.ovh.nl/g2069.replacing_your_lost_ssh_key_pair', + PT: 'https://www.ovh.pt/g2069.replacing_your_lost_ssh_key_pair', + IE: 'https://www.ovh.ie/g2069.replacing_your_lost_ssh_key_pair', + ASIA: 'https://www.ovh.com/ca/en/g2069.replacing_your_lost_ssh_key_pair', + AU: 'https://www.ovh.com/ca/en/g2069.replacing_your_lost_ssh_key_pair', + CA: 'https://www.ovh.com/ca/en/g2069.replacing_your_lost_ssh_key_pair', + QC: 'https://www.ovh.com/ca/fr/g2069.changer_sa_cle_ssh_en_cas_de_perte', + SG: 'https://www.ovh.com/ca/en/g2069.replacing_your_lost_ssh_key_pair', + WE: 'https://www.ovh.com/ca/en/g2069.replacing_your_lost_ssh_key_pair', + WS: 'https://www.ovh.com/ca/en/g2069.replacing_your_lost_ssh_key_pair', + sshChange: + 'http://support.us.ovhcloud.com/hc/en-us/articles/115001588250-SSH-Key-Management', + IN: 'https://www.ovh.com/ca/en/g2069.replacing_your_lost_ssh_key_pair', +}; + +export default { + SSH_CREATE_GUIDES, + SSH_ADD_GUIDES, + SSH_CHANGE_GUIDES, +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/user-ssh.controller.js b/packages/manager/modules/new-billing/src/autoRenew/ssh/user-ssh.controller.js new file mode 100644 index 000000000000..13345286f802 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/user-ssh.controller.js @@ -0,0 +1,110 @@ +import get from 'lodash/get'; + +import { + SSH_CREATE_GUIDES, + SSH_ADD_GUIDES, + SSH_CHANGE_GUIDES, +} from './user-ssh-guides'; + +export default class UserAccountSshCtrl { + /* @ngInject */ + constructor( + $scope, + $q, + $timeout, + $translate, + UseraccountSshService, + constants, + coreConfig, + $log, + Alerter, + ) { + this.$scope = $scope; + this.$q = $q; + this.$translate = $translate; + this.UseraccountSshService = UseraccountSshService; + this.constants = constants; + this.coreConfig = coreConfig; + this.$log = $log; + this.Alerter = Alerter; + this.$timeout = $timeout; + } + + $onInit() { + this.filters = {}; + this.initGuides(); + this.getSshKeys(); + + this.$scope.$on('useraccount.ssh.refresh', () => { + this.getSshKeys(); + }); + + this.$scope.setAction = (action, data) => { + this.$scope.currentAction = action; + this.$scope.currentActionData = data; + + if (this.$scope.currentAction) { + this.$scope.stepPath = `billing/autoRenew/${action}.html`; + + $('#sshAction').modal({ + keyboard: false, + backdrop: 'static', + }); + } else { + $('#sshAction').modal('hide'); + + this.$timeout(() => { + delete this.$scope.stepPath; + }, 300); + } + }; + + this.$scope.resetAction = () => { + this.$scope.setAction(); + }; + } + + getSshKeys() { + this.sshKeyList = []; + this.sshLoading = true; + return this.UseraccountSshService.getAllSshKeyList(this.filters) + .then((sshKeys) => { + this.sshKeyList = sshKeys; + }) + .catch(([sshKeys]) => { + this.sshKeyList = sshKeys; + this.Alerter.error( + `${this.$translate.instant('user_ssh_error')}`, + 'userSsh', + ); + }) + .finally(() => { + this.sshLoading = false; + }); + } + + onTransformItemDone() { + this.sshLoading = false; + } + + onCategoryFilterChanged() { + this.getSshKeys(); + } + + initGuides() { + this.user = this.coreConfig.getUser(); + this.guides = { + sshCreate: get( + SSH_CREATE_GUIDES, + this.user.ovhSubsidiary, + SSH_CREATE_GUIDES.FR, + ), + sshAdd: get(SSH_ADD_GUIDES, this.user.ovhSubsidiary, SSH_ADD_GUIDES.FR), + sshChange: get( + SSH_CHANGE_GUIDES, + this.user.ovhSubsidiary, + SSH_CHANGE_GUIDES.FR, + ), + }; + } +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/user-ssh.html b/packages/manager/modules/new-billing/src/autoRenew/ssh/user-ssh.html new file mode 100644 index 000000000000..2a833781306c --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/user-ssh.html @@ -0,0 +1,199 @@ +
+
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ + + + + ({{ :: ssh.serviceDescription}}) + + + + +
+ + +
+
+ +
+
+
+
+ diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/user-ssh.service.js b/packages/manager/modules/new-billing/src/autoRenew/ssh/user-ssh.service.js new file mode 100644 index 000000000000..b792b49ad50a --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/user-ssh.service.js @@ -0,0 +1,172 @@ +import filter from 'lodash/filter'; +import flatten from 'lodash/flatten'; +import get from 'lodash/get'; +import map from 'lodash/map'; +import partition from 'lodash/partition'; +import set from 'lodash/set'; +import sortBy from 'lodash/sortBy'; +import values from 'lodash/values'; + +export default /* @ngInject */ function UserAccountSshService( + OvhHttp, + $q, + coreURLBuilder, +) { + const CLOUD_CACHE_KEY = 'UNIVERS_DEDICATED_USER_ACCOUNT_SSH_CLOUD'; + const self = this; + + self.getAllSshKeyList = function getAllSshKeyList(_filter) { + const categoryFilter = get(_filter, 'categoryFilter', null); + + const promises = []; + switch (categoryFilter) { + case 'dedicated': + promises.push(this.getDedicatedSshList()); + break; + case 'cloud': + promises.push(this.getCloudSshList()); + break; + default: + promises.push(this.getDedicatedSshList()); + promises.push(this.getCloudSshList()); + } + + return $q + .allSettled(promises) + .then((sshKeys) => [sshKeys]) + .catch((sshKeys) => + partition(flatten(sshKeys), ({ message }) => !message), + ) + .then(([sshKeys, error]) => { + const keys = sortBy(flatten(values(sshKeys)), (key) => + key.keyName.toLowerCase(), + ); + + if (error) { + return $q.reject([keys, error]); + } + + return keys; + }); + }; + + self.getDedicatedSshList = function getDedicatedSshList() { + return OvhHttp.get('/me/sshKey', { + rootPath: 'apiv6', + }).then((keyNames) => { + const promises = map(keyNames, (keyName) => + self.getDedicatedSshKey(keyName), + ); + return $q.allSettled(promises); + }); + }; + + self.getDedicatedSshKey = function getDedicatedSshKey(keyName) { + return OvhHttp.get('/me/sshKey/{keyName}', { + rootPath: 'apiv6', + urlParams: { + keyName, + }, + }).then((key) => { + set(key, 'category', 'dedicated'); + return key; + }); + }; + + self.getCloudProjects = function getCloudProjects() { + return OvhHttp.get('/cloud/project', { + rootPath: 'apiv6', + cache: CLOUD_CACHE_KEY, + clearCache: false, + }) + .then((projectIds) => + $q.all( + map(projectIds, (projectId) => + OvhHttp.get('/cloud/project/{serviceName}', { + rootPath: 'apiv6', + urlParams: { + serviceName: projectId, + }, + cache: CLOUD_CACHE_KEY, + clearCache: false, + }), + ), + ), + ) + .then((projects) => + map(filter(projects, { status: 'ok' }), (project) => ({ + id: project.project_id, + description: project.description, + })), + ); + }; + + self.getCloudSshList = function getCloudSshList() { + return self + .getCloudProjects() + .then((projects) => { + const promises = map(projects, (project) => + OvhHttp.get('/cloud/project/{serviceName}/sshkey', { + rootPath: 'apiv6', + urlParams: { + serviceName: project.id, + }, + }).then((keys) => + map(keys, (key) => ({ + serviceName: project.id, + serviceDescription: project.description, + category: 'cloud', + keyName: key.name, + key: key.publicKey, + id: key.id, + url: self.getSshCloudUrl(project.id), + })), + ), + ); + return $q.allSettled(promises); + }) + .then((keysByProjet) => flatten(keysByProjet)); + }; + + self.addDedicatedSshKey = function addDedicatedSshKey(sshkeyObj) { + return OvhHttp.post('/me/sshKey', { + rootPath: 'apiv6', + data: { + keyName: sshkeyObj.keyName, + key: sshkeyObj.key.trim().replace(/\n/, ''), + }, + broadcast: 'useraccount.ssh.refresh', + }); + }; + + self.deleteDedicatedSshKey = function deleteDedicatedSshKey(key) { + return OvhHttp.delete('/me/sshKey/{keyName}', { + rootPath: 'apiv6', + urlParams: { + keyName: key, + }, + broadcast: 'useraccount.ssh.refresh', + }); + }; + + self.deleteCloudSshKey = function deleteCloudSshKey(serviceName, id) { + return OvhHttp.delete('/cloud/project/{serviceName}/sshkey/{keyId}', { + rootPath: 'apiv6', + urlParams: { + serviceName, + keyId: id, + }, + broadcast: 'useraccount.ssh.refresh', + }); + }; + + self.getSshCloudUrl = function getSshCloudUrl(serviceName) { + return coreURLBuilder.buildURL( + 'public-cloud', + '#/pci/projects/:serviceName/ssh/add', + { + serviceName, + }, + ); + }; +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/view/user-ssh-view.controller.js b/packages/manager/modules/new-billing/src/autoRenew/ssh/view/user-ssh-view.controller.js new file mode 100644 index 000000000000..d2bdb703f5dd --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/view/user-ssh-view.controller.js @@ -0,0 +1,3 @@ +export default /* @ngInject */ ($scope) => { + $scope.data = $scope.currentActionData; +}; diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/view/user-ssh-view.html b/packages/manager/modules/new-billing/src/autoRenew/ssh/view/user-ssh-view.html new file mode 100644 index 000000000000..2a330a1bb716 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/view/user-ssh-view.html @@ -0,0 +1,21 @@ +
+
+
+

+ +
+
+ +
+
+
+
+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/ssh/view/user-ssh-view.module.js b/packages/manager/modules/new-billing/src/autoRenew/ssh/view/user-ssh-view.module.js new file mode 100644 index 000000000000..8544949c852f --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/ssh/view/user-ssh-view.module.js @@ -0,0 +1,22 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import uiRouter from '@uirouter/angularjs'; + +import controller from './user-ssh-view.controller'; +import template from './user-ssh-view.html'; + +const moduleName = 'ovhManagerBillingAutorenewSshView'; + +angular + .module(moduleName, [angularTranslate, uiRouter]) + .controller('UserAccountSshView', controller) + .run( + /* @ngInject */ ($templateCache) => { + $templateCache.put( + 'billing/autoRenew/ssh/view/user-ssh-view.html', + template, + ); + }, + ); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_de_DE.json new file mode 100644 index 000000000000..2a6386b3bc73 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_de_DE.json @@ -0,0 +1,159 @@ +{ + "billing_title": "Meine Dienste", + "billing_description": "Verwalten Sie die Verlängerung Ihrer Dienste. Überprüfen Sie den Zustand Ihrer Dienste und Ihre Verträge.", + "billing_home_title": "Start", + "billing_agreements_title": "Verträge", + "billing_ssh_title": "SSH-Schlüssel", + "billing_autorenew_service_disable_autorenew": "Automatische Zahlung deaktivieren", + "billing_autorenew_service_align_renew": "Ablaufdaten einander angleichen", + "billing_autorenew_service_enable_autorenew": "Automatische Zahlung aktivieren", + "billing_autorenew_service_disable_all_dom": "Automatische Verlängerung für alle Domains deaktivieren", + "billing_autorenew_service_status": "Status", + "billing_autorenew_service_status_auto": "Automatische Verlängerung", + "billing_autorenew_service_status_automatic": "Automatische Verlängerung", + "billing_autorenew_service_status_manual": "Manuelle Verlängerung", + "billing_autorenew_service_status_manualPayment": "Manuelle Verlängerung", + "billing_autorenew_service_status_pending_debt": "Ausstehende Rechnung", + "billing_autorenew_service_status_delete_at_expiration": "Kündigung angefordert", + "billing_autorenew_service_status_expired": "Gekündigt", + "billing_autorenew_service_expiration_weeks": "Läuft in einer Woche ab", + "billing_autorenew_service_expiration_months": "Läuft in einem Monat ab", + "billing_autorenew_service_expiration_renew_month": "In einem Monat verlängert", + "billing_autorenew_service_actions": "Aktionen", + "billing_autorenew_criterion_serviceType": "Dienst", + "billing_autorenew_criterion_status": "Status", + "billing_autorenew_criterion_state": "Verfügbarkeit", + "billing_autorenew_criterion_expiration": "Datum des Inkrafttretens", + "billing_autorenew_nic_all": "Alle", + "autorenew_service_deleteAtExpiration_banner": "Die Kündigung am Ablaufdatum des Dienstes „{{ serviceName }}\" wurde erfolgreich eingeplant. Sie können diesen Vorgang bis zu 24 Stunden vor dem Ablaufdatum des Dienstes abbrechen.", + "autorenew_service_deleteAtExpiration_banner_cancel": "Kündigung am Ablaufdatum stornieren", + "billing_autorenew_service": "Dienst", + "billing_autorenew_service_name": "Name des Dienstes", + "billing_autorenew_service_state_EXPIRED": "Geschlossen", + "billing_autorenew_service_state_UP": "Aktiv", + "billing_autorenew_service_state_IN_CREATION": "Wird erstellt", + "billing_autorenew_service_state_OK": "Bezahlt", + "billing_autorenew_service_state_UN_PAID": "Nicht bezahlt", + "billing_autorenew_service_date": "Datum des Inkrafttretens", + "billing_autorenew_service_date_now": "Sofort", + "billing_autorenew_service_date_before": "Vor dem {{ date }}", + "billing_autorenew_service_date_renew": "Am {{ date }}", + "billing_autorenew_service_expiration_date": "Läuft ab am", + "autorenew_service_after_expiration_date": "Abgelaufen am", + "autorenew_service_renew_auto": "Automatisch", + "autorenew_service_renew_manuel": "Manuell", + "autorenew_service_renew_delete_at_expiration": "Wird am Ablaufdatum gekündigt", + "autorenew_service_renew_year": "Automatisch: jedes Jahr", + "autorenew_service_renew_month": "Automatisch: jeden Monat", + "autorenew_service_renew_3months": "Vierteljährlich", + "autorenew_service_renew_6months": "Halbjährlich", + "autorenew_service_renew_frequency_value": "Automatisch: alle {{t0}} Monate", + "autorenew_service_renew_years_frequency_value": "Automatisch: alle {{t0}} Jahre", + "autorenew_service_renew_paid": "Bezahlt", + "autorenew_empty": "Sie haben keine Dienstleistungen", + "autorenew_service_action_title": "Aktionen", + "autorenew_service_autorenew_day": "Tag der automatischen Verlängerung:", + "autorenew_service_autorenew_day_tooltip": "Wenn Sie Dienstleistungen automatisch verlängern, können Sie dafür den Tag der Verlängerung auswählen", + "autorenew_service_select_intro": "Alles auswählen:", + "billing_autorenew_service_type_ALL": "Alle Dienste", + "billing_autorenew_service_type_ALL_DOM": "AllDom-Paket", + "billing_autorenew_service_type_CDN_DEDICATED": "Dedicated CDN", + "billing_autorenew_service_type_CDN_WEBSITE": "WebSite CDN", + "billing_autorenew_service_type_CDN_WEBSTORAGE": "WebStorage CDN", + "billing_autorenew_service_type_CLUSTER_HADOOP": "Hadoop-Cluster", + "billing_autorenew_service_type_DEDICATED_NAS": "Dedicated NAS", + "billing_autorenew_service_type_DEDICATED_NASHA": "Dedicated HA-NAS", + "billing_autorenew_service_autorenew_contact_filter": "Wählen Sie Ihren Rechnungskontakt", + "billing_autorenew_service_autorenew_contact_filter_all": "Alle", + "billing_autorenew_service_autorenew_filter": "Filter", + "billing_autorenew_service_type_DEDICATED_SERVER": "Dedicated Server", + "billing_autorenew_service_type_dedicated_server": "Dedicated Server", + "billing_autorenew_service_type_DEDICATED_HOUSING": "Server-Housing", + "billing_autorenew_service_type_DEDICATED_CLOUD": "Managed VMware vSphere", + "billing_autorenew_service_type_ESSENTIALS": "Managed Bare Metal", + "billing_autorenew_service_type_DOMAIN": "Domain", + "billing_autorenew_service_type_ENTERPRISE_CLOUD_DATABASE": "Enterprise Cloud Databases", + "billing_autorenew_service_type_HOSTING_PRIVATE_DATABASE": "SQL Private Datenbankhosting", + "billing_autorenew_service_type_HOSTING_WEB": "Webhosting", + "billing_autorenew_service_type_IP_LOADBALANCING": "Loadbalancing-IP", + "billing_autorenew_service_type_IP_LOADBALANCER": "IP-Loadbalancer", + "billing_autorenew_service_type_LICENCE_CLOUD_LINUX": "CloudLinux-Lizenz", + "billing_autorenew_service_type_LICENCE_CPANEL": "cPanel-Lizenz", + "billing_autorenew_service_type_LICENCE_DIRECT_ADMIN": "DirectAdmin-Lizenz", + "billing_autorenew_service_type_LICENCE_PLESK": "Plesk-Lizenz", + "billing_autorenew_service_type_LICENCE_SQL_SERVER": "SQL-Server-Lizenz", + "billing_autorenew_service_type_LICENCE_OFFICE": "Office-365-Lizenz", + "billing_autorenew_service_type_LICENCE_VIRTUOZZO": "Virtuozzo-Lizenz", + "billing_autorenew_service_type_LICENCE_WINDOWS": "Windows-Lizenz", + "billing_autorenew_service_type_LICENCE_WORKLIGHT": "Worklight-Lizenz", + "billing_autorenew_service_type_XDSL": "xDSL-Leitung", + "billing_autorenew_service_type_OVER_THE_BOX": "OverTheBox", + "billing_autorenew_service_type_PACK": "xDSL-Paket", + "billing_autorenew_service_type_ROUTER": "Router", + "billing_autorenew_service_type_TELEPHONY": "Telefonie", + "billing_autorenew_service_type_EXCHANGE": "Exchange", + "billing_autorenew_service_type_EMAIL_EXCHANGE": "Exchange", + "billing_autorenew_service_type_SMS": "SMS", + "billing_autorenew_service_type_VPS": "Virtual Private Server", + "billing_autorenew_service_type_MIS": "Gemanagte Infrastruktur", + "billing_autorenew_service_type_HOSTING_RESELLER": "Hosting-Reseller", + "billing_autorenew_service_type_EMAIL_DOMAIN": "MX Plan", + "billing_autorenew_service_type_EMAIL_PRO": "E-Mail Pro", + "billing_autorenew_service_type_VIP": "VIP", + "billing_autorenew_service_type_CAAS_CONTAINERS": "CaaS Container", + "billing_autorenew_service_type_CAAS_REGISTRY": "CaaS Registry", + "billing_autorenew_service_type_DBAAS_QUEUE": "DBaaS Queue", + "billing_autorenew_service_type_DBAAS_LOGS": "Logs Data Platform", + "billing_autorenew_service_type_DEDICATED_CEPH": "Ceph as a Service", + "billing_autorenew_service_type_DESKAAS": "Cloud Desktop", + "billing_autorenew_service_type_HORIZONVIEW": "Cloud Desktop Infrastructure", + "billing_autorenew_service_type_PAAS_DATABASE": "PaaS Database", + "billing_autorenew_service_type_PAAS_MONITORING": "PaaS Monitoring", + "billing_autorenew_service_type_SAAS_CSP2": "Office 365 Reseller", + "billing_autorenew_service_type_SAAS_CSP_2": "Office 365 Reseller", + "billing_autorenew_service_type_SSL_GATEWAY": "SSL Gateway", + "billing_autorenew_service_type_SHAREPOINT": "SharePoint", + "billing_autorenew_service_type_VEEAM_CLOUD_CONNECT": "Veeam Cloud Connect", + "billing_autorenew_service_type_VEEAM_ENTERPRISE": "Veeam Enterprise", + "billing_autorenew_service_type_METRICS": "Metrics", + "billing_autorenew_service_type_kube": "Kubernetes", + "billing_autorenew_service_type_WEBCOACH": "WebCoach", + "billing_autorenew_service_type_webcoach": "WebCoach", + "billing_autorenew_service_type_OVH_CLOUD_CONNECT": "OVHcloud Connect", + "billing_autorenew_service_type_WEB_PAAS": "Web PaaS", + "billing_autorenew_service_type_NETAPP": "Enterprise File Storage", + "billing_autorenew_service_type_CLOUD_PROJECT": "PCI Projekte", + "billing_autorenew_service_type_CLOUD_DB_ENTERPRISE_CLUSTER": "Enterprise Cloud Database", + "billing_autorenew_service_type_DOMAIN_ZONE": "DNS-Zone", + "billing_autorenew_service_type_EMAIL_EXCHANGE_SERVICE": "Microsoft Exchange ", + "billing_autorenew_service_type_FREEFAX": "Fax", + "billing_autorenew_service_type_IP_SERVICE": "IP", + "billing_autorenew_service_type_LICENCE": "Lizenzen", + "billing_autorenew_service_type_LICENSE_WINDOWS": "Windows Lizenzen", + "billing_autorenew_service_type_LICENSE_OFFICE": "Office 365 Lizenzen", + "billing_autorenew_service_type_LICENSE_CLOUD_LINUX": "CloudLinux Lizenzen", + "billing_autorenew_service_type_LICENSE_CPANEL": "cPanel Lizenzen", + "billing_autorenew_service_type_LICENSE_PLESK": "Plesk Lizenzen", + "billing_autorenew_service_type_LICENSE_DIRECTADMIN": "DirectAdmin Lizenzen", + "billing_autorenew_service_type_LICENSE_VIRTUOZZO": "Virtuozzo Lizenzen", + "billing_autorenew_service_type_LICENSE_WORKLIGHT": "Worklight Lizenzen", + "billing_autorenew_service_type_LICENSE_SQLSERVER": "SQL Server Lizenzen", + "billing_autorenew_service_type_LICENCE_SQLSERVER": "SQL Server Lizenzen", + "billing_autorenew_service_type_LICENSE_OFFICE_PREPAID": "Office 365 Lizenzen", + "billing_autorenew_service_type_MS_SERVICES_SHAREPOINT": "Microsoft Sharepoint ", + "billing_autorenew_service_type_PACK_XDSL": "xDSL-Pakete", + "billing_autorenew_service_type_VRACK": "vRacks", + "billing_autorenew_service_type_NUTANIX": "Nutanix", + "billing_export_csv": "Export als CSV-Datei", + "billing_common_link_new_window": "(neues Fenster)", + "billing_autorenew_renew_action": "Verlängern", + "billing_autorenew_service_renew_requires_mean_and_date": "Um die Aktivierung der automatischen Verlängerung abzuschließen, hinterlegen Sie bitte ein Zahlungsmittel Ihrer Wahl. Danach können Sie das Datum der Abbuchung auswählen.", + "billing_autorenew_service_activate_alert": "Sie haben für mindestens einen Dienst die automatische Verlängerung eingestellt, diese Option aber noch nicht autorisiert.", + "autorenew_service_autorenew_day_tooltip_autorenew_2016": "Wenn Sie Dienste mit automatischer Verlängerung nutzen, können Sie den Tag der Verlängerung auswählen. (Diese Option ist nicht mit Bare-Metal- und VPS-Produkten kompatibel, da das Verlängerungsdatum für diese Produktkategorie standardmäßig auf den 1. des Monats festgelegt ist.)", + "billing_autorenew_service_activate_alert_renew2016": "Diese Meldung betrifft nicht die Bare-Metal- und VPS-Dienste.", + "billing_autorenew_service_type_DEDICATED_CLUSTER": "Region 3-AZ", + "billing_autorenew_service_type_OKMS_RESOURCE": "OVHcloud KMS", + "billing_autorenew_service_type_VRACK_SERVICES_RESOURCE": "vRack Services", + "billing_autorenew_service_type_VMWARE_CLOUD_DIRECTOR_ORGANIZATION": "Managed VCD", + "billing_autorenew_service_type_LICENSE_HYCU": "HYCU" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_en_GB.json new file mode 100644 index 000000000000..cc7e8c3f2590 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_en_GB.json @@ -0,0 +1,159 @@ +{ + "billing_title": "My services", + "billing_description": "Manage renewal for your services. View their status and your contracts.", + "billing_home_title": "Home", + "billing_agreements_title": "Contracts", + "billing_ssh_title": "SSH keys", + "billing_autorenew_service_disable_autorenew": "Disable automatic payment", + "billing_autorenew_service_align_renew": "Align renewal dates", + "billing_autorenew_service_enable_autorenew": "Enable automatic payment", + "billing_autorenew_service_disable_all_dom": "Disable automatic renewal for all domains", + "billing_autorenew_service_status": "Status", + "billing_autorenew_service_status_auto": "Automatic renewal", + "billing_autorenew_service_status_automatic": "Automatic renewal", + "billing_autorenew_service_status_manual": "Manual renewal", + "billing_autorenew_service_status_manualPayment": "Manual renewal", + "billing_autorenew_service_status_pending_debt": "Bill to pay", + "billing_autorenew_service_status_delete_at_expiration": "Termination requested", + "billing_autorenew_service_status_expired": "Terminated", + "billing_autorenew_service_expiration_weeks": "Expires in a week", + "billing_autorenew_service_expiration_months": "Expires in a month", + "billing_autorenew_service_expiration_renew_month": "To be renewed in a month", + "billing_autorenew_service_actions": "Actions", + "billing_autorenew_criterion_serviceType": "Service", + "billing_autorenew_criterion_status": "Status", + "billing_autorenew_criterion_state": "Availability", + "billing_autorenew_criterion_expiration": "Date of effect", + "billing_autorenew_nic_all": "All", + "autorenew_service_deleteAtExpiration_banner": "Cancellation on expiry for the {{ serviceName }} service has been processed. You can change your mind and reverse this operation up to 24 hours before the service is due to expire.", + "autorenew_service_deleteAtExpiration_banner_cancel": "Cancel termination on expiry", + "billing_autorenew_service": "Service", + "billing_autorenew_service_name": "Service name", + "billing_autorenew_service_state_EXPIRED": "Suspended", + "billing_autorenew_service_state_UP": "Active", + "billing_autorenew_service_state_IN_CREATION": "Creating", + "billing_autorenew_service_state_OK": "Paid", + "billing_autorenew_service_state_UN_PAID": "Not paid ", + "billing_autorenew_service_date": "Date of effect", + "billing_autorenew_service_date_now": "Immediately", + "billing_autorenew_service_date_before": "Before {{ date }}", + "billing_autorenew_service_date_renew": "{{ date }}", + "billing_autorenew_service_expiration_date": "Expires on ", + "autorenew_service_after_expiration_date": "Expired on", + "autorenew_service_renew_auto": "Automatic", + "autorenew_service_renew_manuel": "Manual", + "autorenew_service_renew_delete_at_expiration": "Terminate on expiry", + "autorenew_service_renew_year": "Automatic: every year", + "autorenew_service_renew_month": "Automatic: every month", + "autorenew_service_renew_3months": "Quarterly ", + "autorenew_service_renew_6months": "Six-monthly", + "autorenew_service_renew_frequency_value": "Automatic: every {{t0}} months", + "autorenew_service_renew_years_frequency_value": "Automatic: every {{t0}} years", + "autorenew_service_renew_paid": "Paid", + "autorenew_empty": "You don't have any services", + "autorenew_service_action_title": "Actions", + "autorenew_service_autorenew_day": "Day of automatic renewal:", + "autorenew_service_autorenew_day_tooltip": "If you automatically renew any of your services, you may choose a renewal day.", + "autorenew_service_select_intro": "Select all:", + "billing_autorenew_service_type_ALL": "All services", + "billing_autorenew_service_type_ALL_DOM": "AllDom Pack", + "billing_autorenew_service_type_CDN_DEDICATED": "Dedicated CDN", + "billing_autorenew_service_type_CDN_WEBSITE": "Website CDN", + "billing_autorenew_service_type_CDN_WEBSTORAGE": "WebStorage CDN", + "billing_autorenew_service_type_CLUSTER_HADOOP": "Hadoop Cluster", + "billing_autorenew_service_type_DEDICATED_NAS": "Dedicated NAS", + "billing_autorenew_service_type_DEDICATED_NASHA": "Dedicated HA-NAS", + "billing_autorenew_service_autorenew_contact_filter": "Select your billing contact ", + "billing_autorenew_service_autorenew_contact_filter_all": "All", + "billing_autorenew_service_autorenew_filter": "Filters", + "billing_autorenew_service_type_DEDICATED_SERVER": "Dedicated Server", + "billing_autorenew_service_type_dedicated_server": "Dedicated Server", + "billing_autorenew_service_type_DEDICATED_HOUSING": "Housing server ", + "billing_autorenew_service_type_DEDICATED_CLOUD": "Managed VMware vSphere", + "billing_autorenew_service_type_ESSENTIALS": "Managed Bare Metal", + "billing_autorenew_service_type_DOMAIN": "Domain", + "billing_autorenew_service_type_ENTERPRISE_CLOUD_DATABASE": "Enterprise Cloud Databases", + "billing_autorenew_service_type_HOSTING_PRIVATE_DATABASE": "Private SQL hosting", + "billing_autorenew_service_type_HOSTING_WEB": "Web hosting", + "billing_autorenew_service_type_IP_LOADBALANCING": "Load balancing IP", + "billing_autorenew_service_type_IP_LOADBALANCER": "IP Load Balancer", + "billing_autorenew_service_type_LICENCE_CLOUD_LINUX": "CloudLinux licence", + "billing_autorenew_service_type_LICENCE_CPANEL": "cPanel licence", + "billing_autorenew_service_type_LICENCE_DIRECT_ADMIN": "DirectAdmin licence", + "billing_autorenew_service_type_LICENCE_PLESK": "Plesk licence", + "billing_autorenew_service_type_LICENCE_SQL_SERVER": "SQL Server licence ", + "billing_autorenew_service_type_LICENCE_OFFICE": "Office 365 licence ", + "billing_autorenew_service_type_LICENCE_VIRTUOZZO": "Virtuozzo licence", + "billing_autorenew_service_type_LICENCE_WINDOWS": "Windows licence ", + "billing_autorenew_service_type_LICENCE_WORKLIGHT": "Worklight licence", + "billing_autorenew_service_type_XDSL": "xDSL line", + "billing_autorenew_service_type_OVER_THE_BOX": "OverTheBox", + "billing_autorenew_service_type_PACK": "xDSL pack", + "billing_autorenew_service_type_ROUTER": "Router", + "billing_autorenew_service_type_TELEPHONY": "Telephony", + "billing_autorenew_service_type_EXCHANGE": "Exchange", + "billing_autorenew_service_type_EMAIL_EXCHANGE": "Exchange", + "billing_autorenew_service_type_SMS": "SMS", + "billing_autorenew_service_type_VPS": "Virtual private servers", + "billing_autorenew_service_type_MIS": "Managed infrastructure ", + "billing_autorenew_service_type_HOSTING_RESELLER": "Web hosting reseller", + "billing_autorenew_service_type_EMAIL_DOMAIN": "MX Plan", + "billing_autorenew_service_type_EMAIL_PRO": "Email Pro", + "billing_autorenew_service_type_VIP": "VIP", + "billing_autorenew_service_type_CAAS_CONTAINERS": "CaaS Containers", + "billing_autorenew_service_type_CAAS_REGISTRY": "CaaS Registry", + "billing_autorenew_service_type_DBAAS_QUEUE": "DBaaS Queue", + "billing_autorenew_service_type_DBAAS_LOGS": "Logs Data Platform", + "billing_autorenew_service_type_DEDICATED_CEPH": "Ceph as a Service", + "billing_autorenew_service_type_DESKAAS": "Cloud Desktop", + "billing_autorenew_service_type_HORIZONVIEW": "Cloud Desktop Infrastructure", + "billing_autorenew_service_type_PAAS_DATABASE": "PaaS Database", + "billing_autorenew_service_type_PAAS_MONITORING": "PaaS Monitoring", + "billing_autorenew_service_type_SAAS_CSP2": "Office 365 Reseller", + "billing_autorenew_service_type_SAAS_CSP_2": "Office 365 Reseller", + "billing_autorenew_service_type_SSL_GATEWAY": "SSL Gateway", + "billing_autorenew_service_type_SHAREPOINT": "SharePoint", + "billing_autorenew_service_type_VEEAM_CLOUD_CONNECT": "Veeam Cloud Connect", + "billing_autorenew_service_type_VEEAM_ENTERPRISE": "Veeam Enterprise", + "billing_autorenew_service_type_METRICS": "Metrics", + "billing_autorenew_service_type_kube": "Kubernetes", + "billing_autorenew_service_type_WEBCOACH": "Web Coach", + "billing_autorenew_service_type_webcoach": "Web Coach", + "billing_autorenew_service_type_OVH_CLOUD_CONNECT": "OVHcloud Connect", + "billing_autorenew_service_type_WEB_PAAS": "Web PaaS", + "billing_autorenew_service_type_NETAPP": "Enterprise File Storage", + "billing_autorenew_service_type_CLOUD_PROJECT": "PCI projects", + "billing_autorenew_service_type_CLOUD_DB_ENTERPRISE_CLUSTER": "Enterprise Cloud Database", + "billing_autorenew_service_type_DOMAIN_ZONE": "DNS zones", + "billing_autorenew_service_type_EMAIL_EXCHANGE_SERVICE": "Microsoft Exchange", + "billing_autorenew_service_type_FREEFAX": "Fax", + "billing_autorenew_service_type_IP_SERVICE": "IP", + "billing_autorenew_service_type_LICENCE": "Licenses", + "billing_autorenew_service_type_LICENSE_WINDOWS": "Windows licences", + "billing_autorenew_service_type_LICENSE_OFFICE": "Office 365 licences", + "billing_autorenew_service_type_LICENSE_CLOUD_LINUX": "CloudLinux licences", + "billing_autorenew_service_type_LICENSE_CPANEL": "cPanel licences ", + "billing_autorenew_service_type_LICENSE_PLESK": "Plesk licences", + "billing_autorenew_service_type_LICENSE_DIRECTADMIN": "DirectAdmin licences", + "billing_autorenew_service_type_LICENSE_VIRTUOZZO": "Virtuozzo licences ", + "billing_autorenew_service_type_LICENSE_WORKLIGHT": "Worklight licences", + "billing_autorenew_service_type_LICENSE_SQLSERVER": "SQL Server licences ", + "billing_autorenew_service_type_LICENCE_SQLSERVER": "SQL Server licences ", + "billing_autorenew_service_type_LICENSE_OFFICE_PREPAID": "Office 365 licences", + "billing_autorenew_service_type_MS_SERVICES_SHAREPOINT": "Microsoft SharePoint", + "billing_autorenew_service_type_PACK_XDSL": "xDSL packs", + "billing_autorenew_service_type_VRACK": "vRacks", + "billing_autorenew_service_type_NUTANIX": "Nutanix", + "billing_export_csv": "Export in CSV format", + "billing_common_link_new_window": "(New window)", + "billing_autorenew_renew_action": "Renew", + "billing_autorenew_service_renew_requires_mean_and_date": "In order to finish enabling automatic renewal, please add a new payment method. You will then be able to select a payment date.", + "billing_autorenew_service_activate_alert": "You have at least one service with automatic renewal, but you have not yet authorised this option.", + "autorenew_service_autorenew_day_tooltip_autorenew_2016": "If you automatically renew any of your services, you can select your renewal day (this option is not compatible with Bare Metal and VPS products, as the renewal date is set for the 1st of the month by default for this product category).", + "billing_autorenew_service_activate_alert_renew2016": "This message does not apply to Bare Metal and VPS services.", + "billing_autorenew_service_type_DEDICATED_CLUSTER": " 3-AZ Region", + "billing_autorenew_service_type_OKMS_RESOURCE": "OVHcloud KMS", + "billing_autorenew_service_type_VRACK_SERVICES_RESOURCE": "vRack Services", + "billing_autorenew_service_type_VMWARE_CLOUD_DIRECTOR_ORGANIZATION": "Managed VCD", + "billing_autorenew_service_type_LICENSE_HYCU": "HYCU" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_es_ES.json new file mode 100644 index 000000000000..b0a1f7b1cbe6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_es_ES.json @@ -0,0 +1,159 @@ +{ + "billing_title": "Mis servicios", + "billing_description": "Gestione la renovación de sus servicios. Consulte el estado de sus servicios y los contratos asociados.", + "billing_home_title": "Inicio", + "billing_agreements_title": "Contratos", + "billing_ssh_title": "Llaves SSH", + "billing_autorenew_service_disable_autorenew": "Desactivar el pago automático", + "billing_autorenew_service_align_renew": "Unificar las fechas de renovación", + "billing_autorenew_service_enable_autorenew": "Activar el pago automático", + "billing_autorenew_service_disable_all_dom": "Desactivar la renovación automática para todos los dominios", + "billing_autorenew_service_status": "Estado", + "billing_autorenew_service_status_auto": "Renovación automática", + "billing_autorenew_service_status_automatic": "Renovación automática", + "billing_autorenew_service_status_manual": "Renovación manual", + "billing_autorenew_service_status_manualPayment": "Renovación manual", + "billing_autorenew_service_status_pending_debt": "Factura pendiente", + "billing_autorenew_service_status_delete_at_expiration": "Baja solicitada", + "billing_autorenew_service_status_expired": "Dado de baja", + "billing_autorenew_service_expiration_weeks": "Expiración en una semana ", + "billing_autorenew_service_expiration_months": "Expiración en un mes ", + "billing_autorenew_service_expiration_renew_month": "Renovación en un mes", + "billing_autorenew_service_actions": "Acciones", + "billing_autorenew_criterion_serviceType": "Servicio", + "billing_autorenew_criterion_status": "Estado", + "billing_autorenew_criterion_state": "Disponibilidad", + "billing_autorenew_criterion_expiration": "Fecha de aplicación", + "billing_autorenew_nic_all": "Todos", + "autorenew_service_deleteAtExpiration_banner": "La solicitud de baja en la fecha de expiración del servicio {{ serviceName }} se ha enviado. Puede anular esta operación hasta 24 horas antes de la expiración del servicio.", + "autorenew_service_deleteAtExpiration_banner_cancel": "Cancelar la baja en la fecha de expiración", + "billing_autorenew_service": "Servicio", + "billing_autorenew_service_name": "Nombre del servicio", + "billing_autorenew_service_state_EXPIRED": "Suspendido", + "billing_autorenew_service_state_UP": "Activo", + "billing_autorenew_service_state_IN_CREATION": "Creando...", + "billing_autorenew_service_state_OK": "Pagado", + "billing_autorenew_service_state_UN_PAID": "No pagado", + "billing_autorenew_service_date": "Fecha de aplicación", + "billing_autorenew_service_date_now": "De inmediato", + "billing_autorenew_service_date_before": "Antes del {{ date }}", + "billing_autorenew_service_date_renew": "El {{ date }}", + "billing_autorenew_service_expiration_date": "Caduca el", + "autorenew_service_after_expiration_date": "Expira el", + "autorenew_service_renew_auto": "Automática", + "autorenew_service_renew_manuel": "Manual", + "autorenew_service_renew_delete_at_expiration": "Baja en la fecha de expiración", + "autorenew_service_renew_year": "Automática: anual", + "autorenew_service_renew_month": "Automática: mensual", + "autorenew_service_renew_3months": "Trimestral", + "autorenew_service_renew_6months": "Semestral", + "autorenew_service_renew_frequency_value": "Automática: cada {{t0}} meses", + "autorenew_service_renew_years_frequency_value": "Automática: cada {{t0}} años", + "autorenew_service_renew_paid": "Pagado", + "autorenew_empty": "No hay servicios", + "autorenew_service_action_title": "Acciones", + "autorenew_service_autorenew_day": "Día de renovación automática:", + "autorenew_service_autorenew_day_tooltip": "Si tiene servicios con renovación automática, puede elegir el día de su renovación.", + "autorenew_service_select_intro": "Seleccionar todas:", + "billing_autorenew_service_type_ALL": "Todos los servicios", + "billing_autorenew_service_type_ALL_DOM": "Pack AllDom", + "billing_autorenew_service_type_CDN_DEDICATED": "CDN Dedicada", + "billing_autorenew_service_type_CDN_WEBSITE": "CDN WebSite", + "billing_autorenew_service_type_CDN_WEBSTORAGE": "CDN WebStorage", + "billing_autorenew_service_type_CLUSTER_HADOOP": "Cluster Hadoop", + "billing_autorenew_service_type_DEDICATED_NAS": "NAS dedicado", + "billing_autorenew_service_type_DEDICATED_NASHA": "NAS-HA dedicado", + "billing_autorenew_service_autorenew_contact_filter": "Elija su contacto de facturación", + "billing_autorenew_service_autorenew_contact_filter_all": "Todos", + "billing_autorenew_service_autorenew_filter": "Filtros", + "billing_autorenew_service_type_DEDICATED_SERVER": "Servidor dedicado", + "billing_autorenew_service_type_dedicated_server": "Servidor dedicado", + "billing_autorenew_service_type_DEDICATED_HOUSING": "Servidor en housing", + "billing_autorenew_service_type_DEDICATED_CLOUD": "Managed VMware vSphere", + "billing_autorenew_service_type_ESSENTIALS": "Managed Bare Metal", + "billing_autorenew_service_type_DOMAIN": "Dominio", + "billing_autorenew_service_type_ENTERPRISE_CLOUD_DATABASE": "Enterprise Cloud Databases", + "billing_autorenew_service_type_HOSTING_PRIVATE_DATABASE": "Alojamiento BD SQL Privado", + "billing_autorenew_service_type_HOSTING_WEB": "Alojamiento web", + "billing_autorenew_service_type_IP_LOADBALANCING": "IP Load Balancing", + "billing_autorenew_service_type_IP_LOADBALANCER": "IP Load Balancer", + "billing_autorenew_service_type_LICENCE_CLOUD_LINUX": "Licencia CloudLinux", + "billing_autorenew_service_type_LICENCE_CPANEL": "Licencia cPanel", + "billing_autorenew_service_type_LICENCE_DIRECT_ADMIN": "Licencia DirectAdmin", + "billing_autorenew_service_type_LICENCE_PLESK": "Licencia Plesk", + "billing_autorenew_service_type_LICENCE_SQL_SERVER": "Licencia SQL Server", + "billing_autorenew_service_type_LICENCE_OFFICE": "Licencia Office 365", + "billing_autorenew_service_type_LICENCE_VIRTUOZZO": "Licencia Virtuozzo", + "billing_autorenew_service_type_LICENCE_WINDOWS": "Licencia Windows", + "billing_autorenew_service_type_LICENCE_WORKLIGHT": "Licencia Worklight", + "billing_autorenew_service_type_XDSL": "Línea xDSL", + "billing_autorenew_service_type_OVER_THE_BOX": "OverTheBox", + "billing_autorenew_service_type_PACK": "Pack xDSL", + "billing_autorenew_service_type_ROUTER": "Router", + "billing_autorenew_service_type_TELEPHONY": "Telefonía", + "billing_autorenew_service_type_EXCHANGE": "Exchange", + "billing_autorenew_service_type_EMAIL_EXCHANGE": "Exchange", + "billing_autorenew_service_type_SMS": "SMS", + "billing_autorenew_service_type_VPS": "Servidores privados virtuales", + "billing_autorenew_service_type_MIS": "Infraestructura administrada", + "billing_autorenew_service_type_HOSTING_RESELLER": "Revendedor de hosting", + "billing_autorenew_service_type_EMAIL_DOMAIN": "MX Plan", + "billing_autorenew_service_type_EMAIL_PRO": "Email Pro", + "billing_autorenew_service_type_VIP": "VIP", + "billing_autorenew_service_type_CAAS_CONTAINERS": "CaaS Containers", + "billing_autorenew_service_type_CAAS_REGISTRY": "CaaS Registry", + "billing_autorenew_service_type_DBAAS_QUEUE": "DBaaS Queue", + "billing_autorenew_service_type_DBAAS_LOGS": "Logs Data Platform", + "billing_autorenew_service_type_DEDICATED_CEPH": "Ceph as a Service", + "billing_autorenew_service_type_DESKAAS": "Cloud Desktop", + "billing_autorenew_service_type_HORIZONVIEW": "Cloud Desktop Infrastructure", + "billing_autorenew_service_type_PAAS_DATABASE": "PaaS Database", + "billing_autorenew_service_type_PAAS_MONITORING": "PaaS Monitoring", + "billing_autorenew_service_type_SAAS_CSP2": "Office 365 Reseller", + "billing_autorenew_service_type_SAAS_CSP_2": "Office 365 Reseller", + "billing_autorenew_service_type_SSL_GATEWAY": "SSL Gateway", + "billing_autorenew_service_type_SHAREPOINT": "SharePoint", + "billing_autorenew_service_type_VEEAM_CLOUD_CONNECT": "Veeam Cloud Connect", + "billing_autorenew_service_type_VEEAM_ENTERPRISE": "Veeam Enterprise", + "billing_autorenew_service_type_METRICS": "Metrics", + "billing_autorenew_service_type_kube": "Kubernetes", + "billing_autorenew_service_type_WEBCOACH": "WebCoach", + "billing_autorenew_service_type_webcoach": "WebCoach", + "billing_autorenew_service_type_OVH_CLOUD_CONNECT": "OVHcloud Connect", + "billing_autorenew_service_type_WEB_PAAS": "Web PaaS", + "billing_autorenew_service_type_NETAPP": "Enterprise File Storage", + "billing_autorenew_service_type_CLOUD_PROJECT": "Proyectos PCI", + "billing_autorenew_service_type_CLOUD_DB_ENTERPRISE_CLUSTER": "Enterprise Cloud Databases", + "billing_autorenew_service_type_DOMAIN_ZONE": "Zonas DNS", + "billing_autorenew_service_type_EMAIL_EXCHANGE_SERVICE": "Microsoft Exchange", + "billing_autorenew_service_type_FREEFAX": "Fax", + "billing_autorenew_service_type_IP_SERVICE": "IP", + "billing_autorenew_service_type_LICENCE": "Licencias", + "billing_autorenew_service_type_LICENSE_WINDOWS": "Licencias Windows", + "billing_autorenew_service_type_LICENSE_OFFICE": "Licencias Office 365", + "billing_autorenew_service_type_LICENSE_CLOUD_LINUX": "Licencias CloudLinux", + "billing_autorenew_service_type_LICENSE_CPANEL": "Licencias cPanel", + "billing_autorenew_service_type_LICENSE_PLESK": "Licencias Plesk", + "billing_autorenew_service_type_LICENSE_DIRECTADMIN": "Licencias DirectAdmin", + "billing_autorenew_service_type_LICENSE_VIRTUOZZO": "Licencias Virtuozzo", + "billing_autorenew_service_type_LICENSE_WORKLIGHT": "Licencias Worklight", + "billing_autorenew_service_type_LICENSE_SQLSERVER": "Licencias SQL Server", + "billing_autorenew_service_type_LICENCE_SQLSERVER": "Licencias SQL Server", + "billing_autorenew_service_type_LICENSE_OFFICE_PREPAID": "Licencias Office 365", + "billing_autorenew_service_type_MS_SERVICES_SHAREPOINT": "Microsoft SharePoint", + "billing_autorenew_service_type_PACK_XDSL": "Packs xDSL", + "billing_autorenew_service_type_VRACK": "vRacks", + "billing_autorenew_service_type_NUTANIX": "Nutanix", + "billing_export_csv": "Exportar en CSV", + "billing_common_link_new_window": "(nueva ventana)", + "billing_autorenew_renew_action": "Renovar", + "billing_autorenew_service_renew_requires_mean_and_date": "Para completar la activación de la renovación automática, debe añadir una forma de pago. A continuación, podrá seleccionar la fecha del cargo.", + "billing_autorenew_service_activate_alert": "Ha configurado la renovación automática en al menos un servicio, pero todavía no ha autorizado esta opción.", + "autorenew_service_autorenew_day_tooltip_autorenew_2016": "Si tiene servicios con renovación automática, podrá elegir el día de renovación (opción no compatible con los productos Bare Metal y VPS cuya fecha de renovación está fijada por defecto el día 1 de cada mes).", + "billing_autorenew_service_activate_alert_renew2016": "Este mensaje no se aplica a los servicios Bare Metal y VPS.", + "billing_autorenew_service_type_DEDICATED_CLUSTER": "Región 3-AZ", + "billing_autorenew_service_type_OKMS_RESOURCE": "OVHcloud KMS", + "billing_autorenew_service_type_VRACK_SERVICES_RESOURCE": "vRack Services", + "billing_autorenew_service_type_VMWARE_CLOUD_DIRECTOR_ORGANIZATION": "Managed VCD", + "billing_autorenew_service_type_LICENSE_HYCU": "HYCU" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..b905a258f263 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_fr_CA.json @@ -0,0 +1,165 @@ +{ + "billing_title": "Mes services", + "billing_description": "Gérez le renouvellement de vos services. Consultez leur statut ainsi que vos contrats.", + "billing_home_title": "Accueil", + "billing_agreements_title": "Contrats", + "billing_ssh_title": "Clés SSH", + "billing_autorenew_service_disable_autorenew": "Désactiver le paiement automatique", + "billing_autorenew_service_align_renew": "Aligner les dates de renouvellement", + "billing_autorenew_service_enable_autorenew": "Activer le paiement automatique", + "billing_autorenew_service_disable_all_dom": "Désactiver le renouvellement automatique pour tous les domaines", + "billing_autorenew_service_status": "Statut", + "billing_autorenew_service_status_auto": "Renouvellement automatique", + "billing_autorenew_service_status_automatic": "Renouvellement automatique", + "billing_autorenew_service_status_manual": "Renouvellement manuel", + "billing_autorenew_service_status_manualPayment": "Renouvellement manuel", + "billing_autorenew_service_status_pending_debt": "Facture à régler", + "billing_autorenew_service_status_delete_at_expiration": "Résiliation demandée", + "billing_autorenew_service_status_expired": "Résilié", + "billing_autorenew_service_expiration_weeks": "Expirant dans une semaine", + "billing_autorenew_service_expiration_months": "Expirant dans un mois", + "billing_autorenew_service_expiration_renew_month": "Renouvelés dans un mois", + "billing_autorenew_service_actions": "Actions", + + "billing_autorenew_criterion_serviceType": "Service", + "billing_autorenew_criterion_status": "Statut", + "billing_autorenew_criterion_state": "Disponibilité", + "billing_autorenew_criterion_expiration": "Date d'effet", + "billing_autorenew_nic_all": "Tous", + + "autorenew_service_deleteAtExpiration_banner": "La résiliation à l’expiration du service « {{ serviceName }} » a bien été prise en compte. Vous pouvez annuler cette opération jusqu’à 24 heures avant expiration du service.", + "autorenew_service_deleteAtExpiration_banner_cancel": "Annuler la resiliation à l’expiration", + + "billing_autorenew_service": "Service", + "billing_autorenew_service_name": "Nom du service", + "billing_autorenew_service_state_EXPIRED": "Suspendu", + "billing_autorenew_service_state_UP": "Actif", + + "billing_autorenew_service_state_IN_CREATION": "En cours de création", + "billing_autorenew_service_state_OK": "Payé", + "billing_autorenew_service_state_UN_PAID": "Non payé", + "billing_autorenew_service_date": "Date d'effet", + "billing_autorenew_service_date_now": "Immédiatement", + "billing_autorenew_service_date_before": "Avant le {{ date }}", + "billing_autorenew_service_date_renew": "Le {{ date }}", + "billing_autorenew_service_expiration_date": "Expire le", + + "autorenew_service_after_expiration_date": "Expiré le", + "autorenew_service_renew_auto": "Automatique", + "autorenew_service_renew_manuel": "Manuel", + "autorenew_service_renew_delete_at_expiration": "Résiliation à l'expiration", + "autorenew_service_renew_year": "Automatique : tous les ans", + "autorenew_service_renew_month": "Automatique : tous les mois", + "autorenew_service_renew_3months": "Trimestriel", + "autorenew_service_renew_6months": "Semestriel", + "autorenew_service_renew_frequency_value": "Automatique : tous les {{t0}} mois", + "autorenew_service_renew_years_frequency_value": "Automatique : tous les {{t0}} ans", + "autorenew_service_renew_paid": "Payé", + + "autorenew_empty": "Vous n'avez aucun service", + "autorenew_service_action_title": "Actions", + "autorenew_service_autorenew_day": "Jour de renouvellement automatique:", + "autorenew_service_autorenew_day_tooltip": "Si vous avez des services en renouvellement automatique, vous pouvez choisir leur jour de renouvellement", + "autorenew_service_autorenew_day_tooltip_autorenew_2016": "Si vous avez des services en renouvellement automatique, vous pouvez choisir leur jour de renouvellement (option non compatible avec les produits Bare Metal et VPS dont la date de renouvellement est définie au 1er du mois par défaut pour cette catégorie de produit).", + "autorenew_service_select_intro": "Sélectionner tous :", + "billing_autorenew_service_type_ALL": "Tous les services", + "billing_autorenew_service_type_ALL_DOM": "Pack AllDom", + "billing_autorenew_service_type_CDN_DEDICATED": "CDN Dédié", + "billing_autorenew_service_type_CDN_WEBSITE": "CDN Site web", + "billing_autorenew_service_type_CDN_WEBSTORAGE": "CDN WebStorage", + "billing_autorenew_service_type_CLUSTER_HADOOP": "Cluster Hadoop", + "billing_autorenew_service_type_DEDICATED_NAS": "Dedicated Nas", + "billing_autorenew_service_type_DEDICATED_NASHA": "Dedicated NasHa", + "billing_autorenew_service_autorenew_contact_filter": "Choisissez votre contact de facturation", + "billing_autorenew_service_autorenew_contact_filter_all": "Tous", + "billing_autorenew_service_autorenew_filter": "Filtres", + "billing_autorenew_service_type_DEDICATED_SERVER": "Serveur Dédié", + "billing_autorenew_service_type_DEDICATED_CLUSTER": "Région 3-AZ", + "billing_autorenew_service_type_dedicated_server": "Serveur Dédié", + "billing_autorenew_service_type_DEDICATED_HOUSING": "Serveur Housing", + "billing_autorenew_service_type_DEDICATED_CLOUD": "Managed VMware vSphere", + "billing_autorenew_service_type_ESSENTIALS": "Managed Bare Metal", + "billing_autorenew_service_type_DOMAIN": "Domaine", + "billing_autorenew_service_type_ENTERPRISE_CLOUD_DATABASE": "Enterprise Cloud Databases", + "billing_autorenew_service_type_HOSTING_PRIVATE_DATABASE": "Hébergement base SQL privée", + "billing_autorenew_service_type_HOSTING_WEB": "Hébergement web", + "billing_autorenew_service_type_IP_LOADBALANCING": "Ip Load Balancing", + "billing_autorenew_service_type_IP_LOADBALANCER": "Ip Load Balancer", + "billing_autorenew_service_type_LICENCE_CLOUD_LINUX": "Licence CloudLinux", + "billing_autorenew_service_type_LICENCE_CPANEL": "Licence_cPanel", + "billing_autorenew_service_type_LICENCE_DIRECT_ADMIN": "Licence DirectAdmin", + "billing_autorenew_service_type_LICENCE_PLESK": "Licence Plesk", + "billing_autorenew_service_type_LICENCE_SQL_SERVER": "Licence SQL Server", + "billing_autorenew_service_type_LICENCE_OFFICE": "Licence Office 365", + "billing_autorenew_service_type_LICENCE_VIRTUOZZO": "Licence Virtuozzo", + "billing_autorenew_service_type_LICENCE_WINDOWS": "Licence Windows", + "billing_autorenew_service_type_LICENCE_WORKLIGHT": "Licence Worklight", + "billing_autorenew_service_type_XDSL": "Ligne xDSL", + "billing_autorenew_service_type_OVER_THE_BOX": "OverTheBox", + "billing_autorenew_service_type_PACK": "Pack xDSL", + "billing_autorenew_service_type_ROUTER": "Router", + "billing_autorenew_service_type_TELEPHONY": "Téléphonie", + "billing_autorenew_service_type_EXCHANGE": "Exchange", + "billing_autorenew_service_type_EMAIL_EXCHANGE": "Exchange", + "billing_autorenew_service_type_SMS": "SMS", + "billing_autorenew_service_type_VPS": "Serveurs privés virtuels", + "billing_autorenew_service_type_MIS": "Infrastructure managée", + "billing_autorenew_service_type_HOSTING_RESELLER": "Revendeur d'hébergement", + "billing_autorenew_service_type_EMAIL_DOMAIN": "MX Plan", + "billing_autorenew_service_type_EMAIL_PRO": "E-mail Pro", + "billing_autorenew_service_type_VIP": "VIP", + "billing_autorenew_service_type_CAAS_CONTAINERS": "CaaS Containers", + "billing_autorenew_service_type_CAAS_REGISTRY": "CaaS Registry", + "billing_autorenew_service_type_DBAAS_QUEUE": "DBaaS Queue", + "billing_autorenew_service_type_DBAAS_LOGS": "Logs Data Platform", + "billing_autorenew_service_type_DEDICATED_CEPH": "Ceph as a Service", + "billing_autorenew_service_type_DESKAAS": "Cloud Desktop", + "billing_autorenew_service_type_HORIZONVIEW": "Cloud Desktop Infrastructure", + "billing_autorenew_service_type_PAAS_DATABASE": "PaaS Database", + "billing_autorenew_service_type_PAAS_MONITORING": "PaaS Monitoring", + "billing_autorenew_service_type_SAAS_CSP2": "Office 365 Revendeur", + "billing_autorenew_service_type_SAAS_CSP_2": "Office 365 Revendeur", + "billing_autorenew_service_type_SSL_GATEWAY": "SSL Gateway", + "billing_autorenew_service_type_SHAREPOINT": "Sharepoint", + "billing_autorenew_service_type_VEEAM_CLOUD_CONNECT": "Veeam Cloud Connect", + "billing_autorenew_service_type_VEEAM_ENTERPRISE": "Veeam Enterprise", + "billing_autorenew_service_type_VMWARE_CLOUD_DIRECTOR_ORGANIZATION": "Managed VCD", + "billing_autorenew_service_type_METRICS": "Metrics", + "billing_autorenew_service_type_kube": "Kubernetes", + "billing_autorenew_service_type_WEBCOACH": "WebCoach", + "billing_autorenew_service_type_webcoach": "WebCoach", + "billing_autorenew_service_type_OVH_CLOUD_CONNECT": "OVHcloud Connect", + "billing_autorenew_service_type_WEB_PAAS": "Web PaaS", + "billing_autorenew_service_type_NETAPP": "Enterprise File Storage", + "billing_autorenew_service_type_CLOUD_PROJECT": "Projets PCI", + "billing_autorenew_service_type_CLOUD_DB_ENTERPRISE_CLUSTER": "Enterprise Cloud Database", + "billing_autorenew_service_type_DOMAIN_ZONE": "Zones DNS", + "billing_autorenew_service_type_EMAIL_EXCHANGE_SERVICE": "Microsoft Exchange", + "billing_autorenew_service_type_FREEFAX": "Fax", + "billing_autorenew_service_type_IP_SERVICE": "IP", + "billing_autorenew_service_type_LICENCE": "Licences", + "billing_autorenew_service_type_LICENSE_WINDOWS": "Licences Windows", + "billing_autorenew_service_type_LICENSE_OFFICE": "Licences Office 365", + "billing_autorenew_service_type_LICENSE_CLOUD_LINUX": "Licences CloudLinux", + "billing_autorenew_service_type_LICENSE_CPANEL": "Licences cPanel", + "billing_autorenew_service_type_LICENSE_PLESK": "Licences Plesk", + "billing_autorenew_service_type_LICENSE_DIRECTADMIN": "Licences DirectAdmin", + "billing_autorenew_service_type_LICENSE_VIRTUOZZO": "Licences Virtuozzo", + "billing_autorenew_service_type_LICENSE_WORKLIGHT": "Licences Worklight", + "billing_autorenew_service_type_LICENSE_SQLSERVER": "Licences SQL Server", + "billing_autorenew_service_type_LICENCE_SQLSERVER": "Licences SQL Server", + "billing_autorenew_service_type_LICENSE_OFFICE_PREPAID": "Licences Office 365", + "billing_autorenew_service_type_LICENSE_HYCU": "HYCU", + "billing_autorenew_service_type_MS_SERVICES_SHAREPOINT": "Microsoft SharePoint", + "billing_autorenew_service_type_PACK_XDSL": "Packs xDSL", + "billing_autorenew_service_type_VRACK": "vRacks", + "billing_autorenew_service_type_VRACK_SERVICES_RESOURCE": "vRack Services", + "billing_autorenew_service_type_NUTANIX": "Nutanix", + "billing_autorenew_service_type_OKMS_RESOURCE": "OVHcloud KMS", + "billing_export_csv": "Exporter en CSV", + "billing_common_link_new_window": "(nouvelle fenêtre)", + "billing_autorenew_renew_action": "Renouveler", + "billing_autorenew_service_renew_requires_mean_and_date": "Afin de finaliser l'activation du renouvellement automatique, veuillez ajouter un moyen de paiement et ensuite il vous sera possible de sélectionner votre date de prélèvement.", + "billing_autorenew_service_activate_alert": "Vous avez au moins un service en renouvellement automatique mais vous n'avez pas encore autorisé cette option.", + "billing_autorenew_service_activate_alert_renew2016": "Ce message ne concerne pas les services Bare Metal et VPS." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..b905a258f263 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_fr_FR.json @@ -0,0 +1,165 @@ +{ + "billing_title": "Mes services", + "billing_description": "Gérez le renouvellement de vos services. Consultez leur statut ainsi que vos contrats.", + "billing_home_title": "Accueil", + "billing_agreements_title": "Contrats", + "billing_ssh_title": "Clés SSH", + "billing_autorenew_service_disable_autorenew": "Désactiver le paiement automatique", + "billing_autorenew_service_align_renew": "Aligner les dates de renouvellement", + "billing_autorenew_service_enable_autorenew": "Activer le paiement automatique", + "billing_autorenew_service_disable_all_dom": "Désactiver le renouvellement automatique pour tous les domaines", + "billing_autorenew_service_status": "Statut", + "billing_autorenew_service_status_auto": "Renouvellement automatique", + "billing_autorenew_service_status_automatic": "Renouvellement automatique", + "billing_autorenew_service_status_manual": "Renouvellement manuel", + "billing_autorenew_service_status_manualPayment": "Renouvellement manuel", + "billing_autorenew_service_status_pending_debt": "Facture à régler", + "billing_autorenew_service_status_delete_at_expiration": "Résiliation demandée", + "billing_autorenew_service_status_expired": "Résilié", + "billing_autorenew_service_expiration_weeks": "Expirant dans une semaine", + "billing_autorenew_service_expiration_months": "Expirant dans un mois", + "billing_autorenew_service_expiration_renew_month": "Renouvelés dans un mois", + "billing_autorenew_service_actions": "Actions", + + "billing_autorenew_criterion_serviceType": "Service", + "billing_autorenew_criterion_status": "Statut", + "billing_autorenew_criterion_state": "Disponibilité", + "billing_autorenew_criterion_expiration": "Date d'effet", + "billing_autorenew_nic_all": "Tous", + + "autorenew_service_deleteAtExpiration_banner": "La résiliation à l’expiration du service « {{ serviceName }} » a bien été prise en compte. Vous pouvez annuler cette opération jusqu’à 24 heures avant expiration du service.", + "autorenew_service_deleteAtExpiration_banner_cancel": "Annuler la resiliation à l’expiration", + + "billing_autorenew_service": "Service", + "billing_autorenew_service_name": "Nom du service", + "billing_autorenew_service_state_EXPIRED": "Suspendu", + "billing_autorenew_service_state_UP": "Actif", + + "billing_autorenew_service_state_IN_CREATION": "En cours de création", + "billing_autorenew_service_state_OK": "Payé", + "billing_autorenew_service_state_UN_PAID": "Non payé", + "billing_autorenew_service_date": "Date d'effet", + "billing_autorenew_service_date_now": "Immédiatement", + "billing_autorenew_service_date_before": "Avant le {{ date }}", + "billing_autorenew_service_date_renew": "Le {{ date }}", + "billing_autorenew_service_expiration_date": "Expire le", + + "autorenew_service_after_expiration_date": "Expiré le", + "autorenew_service_renew_auto": "Automatique", + "autorenew_service_renew_manuel": "Manuel", + "autorenew_service_renew_delete_at_expiration": "Résiliation à l'expiration", + "autorenew_service_renew_year": "Automatique : tous les ans", + "autorenew_service_renew_month": "Automatique : tous les mois", + "autorenew_service_renew_3months": "Trimestriel", + "autorenew_service_renew_6months": "Semestriel", + "autorenew_service_renew_frequency_value": "Automatique : tous les {{t0}} mois", + "autorenew_service_renew_years_frequency_value": "Automatique : tous les {{t0}} ans", + "autorenew_service_renew_paid": "Payé", + + "autorenew_empty": "Vous n'avez aucun service", + "autorenew_service_action_title": "Actions", + "autorenew_service_autorenew_day": "Jour de renouvellement automatique:", + "autorenew_service_autorenew_day_tooltip": "Si vous avez des services en renouvellement automatique, vous pouvez choisir leur jour de renouvellement", + "autorenew_service_autorenew_day_tooltip_autorenew_2016": "Si vous avez des services en renouvellement automatique, vous pouvez choisir leur jour de renouvellement (option non compatible avec les produits Bare Metal et VPS dont la date de renouvellement est définie au 1er du mois par défaut pour cette catégorie de produit).", + "autorenew_service_select_intro": "Sélectionner tous :", + "billing_autorenew_service_type_ALL": "Tous les services", + "billing_autorenew_service_type_ALL_DOM": "Pack AllDom", + "billing_autorenew_service_type_CDN_DEDICATED": "CDN Dédié", + "billing_autorenew_service_type_CDN_WEBSITE": "CDN Site web", + "billing_autorenew_service_type_CDN_WEBSTORAGE": "CDN WebStorage", + "billing_autorenew_service_type_CLUSTER_HADOOP": "Cluster Hadoop", + "billing_autorenew_service_type_DEDICATED_NAS": "Dedicated Nas", + "billing_autorenew_service_type_DEDICATED_NASHA": "Dedicated NasHa", + "billing_autorenew_service_autorenew_contact_filter": "Choisissez votre contact de facturation", + "billing_autorenew_service_autorenew_contact_filter_all": "Tous", + "billing_autorenew_service_autorenew_filter": "Filtres", + "billing_autorenew_service_type_DEDICATED_SERVER": "Serveur Dédié", + "billing_autorenew_service_type_DEDICATED_CLUSTER": "Région 3-AZ", + "billing_autorenew_service_type_dedicated_server": "Serveur Dédié", + "billing_autorenew_service_type_DEDICATED_HOUSING": "Serveur Housing", + "billing_autorenew_service_type_DEDICATED_CLOUD": "Managed VMware vSphere", + "billing_autorenew_service_type_ESSENTIALS": "Managed Bare Metal", + "billing_autorenew_service_type_DOMAIN": "Domaine", + "billing_autorenew_service_type_ENTERPRISE_CLOUD_DATABASE": "Enterprise Cloud Databases", + "billing_autorenew_service_type_HOSTING_PRIVATE_DATABASE": "Hébergement base SQL privée", + "billing_autorenew_service_type_HOSTING_WEB": "Hébergement web", + "billing_autorenew_service_type_IP_LOADBALANCING": "Ip Load Balancing", + "billing_autorenew_service_type_IP_LOADBALANCER": "Ip Load Balancer", + "billing_autorenew_service_type_LICENCE_CLOUD_LINUX": "Licence CloudLinux", + "billing_autorenew_service_type_LICENCE_CPANEL": "Licence_cPanel", + "billing_autorenew_service_type_LICENCE_DIRECT_ADMIN": "Licence DirectAdmin", + "billing_autorenew_service_type_LICENCE_PLESK": "Licence Plesk", + "billing_autorenew_service_type_LICENCE_SQL_SERVER": "Licence SQL Server", + "billing_autorenew_service_type_LICENCE_OFFICE": "Licence Office 365", + "billing_autorenew_service_type_LICENCE_VIRTUOZZO": "Licence Virtuozzo", + "billing_autorenew_service_type_LICENCE_WINDOWS": "Licence Windows", + "billing_autorenew_service_type_LICENCE_WORKLIGHT": "Licence Worklight", + "billing_autorenew_service_type_XDSL": "Ligne xDSL", + "billing_autorenew_service_type_OVER_THE_BOX": "OverTheBox", + "billing_autorenew_service_type_PACK": "Pack xDSL", + "billing_autorenew_service_type_ROUTER": "Router", + "billing_autorenew_service_type_TELEPHONY": "Téléphonie", + "billing_autorenew_service_type_EXCHANGE": "Exchange", + "billing_autorenew_service_type_EMAIL_EXCHANGE": "Exchange", + "billing_autorenew_service_type_SMS": "SMS", + "billing_autorenew_service_type_VPS": "Serveurs privés virtuels", + "billing_autorenew_service_type_MIS": "Infrastructure managée", + "billing_autorenew_service_type_HOSTING_RESELLER": "Revendeur d'hébergement", + "billing_autorenew_service_type_EMAIL_DOMAIN": "MX Plan", + "billing_autorenew_service_type_EMAIL_PRO": "E-mail Pro", + "billing_autorenew_service_type_VIP": "VIP", + "billing_autorenew_service_type_CAAS_CONTAINERS": "CaaS Containers", + "billing_autorenew_service_type_CAAS_REGISTRY": "CaaS Registry", + "billing_autorenew_service_type_DBAAS_QUEUE": "DBaaS Queue", + "billing_autorenew_service_type_DBAAS_LOGS": "Logs Data Platform", + "billing_autorenew_service_type_DEDICATED_CEPH": "Ceph as a Service", + "billing_autorenew_service_type_DESKAAS": "Cloud Desktop", + "billing_autorenew_service_type_HORIZONVIEW": "Cloud Desktop Infrastructure", + "billing_autorenew_service_type_PAAS_DATABASE": "PaaS Database", + "billing_autorenew_service_type_PAAS_MONITORING": "PaaS Monitoring", + "billing_autorenew_service_type_SAAS_CSP2": "Office 365 Revendeur", + "billing_autorenew_service_type_SAAS_CSP_2": "Office 365 Revendeur", + "billing_autorenew_service_type_SSL_GATEWAY": "SSL Gateway", + "billing_autorenew_service_type_SHAREPOINT": "Sharepoint", + "billing_autorenew_service_type_VEEAM_CLOUD_CONNECT": "Veeam Cloud Connect", + "billing_autorenew_service_type_VEEAM_ENTERPRISE": "Veeam Enterprise", + "billing_autorenew_service_type_VMWARE_CLOUD_DIRECTOR_ORGANIZATION": "Managed VCD", + "billing_autorenew_service_type_METRICS": "Metrics", + "billing_autorenew_service_type_kube": "Kubernetes", + "billing_autorenew_service_type_WEBCOACH": "WebCoach", + "billing_autorenew_service_type_webcoach": "WebCoach", + "billing_autorenew_service_type_OVH_CLOUD_CONNECT": "OVHcloud Connect", + "billing_autorenew_service_type_WEB_PAAS": "Web PaaS", + "billing_autorenew_service_type_NETAPP": "Enterprise File Storage", + "billing_autorenew_service_type_CLOUD_PROJECT": "Projets PCI", + "billing_autorenew_service_type_CLOUD_DB_ENTERPRISE_CLUSTER": "Enterprise Cloud Database", + "billing_autorenew_service_type_DOMAIN_ZONE": "Zones DNS", + "billing_autorenew_service_type_EMAIL_EXCHANGE_SERVICE": "Microsoft Exchange", + "billing_autorenew_service_type_FREEFAX": "Fax", + "billing_autorenew_service_type_IP_SERVICE": "IP", + "billing_autorenew_service_type_LICENCE": "Licences", + "billing_autorenew_service_type_LICENSE_WINDOWS": "Licences Windows", + "billing_autorenew_service_type_LICENSE_OFFICE": "Licences Office 365", + "billing_autorenew_service_type_LICENSE_CLOUD_LINUX": "Licences CloudLinux", + "billing_autorenew_service_type_LICENSE_CPANEL": "Licences cPanel", + "billing_autorenew_service_type_LICENSE_PLESK": "Licences Plesk", + "billing_autorenew_service_type_LICENSE_DIRECTADMIN": "Licences DirectAdmin", + "billing_autorenew_service_type_LICENSE_VIRTUOZZO": "Licences Virtuozzo", + "billing_autorenew_service_type_LICENSE_WORKLIGHT": "Licences Worklight", + "billing_autorenew_service_type_LICENSE_SQLSERVER": "Licences SQL Server", + "billing_autorenew_service_type_LICENCE_SQLSERVER": "Licences SQL Server", + "billing_autorenew_service_type_LICENSE_OFFICE_PREPAID": "Licences Office 365", + "billing_autorenew_service_type_LICENSE_HYCU": "HYCU", + "billing_autorenew_service_type_MS_SERVICES_SHAREPOINT": "Microsoft SharePoint", + "billing_autorenew_service_type_PACK_XDSL": "Packs xDSL", + "billing_autorenew_service_type_VRACK": "vRacks", + "billing_autorenew_service_type_VRACK_SERVICES_RESOURCE": "vRack Services", + "billing_autorenew_service_type_NUTANIX": "Nutanix", + "billing_autorenew_service_type_OKMS_RESOURCE": "OVHcloud KMS", + "billing_export_csv": "Exporter en CSV", + "billing_common_link_new_window": "(nouvelle fenêtre)", + "billing_autorenew_renew_action": "Renouveler", + "billing_autorenew_service_renew_requires_mean_and_date": "Afin de finaliser l'activation du renouvellement automatique, veuillez ajouter un moyen de paiement et ensuite il vous sera possible de sélectionner votre date de prélèvement.", + "billing_autorenew_service_activate_alert": "Vous avez au moins un service en renouvellement automatique mais vous n'avez pas encore autorisé cette option.", + "billing_autorenew_service_activate_alert_renew2016": "Ce message ne concerne pas les services Bare Metal et VPS." +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_it_IT.json new file mode 100644 index 000000000000..933306f6d7ae --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_it_IT.json @@ -0,0 +1,159 @@ +{ + "billing_title": "I tuoi servizi", + "billing_description": "Gestisci il rinnovo delle tue soluzioni. Consulta lo stato dei servizi e i tuoi contratti.", + "billing_home_title": "Home page", + "billing_agreements_title": "Contratti", + "billing_ssh_title": "Chiavi SSH", + "billing_autorenew_service_disable_autorenew": "Disattiva il pagamento automatico", + "billing_autorenew_service_align_renew": "Allinea le date di rinnovo.", + "billing_autorenew_service_enable_autorenew": "Attiva il pagamento automatico", + "billing_autorenew_service_disable_all_dom": "Disattiva il rinnovo automatico per tutti i domini", + "billing_autorenew_service_status": "Stato", + "billing_autorenew_service_status_auto": "Rinnovo automatico", + "billing_autorenew_service_status_automatic": "Rinnovo automatico", + "billing_autorenew_service_status_manual": "Rinnovo manuale", + "billing_autorenew_service_status_manualPayment": "Rinnovo manuale", + "billing_autorenew_service_status_pending_debt": "Fatture da pagare", + "billing_autorenew_service_status_delete_at_expiration": "Disattivazione richiesta", + "billing_autorenew_service_status_expired": "Disattivato", + "billing_autorenew_service_expiration_weeks": "In scadenza tra una settimana", + "billing_autorenew_service_expiration_months": "In scadenza tra un mese", + "billing_autorenew_service_expiration_renew_month": "Rinnovati tra un mese", + "billing_autorenew_service_actions": "Azioni", + "billing_autorenew_criterion_serviceType": "Servizio", + "billing_autorenew_criterion_status": "Stato", + "billing_autorenew_criterion_state": "Disponibilità", + "billing_autorenew_criterion_expiration": "Data di entrata in vigore", + "billing_autorenew_nic_all": "Tutti", + "autorenew_service_deleteAtExpiration_banner": "La disattivazione del servizio {{ serviceName }} alla scadenza è stata presa in carico. È possibile annullare l'operazione entro 24 ore prima della data di scadenza.", + "autorenew_service_deleteAtExpiration_banner_cancel": "Annulla la disattivazione del servizio alla data di scadenza", + "billing_autorenew_service": "Servizio", + "billing_autorenew_service_name": "Nome del servizio", + "billing_autorenew_service_state_EXPIRED": "Sospeso", + "billing_autorenew_service_state_UP": "Attivo", + "billing_autorenew_service_state_IN_CREATION": "In corso di creazione", + "billing_autorenew_service_state_OK": "Pagato", + "billing_autorenew_service_state_UN_PAID": "Non pagato ", + "billing_autorenew_service_date": "Data di entrata in vigore", + "billing_autorenew_service_date_now": "Immediatamente", + "billing_autorenew_service_date_before": "Prima del {{ date }}", + "billing_autorenew_service_date_renew": "Il {{ date }}", + "billing_autorenew_service_expiration_date": "Scade il", + "autorenew_service_after_expiration_date": "Scaduto il ", + "autorenew_service_renew_auto": "Automatico", + "autorenew_service_renew_manuel": "Manuale", + "autorenew_service_renew_delete_at_expiration": "Disattiva alla scadenza", + "autorenew_service_renew_year": "Automatico: tutti gli anni", + "autorenew_service_renew_month": "Automatico: tutti i mesi", + "autorenew_service_renew_3months": "Trimestrale", + "autorenew_service_renew_6months": "Semestrale", + "autorenew_service_renew_frequency_value": "Automatico: ogni {{t0}} mesi", + "autorenew_service_renew_years_frequency_value": "Automatico: ogni {{t0}} anni", + "autorenew_service_renew_paid": "Pagato", + "autorenew_empty": "Non hai servizi ", + "autorenew_service_action_title": "Azioni", + "autorenew_service_autorenew_day": "Giorno del rinnovo automatico:", + "autorenew_service_autorenew_day_tooltip": "Se hai impostato il rinnovo automatico sui tuoi servizi, è possibile scegliere il giorno di rinnovo", + "autorenew_service_select_intro": "Seleziona tutto:", + "billing_autorenew_service_type_ALL": "Tutti i servizi", + "billing_autorenew_service_type_ALL_DOM": "Pack AllDom", + "billing_autorenew_service_type_CDN_DEDICATED": "CDN Dedicata ", + "billing_autorenew_service_type_CDN_WEBSITE": "CDN Website ", + "billing_autorenew_service_type_CDN_WEBSTORAGE": "CDN WebStorage", + "billing_autorenew_service_type_CLUSTER_HADOOP": "Cluster Hadoop", + "billing_autorenew_service_type_DEDICATED_NAS": "Dedicated NAS", + "billing_autorenew_service_type_DEDICATED_NASHA": "Dedicated NAS HA", + "billing_autorenew_service_autorenew_contact_filter": "Scegli il tuo contatto di fatturazione", + "billing_autorenew_service_autorenew_contact_filter_all": "Tutti", + "billing_autorenew_service_autorenew_filter": "Filtri", + "billing_autorenew_service_type_DEDICATED_SERVER": "Server dedicati", + "billing_autorenew_service_type_dedicated_server": "Server dedicati", + "billing_autorenew_service_type_DEDICATED_HOUSING": "Server in housing", + "billing_autorenew_service_type_DEDICATED_CLOUD": "Managed VMware vSphere", + "billing_autorenew_service_type_ESSENTIALS": "Managed Bare Metal", + "billing_autorenew_service_type_DOMAIN": "Domini", + "billing_autorenew_service_type_ENTERPRISE_CLOUD_DATABASE": "Enterprise Cloud Databases", + "billing_autorenew_service_type_HOSTING_PRIVATE_DATABASE": "Hosting database SQL Privato", + "billing_autorenew_service_type_HOSTING_WEB": "Hosting Web", + "billing_autorenew_service_type_IP_LOADBALANCING": "IP Load Balancing", + "billing_autorenew_service_type_IP_LOADBALANCER": "IP Load Balancer", + "billing_autorenew_service_type_LICENCE_CLOUD_LINUX": "Licenza Cloud Linux", + "billing_autorenew_service_type_LICENCE_CPANEL": "Licenza cPanel", + "billing_autorenew_service_type_LICENCE_DIRECT_ADMIN": "Licenza DirectAdmin", + "billing_autorenew_service_type_LICENCE_PLESK": "Licenza Plesk", + "billing_autorenew_service_type_LICENCE_SQL_SERVER": "Licenza SQL Server", + "billing_autorenew_service_type_LICENCE_OFFICE": "Licenza Office 365", + "billing_autorenew_service_type_LICENCE_VIRTUOZZO": "Licenza Virtuozzo", + "billing_autorenew_service_type_LICENCE_WINDOWS": "Licenza Windows", + "billing_autorenew_service_type_LICENCE_WORKLIGHT": "Licenza Worklight", + "billing_autorenew_service_type_XDSL": "Linea xDSL", + "billing_autorenew_service_type_OVER_THE_BOX": "OverTheBox", + "billing_autorenew_service_type_PACK": "Pack xDSL", + "billing_autorenew_service_type_ROUTER": "Router", + "billing_autorenew_service_type_TELEPHONY": "Telefonia", + "billing_autorenew_service_type_EXCHANGE": "Exchange", + "billing_autorenew_service_type_EMAIL_EXCHANGE": "Exchange", + "billing_autorenew_service_type_SMS": "SMS", + "billing_autorenew_service_type_VPS": "Server Privati Virtuali", + "billing_autorenew_service_type_MIS": "Infrastruttura gestita", + "billing_autorenew_service_type_HOSTING_RESELLER": "Hosting Reseller", + "billing_autorenew_service_type_EMAIL_DOMAIN": "MX Plan", + "billing_autorenew_service_type_EMAIL_PRO": "Email Pro", + "billing_autorenew_service_type_VIP": "VIP", + "billing_autorenew_service_type_CAAS_CONTAINERS": "CaaS Container", + "billing_autorenew_service_type_CAAS_REGISTRY": "CaaS Registry", + "billing_autorenew_service_type_DBAAS_QUEUE": "DBaaS Queue", + "billing_autorenew_service_type_DBAAS_LOGS": "Logs Data Platform", + "billing_autorenew_service_type_DEDICATED_CEPH": "Ceph as a Service", + "billing_autorenew_service_type_DESKAAS": "Cloud Desktop", + "billing_autorenew_service_type_HORIZONVIEW": "Cloud Desktop Infrastructure", + "billing_autorenew_service_type_PAAS_DATABASE": "PaaS Database", + "billing_autorenew_service_type_PAAS_MONITORING": "PaaS Monitoring", + "billing_autorenew_service_type_SAAS_CSP2": "Office 365 Reseller", + "billing_autorenew_service_type_SAAS_CSP_2": "Office 365 Reseller", + "billing_autorenew_service_type_SSL_GATEWAY": "SSL Gateway", + "billing_autorenew_service_type_SHAREPOINT": "SharePoint", + "billing_autorenew_service_type_VEEAM_CLOUD_CONNECT": "Veeam Cloud Connect", + "billing_autorenew_service_type_VEEAM_ENTERPRISE": "Veeam Enterprise", + "billing_autorenew_service_type_METRICS": "Metrics", + "billing_autorenew_service_type_kube": "Kubernetes", + "billing_autorenew_service_type_WEBCOACH": "WebCoach", + "billing_autorenew_service_type_webcoach": "WebCoach", + "billing_autorenew_service_type_OVH_CLOUD_CONNECT": "OVHcloud Connect", + "billing_autorenew_service_type_WEB_PAAS": "Web PaaS", + "billing_autorenew_service_type_NETAPP": "Enterprise File Storage", + "billing_autorenew_service_type_CLOUD_PROJECT": "Progetti PCI", + "billing_autorenew_service_type_CLOUD_DB_ENTERPRISE_CLUSTER": "Enterprise Cloud Databases", + "billing_autorenew_service_type_DOMAIN_ZONE": "Zone DNS", + "billing_autorenew_service_type_EMAIL_EXCHANGE_SERVICE": "Microsoft Exchange", + "billing_autorenew_service_type_FREEFAX": "Fax", + "billing_autorenew_service_type_IP_SERVICE": "IP", + "billing_autorenew_service_type_LICENCE": "Licenze", + "billing_autorenew_service_type_LICENSE_WINDOWS": "Licenze Windows", + "billing_autorenew_service_type_LICENSE_OFFICE": "Licenze Office 365", + "billing_autorenew_service_type_LICENSE_CLOUD_LINUX": "Licenze CloudLinux", + "billing_autorenew_service_type_LICENSE_CPANEL": "Licenze cPanel", + "billing_autorenew_service_type_LICENSE_PLESK": "Licenze Plesk", + "billing_autorenew_service_type_LICENSE_DIRECTADMIN": "Licenze DirectAdmin", + "billing_autorenew_service_type_LICENSE_VIRTUOZZO": "Licenze Virtuozzo", + "billing_autorenew_service_type_LICENSE_WORKLIGHT": "Licenze Worklight", + "billing_autorenew_service_type_LICENSE_SQLSERVER": "Licenze SQL Server", + "billing_autorenew_service_type_LICENCE_SQLSERVER": "Licenze SQL Server", + "billing_autorenew_service_type_LICENSE_OFFICE_PREPAID": "Licenze Office 365", + "billing_autorenew_service_type_MS_SERVICES_SHAREPOINT": "Microsoft SharePoint", + "billing_autorenew_service_type_PACK_XDSL": "Pack xDSL", + "billing_autorenew_service_type_VRACK": "vRack", + "billing_autorenew_service_type_NUTANIX": "Nutanix", + "billing_export_csv": "Esporta in CSV", + "billing_common_link_new_window": "(nuova finestra)", + "billing_autorenew_renew_action": "Rinnova", + "billing_autorenew_service_renew_requires_mean_and_date": "Per completare l'attivazione del rinnovo automatico, aggiungi una modalità di pagamento. In seguito sarà possibile selezionare la data di addebito.", + "billing_autorenew_service_activate_alert": "Il rinnovo automatico è impostato su almeno uno dei tuoi servizi ma non hai ancora autorizzato questa opzione.", + "autorenew_service_autorenew_day_tooltip_autorenew_2016": "Per i servizi con rinnovo automatico, è possibile scegliere il giorno di rinnovo (opzione non compatibile con i prodotti Bare Metal e VPS: per questa categoria di prodotti la data di rinnovo è definita di default al 1° del mese).", + "billing_autorenew_service_activate_alert_renew2016": "Questo messaggio non si applica ai servizi Bare Metal e VPS.", + "billing_autorenew_service_type_DEDICATED_CLUSTER": "Region 3-AZ", + "billing_autorenew_service_type_OKMS_RESOURCE": "OVHcloud KMS", + "billing_autorenew_service_type_VRACK_SERVICES_RESOURCE": "vRack Services", + "billing_autorenew_service_type_VMWARE_CLOUD_DIRECTOR_ORGANIZATION": "Managed VCD", + "billing_autorenew_service_type_LICENSE_HYCU": "HYCU" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..d7541329680a --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_pl_PL.json @@ -0,0 +1,159 @@ +{ + "billing_title": "Moje usługi", + "billing_description": "Zarządzaj odnawianiem usług. Sprawdź ich status oraz umowy.", + "billing_home_title": "Strona główna", + "billing_agreements_title": "Regulaminy", + "billing_ssh_title": "Klucze SSH", + "billing_autorenew_service_disable_autorenew": "Wyłącz płatność automatyczną", + "billing_autorenew_service_align_renew": "Wyrównanie dat odnowienia", + "billing_autorenew_service_enable_autorenew": "Włącz płatność automatyczną", + "billing_autorenew_service_disable_all_dom": "Wyłącz automatyczne odnawianie dla wszystkich domen", + "billing_autorenew_service_status": "Status", + "billing_autorenew_service_status_auto": "Automatyczne odnowienie", + "billing_autorenew_service_status_automatic": "Automatyczne odnowienie", + "billing_autorenew_service_status_manual": "Odnowienie ręczne", + "billing_autorenew_service_status_manualPayment": "Odnowienie ręczne", + "billing_autorenew_service_status_pending_debt": "Płatność do uregulowania", + "billing_autorenew_service_status_delete_at_expiration": "Złożona rezygnacja", + "billing_autorenew_service_status_expired": "Anulowany", + "billing_autorenew_service_expiration_weeks": "Usługi wygasające w ciągu tygodnia", + "billing_autorenew_service_expiration_months": "Usługi wygasające w ciągu miesiąca", + "billing_autorenew_service_expiration_renew_month": "Odnowienie za miesiąc", + "billing_autorenew_service_actions": "Operacje", + "billing_autorenew_criterion_serviceType": "Usługa", + "billing_autorenew_criterion_status": "Status", + "billing_autorenew_criterion_state": "Dostępność", + "billing_autorenew_criterion_expiration": "Data wejścia w życie", + "billing_autorenew_nic_all": "Wszystkie", + "autorenew_service_deleteAtExpiration_banner": "Zlecenie zakończenia usługi \"{{serviceName}}\" w dniu jej wygaśnięcia zostało zarejestrowane. Operację można anulować w terminie do 24 godzin przed wygaśnięciem usługi.", + "autorenew_service_deleteAtExpiration_banner_cancel": "Anuluj rezygnację z usługi", + "billing_autorenew_service": "Usługa", + "billing_autorenew_service_name": "Nazwa usługi", + "billing_autorenew_service_state_EXPIRED": "Zawieszony", + "billing_autorenew_service_state_UP": "Aktywny", + "billing_autorenew_service_state_IN_CREATION": "Trwa tworzenie...", + "billing_autorenew_service_state_OK": "Opłacone", + "billing_autorenew_service_state_UN_PAID": "Nie zapłacone", + "billing_autorenew_service_date": "Data wejścia w życie", + "billing_autorenew_service_date_now": "Natychmiast", + "billing_autorenew_service_date_before": "Przed {{date}}", + "billing_autorenew_service_date_renew": "Dnia {{date}}", + "billing_autorenew_service_expiration_date": "Data wygaśnięcia", + "autorenew_service_after_expiration_date": "Data wygaśnięcia:", + "autorenew_service_renew_auto": "Automatycznie", + "autorenew_service_renew_manuel": "Ręcznie", + "autorenew_service_renew_delete_at_expiration": "Rezygnacja z dniem wygaśnięcia", + "autorenew_service_renew_year": "Automatycznie: co roku", + "autorenew_service_renew_month": "Automatycznie: co miesiąc", + "autorenew_service_renew_3months": "Co 3 miesiące", + "autorenew_service_renew_6months": "Co 6 miesięcy", + "autorenew_service_renew_frequency_value": "Automatycznie: co miesiąc", + "autorenew_service_renew_years_frequency_value": "Automatycznie: co roku", + "autorenew_service_renew_paid": "Opłacone", + "autorenew_empty": "Nie masz żadnych usług", + "autorenew_service_action_title": "Operacje", + "autorenew_service_autorenew_day": "Dzień automatycznego odnawiania:", + "autorenew_service_autorenew_day_tooltip": "Jeśli wybrałeś dla usług opcję automatycznego odnowienia, możesz wybrać dla nich dzień odnowienia.", + "autorenew_service_select_intro": "Wybierz wszystko:", + "billing_autorenew_service_type_ALL": "Wszystkie usługi", + "billing_autorenew_service_type_ALL_DOM": "Pakiet AllDom", + "billing_autorenew_service_type_CDN_DEDICATED": "CDN dedykowany", + "billing_autorenew_service_type_CDN_WEBSITE": "CDN Website", + "billing_autorenew_service_type_CDN_WEBSTORAGE": "CDN WebStorage", + "billing_autorenew_service_type_CLUSTER_HADOOP": "Klaster Hadoop", + "billing_autorenew_service_type_DEDICATED_NAS": "Dedykowany NAS", + "billing_autorenew_service_type_DEDICATED_NASHA": "Dedykowany NAS HA", + "billing_autorenew_service_autorenew_contact_filter": "Wybierz kontakt księgowy", + "billing_autorenew_service_autorenew_contact_filter_all": "Wszystkie", + "billing_autorenew_service_autorenew_filter": "Filtry", + "billing_autorenew_service_type_DEDICATED_SERVER": "Serwer dedykowany", + "billing_autorenew_service_type_dedicated_server": "Serwer dedykowany", + "billing_autorenew_service_type_DEDICATED_HOUSING": "Housing", + "billing_autorenew_service_type_DEDICATED_CLOUD": "Managed VMware vSphere", + "billing_autorenew_service_type_ESSENTIALS": "Managed Bare Metal", + "billing_autorenew_service_type_DOMAIN": "Domena", + "billing_autorenew_service_type_ENTERPRISE_CLOUD_DATABASE": "Enterprise Cloud Databases", + "billing_autorenew_service_type_HOSTING_PRIVATE_DATABASE": "Serwer Private SQL", + "billing_autorenew_service_type_HOSTING_WEB": "Hosting WWW", + "billing_autorenew_service_type_IP_LOADBALANCING": "IP Load Balancing", + "billing_autorenew_service_type_IP_LOADBALANCER": "IP Load Balancer", + "billing_autorenew_service_type_LICENCE_CLOUD_LINUX": "Licencja CloudLinux", + "billing_autorenew_service_type_LICENCE_CPANEL": "Licencja cPanel", + "billing_autorenew_service_type_LICENCE_DIRECT_ADMIN": "Licencja DirectAdmin", + "billing_autorenew_service_type_LICENCE_PLESK": "Licencja Plesk", + "billing_autorenew_service_type_LICENCE_SQL_SERVER": "Licencja SQL Server", + "billing_autorenew_service_type_LICENCE_OFFICE": "Licencja Office 365", + "billing_autorenew_service_type_LICENCE_VIRTUOZZO": "Licencja Virtuozzo", + "billing_autorenew_service_type_LICENCE_WINDOWS": "Licencja Windows", + "billing_autorenew_service_type_LICENCE_WORKLIGHT": "Licencja Worklight", + "billing_autorenew_service_type_XDSL": "Linia xDSL", + "billing_autorenew_service_type_OVER_THE_BOX": "OverTheBox", + "billing_autorenew_service_type_PACK": "Pakiet xDSL", + "billing_autorenew_service_type_ROUTER": "Router", + "billing_autorenew_service_type_TELEPHONY": "Telefonia", + "billing_autorenew_service_type_EXCHANGE": "Exchange", + "billing_autorenew_service_type_EMAIL_EXCHANGE": "Exchange", + "billing_autorenew_service_type_SMS": "SMS", + "billing_autorenew_service_type_VPS": "Prywatne serwery wirtualne", + "billing_autorenew_service_type_MIS": "Infrastruktura zarządzana", + "billing_autorenew_service_type_HOSTING_RESELLER": "Hosting dla resellera", + "billing_autorenew_service_type_EMAIL_DOMAIN": "MX Plan", + "billing_autorenew_service_type_EMAIL_PRO": "E-mail Pro", + "billing_autorenew_service_type_VIP": "VIP", + "billing_autorenew_service_type_CAAS_CONTAINERS": "Kontenery CaaS", + "billing_autorenew_service_type_CAAS_REGISTRY": "CaaS Registry", + "billing_autorenew_service_type_DBAAS_QUEUE": "DBaaS Queue", + "billing_autorenew_service_type_DBAAS_LOGS": "Logs Data Platform", + "billing_autorenew_service_type_DEDICATED_CEPH": "Ceph as a Service", + "billing_autorenew_service_type_DESKAAS": "Cloud Desktop", + "billing_autorenew_service_type_HORIZONVIEW": "Cloud Desktop Infrastructure", + "billing_autorenew_service_type_PAAS_DATABASE": "PaaS Database", + "billing_autorenew_service_type_PAAS_MONITORING": "PaaS Monitoring", + "billing_autorenew_service_type_SAAS_CSP2": "Office 365 Reseller", + "billing_autorenew_service_type_SAAS_CSP_2": "Office 365 Reseller", + "billing_autorenew_service_type_SSL_GATEWAY": "SSL Gateway", + "billing_autorenew_service_type_SHAREPOINT": "Sharepoint", + "billing_autorenew_service_type_VEEAM_CLOUD_CONNECT": "Veeam Cloud Connect", + "billing_autorenew_service_type_VEEAM_ENTERPRISE": "Veeam Enterprise", + "billing_autorenew_service_type_METRICS": "Metryki", + "billing_autorenew_service_type_kube": "Kubernetes", + "billing_autorenew_service_type_WEBCOACH": "WebCoach", + "billing_autorenew_service_type_webcoach": "WebCoach", + "billing_autorenew_service_type_OVH_CLOUD_CONNECT": "OVHcloud Connect", + "billing_autorenew_service_type_WEB_PAAS": "Web PaaS", + "billing_autorenew_service_type_NETAPP": "Enterprise File Storage", + "billing_autorenew_service_type_CLOUD_PROJECT": "Projekty PCI", + "billing_autorenew_service_type_CLOUD_DB_ENTERPRISE_CLUSTER": "Enterprise Cloud Databases", + "billing_autorenew_service_type_DOMAIN_ZONE": "Strefy DNS", + "billing_autorenew_service_type_EMAIL_EXCHANGE_SERVICE": "Microsoft Exchange", + "billing_autorenew_service_type_FREEFAX": "Faks", + "billing_autorenew_service_type_IP_SERVICE": "Adres IP", + "billing_autorenew_service_type_LICENCE": "Licencje", + "billing_autorenew_service_type_LICENSE_WINDOWS": "Licencje Windows", + "billing_autorenew_service_type_LICENSE_OFFICE": "Licencje Office 365", + "billing_autorenew_service_type_LICENSE_CLOUD_LINUX": "Licencje CloudLinux", + "billing_autorenew_service_type_LICENSE_CPANEL": "Licencje cPanel", + "billing_autorenew_service_type_LICENSE_PLESK": "Licencje Plesk", + "billing_autorenew_service_type_LICENSE_DIRECTADMIN": "Licencje DirectAdmin", + "billing_autorenew_service_type_LICENSE_VIRTUOZZO": "Licencje Virtuozzo", + "billing_autorenew_service_type_LICENSE_WORKLIGHT": "Licencje Worklight", + "billing_autorenew_service_type_LICENSE_SQLSERVER": "Licencje SQL Server", + "billing_autorenew_service_type_LICENCE_SQLSERVER": "Licencje SQL Server", + "billing_autorenew_service_type_LICENSE_OFFICE_PREPAID": "Licencje Office 365", + "billing_autorenew_service_type_MS_SERVICES_SHAREPOINT": "Microsoft Sharepoint", + "billing_autorenew_service_type_PACK_XDSL": "Pakiety xDSL", + "billing_autorenew_service_type_VRACK": "vRack", + "billing_autorenew_service_type_NUTANIX": "Nutanix", + "billing_export_csv": "Eksportuj w formacie CSV", + "billing_common_link_new_window": "(nowe okno)", + "billing_autorenew_renew_action": "Odnów", + "billing_autorenew_service_renew_requires_mean_and_date": "Aby dokończyć aktywację automatycznego odnowienia, prosimy o dodanie sposobu płatności. Następnie będziesz mógł wybrać datę pobrania płatności.", + "billing_autorenew_service_activate_alert": "Posiadasz co najmniej jedną usługę w trybie automatycznego odnowienia, ale nie zatwierdziłeś jeszcze tej opcji.", + "autorenew_service_autorenew_day_tooltip_autorenew_2016": "Jeśli posiadasz usługi z opcją automatycznego odnowienia, możesz wybrać dzień ich odnowienia (opcja niekompatybilna z produktami Bare Metal i VPS, dla których domyślną datą odnowienia jest 1. dzień miesiąca).", + "billing_autorenew_service_activate_alert_renew2016": "Ta wiadomość nie dotyczy usług Bare Metal i VPS.", + "billing_autorenew_service_type_DEDICATED_CLUSTER": "Region 3-AZ", + "billing_autorenew_service_type_OKMS_RESOURCE": "OVHcloud KMS", + "billing_autorenew_service_type_VRACK_SERVICES_RESOURCE": "vRack Services", + "billing_autorenew_service_type_VMWARE_CLOUD_DIRECTOR_ORGANIZATION": "Managed VCD", + "billing_autorenew_service_type_LICENSE_HYCU": "HYCU" +} diff --git a/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..37a7c7fc9ad4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/autoRenew/translations/Messages_pt_PT.json @@ -0,0 +1,159 @@ +{ + "billing_title": "Serviços", + "billing_description": "Faça a gestão da renovação dos seus serviços. Consulte o seu estado bem como os seus contratos.", + "billing_home_title": "Página inicial", + "billing_agreements_title": "Contratos", + "billing_ssh_title": "Chaves SSH", + "billing_autorenew_service_disable_autorenew": "Desativar pagamento automático", + "billing_autorenew_service_align_renew": "Alinhar datas de renovação", + "billing_autorenew_service_enable_autorenew": "Ativar pagamento automático", + "billing_autorenew_service_disable_all_dom": "Desativar a renovação automática para todos os domínios", + "billing_autorenew_service_status": "Estado", + "billing_autorenew_service_status_auto": "Renovação automática", + "billing_autorenew_service_status_automatic": "Renovação automática", + "billing_autorenew_service_status_manual": "Renovação manual", + "billing_autorenew_service_status_manualPayment": "Renovação manual", + "billing_autorenew_service_status_pending_debt": "Fatura por pagar", + "billing_autorenew_service_status_delete_at_expiration": "Rescisão solicitada", + "billing_autorenew_service_status_expired": "Rescindido", + "billing_autorenew_service_expiration_weeks": "Expira dentro de uma semana", + "billing_autorenew_service_expiration_months": "Expira dentro de um mês", + "billing_autorenew_service_expiration_renew_month": "Renovação daqui a um mês", + "billing_autorenew_service_actions": "Ações", + "billing_autorenew_criterion_serviceType": "Serviço", + "billing_autorenew_criterion_status": "Estado", + "billing_autorenew_criterion_state": "Disponibilidade", + "billing_autorenew_criterion_expiration": "Data de entrada em vigor", + "billing_autorenew_nic_all": "Todos", + "autorenew_service_deleteAtExpiration_banner": "A rescisão do serviço “{{ serviceName }}” foi registada com êxito. Pode anular esta operação até 24 horas antes da expiração do serviço.", + "autorenew_service_deleteAtExpiration_banner_cancel": "Cancelar o pedido de rescisão na expiração", + "billing_autorenew_service": "Serviço", + "billing_autorenew_service_name": "Nome do serviço", + "billing_autorenew_service_state_EXPIRED": "Suspenso", + "billing_autorenew_service_state_UP": "Ativo", + "billing_autorenew_service_state_IN_CREATION": "Criação em curso", + "billing_autorenew_service_state_OK": "Pago", + "billing_autorenew_service_state_UN_PAID": "Por pagar", + "billing_autorenew_service_date": "Data de entrada em vigor", + "billing_autorenew_service_date_now": "Imediatamente", + "billing_autorenew_service_date_before": "Antes de {{ date }}", + "billing_autorenew_service_date_renew": "{{ date }}", + "billing_autorenew_service_expiration_date": "Expira a", + "autorenew_service_after_expiration_date": "Expirou a", + "autorenew_service_renew_auto": "Automático", + "autorenew_service_renew_manuel": "Manual", + "autorenew_service_renew_delete_at_expiration": "Rescisão na data de expiração", + "autorenew_service_renew_year": "Automático: todos os anos", + "autorenew_service_renew_month": "Automático: todos os meses", + "autorenew_service_renew_3months": "Trimestral", + "autorenew_service_renew_6months": "Semestral", + "autorenew_service_renew_frequency_value": "Automático: todos os {{t0}} meses", + "autorenew_service_renew_years_frequency_value": "Automático: todos os {{t0}} anos", + "autorenew_service_renew_paid": "Pago", + "autorenew_empty": "Não tem nenhum serviço", + "autorenew_service_action_title": "Ações", + "autorenew_service_autorenew_day": "Dia da renovação automática:", + "autorenew_service_autorenew_day_tooltip": "Se já dispõe de serviços com renovação automática ativa, escolha o dia de renovação.", + "autorenew_service_select_intro": "Selecionar todos:", + "billing_autorenew_service_type_ALL": "Todos os serviços", + "billing_autorenew_service_type_ALL_DOM": "Pack AllDom", + "billing_autorenew_service_type_CDN_DEDICATED": "CDN dedicada", + "billing_autorenew_service_type_CDN_WEBSITE": "CDN Website", + "billing_autorenew_service_type_CDN_WEBSTORAGE": "CDN WebStorage", + "billing_autorenew_service_type_CLUSTER_HADOOP": "Cluster Hadoop", + "billing_autorenew_service_type_DEDICATED_NAS": "Dedicated NAS", + "billing_autorenew_service_type_DEDICATED_NASHA": "Dedicated NAS HA", + "billing_autorenew_service_autorenew_contact_filter": "Escolha o contacto de faturação", + "billing_autorenew_service_autorenew_contact_filter_all": "Todos", + "billing_autorenew_service_autorenew_filter": "Filtros", + "billing_autorenew_service_type_DEDICATED_SERVER": "Servidor dedicado", + "billing_autorenew_service_type_dedicated_server": "Servidor dedicado", + "billing_autorenew_service_type_DEDICATED_HOUSING": "Servidor housing", + "billing_autorenew_service_type_DEDICATED_CLOUD": "Managed VMware vSphere", + "billing_autorenew_service_type_ESSENTIALS": "Managed Bare Metal", + "billing_autorenew_service_type_DOMAIN": "Domínio", + "billing_autorenew_service_type_ENTERPRISE_CLOUD_DATABASE": "Enterprise Cloud Databases", + "billing_autorenew_service_type_HOSTING_PRIVATE_DATABASE": "Alojamento base SQL Privado", + "billing_autorenew_service_type_HOSTING_WEB": "Alojamento web", + "billing_autorenew_service_type_IP_LOADBALANCING": "IP Load Balancer", + "billing_autorenew_service_type_IP_LOADBALANCER": "IP Load Balancer", + "billing_autorenew_service_type_LICENCE_CLOUD_LINUX": "Licença CloudLinux", + "billing_autorenew_service_type_LICENCE_CPANEL": "Licença cPanel", + "billing_autorenew_service_type_LICENCE_DIRECT_ADMIN": "Licença DirectAdmin", + "billing_autorenew_service_type_LICENCE_PLESK": "Licença Plesk", + "billing_autorenew_service_type_LICENCE_SQL_SERVER": "Licença SQL Server", + "billing_autorenew_service_type_LICENCE_OFFICE": "Licença Office 365", + "billing_autorenew_service_type_LICENCE_VIRTUOZZO": "Licença Virtuozzo", + "billing_autorenew_service_type_LICENCE_WINDOWS": "Licença Windows", + "billing_autorenew_service_type_LICENCE_WORKLIGHT": "Licença Worklight", + "billing_autorenew_service_type_XDSL": "Linha xDSL", + "billing_autorenew_service_type_OVER_THE_BOX": "OverTheBox", + "billing_autorenew_service_type_PACK": "Pack xDSL", + "billing_autorenew_service_type_ROUTER": "Router", + "billing_autorenew_service_type_TELEPHONY": "Serviço Telefónico", + "billing_autorenew_service_type_EXCHANGE": "Exchange", + "billing_autorenew_service_type_EMAIL_EXCHANGE": "Exchange", + "billing_autorenew_service_type_SMS": "SMS", + "billing_autorenew_service_type_VPS": "Servidores privados virtuais", + "billing_autorenew_service_type_MIS": "Infraestrutura gerida", + "billing_autorenew_service_type_HOSTING_RESELLER": "Revendedor de alojamento", + "billing_autorenew_service_type_EMAIL_DOMAIN": "MX Plan", + "billing_autorenew_service_type_EMAIL_PRO": "E-mail Pro", + "billing_autorenew_service_type_VIP": "VIP", + "billing_autorenew_service_type_CAAS_CONTAINERS": "CaaS Containers", + "billing_autorenew_service_type_CAAS_REGISTRY": "CaaS Registry", + "billing_autorenew_service_type_DBAAS_QUEUE": "DBaaS Queue", + "billing_autorenew_service_type_DBAAS_LOGS": "Logs Data Platform", + "billing_autorenew_service_type_DEDICATED_CEPH": "Ceph as a Service", + "billing_autorenew_service_type_DESKAAS": "Cloud Desktop", + "billing_autorenew_service_type_HORIZONVIEW": "Cloud Desktop Infrastructure", + "billing_autorenew_service_type_PAAS_DATABASE": "PaaS Database", + "billing_autorenew_service_type_PAAS_MONITORING": "PaaS Monitoring", + "billing_autorenew_service_type_SAAS_CSP2": "Office 365 Revendeur", + "billing_autorenew_service_type_SAAS_CSP_2": "Office 365 Revendeur", + "billing_autorenew_service_type_SSL_GATEWAY": "SSL Gateway", + "billing_autorenew_service_type_SHAREPOINT": "Sharepoint", + "billing_autorenew_service_type_VEEAM_CLOUD_CONNECT": "Veeam Cloud Connect", + "billing_autorenew_service_type_VEEAM_ENTERPRISE": "Veeam Enterprise", + "billing_autorenew_service_type_METRICS": "Estatísticas", + "billing_autorenew_service_type_kube": "Kubernetes", + "billing_autorenew_service_type_WEBCOACH": "WebCoach", + "billing_autorenew_service_type_webcoach": "WebCoach", + "billing_autorenew_service_type_OVH_CLOUD_CONNECT": "OVHcloud Connect", + "billing_autorenew_service_type_WEB_PAAS": "Web PaaS", + "billing_autorenew_service_type_NETAPP": "Enterprise File Storage", + "billing_autorenew_service_type_CLOUD_PROJECT": "Projetos PCI", + "billing_autorenew_service_type_CLOUD_DB_ENTERPRISE_CLUSTER": "Enterprise Cloud Databases", + "billing_autorenew_service_type_DOMAIN_ZONE": "Zonas DNS", + "billing_autorenew_service_type_EMAIL_EXCHANGE_SERVICE": "Microsoft Exchange", + "billing_autorenew_service_type_FREEFAX": "Fax", + "billing_autorenew_service_type_IP_SERVICE": "IP", + "billing_autorenew_service_type_LICENCE": "Licenças", + "billing_autorenew_service_type_LICENSE_WINDOWS": "Licenças Windows", + "billing_autorenew_service_type_LICENSE_OFFICE": "Licenças Office 365", + "billing_autorenew_service_type_LICENSE_CLOUD_LINUX": "Licenças CloudLinux", + "billing_autorenew_service_type_LICENSE_CPANEL": "Licenças cPanel", + "billing_autorenew_service_type_LICENSE_PLESK": "Licenças Plesk", + "billing_autorenew_service_type_LICENSE_DIRECTADMIN": "Licenças DirectAdmin", + "billing_autorenew_service_type_LICENSE_VIRTUOZZO": "Licenças Virtuozzo", + "billing_autorenew_service_type_LICENSE_WORKLIGHT": "Licenças Worklight", + "billing_autorenew_service_type_LICENSE_SQLSERVER": "Licenças SQL Server", + "billing_autorenew_service_type_LICENCE_SQLSERVER": "Licenças SQL Server", + "billing_autorenew_service_type_LICENSE_OFFICE_PREPAID": "Licenças Office 365", + "billing_autorenew_service_type_MS_SERVICES_SHAREPOINT": "Microsoft SharePoint", + "billing_autorenew_service_type_PACK_XDSL": "Packs xDSL", + "billing_autorenew_service_type_VRACK": "vRacks", + "billing_autorenew_service_type_NUTANIX": "Nutanix", + "billing_export_csv": "Exportar em CSV", + "billing_common_link_new_window": "(nova janela)", + "billing_autorenew_renew_action": "Renovar", + "billing_autorenew_service_renew_requires_mean_and_date": "Para terminar a ativação da renovação automática, adicione um método de pagamento e, de seguida, poderá selecionar a data de débito.", + "billing_autorenew_service_activate_alert": "A renovação automática foi configurada para, pelo menos, um dos seus serviços, mais ainda não autorizou esta opção.", + "autorenew_service_autorenew_day_tooltip_autorenew_2016": "Se tiver serviços com renovação automática, pode escolher o dia de renovação (opção não compatível com os produtos Bare Metal e VPS, cuja data de renovação é definida para o primeiro dia do mês, por predefinição, para esta categoria de produto).", + "billing_autorenew_service_activate_alert_renew2016": "Esta mensagem não diz respeito aos serviços Bare Metal e VPS.", + "billing_autorenew_service_type_DEDICATED_CLUSTER": "Região 3-AZ", + "billing_autorenew_service_type_OKMS_RESOURCE": "OVHcloud KMS", + "billing_autorenew_service_type_VRACK_SERVICES_RESOURCE": "vRack Services", + "billing_autorenew_service_type_VMWARE_CLOUD_DIRECTOR_ORGANIZATION": "Managed VCD", + "billing_autorenew_service_type_LICENSE_HYCU": "HYCU" +} diff --git a/packages/manager/modules/new-billing/src/billing-feature-availability.js b/packages/manager/modules/new-billing/src/billing-feature-availability.js new file mode 100644 index 000000000000..f07a78e59066 --- /dev/null +++ b/packages/manager/modules/new-billing/src/billing-feature-availability.js @@ -0,0 +1,18 @@ +export default class { + /* @ngInject */ + constructor(coreConfig) { + this.target = coreConfig.getRegion(); + } + + allowOrderTracking() { + return this.allow('CA', 'EU', 'US'); + } + + allow(...args) { + return Array.from(args).indexOf(this.target) > -1; + } + + deny(...args) { + return Array.from(args).indexOf(this.target) === -1; + } +} diff --git a/packages/manager/modules/new-billing/src/billing.controller.js b/packages/manager/modules/new-billing/src/billing.controller.js new file mode 100644 index 000000000000..d596c8d58ef4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/billing.controller.js @@ -0,0 +1,62 @@ +import { BILLING_BASE_URL } from './constants/billing.constants'; + +export default /* @ngInject */ ($scope, $location, $filter, $timeout) => { + $scope.BILLING_BASE_URL = BILLING_BASE_URL; + $scope.pageSizeAvailables = [10, 20, 50]; + + $scope.originUrl = + $location.search().redirectTo || $location.search().redirectto || '#/'; + + $scope.today = new Date(); + $scope.firstDayOfMonth = +new Date( + $scope.today.getFullYear(), + $scope.today.getMonth(), + 1, + ); + + $scope.isCurrentMonth = function isCurrentMonth(date) { + return ( + +new Date(date.getFullYear(), date.getMonth(), 1) === + $scope.firstDayOfMonth + ); + }; + + $scope.getDateFormatted = function getDateFormatted(date, type) { + return $filter('date')(date, type); + }; + + $scope.getDayDateFormatted = function getDayDateFormatted(date) { + return $filter('date')(date, 'dd'); + }; + + $scope.setAction = function setAction( + action, + data, + viewName, + strictPath = false, + ) { + $scope.currentAction = action; + $scope.currentActionData = data; + + if ($scope.currentAction) { + $scope.stepPath = strictPath + ? `billing/autoRenew/${action}.html` + : `${BILLING_BASE_URL}${viewName}/${action}/billing-${viewName}-${action}.html`; + + $('#currentAction').modal({ + keyboard: false, + backdrop: 'static', + }); + } else { + $('#currentAction').modal('hide'); + + $timeout(() => { + delete $scope.stepPath; + }, 300); + } + }; + + $scope.resetAction = function resetAction() { + $scope.setAction(); + }; +}; diff --git a/packages/manager/modules/new-billing/src/billing.html b/packages/manager/modules/new-billing/src/billing.html new file mode 100644 index 000000000000..0e6a22e27d10 --- /dev/null +++ b/packages/manager/modules/new-billing/src/billing.html @@ -0,0 +1,11 @@ +
+ diff --git a/packages/manager/modules/new-billing/src/billing.module.js b/packages/manager/modules/new-billing/src/billing.module.js new file mode 100644 index 000000000000..2780985de449 --- /dev/null +++ b/packages/manager/modules/new-billing/src/billing.module.js @@ -0,0 +1,123 @@ +import angular from 'angular'; +import ovhManagerCore from '@ovh-ux/manager-core'; +import set from 'lodash/set'; +import autorenew from './autoRenew/autorenew.module'; +import billingMain from './main/billing-main.module'; +import dateRangeSelectionService from './common/dateRangeSelection'; +import debtAccount from './dbtAccount/billing-debtAccount.service'; +import featureAvailability from './billing-feature-availability'; +import history from './main/history/history.module'; +import paymentCreditAdd from './payment/credits/add/add-credits.module'; +import messageParser from './common/messageParser'; +import order from './order/billing-order-tracking.module'; +import orders from './orders/orders/orders.module'; +import ordersMain from './orders/orders-main.module'; +import ordersPurchases from './orders/purchaseOrders/billing-orders-purchases.module'; +import ovhAccountRefund from './payment/ovhAccount/refund'; +import refunds from './main/refunds/refunds.module'; +import sla from './sla/sla.module'; +import termination from './confirmTerminate/termination.module'; +import userService from './common/User'; +import payment from './payment/billing-payment.module'; +import paymentMehtod from './payment/method'; +import renewHelper from './common/renew-helper.service'; + +import dateRangeDirective from './components/directives/dateRange/billingDateRange.directive'; +import sortingFieldButtonDirective from './components/directives/sortingFieldButton/billingSortingFieldButton'; +import renewDateComponent from './components/renewDate/billing-renew-date.component'; +import renewLabelComponent from './components/renewLabel/billing-renew-label.component'; +import renewFrequenceFilter from './components/filters/renewFrequence'; + +import routing from './billing.routing'; +import billingTracking from './atInternetTracking.config'; + +import '@ovh-ux/ng-ui-router-breadcrumb'; +import '@uirouter/angularjs'; +import 'angular-translate'; +import '@ovh-ux/ng-ovh-feature-flipping'; +import 'angular-ui-bootstrap'; + +const moduleName = 'Billing'; + +angular + .module(moduleName, [ + 'oui', + 'pascalprecht.translate', + 'ui.bootstrap', + 'ui.router', + 'ngUiRouterBreadcrumb', + 'oc.lazyLoad', + 'ui.select', + 'ngOvhFeatureFlipping', + autorenew, + billingMain, + history, + paymentCreditAdd, + order, + ordersMain, + orders, + ordersPurchases, + ovhAccountRefund, + refunds, + ovhManagerCore, + payment, + paymentMehtod, + sla, + termination, + ]) + .service('billingFeatureAvailability', featureAvailability) + .service('BillingdateRangeSelection', dateRangeSelectionService) + .service('BillingDebtAccount', debtAccount) + .service('BillingmessageParser', messageParser) + .service('billingRenewHelper', renewHelper) + .service('BillingUser', userService) + .config(routing) + .config( + /* @ngInject */ ( + $stateProvider, + $urlRouterProvider, + $urlServiceProvider, + ) => { + $urlServiceProvider.rules.when( + '/billing/order/:id', + '/billing/orders/:id', + ); + + $urlRouterProvider.when( + /^\/billing\/(credits|fidelity|mean|method|ovhaccount|vouchers)/, + ($location, $state) => { + const [, subroute] = $location.$$path.split('/billing/'); + return $state.go(`billing.payment.${subroute}`); + }, + ); + }, + ) + .directive('billingDateRange', dateRangeDirective) + .directive('billingSortingFieldButton', sortingFieldButtonDirective) + .component(renewDateComponent.name, renewDateComponent) + .component(renewLabelComponent.name, renewLabelComponent) + .filter('renewFrequence', renewFrequenceFilter) + .run(/* @ngTranslationsInject:json ./common/translations */) + .run( + /* @ngInject */ ($translate) => { + let lang = $translate.use(); + + if (['en_GB', 'es_US', 'fr_CA'].includes(lang)) { + lang = lang.toLowerCase().replace('_', '-'); + } else { + [lang] = lang.split('_'); + } + + return import(`script-loader!moment/locale/${lang}.js`).then(() => + moment.locale(lang), + ); + }, + ) + .run( + /* @ngInject */ ($rootScope, coreConfig) => { + set($rootScope, 'worldPart', coreConfig.getRegion()); + }, + ) + .run(billingTracking); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/billing.routing.js b/packages/manager/modules/new-billing/src/billing.routing.js new file mode 100644 index 000000000000..df4642e60996 --- /dev/null +++ b/packages/manager/modules/new-billing/src/billing.routing.js @@ -0,0 +1,82 @@ +import controller from './billing.controller'; +import template from './billing.html'; +import { + GUIDES_LIST, + GUIDE_TRACKING_TAG, +} from './constants/guides-header.constants'; + +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing', { + url: '', + translations: { value: ['.'], format: 'json' }, + redirectTo: 'billing.main', + template, + controller, + resolve: { + denyEnterprise: ($q, $state, currentUser) => { + if ( + currentUser.isEnterprise && + $state.transition.to().name !== 'billing.autorenew.ssh' + ) { + return $q.reject({ + status: 403, + message: 'Access forbidden for enterprise accounts', + code: 'FORBIDDEN_BILLING_ACCESS', + }); + } + + return false; + }, + goToOrders: /* @ngInject */ ($state) => () => $state.go('billing.orders'), + + guides: /* @ngInject */ (guidesObjectLevelOne) => { + return { + url: guidesObjectLevelOne(GUIDES_LIST), + tracking: GUIDE_TRACKING_TAG, + }; + }, + + guidesObjectLevelOne: /* @ngInject */ (guidesObjectLevelTwo) => ( + object, + ) => { + return Object.fromEntries( + Object.entries(object).map(([key, value]) => { + return [key, guidesObjectLevelTwo(value)]; + }), + ); + }, + + guidesObjectLevelTwo: /* @ngInject */ (guidesObjectLevelThree) => ( + object, + ) => { + return Object.fromEntries( + Object.entries(object).map(([key, value]) => { + return [key, guidesObjectLevelThree(value)]; + }), + ); + }, + + guidesObjectLevelThree: /* @ngInject */ (currentUser) => (object) => { + return Object.fromEntries( + Object.entries(object).map(([key, value]) => { + return [ + key, + key === 'url' + ? value[currentUser.ovhSubsidiary] || value.DEFAULT + : value, + ]; + }), + ); + }, + + trackClick: /* @ngInject */ (atInternet) => (hit) => { + return atInternet.trackClick({ + name: hit, + type: 'action', + }); + }, + currentUser: /* @ngInject */ (BillingUser) => BillingUser.getUser(), + breadcrumb: () => null, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/common/User.js b/packages/manager/modules/new-billing/src/common/User.js new file mode 100644 index 000000000000..25a24f836a30 --- /dev/null +++ b/packages/manager/modules/new-billing/src/common/User.js @@ -0,0 +1,36 @@ +export default /* @ngInject */ function BillingUserService( + $q, + coreConfig, + OvhHttp, +) { + /* + * get user by SWS + */ + this.getUser = () => + this.getMe().then((result) => ({ + nichandle: result.nichandle, + email: result.email, + firstName: result.firstname, + lastName: result.name, + billingCountry: result.country, + ovhSubsidiary: result.ovhSubsidiary, + spareEmail: result.spareEmail, + canHaveInvoicesByPostalMail: () => + result.billingCountry === 'FR' && result.legalform === 'individual', + })); + + this.getMe = () => $q.when(coreConfig.getUser()); + + this.isVATNeeded = () => + this.getUser().then( + (user) => ['CA', 'QC', 'WE', 'WS'].indexOf(user.ovhSubsidiary) === -1, + ); + + this.addCreditCode = (inputCode) => + OvhHttp.post('/me/credit/code', { + rootPath: 'apiv6', + data: { + inputCode, + }, + }); +} diff --git a/packages/manager/modules/new-billing/src/common/dateRangeSelection.js b/packages/manager/modules/new-billing/src/common/dateRangeSelection.js new file mode 100644 index 000000000000..32ada52c4f6b --- /dev/null +++ b/packages/manager/modules/new-billing/src/common/dateRangeSelection.js @@ -0,0 +1,62 @@ +export default /* @ngInject */ function BillingDateRangeSelectionService( + $window, +) { + const STORAGE_KEY_PREFIX = 'billingDateRangeSelection'; + + function loadDateFromStorage(dateType, defaultDate) { + let date = moment( + $window.sessionStorage.getItem(`${STORAGE_KEY_PREFIX}_${dateType}`), + ); + if (!date.isValid()) { + date = moment(defaultDate); + } + return date; + } + + let mode = $window.sessionStorage.getItem(`${STORAGE_KEY_PREFIX}_mode`); + let dateFrom = loadDateFromStorage( + 'dateFrom', + moment() + .subtract(1, 'month') + .startOf('month'), + ); + let dateTo = loadDateFromStorage('dateTo', moment().endOf('day')); + + return { + get mode() { + return mode; + }, + set mode(_mode_) { + if (mode !== _mode_) { + mode = _mode_; + $window.sessionStorage.setItem(`${STORAGE_KEY_PREFIX}_mode`, _mode_); + } + }, + + get dateFrom() { + return dateFrom; + }, + set dateFrom(_dateFrom_) { + if (dateFrom !== _dateFrom_) { + dateFrom = moment(_dateFrom_); + $window.sessionStorage.setItem( + `${STORAGE_KEY_PREFIX}_dateFrom`, + dateFrom.toISOString(), + ); + } + }, + + get dateTo() { + return dateTo; + }, + set dateTo(_dateTo_) { + if (dateTo !== _dateTo_) { + dateTo = moment(_dateTo_); + $window.sessionStorage.setItem( + `${STORAGE_KEY_PREFIX}_dateTo`, + dateTo.toISOString(), + ); + } + }, + }; +} diff --git a/packages/manager/modules/new-billing/src/common/messageParser.js b/packages/manager/modules/new-billing/src/common/messageParser.js new file mode 100644 index 000000000000..c8ca450b22dd --- /dev/null +++ b/packages/manager/modules/new-billing/src/common/messageParser.js @@ -0,0 +1,83 @@ +import isEmpty from 'lodash/isEmpty'; +import get from 'lodash/get'; + +export default /* @ngInject */ function BillingMessageParserService() { + const ALERT_LEVELS = { + SUCCESS: 'alert-success', + WARNING: 'alert', + ERROR: 'alert-danger', + }; + + const ALERT_MAP = { + ERROR: ALERT_LEVELS.ERROR, + INFO: ALERT_LEVELS.SUCCESS, + OK: ALERT_LEVELS.SUCCESS, + PARTIAL: ALERT_LEVELS.WARNING, + WARNING: ALERT_LEVELS.WARNING, + }; + + /** + * @param {string} message - text + * @param {object|string} data - additional data to parse + * @return {object} + */ + return function billingMessageParser(message, data) { + let alertType = ''; + if (!data) { + return { message, alertType: '' }; + } + + if (data === 'true') { + return { message, alertType: ALERT_LEVELS.SUCCESS }; + } + + if (!isEmpty(message)) { + return { + message, + alertType: get(ALERT_MAP, data.type, ''), + }; + } + + if (data.message) { + return { + message: `${message}(${data.message})`, + alertType: ALERT_MAP[data.type] || '', + }; + } + + if (data.messages && data.messages.length > 0) { + const messageDetails = data.messages + .map((_message) => `${_message.id} : ${_message.message}`) + .join(', '); + + return { + message: `${message} (${messageDetails})`, + alertType: ALERT_MAP[data.state] || '', + }; + } + + if (data.idTask && angular.isString(data.state)) { + const stateUppercased = data.state.toUpperCase(); + switch (stateUppercased) { + case 'BLOCKED': + case 'CANCELLED': + case 'PAUSED': + case 'ERROR': + alertType = 'alert-danger'; + break; + case 'WAITING_ACK': + case 'WAITINGACK': + case 'DOING': + default: + alertType = 'alert'; + break; + case 'TODO': + case 'DONE': + alertType = 'alert-success'; + break; + } + } + + return { message, alertType }; + }; +} diff --git a/packages/manager/modules/new-billing/src/common/renew-helper.service.js b/packages/manager/modules/new-billing/src/common/renew-helper.service.js new file mode 100644 index 000000000000..005350054796 --- /dev/null +++ b/packages/manager/modules/new-billing/src/common/renew-helper.service.js @@ -0,0 +1,92 @@ +import upperFirst from 'lodash/upperFirst'; +import has from 'lodash/has'; +import includes from 'lodash/includes'; +import isEmpty from 'lodash/isEmpty'; + +export default class BillingrenewHelper { + /* @ngInject */ + constructor($filter, $translate) { + this.$filter = $filter; + this.$translate = $translate; + } + + getRenewDateFormated(service) { + if (!service) { + return ''; + } + if (this.serviceHasAutomaticRenew(service)) { + return upperFirst(this.$filter('date')(service.expiration, 'MMMM yyyy')); + } + + const translationId = moment().isAfter(moment(service.expiration)) + ? 'autorenew_service_after_expiration_date' + : 'autorenew_service_expiration_date'; + + // Prevent accent sanitization issue with angular-translate + // https://github.com/angular-translate/angular-translate/issues/1101 + return `${this.$translate.instant(translationId)} ${this.$filter('date')( + service.expiration, + 'mediumDate', + )}`; + } + + getRenewLabel(service) { + if (service === '0') { + return this.$translate.instant('autorenew_service_renew_0'); + } + + if (angular.isString(service)) { + if (service.indexOf('frequency_value_') > -1) { + return this.$filter('renewFrequence')(+service.split('_')[2]); + } + return this.$translate.instant(`autorenew_service_renew_${service}`); + } + + if (angular.isObject(service)) { + if (includes(['EMAIL_DOMAIN', 'SMS'], service.serviceType)) { + return this.$translate.instant('autorenew_service_renew_paid'); + } + + if (!isEmpty(service.subProducts)) { + return ''; + } + return this.getRenewLabel(this.getRenewKey(service)); + } + + return ''; + } + + /* eslint-disable class-methods-use-this */ + serviceHasAutomaticRenew(service) { + return ( + has(service, 'renew') && + (service.renew.forced || service.renew.automatic) && + !(service.renew.deleteAtExpiration || service.status === 'EXPIRED') + ); + } + /* eslint-enable class-methods-use-this */ + + getRenewKey(service) { + let txt; + if (!service || !isEmpty(service.subProducts)) { + return ''; + } + + if (service.renew.manualPayment) { + txt = 'manuel'; + } else if (service.renew.deleteAtExpiration) { + txt = 'delete_at_expiration'; + } else if (service.status === 'EXPIRED') { + txt = 'manuel'; + } else if (this.serviceHasAutomaticRenew(service)) { + txt = 'auto'; + if (service.renew.period) { + txt = `frequency_value_${service.renew.period}`; + } + } else { + txt = 'manuel'; + } + + return txt; + } +} diff --git a/packages/manager/modules/new-billing/src/common/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/common/translations/Messages_de_DE.json new file mode 100644 index 000000000000..876e3b708d2a --- /dev/null +++ b/packages/manager/modules/new-billing/src/common/translations/Messages_de_DE.json @@ -0,0 +1,551 @@ +{ + "common_actions": "Aktionen", + "common_pagination_display": "Anzeigen", + "common_pagination_page": "Seite", + "select_option": "Auswahl...", + "welcome_to_your_manager_1": "Herzlich willkommen in Ihrem", + "welcome_to_your_manager_2": "OVH Kundencenter", + "select_product_on_left": "Bitte wählen Sie in der linken Spalte ein zu konfigurierendes Produkt aus.", + "select_product_on_top": "Bitte wählen Sie oben ein zu konfigurierendes Produkt aus.", + "index_nav_bar_logo_alt": "OVH Dedicated Kundencenter", + "universe_univers-v3_name": "Altes Kunden-Interface", + "unit_size_B": "B", + "unit_size_KB": "KB", + "unit_size_MB": "MB", + "unit_size_GB": "GB", + "unit_size_TB": "TB", + "unit_size_PB": "PB", + "unit_size_EB": "EB", + "unit_size_ZB": "ZB", + "unit_size_YB": "YB", + "unit_size_KiB": "KiB", + "unit_size_MiB": "MiB", + "unit_size_GiB": "GiB", + "unit_size_TiB": "TiB", + "unit_size_PiB": "PiB", + "unit_size_EiB": "EiB", + "unit_size_ZiB": "ZiB", + "unit_size_YiB": "YiB", + "unit_size_bps": "bit/s", + "unit_size_Kbps": "kbit/s", + "unit_size_Mbps": "Mbit/s", + "unit_size_Gbps": "Gbit/s", + "unit_size_Tbps": "Tbit/s", + "unit_size_Pbps": "Pbit/s", + "unit_size_Ebps": "Ebit/s", + "unit_size_Zbps": "Zbit/s", + "unit_size_Ybps": "Ybit/s", + "unit_frequency_HZ": "Hz", + "unit_frequency_KHZ": "KHz", + "unit_frequency_MHZ": "MHz", + "unit_frequency_GHZ": "GHz", + "unit_frequency_THZ": "THz", + "unit_frequency_PHZ": "PHz", + "unit_frequency_EHZ": "EHz", + "unit_frequency_ZHZ": "ZHz", + "unit_frequency_YHZ": "YHz", + "monday": "Montag", + "tuesday": "Dienstag", + "wednesday": "Mittwoch", + "thursday": "Donnerstag", + "friday": "Freitag", + "saturday": "Samstag", + "sunday": "Sonntag", + "januar": "Januar", + "februar": "Februar", + "march": "März", + "april": "April", + "may": "Mai", + "june": "Juni", + "jully": "Juli", + "august": "August", + "september": "September", + "october": "Oktober", + "november": "November", + "december": "Dezember", + "januar_short": "Januar", + "februar_short": "Februar", + "march_short": "März", + "april_short": "April", + "may_short": "Mai", + "june_short": "Juni", + "jully_short": "Juli", + "august_short": "August", + "september_short": "September", + "october_short": "Oktober", + "november_short": "November", + "december_short": "Dezember", + "wizard_cancel": "Abbrechen", + "wizard_close": "Schließen", + "wizard_confirm": "Bestätigen", + "wizard_modify": "Ändern", + "wizard_delete": "Löschen", + "wizard_yes": "Ja", + "wizard_no": "Nein", + "wizard_order": "Bestellen", + "wizard_pay": "Bezahlen", + "wizard_renew": "Verlängern", + "wizard_next": "Weiter", + "wizard_previous": "Zurück", + "wizard_breadcrumb": "Schritt {{ currentStep }} von {{ stepCount }}", + "pagination_page": "Seite {{ current }} / {{ last }}", + "pagination_go": "OK", + "pagination_display": "Anzeigen", + "common_loading": "Wird geladen...", + "common_cancel": "Abbrechen", + "common_confirm": "Bestätigen", + "common_terminate": "Beenden", + "common_back": "Zurück", + "common_next": "Weiter", + "common_previous": "Zurück", + "common_activated": "Aktiviert", + "common_activate": "Aktivieren", + "common_desactivated": "Deaktiviert", + "common_desactivate": "Deaktivieren", + "common_TODO": "Information wird in Kürze hinzugefügt", + "common_not_configurated": "Nicht konfiguriert", + "common_ipv4": "IPv4", + "common_ipv6": "IPv6", + "common_bitFormat": "Bit", + "common_expired": "Die Dienstleistung wurde nicht verlängert. Dies kann aufgrund Ihrer Entscheidung oder eines Zahlungsverzugs auf Ihrer Seite erfolgt sein.", + "common_settle_bill": "Ausgleichen", + "common_service_expired": "Die Dienstleistung {{t0}} wurde nicht verlängert. Dies kann aufgrund Ihrer Entscheidung oder eines Zahlungsverzugs auf Ihrer Seite erfolgt sein.", + "common_reset_zoom": "Den Zoom zurücksetzen", + "common_alerts_message_see_more": "Die Fehlerdetails anzeigen", + "common_alerts_message_see_less": "Fehlerdetails verbergen", + "common_managerv5": "Manager V5", + "common_managerv3": "Manager v3", + "common_refresh": "Aktualisieren", + "common_change": "Ändern", + "common_download_format": "Im {{t0}} Format herunterladen", + "common_skip_to_main_content": "Zum Hauptinhalt", + "common_shortcuts": "Shortcuts", + "common_links": "Links", + "common_add": "Hinzufügen", + "global_app_title": "Ihr OVH Dedicated Kundencenter", + "global_language": "Sprache", + "global_logout": "Abmelden", + "global_changelog": "Changelog", + "global_configuration": "Konfiguration", + "global_billing": "Abrechnung", + "global_renew": "Meine Dienstleistungen", + "global_orders": "Meine Bestellungen", + "global_preference": "Mein Account", + "global_support": "Support", + "global_feedback": "Kommentar", + "global_feedback_appreciation": "Ihre Meinung interessiert uns", + "global_feedback_appreciation_text": "Über dieses Fenster können Sie uns Ihre Meinung zur Navigation
und Ergonomie Ihres neuen Kundencenters mitteilen. ", + "global_feedback_remark": "Typ des Kommentars", + "global_feedback_type_simplecomment": "Allgemeiner Kommentar", + "global_feedback_type_design": "Design", + "global_feedback_type_ergo": "Ergonomie", + "global_feedback_type_bug": "Bug", + "global_feedback_more_details": "Bitte tragen Sie Ihre Nachricht hier ein", + "global_feedback_warning": "Achtung, dieses Formular dient nicht dem Support für Ihre Produkte, sondern lediglich Feedback-Zwecken.", + "global_feedback_contact": "Bei kaufmännischen und technischen Fragen kontaktieren Sie bitte den OVH Support,", + "global_feedback_contact_link": "indem Sie hier klicken", + "global_feedback_send": "Absenden", + "global_feedback_subject": "Betreff", + "global_feedback_subject_required": "Bitte geben Sie einen Betreff an", + "global_feedback_subject_maxlength": "Der Titel darf maximal 255 Zeichen lang sein", + "global_profil": "Profil", + "global_OK": "OK", + "global_KO": "KO", + "global_switch_mode": "Modus:", + "global_switch_simple_mode": "Einfacher Modus", + "global_switch_expert_mode": "Experten-Modus", + "global_processing": "Wird ausgeführt...", + "global_doing": "Wird ausgeführt...", + "main_menu_products_and_config": "Konfiguration", + "main_menu_bill_and_renew": "Abrechnung", + "main_menu_help_and_support": "Hilfe", + "common_yes": "Ja", + "common_no": "Nein", + "common_delete": "Löschen", + "required": "Pflichtangabe", + "required_fields": "Die Felder mit Asterisk sind Pflichtfelder.", + "select_placeholder": "Auswählen...", + "common_newtab": "neuer Tab", + "contract_next": "Weiter", + "contract_previous": "Zurück", + "download_contract": "Den Vertrag \"{{ name }}\" im PDF-Format öffnen", + "contract_help": "Sie können die Verträge erst akzeptieren, wenn Sie sie vollständig gelesen haben.", + "contracts_list_title": "Es sind {{ count }} Verträge einzusehen.", + "contract_list_title": "Es ist ein Vertrag zur Einsicht verfügbar.", + "contracts_agree": "Ich akzeptiere die Verträge", + "contract_agree": "Ich akzeptiere den Vertrag", + "day_1": "1 Tag", + "day_other": "{} Tage", + "month_1": "1 Monat", + "month_other": "{{t0}} Monat(e)", + "year_1": "1 Jahr", + "year_other": "{} Jahre", + "upto": "Bis zum", + "uptofirstdaynextmonth": "Bis zum ersten Tag des nächsten Monats", + "engage": "Laufzeit {{t0}}", + "price_ht_label": "{{ price }} zzgl. MwSt.", + "price_ttc_label": "{{ price }} inkl. MwSt.", + "price_free": "Inklusive", + "price_label_yearly": "/Jahr ", + "country_AC": "Ascension", + "country_AD": "Andorra", + "country_AE": "Vereinigte Arabische Emirate", + "country_AF": "Afghanistan", + "country_AG": "Antigua und Barbuda", + "country_AI": "Anguilla", + "country_AL": "Albanien", + "country_AM": "Armenien", + "country_AO": "Angola", + "country_AQ": "Antarktis", + "country_AR": "Argentinien", + "country_AS": "Amerikanisch-Samoa", + "country_AT": "Österreich", + "country_AU": "Australien", + "country_AW": "Aruba", + "country_AX": "Åland Inseln", + "country_AZ": "Aserbaidschan", + "country_BA": "Bosnien-Herzegowina", + "country_BB": "Barbados", + "country_BD": "Bangladesch", + "country_BE": "Belgien", + "country_BF": "Burkina Faso", + "country_BG": "Bulgarien", + "country_BH": "Bahrein", + "country_BI": "Burundi", + "country_BJ": "Benin", + "country_BL": "Saint Barthélemy", + "country_BM": "Bermuda", + "country_BN": "Brunei Darussalam", + "country_BO": "Bolivien", + "country_BQ": "Karibische Niederlande", + "country_BR": "Brasilien", + "country_BS": "Bahamas", + "country_BT": "Bhutan", + "country_BW": "Botswana", + "country_BY": "Weissrussland", + "country_BZ": "Belize", + "country_CA": "Kanada", + "country_CC": "Cocos (Keeling) Islands", + "country_CD": "Demokratische Republik Kongo", + "country_CF": "Zentralafrikanische Republik", + "country_CG": "Kongo", + "country_CH": "Schweiz", + "country_CI": "Elfenbeinküste", + "country_CK": "Cook Islands", + "country_CL": "Chile", + "country_CM": "Kamerun", + "country_CN": "China", + "country_CO": "Kolumbien", + "country_CR": "Costa Rica", + "country_CU": "Kuba", + "country_CV": "Kap Verde", + "country_CW": "Curaçao", + "country_CX": "Weihnachtsinsel", + "country_CY": "Zypern", + "country_CZ": "Tschechische Republik", + "country_DE": "Deutschland", + "country_DG": "Diego Garcia", + "country_DJ": "Dschibuti", + "country_DK": "Dänemark", + "country_DM": "Dominika", + "country_DO": "Dominikanische Republik", + "country_DZ": "Algerien", + "country_EA": "Ceuta, Melilla", + "country_EC": "Ecuador", + "country_EE": "Estland", + "country_EG": "Ägypten", + "country_EH": "Westsahara", + "country_ER": "Eritrea", + "country_ES": "Spanien", + "country_ET": "Äthiopien", + "country_FI": "Finnland", + "country_FJ": "Fidschi", + "country_FK": "Falkland-Inseln (Malvinas)", + "country_FM": "Mikronesien", + "country_FO": "Färöer-Inseln", + "country_FR": "Frankreich", + "country_GA": "Gabun", + "country_GB": "Vereinigtes Königreich", + "country_GD": "Grenada", + "country_GE": "Georgien", + "country_GF": "Französisch-Guayana", + "country_GG": "Guernesey", + "country_GH": "Ghana", + "country_GI": "Gibraltar", + "country_GL": "Grönland", + "country_GM": "Gambia", + "country_GN": "Guinea", + "country_GP": "Guadeloupe", + "country_GQ": "Äquatorial-Guinea", + "country_GR": "Griechenland", + "country_GS": "Südgeorgien und Südliche Sandwichinseln", + "country_GT": "Guatemala", + "country_GU": "Guam", + "country_GW": "Guinea-Bissau", + "country_GY": "Guyana", + "country_HK": "Hong-Kong", + "country_HN": "Honduras", + "country_HR": "Kroatien", + "country_HT": "Haiti", + "country_HU": "Ungarn", + "country_IC": "Kanarische Inseln", + "country_ID": "Indonesien", + "country_IE": "Irland", + "country_IL": "Israel", + "country_IM": "Isle of Man", + "country_IN": "Indien", + "country_IO": "Britisches Territorium im Indischen Ozean", + "country_IQ": "Irak", + "country_IR": "Iran", + "country_IS": "Island", + "country_IT": "Italien", + "country_JE": "Jersey", + "country_JM": "Jamaika", + "country_JO": "Jordanien", + "country_JP": "Japan", + "country_KE": "Kenia", + "country_KG": "Kirgisistan", + "country_KH": "Kambodscha", + "country_KI": "Kiribati", + "country_KM": "Komoren", + "country_KN": "St. Kitts und Nevis", + "country_KP": "Demokratische Volksrepublik Korea", + "country_KR": "Republik Korea", + "country_KW": "Kuwait", + "country_KY": "Cayman Islands", + "country_KZ": "Kasachstan", + "country_LA": "Laos, Demokratische Volksrepublik", + "country_LB": "Libanon", + "country_LC": "St. Lucia", + "country_LI": "Liechtenstein", + "country_LK": "Sri Lanka", + "country_LR": "Liberia", + "country_LS": "Lesotho", + "country_LT": "Litauen", + "country_LU": "Luxemburg", + "country_LV": "Lettland", + "country_LY": "Libyen", + "country_MA": "Marokko", + "country_MC": "Monaco", + "country_MD": "Moldawien", + "country_ME": "Montenegro", + "country_MF": "Saint Martin (französischer Teil)", + "country_MG": "Madagaskar", + "country_MH": "Marshall-Inseln", + "country_MK": "Mazedonien", + "country_ML": "Mali", + "country_MM": "Myanmar", + "country_MN": "Mongolei", + "country_MO": "Macao", + "country_MP": "Nördlichen Marianeninseln", + "country_MQ": "Martinique", + "country_MR": "Mauretanien", + "country_MS": "Montserrat", + "country_MT": "Malta", + "country_MU": "Republik Mauritius", + "country_MV": "Malediven", + "country_MW": "Malawi", + "country_MX": "Mexiko", + "country_MY": "Malaysia", + "country_MZ": "Mosambik", + "country_NA": "Namibia", + "country_NC": "Neukaledonien", + "country_NE": "Niger", + "country_NF": "Norfolk-Insel", + "country_NG": "Nigeria", + "country_NI": "Nicaragua", + "country_NL": "Niederlande", + "country_NO": "Norwegen", + "country_NP": "Nepal", + "country_NR": "Nauru", + "country_NU": "Niue", + "country_NZ": "Neuseeland", + "country_OM": "Oman", + "country_PA": "Panama", + "country_PE": "Peru", + "country_PF": "Französisch-Polynesien", + "country_PG": "Papua-Neuguinea", + "country_PH": "Philippinen", + "country_PK": "Pakistan", + "country_PL": "Polen", + "country_PM": "Saint-Pierre und Miquelon", + "country_PN": "Pitcairn", + "country_PR": "Puerto Rico", + "country_PS": "Palästinensische Autonomiegebiete", + "country_PT": "Portugal", + "country_PW": "Palau", + "country_PY": "Paraguay", + "country_QA": "Katar", + "country_QC": "Quebec", + "country_RE": "La Réunion", + "country_RO": "Rumänien", + "country_RS": "Republik Serbien (vormals Serbien und Montenegro)", + "country_RU": "Russland", + "country_RW": "Ruanda", + "country_SA": "Saudi-Arabien", + "country_SB": "Salomon-Inseln", + "country_SC": "Seychellen", + "country_SD": "Sudan", + "country_SE": "Schweden", + "country_SG": "Singapur", + "country_SH": "Sankt Helena", + "country_SI": "Slowenien", + "country_SJ": "Svalbard und Jan Mayen Insel", + "country_SK": "Slowakei", + "country_SL": "Sierra Leone", + "country_SM": "San Marino", + "country_SN": "Senegal", + "country_SO": "Somalia", + "country_SR": "Suriname", + "country_SS": "Süd-Sudan", + "country_ST": "Sao Tome und Principe", + "country_SV": "El Salvador", + "country_SX": "Saint-Martin (Königreich der Niederlande)", + "country_SY": "Syrien", + "country_SZ": "Swasiland", + "country_TA": "Tristan da Cunha", + "country_TC": "Turks- und Caicosinseln", + "country_TD": "Tschad", + "country_TF": "Südliche Französische Territorien", + "country_TG": "Togo", + "country_TH": "Thailand", + "country_TJ": "Tadschikistan", + "country_TK": "Tokelau", + "country_TL": "Osttimor", + "country_TM": "Turkmenistan", + "country_TN": "Tunesien", + "country_TO": "Tonga", + "country_TR": "Türkei", + "country_TT": "Trinidad und Tobago", + "country_TV": "Tuvalu", + "country_TW": "Taiwan", + "country_TZ": "Tansania", + "country_UA": "Ukraine", + "country_UG": "Uganda", + "country_UK": "Vereinigtes Königreich", + "country_UM": "Kleinere Inselbesitzungen der Vereinigten Staaten", + "country_US": "USA", + "country_UY": "Uruguay", + "country_UZ": "Usbekistan", + "country_VA": "Vatikan", + "country_VC": "St. Vincent und die Grenadinen", + "country_VE": "Venezuela", + "country_VG": "British Virgin Islands", + "country_VI": "US-Jungferninseln", + "country_VN": "Vietnam", + "country_VU": "Vanuatu", + "country_WF": "Wallis und Futuna", + "country_WS": "Samoa", + "country_XK": "Kosovo", + "country_YE": "Jemen", + "country_YT": "Mayotte", + "country_ZA": "Südafrika", + "country_ZM": "Sambia", + "country_ZW": "Simbabwe", + "navigation_more": "Mehr +", + "wizard_help": "Hilfe", + "old_manager_alert": "Sie können Ihre Dienstleistungen während einer Übergangszeit noch über den bisherigen Manager verwalten.", + "refresh": "Aktualisieren", + "core_new_window": "Neues Fenster", + "core_new_tab": "Öffnet einen neuen Tab", + "core_change_owner": "Den Inhaber ändern", + "contacts_management": "Die Kontakte verwalten", + "customized": "Personalisiert", + "core_top_guides_header": "Für weitere Informationen lesen Sie bitte unsere Anleitungen. ", + "core_top_guides_header_fr": "Wenn Sie Hilfe oder genauere Informationen zu Ihren Diensten benötigen, gehen Sie bitte auf folgende Seite:", + "core_type_of_guide_vps": "Virtual Private Server", + "core_all_guides": "Alle unsere Hilfen", + "core_vps_top_guide_1_title": "Erstellung von SSH-Keys ", + "core_vps_top_guide_2_title": "Migration von VPS 2014 auf das Angebot 2016 ", + "core_vps_top_guide_3_title": "Verwendung von Docker Machine auf Grundlage von Public Cloud Instanzen ", + "core_vps_top_guide_4_title": "Einen Horizon Zugang erstellen ", + "core_vps_top_guide_5_title": "Swift API kennenlernen ", + "core_vps_top_guide_6_title": "Umgebung für die Verwendung der OpenStack API vorbereiten ", + "core_vps_top_guide_7_title": "Synology NAS mit Object Storage synchronisieren mithilfe von DiskStation Manager 6.0 ", + "core_vps_top_guide_8_title": "Cloud - im OVH Kunden-Interface ", + "core_vps_top_guide_9_title": "Eine Instanz erstellen im OVH Kundencenter ", + "core_type_of_guide_sd": "Dedicated Server", + "core_sd_top_guide_1_title": "Erste Schritte mit einem Dedicated Server", + "core_sd_top_guide_2_title": "Erste Schritte mit einem Kimsufi, So you Start oder Rise Dedicated Server", + "core_sd_top_guide_3_title": "Einen Dedicated Server absichern", + "core_sd_top_guide_4_title": "SSH-Schlüssel erstellen", + "core_sd_top_guide_5_title": "Verwendung des IPMI für Dedicated Server", + "core_sd_top_guide_6_title": "Daten von einem Dedicated Server auf einen anderen migrieren", + "core_sd_top_guide_7_title": "Neuinstallation von Windows Server konfigurieren", + "core_sd_top_guide_firewall_title": "Firewall Network konfigurieren", + "core_type_of_guide_pcc": "Hosted Private Cloud", + "core_pcc_top_guide_1_title": "Zugriff auf vSphere", + "core_pcc_top_guide_2_title": "Das Deployment der ersten virtuellen Maschine ", + "core_pcc_top_guide_3_title": "Eine IP-Adresse auf einer virtuellen Maschine konfigurieren ", + "core_pcc_top_guide_4_title": "Konfiguration einer virtuellen Maschine ändern", + "core_pcc_top_guide_5_title": "Verbindung via SFTP", + "core_pcc_top_guide_6_title": "Offizielle VMware Dokumentation ", + "core_pcc_top_guide_7_title": "Löschen eines Hosts ", + "core_pcc_top_guide_8_title": "Windows SPLA Lizenzen ", + "core_pcc_top_guide_9_title": "Die ersten Schritte mit NSX ", + "core_pcc_top_guide_10_title": "Offizielle NSX Dokumentation ", + "sso_modal_title": "OVH - Authentifizierung", + "sso_modal_loading": "Wird geladen...", + "sso_modal_user_title": "Sie sind verbunden als:", + "sso_modal_currentuser_title": "Sie sind jetzt verbunden als:", + "sso_modal_disconnected": "Sie sind jetzt abgemeldet.", + "sso_modal_what": "Was möchten Sie tun?", + "sso_modal_action_reload": "Fortfahren als {{name}} ", + "sso_modal_action_logout": "Zur Authentifizierungsseite", + "me_alerts_PAYMENTMEAN_DEFAULT_MISSING": "Es wurde kein Standard-Zahlungsmittel ausgewählt. Bitte gehen Sie in den Bereich Abrechnung, um eines Ihrer Zahlungsmittel auszuwählen oder ein neues zu hinterlegen. ", + "me_alerts_PAYMENTMEAN_DEFAULT_EXPIRED": "Ihr hinterlegtes Zahlungsmittel ist abgelaufen. Bitte gehen Sie in den Bereich Abrechnung, um ein neues Zahlungsmittel Ihrer Wahl zu hinterlegen.", + "me_alerts_PAYMENTMEAN_DEFAULT_EXPIRE_SOON": "Ihr hinterlegtes Zahlungsmittel wird in weniger als 30 Tagen ablaufen. Bitte gehen Sie in den Bereich Abrechnung, um ein neues Zahlungsmittel Ihrer Wahl zu hinterlegen.", + "me_alerts_PAYMENTMEAN_DEFAULT_BANKACCOUNT_PENDINGVALIDATION": "Ihr hinterlegtes Zahlungsmittel (Bankkonto) ist derzeit im Validierungsprozess. Für weitere Informationen gehen Sie bitte in den Bereich Abrechnung.", + "me_alerts_PAYMENTMEAN_DEFAULT_CREDITCARD_TOOMANYFAILURES": "Ihr hinterlegtes Zahlungsmittel (Kreditkarte) führt zu einer Fehlermeldung. Bitte gehen Sie in den Bereich Abrechnung, um die Angaben zu überprüfen und/oder ein neues Zahlungsmittel Ihrer Wahl zu hinterlegen.", + "me_alerts_PAYMENTMEAN_DEFAULT_PAYPAL_TOOMANYFAILURES": "Ihr hinterlegtes Zahlungsmittel (PayPal) führt zu einer Fehlermeldung. Bitte gehen Sie in den Bereich Abrechnung, um die Angaben zu überprüfen und/oder ein neues Zahlungsmittel Ihrer Wahl zu hinterlegen.", + "me_alerts_PAYMENTMEAN_BANKACCOUNT_PENDINGVALIDATION": "Derzeit ist/sind {{t0}} Bankkonto(s) im Validierungsprozess. Für weitere Informationen gehen Sie bitte in den Bereich Abrechnung.", + "me_alerts_PAYMENTMEAN_CREDITCARD_TOOMANYFAILURES": "Derzeit führt/führen {{t0}} Kreditkarte(n) zu einer Fehlermeldung. Bitte gehen Sie in den Bereich Abrechnung, um die Angaben zu überprüfen und/oder ein neues Zahlungsmittel Ihrer Wahl zu hinterlegen.", + "me_alerts_PAYMENTMEAN_PAYPAL_TOOMANYFAILURES": "Derzeit führt/führen {{t0}} hinterlegte(r) PayPal-Account(s) zu einer Fehlermeldung. Bitte gehen Sie in den Bereich Abrechnung, um die Angaben zu überprüfen und/oder ein neues Zahlungsmittel Ihrer Wahl zu hinterlegen.", + "me_alerts_OVHACCOUNT_DEBT": "Ihr Prepaid-Account ist mit {{t0}} im Soll (Stand {{t1}}) . Bitte gehen Sie in den Bereich „Meine Rechnungen“, um die ausstehenden Beträge zu begleichen.", + "me_alerts_DEBTACCOUNT_DEBT_WITH_UNMATURED_AMOUNT": "Sie sind zurzeit mit {{t0}} im Soll (davon ist ein Betrag {{t1}} nicht fällig). Bitte gehen Sie in den Bereich „Meine Rechnungen“, um die ausstehenden Beträge zu begleichen.", + "me_alerts_DEBTACCOUNT_DEBT": "Sie sind zurzeit mit {{t0}} im Minus. Bitte gehen Sie in den Bereich Abrechnung, um die ausstehenden Beträge zu begleichen.", + "me_alerts_OVHACCOUNT_ALERTTHRESHOLD": "Ihr Prepaid Account hat das von Ihnen definierte Abbuchungslimit erreicht. Bitte gehen Sie in den Bereich Abrechnung für weitere Informationen.", + "me_alerts_ORDERS_DOCUMENTSREQUESTED": "Derzeit steht/stehen {{t0}} Bestellung(en) aus, für deren weitere Bearbeitung wir noch Dokumente benötigen. Bitte gehen Sie in den Bereich \"Meine Bestellungen\", um fehlende Angaben zu ergänzen.", + "me_alerts_AGREEMENTS_TODO": "Es müssen {{t0}} Vertrag/Verträge bestätigt werden.", + "me_alerts_CONTACTCHANGE_VALIDATINGBYCUSTOMERS": "Es wurden {{t0}} Anfragen zur Änderung eines Kontakts erstellt.", + "me_alerts_AUTORENEW_INVITE": "Entscheiden Sie sich jetzt für die automatische Verlängerung Ihrer Dienstleistungen!", + "core_service_expiration_label": "Ablaufdatum", + "core_service_expiration": "Abgelaufen am", + "core_service_expiration_manual_renew": "Zu verlängern am ", + "core_service_expiration_auto_renew": "Verlängerung am", + "core_service_renew_button": "Verlängern", + "core_user_enterprise_retail_prices": "Hinweis: Die angezeigten Preise sind Standardlistenpreise und stimmen möglicherweise nicht mit den vereinbarten Bedingungen überein. Für eine detailliertere Preisangabe rufen Sie bitte Ihre monatliche Abrechnung auf.", + "core_user_enterprise_retail_prices_hpc": "Hinweis: Die angezeigten Preise sind eine Schätzung auf Basis der anteiligen Berechnung dieses Moduls, um die Abrechnung an den Abrechnungszeitraum Ihres aktuellen Vertrags anzupassen. Für eine detailliertere Preisangabe rufen Sie bitte Ihre monatliche Abrechnung auf.", + "core_user_trusted_retail_prices": "Hinweis: Der angezeigte Preis entspricht dem Preis der Dienstleistung. Der Aufpreis für die Vertrauenswürdige Zone wird der monatlichen Gesamtabrechnung hinzugefügt.", + "browser_alert_not_supported": "Ihr Browser wird nicht unterstützt.", + "browser_alert_deprecated": "Ihr Browser ist nicht aktuell und könnte Sicherheitslücken enthalten oder Kompatibilitätsprobleme verursachen.", + "browser_alert_update": "Wir empfehlen Ihnen, Ihren Browser zu aktualisieren, damit alle Funktionen optimal funktionieren.", + "browser_alert_close": "Diese Warnung schließen", + "ovh_task_follow_button": "Störungsdetails", + "ovh_task_follow_modal_title": "Störungsnachverfolgung", + "ovh_task_follow_modal_comment": "Letztes Update: {{t 0 }}", + "otrs_menu_assistance": "Support", + "otrs_menu_assistance_expanded": "Hilfe", + "otrs_menu_all_guides": "Alle Anleitungen", + "otrs_menu_help_center": "Help Center", + "otrs_menu_new_ticket": "Eine Support-Anfrage erstellen", + "otrs_menu_list_ticket": "Liste meiner Support-Anfragen", + "otrs_menu_ask_for_assistance": "Support-Anfragen", + "otrs_menu_email_history": "E-Mail-History", + "otrs_menu_telephony_contact": "Telefonischer Support", + "otrs_menu_changelog": "Changelog", + "common_configuration_creation": "Erstellungsdatum", + "menu_action_label": "{{t0}} (Liste der Aktionen)", + "server_tab_USB_STORAGE_order_select_duration": "Wählen Sie die Laufzeit aus:", + "common_subscription_contacts": "Kontakte", + "common_subscription_contacts_admin": "Administrator", + "common_subscription_contacts_billing": "Abrechnung", + "common_subscription_contacts_tech": "Technisch", + "common_unavailable_information": "Information nicht verfügbar", + "common_resiliate_contact_support": "Um diesen Dienst zu kündigen, kontaktieren Sie bitte unseren Support unter +49 (0) 681 906730. Vielen Dank für Ihr Verständnis.", + "core_pcc_top_guide_11_title": "Offizielle Dokumentation zu Nutanix", + "older_interface": "Altes Kundeninterface", + "core_pcc_top_guide_12_title": "Offizielle Dokumentation zu SAP HANA on Private Cloud", + "core_pcc_top_guide_13_title": "IPs die Verbindung zum vCenter erlauben", + "core_pcc_top_guide_14_title": "VMware on OVHcloud - VMware Cloud Director" +} diff --git a/packages/manager/modules/new-billing/src/common/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/common/translations/Messages_en_GB.json new file mode 100644 index 000000000000..208716a43879 --- /dev/null +++ b/packages/manager/modules/new-billing/src/common/translations/Messages_en_GB.json @@ -0,0 +1,551 @@ +{ + "common_actions": "Actions", + "common_pagination_display": "Display", + "common_pagination_page": "page", + "select_option": "Selecting...", + "welcome_to_your_manager_1": "Welcome to the", + "welcome_to_your_manager_2": "OVHcloud Control Panel", + "select_product_on_left": "Please select a product to configure in the left-hand column.", + "select_product_on_top": "Please select a product to configure.", + "index_nav_bar_logo_alt": "OVH Dedicated Control Panel", + "older_interface": "Old customer interface", + "universe_univers-v3_name": "Old customer interface", + "unit_size_B": "B", + "unit_size_KB": "KB", + "unit_size_MB": "MB", + "unit_size_GB": "GB", + "unit_size_TB": "TB", + "unit_size_PB": "PB", + "unit_size_EB": "EB", + "unit_size_ZB": "ZB", + "unit_size_YB": "YB", + "unit_size_KiB": "KiB", + "unit_size_MiB": "MiB", + "unit_size_GiB": "GiB", + "unit_size_TiB": "TiB", + "unit_size_PiB": "PiB", + "unit_size_EiB": "EiB", + "unit_size_ZiB": "ZiB", + "unit_size_YiB": "YiB", + "unit_size_bps": "bps", + "unit_size_Kbps": "kbps", + "unit_size_Mbps": "Mbps", + "unit_size_Gbps": "Gbps", + "unit_size_Tbps": "Tbps", + "unit_size_Pbps": "Pbps", + "unit_size_Ebps": "Ebps", + "unit_size_Zbps": "Zbps", + "unit_size_Ybps": "Ybps", + "unit_frequency_HZ": "Hz", + "unit_frequency_KHZ": "KHz", + "unit_frequency_MHZ": "MHz", + "unit_frequency_GHZ": "GHz", + "unit_frequency_THZ": "THz", + "unit_frequency_PHZ": "PHz", + "unit_frequency_EHZ": "EHz", + "unit_frequency_ZHZ": "ZHz", + "unit_frequency_YHZ": "YHz", + "monday": "Monday", + "tuesday": "Tuesday", + "wednesday": "Wednesday", + "thursday": "Thursday", + "friday": "Friday", + "saturday": "Saturday", + "sunday": "Sunday", + "januar": "January", + "februar": "February", + "march": "March", + "april": "April", + "may": "May", + "june": "June", + "jully": "July", + "august": "August", + "september": "September", + "october": "October", + "november": "November", + "december": "December", + "januar_short": "Jan", + "februar_short": "Feb", + "march_short": "March", + "april_short": "April", + "may_short": "May", + "june_short": "June", + "jully_short": "Jul", + "august_short": "August", + "september_short": "Sept", + "october_short": "Oct", + "november_short": "Nov", + "december_short": "Dec", + "wizard_cancel": "Cancel", + "wizard_close": "Close", + "wizard_confirm": "Confirm", + "wizard_modify": "Edit", + "wizard_delete": "Delete", + "wizard_yes": "Yes", + "wizard_no": "No", + "wizard_order": "Order", + "wizard_pay": "Pay", + "wizard_renew": "Renew", + "wizard_next": "Next", + "wizard_previous": "Previous", + "wizard_breadcrumb": "Step {{ currentStep }} of {{ stepCount }}", + "pagination_page": "Page {{ current }} / {{ last }}", + "pagination_go": "OK", + "pagination_display": "Display", + "common_loading": "Loading…", + "common_cancel": "Cancel", + "common_confirm": "Confirm", + "common_terminate": "Finish", + "common_back": "Back", + "common_next": "Next", + "common_previous": "Previous", + "common_activated": "Enabled", + "common_activate": "Enable", + "common_desactivated": "Disabled", + "common_desactivate": "Disable", + "common_TODO": "Information to follow", + "common_not_configurated": "Not configured", + "common_ipv4": "IPv4", + "common_ipv6": "IPv6", + "common_bitFormat": "bits", + "common_expired": "The service hasn't been renewed. This could be due to your own decision or a late payment on your part.", + "common_settle_bill": "Pay", + "common_service_expired": "Service {{t0}} hasn't been renewed. This could be due to your own decision or a late payment on your part.", + "common_reset_zoom": "Reset zoom", + "common_alerts_message_see_more": "See the details of the errors", + "common_alerts_message_see_less": "Hide error details", + "common_managerv5": "Manager V5", + "common_managerv3": "Manager v3", + "common_refresh": "Refresh", + "common_change": "Edit", + "common_download_format": "Download in {{t0}} format", + "common_skip_to_main_content": "Skip to main content", + "common_shortcuts": "Shortcuts", + "common_links": "Links", + "common_add": "Add", + "global_app_title": "OVHcloud Dedicated Control Panel", + "global_language": "Language", + "global_logout": "Log out", + "global_changelog": "Changelog", + "global_configuration": "Configuration", + "global_billing": "Billing", + "global_renew": "My services", + "global_orders": "My orders ", + "global_preference": "My account", + "global_support": "Support", + "global_feedback": "Provide feedback", + "global_feedback_appreciation": "We would like to receive your feedback", + "global_feedback_appreciation_text": "You can share your thoughts about your browsing experience
and the workspace of your new customer control panel by using this window. ", + "global_feedback_remark": "Comment type", + "global_feedback_type_simplecomment": "General comment", + "global_feedback_type_design": "Design", + "global_feedback_type_ergo": "Usability", + "global_feedback_type_bug": "Bug", + "global_feedback_more_details": "Please write your message below", + "global_feedback_warning": "Please note that this form is not related to your product support.", + "global_feedback_contact": "If you have any sales or technical questions, please contact the OVH support team,", + "global_feedback_contact_link": "by clicking here", + "global_feedback_send": "Send", + "global_feedback_subject": "Subject", + "global_feedback_subject_required": "Please enter a subject ", + "global_feedback_subject_maxlength": "Title must not exceed 255 characters ", + "global_profil": "Profile", + "global_OK": "OK", + "global_KO": "KB", + "global_switch_mode": "Mode:", + "global_switch_simple_mode": "Basic mode ", + "global_switch_expert_mode": "Advanced mode", + "global_processing": "Processing...", + "global_doing": "Loading...", + "main_menu_products_and_config": "Configuration", + "main_menu_bill_and_renew": "Billing", + "main_menu_help_and_support": "Help", + "common_yes": "Yes", + "common_no": "No", + "common_delete": "Delete", + "required": "Mandatory fields", + "required_fields": "Fields followed by an asterisk are mandatory.", + "select_placeholder": "Select...", + "common_newtab": "new tab ", + "contract_next": "Next", + "contract_previous": "Previous", + "download_contract": "Open the \"{{ name }}\" contract in PDF format", + "contract_help": "Scroll down to the contracts in order to confirm them.", + "contracts_list_title": "There are {{ count }} contracts to read.", + "contract_list_title": "There is 1 contract to read.", + "contracts_agree": "Accept the contracts", + "contract_agree": "Accept the contract", + "day_1": "1 day", + "day_other": "{} days", + "month_1": "1 month", + "month_other": "{{t0}} months", + "year_1": "1 year", + "year_other": "{} years", + "upto": "Until", + "uptofirstdaynextmonth": "Until the 1st of next month", + "engage": "Sign up {{t0}}", + "price_ht_label": "{{ price }} ex. VAT", + "price_ttc_label": "{{ price }} incl. VAT", + "price_free": "Included", + "price_label_yearly": "/year", + "country_AC": "Ascension Island", + "country_AD": "Andorra", + "country_AE": "United Arab Emirates", + "country_AF": "Afghanistan", + "country_AG": "Antigua-and-Barbuda", + "country_AI": "Anguilla", + "country_AL": "Albania", + "country_AM": "Armenia", + "country_AO": "Angola", + "country_AQ": "Antarctica", + "country_AR": "Argentina", + "country_AS": "American Samoa", + "country_AT": "Austria", + "country_AU": "Australia", + "country_AW": "Aruba", + "country_AX": "Åland Islands", + "country_AZ": "Azerbaijan", + "country_BA": "Bosnia-Herzegovina", + "country_BB": "Barbados", + "country_BD": "Bangladesh", + "country_BE": "Belgium", + "country_BF": "Burkina Faso", + "country_BG": "Bulgaria", + "country_BH": "Bahrain", + "country_BI": "Burundi", + "country_BJ": "Benin", + "country_BL": "Saint Barts", + "country_BM": "Bermuda", + "country_BN": "Brunei", + "country_BO": "Bolivia", + "country_BQ": "Caribbean Netherlands", + "country_BR": "Brazil", + "country_BS": "Bahamas", + "country_BT": "Bhutan", + "country_BW": "Botswana", + "country_BY": "Belarus", + "country_BZ": "Belize", + "country_CA": "Canada", + "country_CC": "Cocos (Keeling) Islands", + "country_CD": "Congo, Democratic Republic of ", + "country_CF": "Central African Republic", + "country_CG": "Congo", + "country_CH": "Switzerland", + "country_CI": "Ivory Coast", + "country_CK": "Cook Islands", + "country_CL": "Chile", + "country_CM": "Cameroon", + "country_CN": "China", + "country_CO": "Colombia", + "country_CR": "Costa Rica", + "country_CU": "Cuba", + "country_CV": "Cape Verde", + "country_CW": "Curaçao", + "country_CX": "Christmas Island", + "country_CY": "Cyprus", + "country_CZ": "Czech Republic", + "country_DE": "Germany", + "country_DG": "Diego Garcia", + "country_DJ": "Djibouti", + "country_DK": "Denmark", + "country_DM": "Dominica", + "country_DO": "Dominican Republic", + "country_DZ": "Algeria", + "country_EA": "Ceuta, Melilla", + "country_EC": "Ecuador", + "country_EE": "Estonia", + "country_EG": "Egypt", + "country_EH": "Western Sahara", + "country_ER": "Eritrea", + "country_ES": "Spain", + "country_ET": "Ethiopia", + "country_FI": "Finland", + "country_FJ": "Fiji", + "country_FK": "The Falkland Islands (Malvinas)", + "country_FM": "Micronesia, Federated States of", + "country_FO": "Faroe Islands", + "country_FR": "France", + "country_GA": "Gabon", + "country_GB": "United Kingdom", + "country_GD": "Grenada", + "country_GE": "Georgia", + "country_GF": "French Guiana", + "country_GG": "Guernsey", + "country_GH": "Ghana", + "country_GI": "Gibraltar", + "country_GL": "Greenland", + "country_GM": "Gambia", + "country_GN": "Guinea", + "country_GP": "Guadeloupe", + "country_GQ": "Equatorial Guinea", + "country_GR": "Greece", + "country_GS": "South Georgia and the South Sandwich Islands", + "country_GT": "Guatemala", + "country_GU": "Guam", + "country_GW": "Guinea-Bissau", + "country_GY": "Guyana", + "country_HK": "Hong Kong", + "country_HN": "Honduras", + "country_HR": "Croatia", + "country_HT": "Haiti", + "country_HU": "Hungary", + "country_IC": "Canary Islands", + "country_ID": "Indonesia", + "country_IE": "Ireland", + "country_IL": "Israel", + "country_IM": "Isle of Man", + "country_IN": "India", + "country_IO": "British Indian Ocean Territory", + "country_IQ": "Iraq", + "country_IR": "Iran, Islamic Republic of ", + "country_IS": "Iceland", + "country_IT": "Italy", + "country_JE": "Jersey", + "country_JM": "Jamaica", + "country_JO": "Jordan", + "country_JP": "Japan", + "country_KE": "Kenya", + "country_KG": "Kyrgyzstan", + "country_KH": "Cambodia", + "country_KI": "Kiribati", + "country_KM": "Comoros", + "country_KN": "Saint Kitts and Nevis", + "country_KP": "Korea, Democratic People's Republic of ", + "country_KR": "Korea, Republic of ", + "country_KW": "Kuwait", + "country_KY": "Cayman Islands", + "country_KZ": "Kazakhstan", + "country_LA": "Laos -", + "country_LB": "Lebanon", + "country_LC": "Saint-Lucia", + "country_LI": "Liechtenstein", + "country_LK": "Sri Lanka", + "country_LR": "Liberia", + "country_LS": "Lesotho", + "country_LT": "Lithuania", + "country_LU": "Luxembourg", + "country_LV": "Latvia", + "country_LY": "Libya", + "country_MA": "Morocco", + "country_MC": "Monaco", + "country_MD": "Moldova", + "country_ME": "Montenegro", + "country_MF": "Saint Martin (French part)", + "country_MG": "Madagascar", + "country_MH": "Marshall Islands", + "country_MK": "Macedonia", + "country_ML": "Mali", + "country_MM": "Myanmar", + "country_MN": "Mongolia", + "country_MO": "Macau", + "country_MP": "Northern Mariana Islands", + "country_MQ": "Martinique", + "country_MR": "Mauritania", + "country_MS": "Montserrat", + "country_MT": "Malta", + "country_MU": "Republic of Mauritius", + "country_MV": "Maldives", + "country_MW": "Malawi", + "country_MX": "Mexico", + "country_MY": "Malaysia", + "country_MZ": "Mozambique", + "country_NA": "Namibia", + "country_NC": "New Caledonia", + "country_NE": "Niger", + "country_NF": "Norfolk Island", + "country_NG": "Nigeria", + "country_NI": "Nicaragua", + "country_NL": "Netherlands", + "country_NO": "Norway", + "country_NP": "Nepal", + "country_NR": "Nauru", + "country_NU": "Niue", + "country_NZ": "New Zealand", + "country_OM": "Oman", + "country_PA": "Panama", + "country_PE": "Peru", + "country_PF": "French Polynesia", + "country_PG": "Papua New Guinea", + "country_PH": "Philippines", + "country_PK": "Pakistan", + "country_PL": "Poland", + "country_PM": "Saint Pierre and Miquelon", + "country_PN": "Pitcairn Islands", + "country_PR": "Puerto Rico", + "country_PS": "Palestinian Territories", + "country_PT": "Portugal", + "country_PW": "Palau", + "country_PY": "Paraguay", + "country_QA": "Qatar", + "country_QC": "Quebec", + "country_RE": "Réunion Island", + "country_RO": "Romania", + "country_RS": "Republic of Serbia (Formerly Serbia and Montenegro code CS)", + "country_RU": "Russia", + "country_RW": "Rwanda", + "country_SA": "Saudi Arabia", + "country_SB": "Solomon Islands", + "country_SC": "Seychelles", + "country_SD": "Sudan", + "country_SE": "Sweden", + "country_SG": "Singapore", + "country_SH": "Saint Helena", + "country_SI": "Slovenia", + "country_SJ": "Svalbard and Jan Mayen", + "country_SK": "Slovakia", + "country_SL": "Sierra Leone", + "country_SM": "Saint-Marin", + "country_SN": "Senegal", + "country_SO": "Somalia", + "country_SR": "Suriname", + "country_SS": "South Sudan", + "country_ST": "São Tomé and Príncipe", + "country_SV": "El Salvador", + "country_SX": "Sint-Maarten (Kingdom of the Netherlands)", + "country_SY": "Syria/Syrian Arab Republic", + "country_SZ": "Swaziland", + "country_TA": "Tristan da Cunha", + "country_TC": "Turks and Caicos Islands", + "country_TD": "Chad", + "country_TF": "French Southern and Antarctic Lands", + "country_TG": "Togo", + "country_TH": "Thailand", + "country_TJ": "Tajikistan", + "country_TK": "Tokelau", + "country_TL": "East Timor/Timor-Leste", + "country_TM": "Turkmenistan", + "country_TN": "Tunisia", + "country_TO": "Tonga", + "country_TR": "Turkey", + "country_TT": "Trinidad and Tobago", + "country_TV": "Tuvalu", + "country_TW": "Taiwan, Province of China", + "country_TZ": "Tanzania, United Republic of", + "country_UA": "Ukraine", + "country_UG": "Uganda", + "country_UK": "United Kingdom", + "country_UM": "United States Minor Outlying Islands", + "country_US": "United States of America", + "country_UY": "Uruguay", + "country_UZ": "Uzbekistan", + "country_VA": "Vatican", + "country_VC": "Saint Vincent and the Grenadines", + "country_VE": "Venezuela", + "country_VG": "British Virgin Islands", + "country_VI": "United States Virgin Islands", + "country_VN": "Vietnam", + "country_VU": "Vanuatu", + "country_WF": "Wallis and Futuna", + "country_WS": "Samoa", + "country_XK": "Kosovo", + "country_YE": "Yemen", + "country_YT": "Mayotte", + "country_ZA": "South Africa", + "country_ZM": "Zambia", + "country_ZW": "Zimbabwe", + "navigation_more": "More +", + "wizard_help": "Help", + "old_manager_alert": "For the next few weeks, you will still be able to administer your services via the old customer interface.", + "refresh": "Refresh", + "core_new_window": "New window", + "core_new_tab": "Opens a new tab", + "core_change_owner": "Change the owner", + "contacts_management": "Manage contacts", + "customized": "Personalised", + "core_top_guides_header": "For more detailed information, please read our guides.", + "core_top_guides_header_fr": "For assistance, or detailed information about your services and their current status, go to the page:", + "core_type_of_guide_vps": "Virtual private servers", + "core_all_guides": "All our guides ", + "core_vps_top_guide_1_title": "SSH keys creation ", + "core_vps_top_guide_2_title": "Migration of VPS 2014 to the 2016 service ", + "core_vps_top_guide_3_title": "Use of docker-machine on Public Cloud instances ", + "core_vps_top_guide_4_title": "Create user access to Horizon ", + "core_vps_top_guide_5_title": "Get started with the Swift API ", + "core_vps_top_guide_6_title": "Prepare the environment to use the OpenStack API", + "core_vps_top_guide_7_title": "Synchronise NAS Synology with Object Storage using DiskStation Manager 6.0", + "core_vps_top_guide_8_title": "Cloud - In the OVH Control Panel", + "core_vps_top_guide_9_title": "Create an instance in the OVH Control Panel", + "core_type_of_guide_sd": "Dedicated Servers", + "core_sd_top_guide_1_title": "Getting started with a dedicated server", + "core_sd_top_guide_2_title": "Getting started with a Kimsufi, So you Start or Rise dedicated server", + "core_sd_top_guide_3_title": "Secure my dedicated server", + "core_sd_top_guide_4_title": "Create an SSH key", + "core_sd_top_guide_5_title": "Using the IPMI with dedicated servers", + "core_sd_top_guide_6_title": "Migrate data from one dedicated server to another", + "core_sd_top_guide_7_title": "Configure a new Windows Server installation", + "core_sd_top_guide_firewall_title": "Configure the Firewall Network", + "core_type_of_guide_pcc": "Hosted Private Cloud", + "core_pcc_top_guide_1_title": "Access vSphere", + "core_pcc_top_guide_2_title": "Deploying your first virtual machine", + "core_pcc_top_guide_3_title": "Configuring an IP address on a virtual machine", + "core_pcc_top_guide_4_title": "Modify the configuration of a virtual machine", + "core_pcc_top_guide_5_title": "SFTP connection ", + "core_pcc_top_guide_6_title": "Official VMware documentation ", + "core_pcc_top_guide_7_title": "Host deletion", + "core_pcc_top_guide_8_title": "Understanding Windows SPLA licences", + "core_pcc_top_guide_9_title": "NSX startup guide", + "core_pcc_top_guide_10_title": "NSX official documentation", + "sso_modal_title": "OVH - Authentication", + "sso_modal_loading": "Loading...", + "sso_modal_user_title": "You were logged in as:", + "sso_modal_currentuser_title": "You are now logged in as:", + "sso_modal_disconnected": "You are now disconnected.", + "sso_modal_what": "What would you like to do?", + "sso_modal_action_reload": "Continue as {{name}}", + "sso_modal_action_logout": "Go to the login page", + "me_alerts_PAYMENTMEAN_DEFAULT_MISSING": "No default payment method has been selected. Please go to the billing section to select one or add a new method. ", + "me_alerts_PAYMENTMEAN_DEFAULT_EXPIRED": "Your default payment method has expired. Please go to the billing section to enter a new one.", + "me_alerts_PAYMENTMEAN_DEFAULT_EXPIRE_SOON": "Your default payment method will expire in less than 30 days. Please go to the billing section to enter a new one.", + "me_alerts_PAYMENTMEAN_DEFAULT_BANKACCOUNT_PENDINGVALIDATION": "Your default payment method (bank account) is awaiting validation. Please go to the billing section for more information.", + "me_alerts_PAYMENTMEAN_DEFAULT_CREDITCARD_TOOMANYFAILURES": "Your default payment method (credit card) is in error. Please go to the billing section to check the situation and/or enter a new method of payment.", + "me_alerts_PAYMENTMEAN_DEFAULT_PAYPAL_TOOMANYFAILURES": "Your default payment method (PayPal) is in error. Please go to the billing section to check the situation and/or enter a new payment method.", + "me_alerts_PAYMENTMEAN_BANKACCOUNT_PENDINGVALIDATION": "You have {{t0}} bank account(s) awaiting validation. Please go to the billing section for more information.", + "me_alerts_PAYMENTMEAN_CREDITCARD_TOOMANYFAILURES": "You have {{t0}} credit card(s) in default. Please go to the billing section to check the situation and/or enter a new payment method.", + "me_alerts_PAYMENTMEAN_PAYPAL_TOOMANYFAILURES": "You have {{t0}} PayPal accounts returning errors. Please go to the billing section to check for any errors, and/or enter a new payment method.", + "me_alerts_OVHACCOUNT_DEBT": "Your pre-paid account is in debit by {{t0}} as of {{t1}}. Go to the billing section to settle the overdue amount.", + "me_alerts_DEBTACCOUNT_DEBT_WITH_UNMATURED_AMOUNT": "Your account is in debit by {{t0}} (including a total of {{t1}} non-overdue). Please go to the billing section to settle the overdue amount.", + "me_alerts_DEBTACCOUNT_DEBT": "Your account is in debit by {{t0}}. Go to the billing section to settle the overdue amount.", + "me_alerts_OVHACCOUNT_ALERTTHRESHOLD": "Your prepaid account has reached the threshold you set for it. Please go to the billing section for more information.", + "me_alerts_ORDERS_DOCUMENTSREQUESTED": "You have {{t0}} pending order(s) requiring documents. Go to the \"My Orders\" section to do the update.", + "me_alerts_AGREEMENTS_TODO": "You have {{t0}} contracts to approve.", + "me_alerts_CONTACTCHANGE_VALIDATINGBYCUSTOMERS": "You have {{t0}} contact change request(s).", + "me_alerts_AUTORENEW_INVITE": "Choose automatic renewal for your services now!", + "core_service_expiration_label": "Expiry", + "core_service_expiration": "Expired on", + "core_service_expiration_manual_renew": "To renew on ", + "core_service_expiration_auto_renew": "Renewal due on", + "core_service_renew_button": "Renew", + "core_user_enterprise_retail_prices": "Please note: The prices displayed are the standard catalogue prices, and may not reflect the pricing conditions. Please check your monthly invoice for more detailed information about pricing.", + "core_user_enterprise_retail_prices_hpc": "Please note: The prices displayed are an estimation based on the pro rata calculation for this module, to align it with the billing period for your current contract. Please check your monthly invoice for more detailed information about pricing.", + "core_user_trusted_retail_prices": "Note: The price displayed corresponds to the price of the service. The trust zone surcharge is added to the overall monthly bill.", + "browser_alert_not_supported": "Your browser is not supported. ", + "browser_alert_deprecated": "Your browser is not up to date and may contain security vulnerabilities or compatibility issues. ", + "browser_alert_update": "We recommend that you update your browser to get the best experience. ", + "browser_alert_close": "Close this alert", + "ovh_task_follow_button": "Incident details", + "ovh_task_follow_modal_title": "Track incident", + "ovh_task_follow_modal_comment": "Last updated: {{t 0 }}", + "otrs_menu_assistance": "Help ", + "otrs_menu_assistance_expanded": "Need help?", + "otrs_menu_all_guides": "All guides", + "otrs_menu_help_center": "Help centre", + "otrs_menu_new_ticket": "Create a support request", + "otrs_menu_list_ticket": "My support requests", + "otrs_menu_ask_for_assistance": "Support tickets", + "otrs_menu_email_history": "Email history", + "otrs_menu_telephony_contact": "Phone support", + "otrs_menu_changelog": "Changelog", + "common_configuration_creation": "Creation date", + "menu_action_label": "{{t0}} (List of actions)", + "server_tab_USB_STORAGE_order_select_duration": "Select the duration:", + "common_subscription_contacts": "Contacts", + "common_subscription_contacts_admin": "Administrator", + "common_subscription_contacts_billing": "Billing", + "common_subscription_contacts_tech": "Technical", + "common_unavailable_information": "Information unavailable", + "common_resiliate_contact_support": "To cancel this service, please call our support team on: 0333 370 0425. Thank you for choosing OVH.", + "core_pcc_top_guide_11_title": "Nutanix official documentation", + "core_pcc_top_guide_12_title": "SAP HANA on Private Cloud official documentation", + "core_pcc_top_guide_13_title": "Authorise IPs to connect to vCenter", + "core_pcc_top_guide_14_title": "VMware on OVHcloud - VMware Cloud Director" +} diff --git a/packages/manager/modules/new-billing/src/common/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/common/translations/Messages_es_ES.json new file mode 100644 index 000000000000..e86ec57b9d35 --- /dev/null +++ b/packages/manager/modules/new-billing/src/common/translations/Messages_es_ES.json @@ -0,0 +1,551 @@ +{ + "common_actions": "Acciones", + "common_pagination_display": "Ver", + "common_pagination_page": "página", + "select_option": "Seleccione", + "welcome_to_your_manager_1": "Bienvenido/a al", + "welcome_to_your_manager_2": "área de cliente de OVHcloud", + "select_product_on_left": "Seleccione en la columna izquierda el producto que desee configurar.", + "select_product_on_top": "Seleccione arriba el producto que desee configurar.", + "index_nav_bar_logo_alt": "Área de cliente Dedicado OVH", + "older_interface": "Antigua interfaz de cliente", + "universe_univers-v3_name": "Antigua interfaz de cliente", + "unit_size_B": "B", + "unit_size_KB": "KB", + "unit_size_MB": "MB", + "unit_size_GB": "GB", + "unit_size_TB": "TB", + "unit_size_PB": "PB", + "unit_size_EB": "EB", + "unit_size_ZB": "ZB", + "unit_size_YB": "YB", + "unit_size_KiB": "KiB", + "unit_size_MiB": "MiB", + "unit_size_GiB": "GiB", + "unit_size_TiB": "TiB", + "unit_size_PiB": "PiB", + "unit_size_EiB": "EiB", + "unit_size_ZiB": "ZiB", + "unit_size_YiB": "YiB", + "unit_size_bps": "bps", + "unit_size_Kbps": "kbps", + "unit_size_Mbps": "Mbit/s", + "unit_size_Gbps": "Gbit/s", + "unit_size_Tbps": "Tbit/s", + "unit_size_Pbps": "Pbps", + "unit_size_Ebps": "Ebps", + "unit_size_Zbps": "Zbps", + "unit_size_Ybps": "Ybps", + "unit_frequency_HZ": "Hz", + "unit_frequency_KHZ": "KHz", + "unit_frequency_MHZ": "MHz", + "unit_frequency_GHZ": "GHz", + "unit_frequency_THZ": "THz", + "unit_frequency_PHZ": "PHz", + "unit_frequency_EHZ": "EHz", + "unit_frequency_ZHZ": "ZHz", + "unit_frequency_YHZ": "YHz", + "monday": "Lunes", + "tuesday": "Martes", + "wednesday": "Miércoles", + "thursday": "Jueves", + "friday": "Viernes", + "saturday": "Sábado", + "sunday": "Domingo", + "januar": "Enero", + "februar": "Febrero", + "march": "Marzo", + "april": "Abril", + "may": "Mayo", + "june": "Junio", + "jully": "Julio", + "august": "Agosto", + "september": "Septiembre", + "october": "Octubre", + "november": "Noviembre", + "december": "Diciembre", + "januar_short": "Ene", + "februar_short": "Feb", + "march_short": "Marzo", + "april_short": "Abril", + "may_short": "Mayo", + "june_short": "Junio", + "jully_short": "Jul", + "august_short": "Agosto", + "september_short": "Sep", + "october_short": "Oct", + "november_short": "Nov", + "december_short": "Dic", + "wizard_cancel": "Cancelar", + "wizard_close": "Cerrar", + "wizard_confirm": "Aceptar", + "wizard_modify": "Editar", + "wizard_delete": "Eliminar", + "wizard_yes": "Sí", + "wizard_no": "No", + "wizard_order": "Contratar", + "wizard_pay": "Abonar", + "wizard_renew": "Renovar", + "wizard_next": "Siguiente", + "wizard_previous": "Anterior", + "wizard_breadcrumb": "Paso {{ currentStep }} de {{ stepCount }}", + "pagination_page": "Página {{ current }}/{{ last }}", + "pagination_go": "OK", + "pagination_display": "Ver", + "common_loading": "Cargando…", + "common_cancel": "Cancelar", + "common_confirm": "Confirmar", + "common_terminate": "Finalizar", + "common_back": "Volver", + "common_next": "Siguiente", + "common_previous": "Anterior", + "common_activated": "Activado", + "common_activate": "Activar", + "common_desactivated": "Desactivado", + "common_desactivate": "Desactivar", + "common_TODO": "Información en breve", + "common_not_configurated": "No configurado", + "common_ipv4": "IPv4", + "common_ipv6": "IPv6", + "common_bitFormat": "bits", + "common_expired": "El servicio no ha sido renovado. Esto puede deberse a una decisión suya o a un retraso en el pago.", + "common_settle_bill": "Regularizar", + "common_service_expired": "El servicio {{t0}} no ha sido renovado. Esto puede deberse a una decisión suya o a un retraso en el pago.", + "common_reset_zoom": "Restablecer el zoom", + "common_alerts_message_see_more": "Ver el detalle de los errores", + "common_alerts_message_see_less": "Ocultar el detalle de los errores", + "common_managerv5": "Manager V5", + "common_managerv3": "Manager V3", + "common_refresh": "Actualizar", + "common_change": "Editar", + "common_download_format": "Descargar en formato {{t0}}", + "common_skip_to_main_content": "Ir al contenido principal", + "common_shortcuts": "Atajos", + "common_links": "Enlaces", + "common_add": "Añadir", + "global_app_title": "Su área de cliente Dedicado OVHcloud", + "global_language": "Idioma", + "global_logout": "Salir", + "global_changelog": "Historial de actualizaciones", + "global_configuration": "Configuración", + "global_billing": "Facturación", + "global_renew": "Mis servicios", + "global_orders": "Mis pedidos ", + "global_preference": "Mi cuenta", + "global_support": "Soporte", + "global_feedback": "Denos su opinión", + "global_feedback_appreciation": "Su opinión nos interesa", + "global_feedback_appreciation_text": "En esta ventana podrá darnos su opinión sobre la navegación
y la ergonomía de la nueva área de cliente.", + "global_feedback_remark": "Tipo de comentario", + "global_feedback_type_simplecomment": "Comentario general", + "global_feedback_type_design": "Diseño", + "global_feedback_type_ergo": "Usabilidad", + "global_feedback_type_bug": "Bug", + "global_feedback_more_details": "Escriba su mensaje a continuación", + "global_feedback_warning": "Atención, este formulario no concierne al soporte técnico de los productos.", + "global_feedback_contact": "Para cualquier cuestión de tipo comercial o técnico, contacte con el soporte de OVH ", + "global_feedback_contact_link": "haciendo clic aquí", + "global_feedback_send": "Enviar", + "global_feedback_subject": "Asunto", + "global_feedback_subject_required": "Introduzca un asunto. ", + "global_feedback_subject_maxlength": "El título no debe superar los 255 caracteres.", + "global_profil": "Perfil", + "global_OK": "OK", + "global_KO": "Cancelar", + "global_switch_mode": "Modo:", + "global_switch_simple_mode": "Modo simple", + "global_switch_expert_mode": "Modo experto", + "global_processing": "Tramitando...", + "global_doing": "En curso...", + "main_menu_products_and_config": "Configuración", + "main_menu_bill_and_renew": "Facturación", + "main_menu_help_and_support": "Ayuda", + "common_yes": "Sí", + "common_no": "No", + "common_delete": "Eliminar", + "required": "Campo obligatorio", + "required_fields": "Los campos con asterisco son obligatorios.", + "select_placeholder": "Seleccione...", + "common_newtab": "nueva pestaña", + "contract_next": "Siguiente", + "contract_previous": "Anterior", + "download_contract": "Abrir el contrato «{{ name }}» en PDF", + "contract_help": "Hay que recorrer los contratos completos para poder aceptarlos.", + "contracts_list_title": "Tiene {{ count }} contratos pendientes de revisión.", + "contract_list_title": "Hay un contrato pendiente de consultar.", + "contracts_agree": "Acepto los contratos", + "contract_agree": "Acepto el contrato", + "day_1": "1 día", + "day_other": "{} días", + "month_1": "1 mes", + "month_other": "{{t0}} mes(es)", + "year_1": "1 año", + "year_other": "{} años", + "upto": "Hasta el", + "uptofirstdaynextmonth": "Hasta el día 1 del mes siguiente", + "engage": "Contratar {{t0}}", + "price_ht_label": "{{ price }} + IVA", + "price_ttc_label": "{{ price }} IVA incl.", + "price_free": "Incluido", + "price_label_yearly": "/año", + "country_AC": "Isla Ascensión", + "country_AD": "Andorra", + "country_AE": "Emiratos Árabes Unidos", + "country_AF": "Afganistán", + "country_AG": "Antigua y Barbuda", + "country_AI": "Anguila", + "country_AL": "Albania", + "country_AM": "Armenia", + "country_AO": "Angola", + "country_AQ": "Antártida", + "country_AR": "Argentina", + "country_AS": "Samoa Americana", + "country_AT": "Austria", + "country_AU": "Australia", + "country_AW": "Aruba", + "country_AX": "Åland, Islas", + "country_AZ": "Azerbaiyán", + "country_BA": "Bosnia-Herzegovina", + "country_BB": "Barbados", + "country_BD": "Bangladés", + "country_BE": "Bélgica", + "country_BF": "Burkina Faso", + "country_BG": "Bulgaria", + "country_BH": "Baréin", + "country_BI": "Burundi", + "country_BJ": "Benín", + "country_BL": "San Bartolomé", + "country_BM": "Bermudas", + "country_BN": "Brunéi", + "country_BO": "Bolivia", + "country_BQ": "Caribe Neerlandés", + "country_BR": "Brasil", + "country_BS": "Bahamas", + "country_BT": "Bután", + "country_BW": "Botsuana", + "country_BY": "Bielorrusia", + "country_BZ": "Belice", + "country_CA": "Canadá", + "country_CC": "Cocos (Keeling), Islas", + "country_CD": "Congo, República Democrática del", + "country_CF": "Centroafricana, República", + "country_CG": "Congo", + "country_CH": "Suiza", + "country_CI": "Costa de Marfil", + "country_CK": "Cook, Islas", + "country_CL": "Chile", + "country_CM": "Camerún", + "country_CN": "China", + "country_CO": "Colombia", + "country_CR": "Costa Rica", + "country_CU": "Cuba", + "country_CV": "Cabo Verde", + "country_CW": "Curazao", + "country_CX": "Christmas, Isla", + "country_CY": "Chipre", + "country_CZ": "República Checa", + "country_DE": "Alemania", + "country_DG": "Diego García", + "country_DJ": "Yibuti", + "country_DK": "Dinamarca", + "country_DM": "Dominica", + "country_DO": "Dominicana, República", + "country_DZ": "Argelia", + "country_EA": "Ceuta, Melilla", + "country_EC": "Ecuador", + "country_EE": "Estonia ", + "country_EG": "Egipto", + "country_EH": "Sáhara Occidental", + "country_ER": "Eritrea", + "country_ES": "España", + "country_ET": "Etiopía", + "country_FI": "Finlandia ", + "country_FJ": "Fiyi", + "country_FK": "Malvinas, Islas (Fakland)", + "country_FM": "Micronesia, Estados Federados de", + "country_FO": "Feroe, Islas", + "country_FR": "Francia", + "country_GA": "Gabón", + "country_GB": "Reino Unido", + "country_GD": "Granada", + "country_GE": "Georgia", + "country_GF": "Guayana Francesa", + "country_GG": "Guernesey", + "country_GH": "Ghana", + "country_GI": "Gibraltar", + "country_GL": "Groenlandia", + "country_GM": "Gambia", + "country_GN": "Guinea", + "country_GP": "Guadalupe", + "country_GQ": "Guinea Ecuatorial", + "country_GR": "Grecia", + "country_GS": "Georgia del Sur e Islas Sandwich del Sur", + "country_GT": "Guatemala", + "country_GU": "Guam", + "country_GW": "Guinea-Bisáu", + "country_GY": "Guyana", + "country_HK": "Hong Kong", + "country_HN": "Honduras", + "country_HR": "Croacia", + "country_HT": "Haití", + "country_HU": "Hungría", + "country_IC": "Islas Canarias", + "country_ID": "Indonesia", + "country_IE": "Irlanda", + "country_IL": "Israel", + "country_IM": "Isla de Man", + "country_IN": "India", + "country_IO": "Océano Índico, Territorio Británico del", + "country_IQ": "Irak", + "country_IR": "Irán, República Islámica de", + "country_IS": "Islandia", + "country_IT": "Italia", + "country_JE": "Jersey", + "country_JM": "Jamaica", + "country_JO": "Jordania", + "country_JP": "Japón", + "country_KE": "Kenia", + "country_KG": "Kirguistán", + "country_KH": "Camboya", + "country_KI": "Kiribati", + "country_KM": "Comoras", + "country_KN": "San Cristóbal y Nieves", + "country_KP": "Corea, República Popular Democrática de", + "country_KR": "Corea, República de", + "country_KW": "Kuwait", + "country_KY": "Caimán, Islas", + "country_KZ": "Kazajistán", + "country_LA": "Laos, República Democrática Popular", + "country_LB": "Líbano", + "country_LC": "Santa Lucía", + "country_LI": "Liechtenstein", + "country_LK": "Sri Lanka", + "country_LR": "Liberia", + "country_LS": "Lesoto", + "country_LT": "Lituania", + "country_LU": "Luxemburgo", + "country_LV": "Letonia ", + "country_LY": "Libia", + "country_MA": "Marruecos", + "country_MC": "Mónaco", + "country_MD": "Moldavia", + "country_ME": "Montenegro", + "country_MF": "San Martín, Colectividad de", + "country_MG": "Madagascar", + "country_MH": "Marshall, Islas", + "country_MK": "Macedonia", + "country_ML": "Mali", + "country_MM": "Myanmar", + "country_MN": "Mongolia", + "country_MO": "Macao", + "country_MP": "Marianas del Norte, Islas", + "country_MQ": "Martinica", + "country_MR": "Mauritania", + "country_MS": "Montserrat", + "country_MT": "Malta", + "country_MU": "República de Mauricio", + "country_MV": "Maldivas", + "country_MW": "Malaui", + "country_MX": "México", + "country_MY": "Malasia", + "country_MZ": "Mozambique", + "country_NA": "Namibia", + "country_NC": "Nueva Caledonia", + "country_NE": "Níger", + "country_NF": "Norfolk, Isla", + "country_NG": "Nigeria", + "country_NI": "Nicaragua", + "country_NL": "Países Bajos", + "country_NO": "Noruega ", + "country_NP": "Nepal", + "country_NR": "Nauru", + "country_NU": "Niue", + "country_NZ": "Nueva Zelanda", + "country_OM": "Omán", + "country_PA": "Panamá", + "country_PE": "Perú", + "country_PF": "Polinesia Francesa", + "country_PG": "Papúa Nueva Guinea", + "country_PH": "Filipinas", + "country_PK": "Pakistán", + "country_PL": "Polonia", + "country_PM": "San Pedro y Miquelón", + "country_PN": "Pitcairn, Islas", + "country_PR": "Puerto Rico", + "country_PS": "Palestinos, Territorios", + "country_PT": "Portugal", + "country_PW": "Palaos", + "country_PY": "Paraguay", + "country_QA": "Qatar", + "country_QC": "Quebec", + "country_RE": "Reunión", + "country_RO": "Rumanía", + "country_RS": "Serbia, República de (antigua Serbia y Montenegro)", + "country_RU": "Rusia ", + "country_RW": "Ruanda", + "country_SA": "Arabia Saudí", + "country_SB": "Salomón, Islas", + "country_SC": "Seychelles", + "country_SD": "Sudán", + "country_SE": "Suecia ", + "country_SG": "Singapur", + "country_SH": "Santa Elena", + "country_SI": "Eslovenia", + "country_SJ": "Svalbard y Jan Mayen", + "country_SK": "Eslovaquia", + "country_SL": "Sierra Leona", + "country_SM": "San Marino ", + "country_SN": "Senegal", + "country_SO": "Somalia", + "country_SR": "Surinam", + "country_SS": "Sudán del Sur", + "country_ST": "Santo Tomé y Príncipe", + "country_SV": "El Salvador", + "country_SX": "San Martín (Reino de los Países Bajos)", + "country_SY": "Siria, República Árabe", + "country_SZ": "Suazilandia", + "country_TA": "Tristán de Acuña", + "country_TC": "Turcas y Caicos, Islas", + "country_TD": "Chad", + "country_TF": "Territorios Australes Francesesv", + "country_TG": "Togo", + "country_TH": "Tailandia", + "country_TJ": "Tayikistán", + "country_TK": "Tokelau", + "country_TL": "Timor Oriental", + "country_TM": "Turkmenistán", + "country_TN": "Túnez", + "country_TO": "Tonga", + "country_TR": "Turquía", + "country_TT": "Trinidad y Tobago", + "country_TV": "Tuvalu", + "country_TW": "Taiwán, provincia de China", + "country_TZ": "Tanzania, República Unida de", + "country_UA": "Ucrania", + "country_UG": "Uganda", + "country_UK": "Reino Unido", + "country_UM": "Islas menores alejadas de los Estados Unidos", + "country_US": "Estados Unidos", + "country_UY": "Uruguay", + "country_UZ": "Uzbekistán", + "country_VA": "Vaticano", + "country_VC": "San Vicente y las Granadinas", + "country_VE": "Venezuela", + "country_VG": "Islas Vírgenes Británicas", + "country_VI": "Islas Vírgenes de los Estados Unidos", + "country_VN": "Vietnam", + "country_VU": "Vanuatu", + "country_WF": "Wallis y Futuna", + "country_WS": "Samoa", + "country_XK": "Kosovo", + "country_YE": "Yemen", + "country_YT": "Mayotte", + "country_ZA": "Sudáfrica", + "country_ZM": "Zambia", + "country_ZW": "Zimbabue", + "navigation_more": "Más +", + "wizard_help": "Ayuda", + "old_manager_alert": "Durante unas semanas, podrá seguir administrando sus servicios desde la antigua interfaz de cliente.", + "refresh": "Actualizar", + "core_new_window": "Nueva ventana", + "core_new_tab": "Abrir una nueva ventana", + "core_change_owner": "Cambiar el propietario", + "contacts_management": "Editar los contactos", + "customized": "Personalizado", + "core_top_guides_header": "Para obtener información más detallada, consulte nuestras guías.", + "core_top_guides_header_fr": "Si necesita ayuda o más información sobre sus servicios, acceda a la siguiente página:", + "core_type_of_guide_vps": "Servidores privados virtuales", + "core_all_guides": "Todas las guías ", + "core_vps_top_guide_1_title": "Creación de las llaves SSH", + "core_vps_top_guide_2_title": "Migración de VPS 2014 a 2016", + "core_vps_top_guide_3_title": "Uso de Docker Machine basado en las instancias Public Cloud", + "core_vps_top_guide_4_title": "Crear un acceso a Horizon", + "core_vps_top_guide_5_title": "Empezar con la API Swift", + "core_vps_top_guide_6_title": "Preparar el entorno para utilizar la API OpenStack", + "core_vps_top_guide_7_title": "Sincronizar un NAS Synology con el Object Storage con ayuda de DiskStation Manager 6.0", + "core_vps_top_guide_8_title": "Cloud - En el área de cliente de OVH", + "core_vps_top_guide_9_title": "Crear una instancia en el área de cliente de OVH", + "core_type_of_guide_sd": "Servidores dedicados", + "core_sd_top_guide_1_title": "Primeros pasos con un servidor dedicado", + "core_sd_top_guide_2_title": "Primeros pasos con un servidor dedicado Kimsufi, So you Start o Rise", + "core_sd_top_guide_3_title": "Proteger un servidor dedicado", + "core_sd_top_guide_4_title": "Crear una llave SSH", + "core_sd_top_guide_5_title": "Utilizar IPMI en un servidor dedicado", + "core_sd_top_guide_6_title": "Migración de los datos de un servidor dedicado a otro", + "core_sd_top_guide_7_title": "Configurar una nueva instalación de Windows Server", + "core_sd_top_guide_firewall_title": "Configurar el Firewall Network", + "core_type_of_guide_pcc": "Cloud de Alojamiento Privado", + "core_pcc_top_guide_1_title": "Acceder a vSphere", + "core_pcc_top_guide_2_title": "Desplegar su primera máquina virtual", + "core_pcc_top_guide_3_title": "Configurar una dirección IP en una máquina virtual", + "core_pcc_top_guide_4_title": "Modificar la configuración de una máquina virtual", + "core_pcc_top_guide_5_title": "Conexión en SFTP", + "core_pcc_top_guide_6_title": "Documentación oficial de VMware", + "core_pcc_top_guide_7_title": "Eliminación de un host", + "core_pcc_top_guide_8_title": "Entender las licencias SPLA Windows", + "core_pcc_top_guide_9_title": "Primeros pasos con NSX", + "core_pcc_top_guide_10_title": "Documentación oficial de NSX", + "sso_modal_title": "OVH: Autenticación", + "sso_modal_loading": "Cargando...", + "sso_modal_user_title": "Estaba conectado como:", + "sso_modal_currentuser_title": "Ahora está conectado como:", + "sso_modal_disconnected": "Ahora está desconectado.", + "sso_modal_what": "¿Qué desea hacer?", + "sso_modal_action_reload": "Continuar como {{name}}", + "sso_modal_action_logout": "Ir a la página de autenticación", + "me_alerts_PAYMENTMEAN_DEFAULT_MISSING": "No ha indicado ninguna forma de pago por defecto. Acceda a la sección «Facturación» para seleccionarla o añadir una nueva.", + "me_alerts_PAYMENTMEAN_DEFAULT_EXPIRED": "¡Su forma de pago por defecto ha expirado! Acceda a «Facturación» para registrar una nueva forma de pago.", + "me_alerts_PAYMENTMEAN_DEFAULT_EXPIRE_SOON": "Su forma de pago por defecto expira en menos de 30 días. Acceda a «Facturación» para registrar una nueva forma de pago.", + "me_alerts_PAYMENTMEAN_DEFAULT_BANKACCOUNT_PENDINGVALIDATION": "Su forma de pago por defecto (cuenta bancaria) está pendiente de validación. Acceda a «Facturación» para más información. ", + "me_alerts_PAYMENTMEAN_DEFAULT_CREDITCARD_TOOMANYFAILURES": "¡Se ha registrado un error en su forma de pago por defecto (tarjeta bancaria)! Acceda a «Facturación» para realizar las comprobaciones necesarias y/o registrar una nueva forma de pago.", + "me_alerts_PAYMENTMEAN_DEFAULT_PAYPAL_TOOMANYFAILURES": "¡Se ha registrado un error en su forma de pago por defecto (PayPal)! Acceda a «Facturación» para realizar las comprobaciones necesarias y/o registrar una nueva forma de pago.", + "me_alerts_PAYMENTMEAN_BANKACCOUNT_PENDINGVALIDATION": "Tiene {{t0}} cuenta(s) bancaria(s) pendiente(s) de validación. Acceda «Facturación» para más información.", + "me_alerts_PAYMENTMEAN_CREDITCARD_TOOMANYFAILURES": "Se ha registrado un error en {{t0}} tarjeta(s) bancaria(s). Acceda a «Facturación» para realizar las comprobaciones necesarias y/o registrar una nueva forma de pago.", + "me_alerts_PAYMENTMEAN_PAYPAL_TOOMANYFAILURES": "Se ha registrado un error en {{t0}} cuenta(s) PayPal. Acceda a «Facturación» para realizar las comprobaciones necesarias y/o registrar una nueva forma de pago.", + "me_alerts_OVHACCOUNT_DEBT": "Su cuenta de prepago tiene un saldo negativo de {{t0}} a {{t1}}. Acceda a la sección «Facturación» para regularizar su situación.", + "me_alerts_DEBTACCOUNT_DEBT_WITH_UNMATURED_AMOUNT": "Tiene un saldo pendiente de {{t0}} (incluido un importe de {{t1}} no vencido). Acceda a la sección «Facturación» para regularizar su situación.", + "me_alerts_DEBTACCOUNT_DEBT": "Tiene un saldo pendiente de {{t0}}. Acceda a la sección «Facturación» para regularizar su situación.", + "me_alerts_OVHACCOUNT_ALERTTHRESHOLD": "Su cuenta de prepago ha alcanzado el umbral que usted ha establecido. Para más información, acceda a la sección «Facturación».", + "me_alerts_ORDERS_DOCUMENTSREQUESTED": "Tiene {{t0}} pedido(s) en espera de documentación pendiente. Acceda a «Mis pedidos» para actualizar la documentación.", + "me_alerts_AGREEMENTS_TODO": "Tiene {{t0}} contrato(s) pendiente(s) de validación.", + "me_alerts_CONTACTCHANGE_VALIDATINGBYCUSTOMERS": "Tiene {{t0}} solicitud(es) de cambio de contacto.", + "me_alerts_AUTORENEW_INVITE": "¡Active ya la renovación automática de sus servicios!", + "core_service_expiration_label": "Expiración", + "core_service_expiration": "Ha expirado el", + "core_service_expiration_manual_renew": "Debe renovarse el", + "core_service_expiration_auto_renew": "Renovación prevista el", + "core_service_renew_button": "Renovar", + "core_user_enterprise_retail_prices": "Atención: Los precios indicados son precios estándares del catálogo y no pueden reflejar las condiciones negociadas. Consulte su factura mensual para una información más detallada.", + "core_user_enterprise_retail_prices_hpc": "Atención: Los precios indicados son una estimación basada en el cálculo proporcional de este módulo para adaptarlo al período de facturación de su actual contrato. Consulte su factura mensual para una información más detallada.", + "core_user_trusted_retail_prices": "Nota: El precio mostrado corresponde al precio del servicio. El recargo correspondiente a la zona de confianza (Trusted Zone) se añade a la facturación mensual global.", + "browser_alert_not_supported": "Su navegador no es compatible.", + "browser_alert_deprecated": "Su navegador no está actualizado y puede contener fallos de seguridad o compatibilidad.", + "browser_alert_update": "Le recomendamos que actualice su navegador para disfrutar de una experiencia óptima.", + "browser_alert_close": "Cerrar la alerta", + "ovh_task_follow_button": "Información sobre la incidencia", + "ovh_task_follow_modal_title": "Seguimiento de la incidencia", + "ovh_task_follow_modal_comment": "Última actualización: {{t 0 }}", + "otrs_menu_assistance": "Soporte", + "otrs_menu_assistance_expanded": "Ayuda", + "otrs_menu_all_guides": "Todas las guías", + "otrs_menu_help_center": "Centro de ayuda", + "otrs_menu_new_ticket": "Crear una solicitud de asistencia", + "otrs_menu_list_ticket": "Mis solicitudes de asistencia", + "otrs_menu_ask_for_assistance": "Solicitudes de asistencia", + "otrs_menu_email_history": "Historial de mensajes de correo", + "otrs_menu_telephony_contact": "Soporte telefónico", + "otrs_menu_changelog": "Historial de actualizaciones", + "common_configuration_creation": "Fecha de creación", + "menu_action_label": "{{t0}} (Lista de acciones)", + "server_tab_USB_STORAGE_order_select_duration": "Seleccione la duración:", + "common_subscription_contacts": "Contactos", + "common_subscription_contacts_admin": "Administrador ", + "common_subscription_contacts_billing": "Facturación", + "common_subscription_contacts_tech": "Técnico", + "common_unavailable_information": "Información no disponible", + "common_resiliate_contact_support": "Para dar de baja este servicio, puede ponerse en contacto con nuestro Soporte en el 91 758 34 77. ¡Gracias por su comprensión!", + "core_pcc_top_guide_11_title": "Documentación oficial de Nutanix", + "core_pcc_top_guide_12_title": "Documentación oficial de SAP HANA on Private Cloud", + "core_pcc_top_guide_13_title": "Autorizar las direcciones IP a conectarse al vCenter", + "core_pcc_top_guide_14_title": "VMware on OVHcloud - VMware Cloud Director" +} diff --git a/packages/manager/modules/new-billing/src/common/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/common/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..58c5c0f16ec0 --- /dev/null +++ b/packages/manager/modules/new-billing/src/common/translations/Messages_fr_CA.json @@ -0,0 +1,551 @@ +{ + "common_actions": "Actions", + "common_pagination_display": "Afficher", + "common_pagination_page": "page", + "select_option": "Sélectionnez...", + "welcome_to_your_manager_1": "Bienvenue dans votre", + "welcome_to_your_manager_2": "espace client OVHcloud", + "select_product_on_left": "Veuillez sélectionner un produit à configurer dans la colonne de gauche.", + "select_product_on_top": "Veuillez sélectionner un produit à configurer ci-dessus.", + "index_nav_bar_logo_alt": "Espace Client Dédié OVH", + "older_interface": "Ancienne interface client", + "universe_univers-v3_name": "Ancienne interface client", + "unit_size_B": "o", + "unit_size_KB": "ko", + "unit_size_MB": "Mo", + "unit_size_GB": "Go", + "unit_size_TB": "To", + "unit_size_PB": "Po", + "unit_size_EB": "Eo", + "unit_size_ZB": "Zo", + "unit_size_YB": "Yo", + "unit_size_KiB": "Kio", + "unit_size_MiB": "Mio", + "unit_size_GiB": "Gio", + "unit_size_TiB": "Tio", + "unit_size_PiB": "Pio", + "unit_size_EiB": "Eio", + "unit_size_ZiB": "Zio", + "unit_size_YiB": "Yio", + "unit_size_bps": "bps", + "unit_size_Kbps": "kbps", + "unit_size_Mbps": "Mbps", + "unit_size_Gbps": "Gbps", + "unit_size_Tbps": "Tbps", + "unit_size_Pbps": "Pbps", + "unit_size_Ebps": "Ebps", + "unit_size_Zbps": "Zbps", + "unit_size_Ybps": "Ybps", + "unit_frequency_HZ": "Hz", + "unit_frequency_KHZ": "KHz", + "unit_frequency_MHZ": "MHz", + "unit_frequency_GHZ": "GHz", + "unit_frequency_THZ": "THz", + "unit_frequency_PHZ": "PHz", + "unit_frequency_EHZ": "EHz", + "unit_frequency_ZHZ": "ZHz", + "unit_frequency_YHZ": "YHz", + "monday": "Lundi", + "tuesday": "Mardi", + "wednesday": "Mercredi", + "thursday": "Jeudi", + "friday": "Vendredi", + "saturday": "Samedi", + "sunday": "Dimanche", + "januar": "Janvier", + "februar": "Février", + "march": "Mars", + "april": "Avril", + "may": "Mai", + "june": "Juin", + "jully": "Juillet", + "august": "Août", + "september": "Septembre", + "october": "Octobre", + "november": "Novembre", + "december": "Décembre", + "januar_short": "Janv", + "februar_short": "Févr", + "march_short": "Mars", + "april_short": "Avril", + "may_short": "Mai", + "june_short": "Juin", + "jully_short": "Juil", + "august_short": "Août", + "september_short": "Sept", + "october_short": "Oct", + "november_short": "Nov", + "december_short": "Déc", + "wizard_cancel": "Annuler", + "wizard_close": "Fermer", + "wizard_confirm": "Valider", + "wizard_modify": "Modifier", + "wizard_delete": "Supprimer", + "wizard_yes": "Oui", + "wizard_no": "Non", + "wizard_order": "Commander", + "wizard_pay": "Régler", + "wizard_renew": "Renouveler", + "wizard_next": "Suivant", + "wizard_previous": "Précédent", + "wizard_breadcrumb": "Étape {{ currentStep }} sur {{ stepCount }}", + "pagination_page": "Page {{ current }} / {{ last }}", + "pagination_go": "OK", + "pagination_display": "Afficher", + "common_loading": "Chargement…", + "common_cancel": "Annuler", + "common_confirm": "Confirmer", + "common_terminate": "Terminer", + "common_back": "Retour", + "common_next": "Suivant", + "common_previous": "Précédent", + "common_activated": "Activé", + "common_activate": "Activer", + "common_desactivated": "Désactivé", + "common_desactivate": "Désactiver", + "common_TODO": "Info à venir", + "common_not_configurated": "Non configuré", + "common_ipv4": "IPv4", + "common_ipv6": "IPv6", + "common_bitFormat": "bits", + "common_expired": "Le service n'a pas été renouvelé. Cela est peut être dû à une décision de votre part ou un retard de paiement de votre côté.", + "common_settle_bill": "Régulariser", + "common_service_expired": "Le service {{t0}} n'a pas été renouvelé. Cela est peut être dû à une décision de votre part ou un retard de paiement de votre côté.", + "common_reset_zoom": "Réinitialiser le zoom", + "common_alerts_message_see_more": "Voir le détail des erreurs", + "common_alerts_message_see_less": "Masquer le détail des erreurs", + "common_managerv5": "Manager V5", + "common_managerv3": "Manager V3", + "common_refresh": "Rafraîchir", + "common_change": "Modifier", + "common_download_format": "Télécharger au format {{t0}}", + "common_skip_to_main_content": "Aller au contenu principal", + "common_shortcuts": "Raccourcis", + "common_links": "Liens", + "common_add": "Ajouter", + "global_app_title": "Votre espace client Dédié OVHcloud", + "global_language": "Langue", + "global_logout": "Déconnexion", + "global_changelog": "Historique des mises à jour", + "global_configuration": "Configuration", + "global_billing": "Facturation", + "global_renew": "Mes services", + "global_orders": "Mes commandes", + "global_preference": "Mon compte", + "global_support": "Support", + "global_feedback": "Donnez votre avis", + "global_feedback_appreciation": "Votre avis nous intéresse", + "global_feedback_appreciation_text": "Via cette fenetre vous pouvez nous donner votre avis sur la navigation
et l'ergonomie de votre nouvel Espace Client.", + "global_feedback_remark": "Type de remarque", + "global_feedback_type_simplecomment": "Commentaire général", + "global_feedback_type_design": "Design", + "global_feedback_type_ergo": "Ergonomie", + "global_feedback_type_bug": "Bug", + "global_feedback_more_details": "Veuillez inscrire votre message ci-dessous", + "global_feedback_warning": "Attention, ce formulaire ne concerne pas le support de vos produits.", + "global_feedback_contact": "Pour toute question d'ordre commercial ou technique, veuillez contacter le support OVH,", + "global_feedback_contact_link": "en cliquant ici", + "global_feedback_send": "Envoyer", + "global_feedback_subject": "Sujet", + "global_feedback_subject_required": "Veuillez entrer un sujet", + "global_feedback_subject_maxlength": "Le titre ne doit pas excéder 255 caractères", + "global_profil": "Profil", + "global_OK": "OK", + "global_KO": "KO", + "global_switch_mode": "Mode :", + "global_switch_simple_mode": "Mode simple", + "global_switch_expert_mode": "Mode expert", + "global_processing": "Traitement en cours ...", + "global_doing": "En cours ...", + "main_menu_products_and_config": "Configuration", + "main_menu_bill_and_renew": "Facturation", + "main_menu_help_and_support": "Aide", + "common_yes": "Oui", + "common_no": "Non", + "common_delete": "Supprimer", + "required": "Champs requis", + "required_fields": "Les champs suivis d'un astérisque sont obligatoires.", + "select_placeholder": "Sélectionnez…", + "common_newtab": "nouvel onglet", + "contract_next": "Suivant", + "contract_previous": "Précédent", + "download_contract": "Ouvrir le contrat \"{{ name }}\" en PDF", + "contract_help": "Il faut faire défiler les contrats pour pouvoir les valider.", + "contracts_list_title": "Il y a {{ count }} contrats à consulter.", + "contract_list_title": "Il y a 1 contrat à consulter.", + "contracts_agree": "J'accepte les contrats", + "contract_agree": "J'accepte le contrat", + "day_1": "1 jour", + "day_other": "{} jours", + "month_1": "1 mois", + "month_other": "{{t0}} mois", + "year_1": "1 an", + "year_other": "{} ans", + "upto": "Jusqu'au", + "uptofirstdaynextmonth": "Jusqu'au premier jour du prochain mois", + "engage": "S'engager {{t0}}", + "price_ht_label": "{{ price }} HT", + "price_ttc_label": "{{ price }} TTC", + "price_free": "Inclus", + "price_label_yearly": "/an", + "country_AC": "Île D'Ascension", + "country_AD": "Andorre", + "country_AE": "Émirats Arabes Unis", + "country_AF": "Afghanistan", + "country_AG": "Antigua-Et-Barbuda", + "country_AI": "Anguilla", + "country_AL": "Albanie", + "country_AM": "Arménie", + "country_AO": "Angola", + "country_AQ": "Antarctique", + "country_AR": "Argentine", + "country_AS": "Samoa Américaines", + "country_AT": "Autriche", + "country_AU": "Australie", + "country_AW": "Aruba", + "country_AX": "Åland, Îles", + "country_AZ": "Azerbaïdjan", + "country_BA": "Bosnie-Herzégovine", + "country_BB": "Barbade", + "country_BD": "Bangladesh", + "country_BE": "Belgique", + "country_BF": "Burkina Faso", + "country_BG": "Bulgarie", + "country_BH": "Bahreïn", + "country_BI": "Burundi", + "country_BJ": "Bénin", + "country_BL": "Saint Barthélemy", + "country_BM": "Bermudes", + "country_BN": "Brunéi Darussalam", + "country_BO": "Bolivie", + "country_BQ": "Pays-Bas caribéens", + "country_BR": "Brésil", + "country_BS": "Bahamas", + "country_BT": "Bhoutan", + "country_BW": "Botswana", + "country_BY": "Biélorussie", + "country_BZ": "Belize", + "country_CA": "Canada", + "country_CC": "Cocos (Keeling), Îles", + "country_CD": "Congo, La République Démocratique Du", + "country_CF": "Centrafricaine, République", + "country_CG": "Congo", + "country_CH": "Suisse", + "country_CI": "Côte D'Ivoire", + "country_CK": "Cook, Îles", + "country_CL": "Chili", + "country_CM": "Cameroun", + "country_CN": "Chine", + "country_CO": "Colombie", + "country_CR": "Costa Rica", + "country_CU": "Cuba", + "country_CV": "Cap-Vert", + "country_CW": "Curaçao", + "country_CX": "Christmas, Île", + "country_CY": "Chypre", + "country_CZ": "République tchèque", + "country_DE": "Allemagne", + "country_DG": "Diego Garcia", + "country_DJ": "Djibouti", + "country_DK": "Danemark", + "country_DM": "Dominique", + "country_DO": "Dominicaine, République", + "country_DZ": "Algérie", + "country_EA": "Ceuta, Melilla", + "country_EC": "Équateur", + "country_EE": "Estonie", + "country_EG": "Égypte", + "country_EH": "Sahara Occidental", + "country_ER": "Érythrée", + "country_ES": "Espagne", + "country_ET": "Éthiopie", + "country_FI": "Finlande", + "country_FJ": "Fidji", + "country_FK": "Falkland, Îles (Malvinas)", + "country_FM": "Micronésie, États Fédérés De", + "country_FO": "Féroé, Îles", + "country_FR": "France", + "country_GA": "Gabon", + "country_GB": "Royaume-Uni", + "country_GD": "Grenade", + "country_GE": "Géorgie", + "country_GF": "Guyane Française", + "country_GG": "Guernesey", + "country_GH": "Ghana", + "country_GI": "Gibraltar", + "country_GL": "Groenland", + "country_GM": "Gambie", + "country_GN": "Guinée", + "country_GP": "Guadeloupe", + "country_GQ": "Guinée Équatoriale", + "country_GR": "Grèce", + "country_GS": "Géorgie Du Sud et Les Îles Sandwich Du Sud", + "country_GT": "Guatemala", + "country_GU": "Guam", + "country_GW": "Guinée-Bissau", + "country_GY": "Guyana", + "country_HK": "Hong-Kong", + "country_HN": "Honduras", + "country_HR": "Croatie", + "country_HT": "Haïti", + "country_HU": "Hongrie", + "country_IC": "Les Îles Canaries", + "country_ID": "Indonésie", + "country_IE": "Irlande", + "country_IL": "Israël", + "country_IM": "Ile de Man", + "country_IN": "Inde", + "country_IO": "Océan Indien, Territoire Britannique De L'", + "country_IQ": "Iraq", + "country_IR": "Iran, République Islamique D'", + "country_IS": "Islande", + "country_IT": "Italie", + "country_JE": "Jersey", + "country_JM": "Jamaïque", + "country_JO": "Jordanie", + "country_JP": "Japon", + "country_KE": "Kenya", + "country_KG": "Kirghizistan", + "country_KH": "Cambodge", + "country_KI": "Kiribati", + "country_KM": "Comores", + "country_KN": "Saint-Kitts-Et-Nevis", + "country_KP": "Corée, République Populaire Démocratique De", + "country_KR": "Corée, République De", + "country_KW": "Koweït", + "country_KY": "Caïmanes, Îles", + "country_KZ": "Kazakhstan", + "country_LA": "Lao, République Démocratique Populaire", + "country_LB": "Liban", + "country_LC": "Sainte-Lucie", + "country_LI": "Liechtenstein", + "country_LK": "Sri Lanka", + "country_LR": "Libéria", + "country_LS": "Lesotho", + "country_LT": "Lituanie", + "country_LU": "Luxembourg", + "country_LV": "Lettonie", + "country_LY": "Libyenne, Jamahiriya Arabe", + "country_MA": "Maroc", + "country_MC": "Monaco", + "country_MD": "Moldavie", + "country_ME": "Monténégro", + "country_MF": "Saint Martin (French part)", + "country_MG": "Madagascar", + "country_MH": "Marshall, Îles", + "country_MK": "Macédoine", + "country_ML": "Mali", + "country_MM": "Myanmar", + "country_MN": "Mongolie", + "country_MO": "Macao", + "country_MP": "Mariannes Du Nord, Îles", + "country_MQ": "Martinique", + "country_MR": "Mauritanie", + "country_MS": "Montserrat", + "country_MT": "Malte", + "country_MU": "République de Maurice", + "country_MV": "Maldives", + "country_MW": "Malawi", + "country_MX": "Mexique", + "country_MY": "Malaisie", + "country_MZ": "Mozambique", + "country_NA": "Namibie", + "country_NC": "Nouvelle-Calédonie", + "country_NE": "Niger", + "country_NF": "Norfolk, Île", + "country_NG": "Nigéria", + "country_NI": "Nicaragua", + "country_NL": "Pays-Bas", + "country_NO": "Norvège", + "country_NP": "Népal", + "country_NR": "Nauru", + "country_NU": "Niué", + "country_NZ": "Nouvelle-Zélande", + "country_OM": "Oman", + "country_PA": "Panama", + "country_PE": "Pérou", + "country_PF": "Polynésie Française", + "country_PG": "Papouasie-Nouvelle-Guinée", + "country_PH": "Philippines", + "country_PK": "Pakistan", + "country_PL": "Pologne", + "country_PM": "Saint-Pierre-Et-Miquelon", + "country_PN": "Pitcairn", + "country_PR": "Porto Rico", + "country_PS": "Palestinien Occupé, Territoire", + "country_PT": "Portugal", + "country_PW": "Palaos", + "country_PY": "Paraguay", + "country_QA": "Qatar", + "country_QC": "Quebec", + "country_RE": "La Réunion", + "country_RO": "Roumanie", + "country_RS": "République de Serbie (Anciennement Serbie et Monténégro code cs)", + "country_RU": "Russie", + "country_RW": "Rwanda", + "country_SA": "Arabie Saoudite", + "country_SB": "Salomon, Îles", + "country_SC": "Seychelles", + "country_SD": "Soudan", + "country_SE": "Suède", + "country_SG": "Singapour", + "country_SH": "Sainte-Hélène", + "country_SI": "Slovénie", + "country_SJ": "Svalbard Et Île Jan Mayen", + "country_SK": "Slovaquie", + "country_SL": "Sierra Leone", + "country_SM": "Saint-Marin", + "country_SN": "Sénégal", + "country_SO": "Somalie", + "country_SR": "Suriname", + "country_SS": "Soudan du Sud", + "country_ST": "Sao Tomé-Et-Principe", + "country_SV": "El Salvador", + "country_SX": "Saint-Martin (Royaume des Pays-Bas)", + "country_SY": "Syrienne, République Arabe", + "country_SZ": "Swaziland", + "country_TA": "Tristan da Cunha", + "country_TC": "Turks Et Caïques, Îles", + "country_TD": "Tchad", + "country_TF": "Terres Australes Françaises", + "country_TG": "Togo", + "country_TH": "Thaïlande", + "country_TJ": "Tadjikistan", + "country_TK": "Tokelau", + "country_TL": "Timor-Leste", + "country_TM": "Turkménistan", + "country_TN": "Tunisie", + "country_TO": "Tonga", + "country_TR": "Turquie", + "country_TT": "Trinité-Et-Tobago", + "country_TV": "Tuvalu", + "country_TW": "Taïwan, Province De Chine", + "country_TZ": "Tanzanie, République-Unie De", + "country_UA": "Ukraine", + "country_UG": "Ouganda", + "country_UK": "Royaume-Uni", + "country_UM": "Îles Mineures Éloignées des États-Unis", + "country_US": "États-Unis", + "country_UY": "Uruguay", + "country_UZ": "Ouzbékistan", + "country_VA": "Vatican", + "country_VC": "Saint-Vincent-Et-Les Grenadines", + "country_VE": "Venezuela", + "country_VG": "Îles Vierges Britanniques", + "country_VI": "Îles Vierges Des États-Unis", + "country_VN": "Viet Nam", + "country_VU": "Vanuatu", + "country_WF": "Wallis Et Futuna", + "country_WS": "Samoa", + "country_XK": "Kosovo", + "country_YE": "Yémen", + "country_YT": "Mayotte", + "country_ZA": "Afrique Du Sud", + "country_ZM": "Zambie", + "country_ZW": "Zimbabwe", + "navigation_more": "Plus +", + "wizard_help": "Aide", + "old_manager_alert": "Pendant quelques semaines, vous pouvez encore administrer vos services via l'ancienne interface client.", + "refresh": "Actualiser", + "core_new_window": "Nouvelle fenêtre", + "core_new_tab": "Ouvre un nouvel onglet", + "core_change_owner": "Changer le propriétaire", + "contacts_management": "Gérer les contacts", + "customized": "Personnalisé", + "core_top_guides_header": "Pour obtenir de l'information plus détaillée, veuillez consulter nos guides.", + "core_top_guides_header_fr": "Pour obtenir une assistance ou des informations détaillées sur vos services et l’état de vos services, rendez-vous sur la page :", + "core_type_of_guide_vps": "Serveurs privés virtuels", + "core_all_guides": "Tous nos guides", + "core_vps_top_guide_1_title": "Création des clés SSH", + "core_vps_top_guide_2_title": "Migration de VPS 2014 vers l'offre 2016", + "core_vps_top_guide_3_title": "Utilisation de docker-machine basée sur les instances Public Cloud", + "core_vps_top_guide_4_title": "Créer un accès à Horizon", + "core_vps_top_guide_5_title": "Débuter avec l'API Swift", + "core_vps_top_guide_6_title": "Préparer l'environnement pour utiliser l'API OpenStack", + "core_vps_top_guide_7_title": "Synchroniser un NAS Synology avec l'Object Storage à l'aide de DiskStation Manager 6.0", + "core_vps_top_guide_8_title": "Cloud - Dans l'interface client OVH", + "core_vps_top_guide_9_title": "Créer une instance dans l'espace client OVH", + "core_type_of_guide_sd": "Serveurs Dédiés", + "core_sd_top_guide_1_title": "Premiers pas avec un serveur dédié", + "core_sd_top_guide_2_title": "Premiers pas avec un serveur dédié Kimsufi, So You Start ou Rise", + "core_sd_top_guide_3_title": "Sécuriser un serveur dédié", + "core_sd_top_guide_4_title": "Créer une clé SSH", + "core_sd_top_guide_5_title": "Utilisation de l'IPMI pour les serveurs dédiés", + "core_sd_top_guide_6_title": "Migrer les données d'un serveur dédié vers un autre", + "core_sd_top_guide_7_title": "Configurer une nouvelle installation de Windows Server", + "core_sd_top_guide_firewall_title": "Configurer le Firewall Network", + "core_type_of_guide_pcc": "Hosted Private Cloud", + "core_pcc_top_guide_1_title": "Accéder à vSphere", + "core_pcc_top_guide_2_title": "Déployer sa première machine virtuelle", + "core_pcc_top_guide_3_title": "Configurer une adresse IP sur une machine virtuelle", + "core_pcc_top_guide_4_title": "Modifier la configuration d'une machine virtuelle", + "core_pcc_top_guide_5_title": "Connexion en SFTP", + "core_pcc_top_guide_6_title": "Documentation officielle de VMware", + "core_pcc_top_guide_7_title": "Suppression d'un hôte", + "core_pcc_top_guide_8_title": "Comprendre les licences SPLA Windows", + "core_pcc_top_guide_9_title": "Débuter avec NSX", + "core_pcc_top_guide_10_title": "Documentation officielle de NSX", + "core_pcc_top_guide_11_title": "Documentation officielle de Nutanix", + "core_pcc_top_guide_12_title": "Documentation officielle de SAP HANA on Private Cloud", + "core_pcc_top_guide_13_title": "Autoriser des IP à se connecter au vCenter", + "core_pcc_top_guide_14_title": "VMware on OVHcloud - VMware Cloud Director", + "sso_modal_title": "OVH - Authentification", + "sso_modal_loading": "Chargement...", + "sso_modal_user_title": "Vous étiez connecté en tant que :", + "sso_modal_currentuser_title": "Vous êtes maintenant connecté en tant que :", + "sso_modal_disconnected": "Vous êtes maintenant déconnecté.", + "sso_modal_what": "Que souhaitez-vous faire ?", + "sso_modal_action_reload": "Continuer en tant que {{name}}", + "sso_modal_action_logout": "Aller sur la page d'authentification", + "me_alerts_PAYMENTMEAN_DEFAULT_MISSING": "Aucun moyen de paiement par défaut n'est sélectionné. Rendez-vous dans la section facturation pour en sélectionner un ou en ajouter un nouveau.", + "me_alerts_PAYMENTMEAN_DEFAULT_EXPIRED": "Votre moyen de paiement par défaut est expiré ! Rendez-vous dans la section facturation pour en enregistrer un nouveau.", + "me_alerts_PAYMENTMEAN_DEFAULT_EXPIRE_SOON": "Votre moyen de paiement par défaut expirera dans moins de 30 jours. Rendez-vous dans la section facturation pour en enregistrer un nouveau.", + "me_alerts_PAYMENTMEAN_DEFAULT_BANKACCOUNT_PENDINGVALIDATION": "Votre moyen de paiement par défaut (compte bancaire) est en attente de validation. Rendez-vous dans la section facturation pour bénéficier de plus d'informations.", + "me_alerts_PAYMENTMEAN_DEFAULT_CREDITCARD_TOOMANYFAILURES": "Votre moyen de paiement par défaut (carte de crédit) est en erreur ! Rendez-vous dans la section facturation pour effectuer les vérifications et/ou enregistrer un nouveau moyen de paiement.", + "me_alerts_PAYMENTMEAN_DEFAULT_PAYPAL_TOOMANYFAILURES": "Votre moyen de paiement par défaut (PayPal) est en erreur ! Rendez-vous dans la section facturation pour effectuer les vérifications et/ou enregistrer un nouveau moyen de paiement.", + "me_alerts_PAYMENTMEAN_BANKACCOUNT_PENDINGVALIDATION": "Vous avez {{t0}} compte(s) bancaire(s) en attente de validation. Rendez-vous dans la section facturation pour bénéficier de plus d'informations.", + "me_alerts_PAYMENTMEAN_CREDITCARD_TOOMANYFAILURES": "Vous avez {{t0}} carte(s) de crédit(s) en erreur. Rendez-vous dans la section facturation pour effectuer les vérifications et/ou enregistrer un nouveau moyen de paiement.", + "me_alerts_PAYMENTMEAN_PAYPAL_TOOMANYFAILURES": "Vous avez {{t0}} compte(s) PayPal en erreur. Rendez-vous dans la section facturation pour effectuer les vérifications et/ou enregistrer un nouveau moyen de paiement.", + "me_alerts_OVHACCOUNT_DEBT": "Votre compte prépayé est débiteur de {{t0}} au {{t1}}. Rendez-vous dans la section facturation pour régulariser la situation.", + "me_alerts_DEBTACCOUNT_DEBT_WITH_UNMATURED_AMOUNT": "Vous avez une dette de {{t0}} (dont un montant de {{t1}} non échu). Rendez-vous dans la section facturation pour régulariser la situation.", + "me_alerts_DEBTACCOUNT_DEBT": "Vous avez une dette de {{t0}}. Rendez-vous dans la section facturation pour régulariser la situation.", + "me_alerts_OVHACCOUNT_ALERTTHRESHOLD": "Votre compte prépayé a atteint le seuil que vous avez défini. Rendez-vous dans la section facturation pour plus d'informations.", + "me_alerts_ORDERS_DOCUMENTSREQUESTED": "Vous avez {{t0}} commande(s) en attente pour lesquels des documents sont nécessaires. Rendez-vous dans la section \"Mes commandes\" pour le(s) mettre à jour.", + "me_alerts_AGREEMENTS_TODO": "Vous avez {{t0}} contrat(s) à valider.", + "me_alerts_CONTACTCHANGE_VALIDATINGBYCUSTOMERS": "Vous avez {{t0}} demande(s) de changement de contact.", + "me_alerts_AUTORENEW_INVITE": "Optez vite pour le renouvellement automatique de vos services!", + "core_service_expiration_label": "Expiration", + "core_service_expiration": "Expiré le", + "core_service_expiration_manual_renew": "À renouveler le", + "core_service_expiration_auto_renew": "Renouvellement prévu le", + "core_service_renew_button": "Renouveler", + "core_user_enterprise_retail_prices": "Note : Les prix indiqués sont des prix standards du catalogue et peuvent ne pas refléter les conditions négociées. Consultez votre facture mensuelle pour une tarification plus détaillée.", + "core_user_enterprise_retail_prices_hpc": "Note : Les prix indiqués sont une estimation basée sur le calcul au prorata de ce module pour l'aligner sur la période de facturation de votre contrat actuel. Consultez votre facture mensuelle pour une tarification plus détaillée.", + "core_user_trusted_retail_prices": "Note : Le prix affiché correspond au prix du service. La majoration liée à la zone de confiance est ajoutée à la facturation mensuelle globale.", + "browser_alert_not_supported": "Votre navigateur n'est pas supporté.", + "browser_alert_deprecated": "Votre navigateur n'est pas à jour et peut contenir des failles de sécurité ou de compatibilité.", + "browser_alert_update": "Nous vous recommandons de mettre à jour votre navigateur afin de profiter d'une expérience optimale.", + "browser_alert_close": "Fermer cette alerte", + "ovh_task_follow_button": "Détail de l'incident", + "ovh_task_follow_modal_title": "Suivi de l'incident", + "ovh_task_follow_modal_comment": "Dernière mise à jour : {{t 0 }}", + "otrs_menu_assistance": "Assistance", + "otrs_menu_assistance_expanded": "Besoin d'aide", + "otrs_menu_all_guides": "Tous les guides", + "otrs_menu_help_center": "Centre d'aide", + "otrs_menu_new_ticket": "Créer une demande d'assistance", + "otrs_menu_list_ticket": "Liste de mes demandes d'assistance", + "otrs_menu_ask_for_assistance": "Demandes d'assistance", + "otrs_menu_email_history": "Historique des emails", + "otrs_menu_telephony_contact": "Assistance téléphonique", + "otrs_menu_changelog": "Historique des mises à jour", + "common_configuration_creation": "Date de création", + "menu_action_label": "{{t0}} (Liste des actions)", + "server_tab_USB_STORAGE_order_select_duration": "Sélectionnez la durée :", + "common_subscription_contacts": "Contacts", + "common_subscription_contacts_admin": "Administrateur", + "common_subscription_contacts_billing": "Facturation", + "common_subscription_contacts_tech": "Technique", + "common_unavailable_information": "Information indisponible", + "common_resiliate_contact_support": "Pour résilier ce service, merci de contacter notre support technique au numéro suivant : 1007 et appuyez directement sur 8. Merci pour votre compréhension." +} diff --git a/packages/manager/modules/new-billing/src/common/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/common/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..58c5c0f16ec0 --- /dev/null +++ b/packages/manager/modules/new-billing/src/common/translations/Messages_fr_FR.json @@ -0,0 +1,551 @@ +{ + "common_actions": "Actions", + "common_pagination_display": "Afficher", + "common_pagination_page": "page", + "select_option": "Sélectionnez...", + "welcome_to_your_manager_1": "Bienvenue dans votre", + "welcome_to_your_manager_2": "espace client OVHcloud", + "select_product_on_left": "Veuillez sélectionner un produit à configurer dans la colonne de gauche.", + "select_product_on_top": "Veuillez sélectionner un produit à configurer ci-dessus.", + "index_nav_bar_logo_alt": "Espace Client Dédié OVH", + "older_interface": "Ancienne interface client", + "universe_univers-v3_name": "Ancienne interface client", + "unit_size_B": "o", + "unit_size_KB": "ko", + "unit_size_MB": "Mo", + "unit_size_GB": "Go", + "unit_size_TB": "To", + "unit_size_PB": "Po", + "unit_size_EB": "Eo", + "unit_size_ZB": "Zo", + "unit_size_YB": "Yo", + "unit_size_KiB": "Kio", + "unit_size_MiB": "Mio", + "unit_size_GiB": "Gio", + "unit_size_TiB": "Tio", + "unit_size_PiB": "Pio", + "unit_size_EiB": "Eio", + "unit_size_ZiB": "Zio", + "unit_size_YiB": "Yio", + "unit_size_bps": "bps", + "unit_size_Kbps": "kbps", + "unit_size_Mbps": "Mbps", + "unit_size_Gbps": "Gbps", + "unit_size_Tbps": "Tbps", + "unit_size_Pbps": "Pbps", + "unit_size_Ebps": "Ebps", + "unit_size_Zbps": "Zbps", + "unit_size_Ybps": "Ybps", + "unit_frequency_HZ": "Hz", + "unit_frequency_KHZ": "KHz", + "unit_frequency_MHZ": "MHz", + "unit_frequency_GHZ": "GHz", + "unit_frequency_THZ": "THz", + "unit_frequency_PHZ": "PHz", + "unit_frequency_EHZ": "EHz", + "unit_frequency_ZHZ": "ZHz", + "unit_frequency_YHZ": "YHz", + "monday": "Lundi", + "tuesday": "Mardi", + "wednesday": "Mercredi", + "thursday": "Jeudi", + "friday": "Vendredi", + "saturday": "Samedi", + "sunday": "Dimanche", + "januar": "Janvier", + "februar": "Février", + "march": "Mars", + "april": "Avril", + "may": "Mai", + "june": "Juin", + "jully": "Juillet", + "august": "Août", + "september": "Septembre", + "october": "Octobre", + "november": "Novembre", + "december": "Décembre", + "januar_short": "Janv", + "februar_short": "Févr", + "march_short": "Mars", + "april_short": "Avril", + "may_short": "Mai", + "june_short": "Juin", + "jully_short": "Juil", + "august_short": "Août", + "september_short": "Sept", + "october_short": "Oct", + "november_short": "Nov", + "december_short": "Déc", + "wizard_cancel": "Annuler", + "wizard_close": "Fermer", + "wizard_confirm": "Valider", + "wizard_modify": "Modifier", + "wizard_delete": "Supprimer", + "wizard_yes": "Oui", + "wizard_no": "Non", + "wizard_order": "Commander", + "wizard_pay": "Régler", + "wizard_renew": "Renouveler", + "wizard_next": "Suivant", + "wizard_previous": "Précédent", + "wizard_breadcrumb": "Étape {{ currentStep }} sur {{ stepCount }}", + "pagination_page": "Page {{ current }} / {{ last }}", + "pagination_go": "OK", + "pagination_display": "Afficher", + "common_loading": "Chargement…", + "common_cancel": "Annuler", + "common_confirm": "Confirmer", + "common_terminate": "Terminer", + "common_back": "Retour", + "common_next": "Suivant", + "common_previous": "Précédent", + "common_activated": "Activé", + "common_activate": "Activer", + "common_desactivated": "Désactivé", + "common_desactivate": "Désactiver", + "common_TODO": "Info à venir", + "common_not_configurated": "Non configuré", + "common_ipv4": "IPv4", + "common_ipv6": "IPv6", + "common_bitFormat": "bits", + "common_expired": "Le service n'a pas été renouvelé. Cela est peut être dû à une décision de votre part ou un retard de paiement de votre côté.", + "common_settle_bill": "Régulariser", + "common_service_expired": "Le service {{t0}} n'a pas été renouvelé. Cela est peut être dû à une décision de votre part ou un retard de paiement de votre côté.", + "common_reset_zoom": "Réinitialiser le zoom", + "common_alerts_message_see_more": "Voir le détail des erreurs", + "common_alerts_message_see_less": "Masquer le détail des erreurs", + "common_managerv5": "Manager V5", + "common_managerv3": "Manager V3", + "common_refresh": "Rafraîchir", + "common_change": "Modifier", + "common_download_format": "Télécharger au format {{t0}}", + "common_skip_to_main_content": "Aller au contenu principal", + "common_shortcuts": "Raccourcis", + "common_links": "Liens", + "common_add": "Ajouter", + "global_app_title": "Votre espace client Dédié OVHcloud", + "global_language": "Langue", + "global_logout": "Déconnexion", + "global_changelog": "Historique des mises à jour", + "global_configuration": "Configuration", + "global_billing": "Facturation", + "global_renew": "Mes services", + "global_orders": "Mes commandes", + "global_preference": "Mon compte", + "global_support": "Support", + "global_feedback": "Donnez votre avis", + "global_feedback_appreciation": "Votre avis nous intéresse", + "global_feedback_appreciation_text": "Via cette fenetre vous pouvez nous donner votre avis sur la navigation
et l'ergonomie de votre nouvel Espace Client.", + "global_feedback_remark": "Type de remarque", + "global_feedback_type_simplecomment": "Commentaire général", + "global_feedback_type_design": "Design", + "global_feedback_type_ergo": "Ergonomie", + "global_feedback_type_bug": "Bug", + "global_feedback_more_details": "Veuillez inscrire votre message ci-dessous", + "global_feedback_warning": "Attention, ce formulaire ne concerne pas le support de vos produits.", + "global_feedback_contact": "Pour toute question d'ordre commercial ou technique, veuillez contacter le support OVH,", + "global_feedback_contact_link": "en cliquant ici", + "global_feedback_send": "Envoyer", + "global_feedback_subject": "Sujet", + "global_feedback_subject_required": "Veuillez entrer un sujet", + "global_feedback_subject_maxlength": "Le titre ne doit pas excéder 255 caractères", + "global_profil": "Profil", + "global_OK": "OK", + "global_KO": "KO", + "global_switch_mode": "Mode :", + "global_switch_simple_mode": "Mode simple", + "global_switch_expert_mode": "Mode expert", + "global_processing": "Traitement en cours ...", + "global_doing": "En cours ...", + "main_menu_products_and_config": "Configuration", + "main_menu_bill_and_renew": "Facturation", + "main_menu_help_and_support": "Aide", + "common_yes": "Oui", + "common_no": "Non", + "common_delete": "Supprimer", + "required": "Champs requis", + "required_fields": "Les champs suivis d'un astérisque sont obligatoires.", + "select_placeholder": "Sélectionnez…", + "common_newtab": "nouvel onglet", + "contract_next": "Suivant", + "contract_previous": "Précédent", + "download_contract": "Ouvrir le contrat \"{{ name }}\" en PDF", + "contract_help": "Il faut faire défiler les contrats pour pouvoir les valider.", + "contracts_list_title": "Il y a {{ count }} contrats à consulter.", + "contract_list_title": "Il y a 1 contrat à consulter.", + "contracts_agree": "J'accepte les contrats", + "contract_agree": "J'accepte le contrat", + "day_1": "1 jour", + "day_other": "{} jours", + "month_1": "1 mois", + "month_other": "{{t0}} mois", + "year_1": "1 an", + "year_other": "{} ans", + "upto": "Jusqu'au", + "uptofirstdaynextmonth": "Jusqu'au premier jour du prochain mois", + "engage": "S'engager {{t0}}", + "price_ht_label": "{{ price }} HT", + "price_ttc_label": "{{ price }} TTC", + "price_free": "Inclus", + "price_label_yearly": "/an", + "country_AC": "Île D'Ascension", + "country_AD": "Andorre", + "country_AE": "Émirats Arabes Unis", + "country_AF": "Afghanistan", + "country_AG": "Antigua-Et-Barbuda", + "country_AI": "Anguilla", + "country_AL": "Albanie", + "country_AM": "Arménie", + "country_AO": "Angola", + "country_AQ": "Antarctique", + "country_AR": "Argentine", + "country_AS": "Samoa Américaines", + "country_AT": "Autriche", + "country_AU": "Australie", + "country_AW": "Aruba", + "country_AX": "Åland, Îles", + "country_AZ": "Azerbaïdjan", + "country_BA": "Bosnie-Herzégovine", + "country_BB": "Barbade", + "country_BD": "Bangladesh", + "country_BE": "Belgique", + "country_BF": "Burkina Faso", + "country_BG": "Bulgarie", + "country_BH": "Bahreïn", + "country_BI": "Burundi", + "country_BJ": "Bénin", + "country_BL": "Saint Barthélemy", + "country_BM": "Bermudes", + "country_BN": "Brunéi Darussalam", + "country_BO": "Bolivie", + "country_BQ": "Pays-Bas caribéens", + "country_BR": "Brésil", + "country_BS": "Bahamas", + "country_BT": "Bhoutan", + "country_BW": "Botswana", + "country_BY": "Biélorussie", + "country_BZ": "Belize", + "country_CA": "Canada", + "country_CC": "Cocos (Keeling), Îles", + "country_CD": "Congo, La République Démocratique Du", + "country_CF": "Centrafricaine, République", + "country_CG": "Congo", + "country_CH": "Suisse", + "country_CI": "Côte D'Ivoire", + "country_CK": "Cook, Îles", + "country_CL": "Chili", + "country_CM": "Cameroun", + "country_CN": "Chine", + "country_CO": "Colombie", + "country_CR": "Costa Rica", + "country_CU": "Cuba", + "country_CV": "Cap-Vert", + "country_CW": "Curaçao", + "country_CX": "Christmas, Île", + "country_CY": "Chypre", + "country_CZ": "République tchèque", + "country_DE": "Allemagne", + "country_DG": "Diego Garcia", + "country_DJ": "Djibouti", + "country_DK": "Danemark", + "country_DM": "Dominique", + "country_DO": "Dominicaine, République", + "country_DZ": "Algérie", + "country_EA": "Ceuta, Melilla", + "country_EC": "Équateur", + "country_EE": "Estonie", + "country_EG": "Égypte", + "country_EH": "Sahara Occidental", + "country_ER": "Érythrée", + "country_ES": "Espagne", + "country_ET": "Éthiopie", + "country_FI": "Finlande", + "country_FJ": "Fidji", + "country_FK": "Falkland, Îles (Malvinas)", + "country_FM": "Micronésie, États Fédérés De", + "country_FO": "Féroé, Îles", + "country_FR": "France", + "country_GA": "Gabon", + "country_GB": "Royaume-Uni", + "country_GD": "Grenade", + "country_GE": "Géorgie", + "country_GF": "Guyane Française", + "country_GG": "Guernesey", + "country_GH": "Ghana", + "country_GI": "Gibraltar", + "country_GL": "Groenland", + "country_GM": "Gambie", + "country_GN": "Guinée", + "country_GP": "Guadeloupe", + "country_GQ": "Guinée Équatoriale", + "country_GR": "Grèce", + "country_GS": "Géorgie Du Sud et Les Îles Sandwich Du Sud", + "country_GT": "Guatemala", + "country_GU": "Guam", + "country_GW": "Guinée-Bissau", + "country_GY": "Guyana", + "country_HK": "Hong-Kong", + "country_HN": "Honduras", + "country_HR": "Croatie", + "country_HT": "Haïti", + "country_HU": "Hongrie", + "country_IC": "Les Îles Canaries", + "country_ID": "Indonésie", + "country_IE": "Irlande", + "country_IL": "Israël", + "country_IM": "Ile de Man", + "country_IN": "Inde", + "country_IO": "Océan Indien, Territoire Britannique De L'", + "country_IQ": "Iraq", + "country_IR": "Iran, République Islamique D'", + "country_IS": "Islande", + "country_IT": "Italie", + "country_JE": "Jersey", + "country_JM": "Jamaïque", + "country_JO": "Jordanie", + "country_JP": "Japon", + "country_KE": "Kenya", + "country_KG": "Kirghizistan", + "country_KH": "Cambodge", + "country_KI": "Kiribati", + "country_KM": "Comores", + "country_KN": "Saint-Kitts-Et-Nevis", + "country_KP": "Corée, République Populaire Démocratique De", + "country_KR": "Corée, République De", + "country_KW": "Koweït", + "country_KY": "Caïmanes, Îles", + "country_KZ": "Kazakhstan", + "country_LA": "Lao, République Démocratique Populaire", + "country_LB": "Liban", + "country_LC": "Sainte-Lucie", + "country_LI": "Liechtenstein", + "country_LK": "Sri Lanka", + "country_LR": "Libéria", + "country_LS": "Lesotho", + "country_LT": "Lituanie", + "country_LU": "Luxembourg", + "country_LV": "Lettonie", + "country_LY": "Libyenne, Jamahiriya Arabe", + "country_MA": "Maroc", + "country_MC": "Monaco", + "country_MD": "Moldavie", + "country_ME": "Monténégro", + "country_MF": "Saint Martin (French part)", + "country_MG": "Madagascar", + "country_MH": "Marshall, Îles", + "country_MK": "Macédoine", + "country_ML": "Mali", + "country_MM": "Myanmar", + "country_MN": "Mongolie", + "country_MO": "Macao", + "country_MP": "Mariannes Du Nord, Îles", + "country_MQ": "Martinique", + "country_MR": "Mauritanie", + "country_MS": "Montserrat", + "country_MT": "Malte", + "country_MU": "République de Maurice", + "country_MV": "Maldives", + "country_MW": "Malawi", + "country_MX": "Mexique", + "country_MY": "Malaisie", + "country_MZ": "Mozambique", + "country_NA": "Namibie", + "country_NC": "Nouvelle-Calédonie", + "country_NE": "Niger", + "country_NF": "Norfolk, Île", + "country_NG": "Nigéria", + "country_NI": "Nicaragua", + "country_NL": "Pays-Bas", + "country_NO": "Norvège", + "country_NP": "Népal", + "country_NR": "Nauru", + "country_NU": "Niué", + "country_NZ": "Nouvelle-Zélande", + "country_OM": "Oman", + "country_PA": "Panama", + "country_PE": "Pérou", + "country_PF": "Polynésie Française", + "country_PG": "Papouasie-Nouvelle-Guinée", + "country_PH": "Philippines", + "country_PK": "Pakistan", + "country_PL": "Pologne", + "country_PM": "Saint-Pierre-Et-Miquelon", + "country_PN": "Pitcairn", + "country_PR": "Porto Rico", + "country_PS": "Palestinien Occupé, Territoire", + "country_PT": "Portugal", + "country_PW": "Palaos", + "country_PY": "Paraguay", + "country_QA": "Qatar", + "country_QC": "Quebec", + "country_RE": "La Réunion", + "country_RO": "Roumanie", + "country_RS": "République de Serbie (Anciennement Serbie et Monténégro code cs)", + "country_RU": "Russie", + "country_RW": "Rwanda", + "country_SA": "Arabie Saoudite", + "country_SB": "Salomon, Îles", + "country_SC": "Seychelles", + "country_SD": "Soudan", + "country_SE": "Suède", + "country_SG": "Singapour", + "country_SH": "Sainte-Hélène", + "country_SI": "Slovénie", + "country_SJ": "Svalbard Et Île Jan Mayen", + "country_SK": "Slovaquie", + "country_SL": "Sierra Leone", + "country_SM": "Saint-Marin", + "country_SN": "Sénégal", + "country_SO": "Somalie", + "country_SR": "Suriname", + "country_SS": "Soudan du Sud", + "country_ST": "Sao Tomé-Et-Principe", + "country_SV": "El Salvador", + "country_SX": "Saint-Martin (Royaume des Pays-Bas)", + "country_SY": "Syrienne, République Arabe", + "country_SZ": "Swaziland", + "country_TA": "Tristan da Cunha", + "country_TC": "Turks Et Caïques, Îles", + "country_TD": "Tchad", + "country_TF": "Terres Australes Françaises", + "country_TG": "Togo", + "country_TH": "Thaïlande", + "country_TJ": "Tadjikistan", + "country_TK": "Tokelau", + "country_TL": "Timor-Leste", + "country_TM": "Turkménistan", + "country_TN": "Tunisie", + "country_TO": "Tonga", + "country_TR": "Turquie", + "country_TT": "Trinité-Et-Tobago", + "country_TV": "Tuvalu", + "country_TW": "Taïwan, Province De Chine", + "country_TZ": "Tanzanie, République-Unie De", + "country_UA": "Ukraine", + "country_UG": "Ouganda", + "country_UK": "Royaume-Uni", + "country_UM": "Îles Mineures Éloignées des États-Unis", + "country_US": "États-Unis", + "country_UY": "Uruguay", + "country_UZ": "Ouzbékistan", + "country_VA": "Vatican", + "country_VC": "Saint-Vincent-Et-Les Grenadines", + "country_VE": "Venezuela", + "country_VG": "Îles Vierges Britanniques", + "country_VI": "Îles Vierges Des États-Unis", + "country_VN": "Viet Nam", + "country_VU": "Vanuatu", + "country_WF": "Wallis Et Futuna", + "country_WS": "Samoa", + "country_XK": "Kosovo", + "country_YE": "Yémen", + "country_YT": "Mayotte", + "country_ZA": "Afrique Du Sud", + "country_ZM": "Zambie", + "country_ZW": "Zimbabwe", + "navigation_more": "Plus +", + "wizard_help": "Aide", + "old_manager_alert": "Pendant quelques semaines, vous pouvez encore administrer vos services via l'ancienne interface client.", + "refresh": "Actualiser", + "core_new_window": "Nouvelle fenêtre", + "core_new_tab": "Ouvre un nouvel onglet", + "core_change_owner": "Changer le propriétaire", + "contacts_management": "Gérer les contacts", + "customized": "Personnalisé", + "core_top_guides_header": "Pour obtenir de l'information plus détaillée, veuillez consulter nos guides.", + "core_top_guides_header_fr": "Pour obtenir une assistance ou des informations détaillées sur vos services et l’état de vos services, rendez-vous sur la page :", + "core_type_of_guide_vps": "Serveurs privés virtuels", + "core_all_guides": "Tous nos guides", + "core_vps_top_guide_1_title": "Création des clés SSH", + "core_vps_top_guide_2_title": "Migration de VPS 2014 vers l'offre 2016", + "core_vps_top_guide_3_title": "Utilisation de docker-machine basée sur les instances Public Cloud", + "core_vps_top_guide_4_title": "Créer un accès à Horizon", + "core_vps_top_guide_5_title": "Débuter avec l'API Swift", + "core_vps_top_guide_6_title": "Préparer l'environnement pour utiliser l'API OpenStack", + "core_vps_top_guide_7_title": "Synchroniser un NAS Synology avec l'Object Storage à l'aide de DiskStation Manager 6.0", + "core_vps_top_guide_8_title": "Cloud - Dans l'interface client OVH", + "core_vps_top_guide_9_title": "Créer une instance dans l'espace client OVH", + "core_type_of_guide_sd": "Serveurs Dédiés", + "core_sd_top_guide_1_title": "Premiers pas avec un serveur dédié", + "core_sd_top_guide_2_title": "Premiers pas avec un serveur dédié Kimsufi, So You Start ou Rise", + "core_sd_top_guide_3_title": "Sécuriser un serveur dédié", + "core_sd_top_guide_4_title": "Créer une clé SSH", + "core_sd_top_guide_5_title": "Utilisation de l'IPMI pour les serveurs dédiés", + "core_sd_top_guide_6_title": "Migrer les données d'un serveur dédié vers un autre", + "core_sd_top_guide_7_title": "Configurer une nouvelle installation de Windows Server", + "core_sd_top_guide_firewall_title": "Configurer le Firewall Network", + "core_type_of_guide_pcc": "Hosted Private Cloud", + "core_pcc_top_guide_1_title": "Accéder à vSphere", + "core_pcc_top_guide_2_title": "Déployer sa première machine virtuelle", + "core_pcc_top_guide_3_title": "Configurer une adresse IP sur une machine virtuelle", + "core_pcc_top_guide_4_title": "Modifier la configuration d'une machine virtuelle", + "core_pcc_top_guide_5_title": "Connexion en SFTP", + "core_pcc_top_guide_6_title": "Documentation officielle de VMware", + "core_pcc_top_guide_7_title": "Suppression d'un hôte", + "core_pcc_top_guide_8_title": "Comprendre les licences SPLA Windows", + "core_pcc_top_guide_9_title": "Débuter avec NSX", + "core_pcc_top_guide_10_title": "Documentation officielle de NSX", + "core_pcc_top_guide_11_title": "Documentation officielle de Nutanix", + "core_pcc_top_guide_12_title": "Documentation officielle de SAP HANA on Private Cloud", + "core_pcc_top_guide_13_title": "Autoriser des IP à se connecter au vCenter", + "core_pcc_top_guide_14_title": "VMware on OVHcloud - VMware Cloud Director", + "sso_modal_title": "OVH - Authentification", + "sso_modal_loading": "Chargement...", + "sso_modal_user_title": "Vous étiez connecté en tant que :", + "sso_modal_currentuser_title": "Vous êtes maintenant connecté en tant que :", + "sso_modal_disconnected": "Vous êtes maintenant déconnecté.", + "sso_modal_what": "Que souhaitez-vous faire ?", + "sso_modal_action_reload": "Continuer en tant que {{name}}", + "sso_modal_action_logout": "Aller sur la page d'authentification", + "me_alerts_PAYMENTMEAN_DEFAULT_MISSING": "Aucun moyen de paiement par défaut n'est sélectionné. Rendez-vous dans la section facturation pour en sélectionner un ou en ajouter un nouveau.", + "me_alerts_PAYMENTMEAN_DEFAULT_EXPIRED": "Votre moyen de paiement par défaut est expiré ! Rendez-vous dans la section facturation pour en enregistrer un nouveau.", + "me_alerts_PAYMENTMEAN_DEFAULT_EXPIRE_SOON": "Votre moyen de paiement par défaut expirera dans moins de 30 jours. Rendez-vous dans la section facturation pour en enregistrer un nouveau.", + "me_alerts_PAYMENTMEAN_DEFAULT_BANKACCOUNT_PENDINGVALIDATION": "Votre moyen de paiement par défaut (compte bancaire) est en attente de validation. Rendez-vous dans la section facturation pour bénéficier de plus d'informations.", + "me_alerts_PAYMENTMEAN_DEFAULT_CREDITCARD_TOOMANYFAILURES": "Votre moyen de paiement par défaut (carte de crédit) est en erreur ! Rendez-vous dans la section facturation pour effectuer les vérifications et/ou enregistrer un nouveau moyen de paiement.", + "me_alerts_PAYMENTMEAN_DEFAULT_PAYPAL_TOOMANYFAILURES": "Votre moyen de paiement par défaut (PayPal) est en erreur ! Rendez-vous dans la section facturation pour effectuer les vérifications et/ou enregistrer un nouveau moyen de paiement.", + "me_alerts_PAYMENTMEAN_BANKACCOUNT_PENDINGVALIDATION": "Vous avez {{t0}} compte(s) bancaire(s) en attente de validation. Rendez-vous dans la section facturation pour bénéficier de plus d'informations.", + "me_alerts_PAYMENTMEAN_CREDITCARD_TOOMANYFAILURES": "Vous avez {{t0}} carte(s) de crédit(s) en erreur. Rendez-vous dans la section facturation pour effectuer les vérifications et/ou enregistrer un nouveau moyen de paiement.", + "me_alerts_PAYMENTMEAN_PAYPAL_TOOMANYFAILURES": "Vous avez {{t0}} compte(s) PayPal en erreur. Rendez-vous dans la section facturation pour effectuer les vérifications et/ou enregistrer un nouveau moyen de paiement.", + "me_alerts_OVHACCOUNT_DEBT": "Votre compte prépayé est débiteur de {{t0}} au {{t1}}. Rendez-vous dans la section facturation pour régulariser la situation.", + "me_alerts_DEBTACCOUNT_DEBT_WITH_UNMATURED_AMOUNT": "Vous avez une dette de {{t0}} (dont un montant de {{t1}} non échu). Rendez-vous dans la section facturation pour régulariser la situation.", + "me_alerts_DEBTACCOUNT_DEBT": "Vous avez une dette de {{t0}}. Rendez-vous dans la section facturation pour régulariser la situation.", + "me_alerts_OVHACCOUNT_ALERTTHRESHOLD": "Votre compte prépayé a atteint le seuil que vous avez défini. Rendez-vous dans la section facturation pour plus d'informations.", + "me_alerts_ORDERS_DOCUMENTSREQUESTED": "Vous avez {{t0}} commande(s) en attente pour lesquels des documents sont nécessaires. Rendez-vous dans la section \"Mes commandes\" pour le(s) mettre à jour.", + "me_alerts_AGREEMENTS_TODO": "Vous avez {{t0}} contrat(s) à valider.", + "me_alerts_CONTACTCHANGE_VALIDATINGBYCUSTOMERS": "Vous avez {{t0}} demande(s) de changement de contact.", + "me_alerts_AUTORENEW_INVITE": "Optez vite pour le renouvellement automatique de vos services!", + "core_service_expiration_label": "Expiration", + "core_service_expiration": "Expiré le", + "core_service_expiration_manual_renew": "À renouveler le", + "core_service_expiration_auto_renew": "Renouvellement prévu le", + "core_service_renew_button": "Renouveler", + "core_user_enterprise_retail_prices": "Note : Les prix indiqués sont des prix standards du catalogue et peuvent ne pas refléter les conditions négociées. Consultez votre facture mensuelle pour une tarification plus détaillée.", + "core_user_enterprise_retail_prices_hpc": "Note : Les prix indiqués sont une estimation basée sur le calcul au prorata de ce module pour l'aligner sur la période de facturation de votre contrat actuel. Consultez votre facture mensuelle pour une tarification plus détaillée.", + "core_user_trusted_retail_prices": "Note : Le prix affiché correspond au prix du service. La majoration liée à la zone de confiance est ajoutée à la facturation mensuelle globale.", + "browser_alert_not_supported": "Votre navigateur n'est pas supporté.", + "browser_alert_deprecated": "Votre navigateur n'est pas à jour et peut contenir des failles de sécurité ou de compatibilité.", + "browser_alert_update": "Nous vous recommandons de mettre à jour votre navigateur afin de profiter d'une expérience optimale.", + "browser_alert_close": "Fermer cette alerte", + "ovh_task_follow_button": "Détail de l'incident", + "ovh_task_follow_modal_title": "Suivi de l'incident", + "ovh_task_follow_modal_comment": "Dernière mise à jour : {{t 0 }}", + "otrs_menu_assistance": "Assistance", + "otrs_menu_assistance_expanded": "Besoin d'aide", + "otrs_menu_all_guides": "Tous les guides", + "otrs_menu_help_center": "Centre d'aide", + "otrs_menu_new_ticket": "Créer une demande d'assistance", + "otrs_menu_list_ticket": "Liste de mes demandes d'assistance", + "otrs_menu_ask_for_assistance": "Demandes d'assistance", + "otrs_menu_email_history": "Historique des emails", + "otrs_menu_telephony_contact": "Assistance téléphonique", + "otrs_menu_changelog": "Historique des mises à jour", + "common_configuration_creation": "Date de création", + "menu_action_label": "{{t0}} (Liste des actions)", + "server_tab_USB_STORAGE_order_select_duration": "Sélectionnez la durée :", + "common_subscription_contacts": "Contacts", + "common_subscription_contacts_admin": "Administrateur", + "common_subscription_contacts_billing": "Facturation", + "common_subscription_contacts_tech": "Technique", + "common_unavailable_information": "Information indisponible", + "common_resiliate_contact_support": "Pour résilier ce service, merci de contacter notre support technique au numéro suivant : 1007 et appuyez directement sur 8. Merci pour votre compréhension." +} diff --git a/packages/manager/modules/new-billing/src/common/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/common/translations/Messages_it_IT.json new file mode 100644 index 000000000000..7925a0590b34 --- /dev/null +++ b/packages/manager/modules/new-billing/src/common/translations/Messages_it_IT.json @@ -0,0 +1,551 @@ +{ + "common_actions": "Azioni", + "common_pagination_display": "Mostra", + "common_pagination_page": "pagina", + "select_option": "Seleziona...", + "welcome_to_your_manager_1": "Benvenuto nel tuo", + "welcome_to_your_manager_2": "Spazio Cliente OVHcloud", + "select_product_on_left": "Seleziona un servizio da configurare nella colonna di sinistra.", + "select_product_on_top": "Seleziona qui sopra un servizio da configurare.", + "index_nav_bar_logo_alt": "Spazio Cliente Dedicato OVH", + "older_interface": "Interfaccia cliente precedente", + "universe_univers-v3_name": "Interfaccia cliente precedente", + "unit_size_B": "b", + "unit_size_KB": "kb", + "unit_size_MB": "MB", + "unit_size_GB": "GB", + "unit_size_TB": "TB", + "unit_size_PB": "PB", + "unit_size_EB": "EB", + "unit_size_ZB": "ZB", + "unit_size_YB": "YB", + "unit_size_KiB": "KiB", + "unit_size_MiB": "MiB", + "unit_size_GiB": "GiB", + "unit_size_TiB": "TiB", + "unit_size_PiB": "PiB", + "unit_size_EiB": "EiB", + "unit_size_ZiB": "ZiB", + "unit_size_YiB": "YiB", + "unit_size_bps": "bps", + "unit_size_Kbps": "kbps", + "unit_size_Mbps": "Mbps", + "unit_size_Gbps": "Gbps", + "unit_size_Tbps": "Tbps", + "unit_size_Pbps": "Pbps", + "unit_size_Ebps": "Ebps", + "unit_size_Zbps": "Zbps", + "unit_size_Ybps": "Ybps", + "unit_frequency_HZ": "Hz", + "unit_frequency_KHZ": "KHz", + "unit_frequency_MHZ": "MHz", + "unit_frequency_GHZ": "GHz", + "unit_frequency_THZ": "THz", + "unit_frequency_PHZ": "PHz", + "unit_frequency_EHZ": "EHz", + "unit_frequency_ZHZ": "ZHz", + "unit_frequency_YHZ": "YHz", + "monday": "Lunedì", + "tuesday": "Martedì", + "wednesday": "Mercoledì", + "thursday": "Giovedì", + "friday": "Venerdì", + "saturday": "Sabato", + "sunday": "Domenica", + "januar": "Gennaio", + "februar": "Febbraio", + "march": "Marzo", + "april": "Aprile", + "may": "Maggio", + "june": "Giugno", + "jully": "Luglio", + "august": "Agosto", + "september": "Settembre", + "october": "Ottobre", + "november": "Novembre", + "december": "Dicembre", + "januar_short": "Gen", + "februar_short": "Feb", + "march_short": "Marzo", + "april_short": "Aprile", + "may_short": "Maggio", + "june_short": "Giugno", + "jully_short": "Lug", + "august_short": "Agosto", + "september_short": "Set", + "october_short": "Ott", + "november_short": "Nov", + "december_short": "Dic", + "wizard_cancel": "Annulla", + "wizard_close": "Chiudi", + "wizard_confirm": "Conferma", + "wizard_modify": "Modifica", + "wizard_delete": "Elimina", + "wizard_yes": "Sì", + "wizard_no": "No", + "wizard_order": "Ordina", + "wizard_pay": "Salda", + "wizard_renew": "Rinnova", + "wizard_next": "Seguente", + "wizard_previous": "Precedente", + "wizard_breadcrumb": "Step {{ currentStep }} di {{ stepCount }}", + "pagination_page": "Pagina {{ current }}/{{ last }}", + "pagination_go": "OK", + "pagination_display": "Mostra", + "common_loading": "Caricamento in corso...", + "common_cancel": "Annulla", + "common_confirm": "Conferma", + "common_terminate": "Termina", + "common_back": "Ritorna", + "common_next": "Seguente", + "common_previous": "Precedente", + "common_activated": "Attivo", + "common_activate": "Attiva", + "common_desactivated": "Disattivo", + "common_desactivate": "Disattiva", + "common_TODO": "Prossimamente", + "common_not_configurated": "Non configurato", + "common_ipv4": "IPv4", + "common_ipv6": "IPv6", + "common_bitFormat": "bit", + "common_expired": "Il servizio non è stato rinnovato. La causa può essere una tua richiesta o un mancato pagamento.", + "common_settle_bill": "Salda", + "common_service_expired": "Il servizio {{t0}} non è stato rinnovato. La causa può essere una tua richiesta o un mancato pagamento.", + "common_reset_zoom": "Reinizializza lo zoom", + "common_alerts_message_see_more": "Visualizza il dettaglio degli errori", + "common_alerts_message_see_less": "Nascondi il dettaglio degli errori", + "common_managerv5": "Manager V5", + "common_managerv3": "Manager V3", + "common_refresh": "Aggiorna", + "common_change": "Modifica", + "common_download_format": "Esegui il download in formato {{t0}}", + "common_skip_to_main_content": "Skip to main content", + "common_shortcuts": "Scelta rapida", + "common_links": "Link", + "common_add": "Aggiungi", + "global_app_title": "Il tuo Spazio Cliente Dedicato OVHcloud", + "global_language": "Lingua", + "global_logout": "Logout", + "global_changelog": "Cronologia aggiornamenti", + "global_configuration": "Configurazione", + "global_billing": "Fatturazione", + "global_renew": "I tuoi servizi", + "global_orders": "I tuoi ordini", + "global_preference": "Il tuo account", + "global_support": "Supporto", + "global_feedback": "Commenti", + "global_feedback_appreciation": "Il tuo parere ci interessa", + "global_feedback_appreciation_text": "Da questa finestra puoi darci la tua opinione sulla navigazione
e l'ergonomia del tuo nuovo Spazio Cliente OVH. ", + "global_feedback_remark": "Tipo di avviso", + "global_feedback_type_simplecomment": "Commento generale", + "global_feedback_type_design": "Design", + "global_feedback_type_ergo": "Ergonomia", + "global_feedback_type_bug": "Bug", + "global_feedback_more_details": "Inserisci il tuo messaggio qui sotto", + "global_feedback_warning": "Attenzione, questo formulario non si riferisce al supporto dei tuoi prodotti.", + "global_feedback_contact": "Per qualsiasi richiesta commerciale o tecnica, non esitara a contattare il supporto OVH,", + "global_feedback_contact_link": "cliccando qui", + "global_feedback_send": "Invia", + "global_feedback_subject": "Oggetto", + "global_feedback_subject_required": "Inserisci un oggetto", + "global_feedback_subject_maxlength": "Il titolo non deve superare 255 caratteri", + "global_profil": "Profilo", + "global_OK": "OK", + "global_KO": "KB", + "global_switch_mode": "Modalità:", + "global_switch_simple_mode": "Modalità semplice", + "global_switch_expert_mode": "Modalità esperto", + "global_processing": "In corso di gestione...", + "global_doing": "In corso ...", + "main_menu_products_and_config": "Configurazione", + "main_menu_bill_and_renew": "Fatturazione", + "main_menu_help_and_support": "Aiuto", + "common_yes": "Sì", + "common_no": "No", + "common_delete": "Elimina", + "required": "Campo obbligatorio", + "required_fields": "I campi contrassegnati dall'asterisco sono obbligatori.", + "select_placeholder": "Seleziona...", + "common_newtab": "nuova scheda", + "contract_next": "Seguente", + "contract_previous": "Precedente", + "download_contract": "Visualizza il contratto \"{{ name }}\" in PDF", + "contract_help": "È necessario visualizzare il contratto per validarlo.", + "contracts_list_title": "Ci sono {{ count }} contratti da consultare.", + "contract_list_title": "C'è 1 contratto da consultare.", + "contracts_agree": "Accetto i contratti", + "contract_agree": "Accetto il contratto", + "day_1": "1 giorno", + "day_other": "{} giorni", + "month_1": "1 mese", + "month_other": "{{t0}} mese", + "year_1": "1 anno", + "year_other": "{} anni", + "upto": "Fino a", + "uptofirstdaynextmonth": "Fino al primo giorno del prossimo mese", + "engage": "Sottoscrivi {{t0}}", + "price_ht_label": "{{ price }} +IVA", + "price_ttc_label": "{{ price }} IVA incl.", + "price_free": "Incluso", + "price_label_yearly": "/anno", + "country_AC": "Isola di Ascensione", + "country_AD": "Andorra", + "country_AE": "Emirati Arabi Uniti", + "country_AF": "Afghanistan", + "country_AG": "Antigua e Barbuda", + "country_AI": "Anguilla", + "country_AL": "Albania", + "country_AM": "Armenia", + "country_AO": "Angola", + "country_AQ": "Antartide", + "country_AR": "Argentina", + "country_AS": "Samoa Americane", + "country_AT": "Austria", + "country_AU": "Australia", + "country_AW": "Aruba", + "country_AX": "Åland, Isole", + "country_AZ": "Azerbaigian", + "country_BA": "Bosnia-Erzegovina", + "country_BB": "Barbados", + "country_BD": "Bangladesh", + "country_BE": "Belgio", + "country_BF": "Burkina Faso", + "country_BG": "Bulgaria", + "country_BH": "Bahrein", + "country_BI": "Burundi", + "country_BJ": "Benin", + "country_BL": "Saint Barts", + "country_BM": "Bermuda", + "country_BN": "Brunei Darussalam", + "country_BO": "Bolivia", + "country_BQ": "Caraibi Olandesi", + "country_BR": "Brasile", + "country_BS": "Bahamas", + "country_BT": "Bhutan", + "country_BW": "Botswana", + "country_BY": "Bielorussia", + "country_BZ": "Belize", + "country_CA": "Canada", + "country_CC": "Cocos (Keeling), Isole", + "country_CD": "Congo, Repubblica Democratica", + "country_CF": "Centrafrica, Repubblica", + "country_CG": "Congo", + "country_CH": "Svizzera", + "country_CI": "Costa d'Avorio", + "country_CK": "Cook, Isole", + "country_CL": "Cile", + "country_CM": "Camerun", + "country_CN": "Cina", + "country_CO": "Colombia", + "country_CR": "Costa Rica", + "country_CU": "Cuba", + "country_CV": "Capo Verde", + "country_CW": "Curaçao", + "country_CX": "Christmas, Isole", + "country_CY": "Cipro", + "country_CZ": "Repubblica Ceca", + "country_DE": "Germania", + "country_DG": "Diego Garcia", + "country_DJ": "Gibuti", + "country_DK": "Danimarca", + "country_DM": "Santo Domingo", + "country_DO": "Dominicana, Repubblica", + "country_DZ": "Algeria", + "country_EA": "Ceuta, Melilla", + "country_EC": "Equador", + "country_EE": "Estonia", + "country_EG": "Egitto", + "country_EH": "Sahara Occidentale", + "country_ER": "Eritrea", + "country_ES": "Spagna", + "country_ET": "Etiopia", + "country_FI": "Finlandia", + "country_FJ": "Fiji", + "country_FK": "Falkland, Isole", + "country_FM": "Micronesia, Stati Federali", + "country_FO": "Fær Øer, Isole", + "country_FR": "Francia", + "country_GA": "Gabon", + "country_GB": "Regno Unito", + "country_GD": "Grenada", + "country_GE": "Georgia", + "country_GF": "Guyana Francese", + "country_GG": "Guernsey", + "country_GH": "Ghana", + "country_GI": "Gibilterra", + "country_GL": "Groenlandia", + "country_GM": "Gambia", + "country_GN": "Guinea", + "country_GP": "Guadalupe", + "country_GQ": "Guinea Equatoriale", + "country_GR": "Grecia", + "country_GS": "Georgia del Sud e Isole Sandwich del Sud", + "country_GT": "Guatemala", + "country_GU": "Guam", + "country_GW": "Guinea-Bissau", + "country_GY": "Guyana", + "country_HK": "Hong-Kong", + "country_HN": "Honduras", + "country_HR": "Croazia", + "country_HT": "Haiti", + "country_HU": "Ungheria", + "country_IC": "Isole Canarie", + "country_ID": "Indonesia", + "country_IE": "Irlanda", + "country_IL": "Israele", + "country_IM": "Isola di Man", + "country_IN": "India", + "country_IO": "Oceano Indiano, Territorio Britannico ", + "country_IQ": "Iraq", + "country_IR": "Iran, Repubblica Islamica", + "country_IS": "Islanda", + "country_IT": "Italia", + "country_JE": "Jersey", + "country_JM": "Giamaica", + "country_JO": "Giordania", + "country_JP": "Giappone", + "country_KE": "Kenya", + "country_KG": "Kirghizistan", + "country_KH": "Cambogia", + "country_KI": "Kiribati", + "country_KM": "Comore", + "country_KN": "San-Kitts-e-Nevis", + "country_KP": "Corea, Repubblica Popolare Democratica", + "country_KR": "Corea, Repubblica", + "country_KW": "Kuwait", + "country_KY": "Caiman, Isole", + "country_KZ": "Kazakhistan", + "country_LA": "Repubblica Popolare Democratica del Laos", + "country_LB": "Libano", + "country_LC": "Saint-Lucia", + "country_LI": "Liechtenstein", + "country_LK": "Sri Lanka", + "country_LR": "Liberia", + "country_LS": "Lesotho", + "country_LT": "Lituania", + "country_LU": "Lussemburgo", + "country_LV": "Lettonia", + "country_LY": "Libia", + "country_MA": "Marocco", + "country_MC": "Monaco", + "country_MD": "Moldavia", + "country_ME": "Montenegro", + "country_MF": "Saint Martin (French part)", + "country_MG": "Madagascar", + "country_MH": "Marshall, Isole", + "country_MK": "Macedonia", + "country_ML": "Mali", + "country_MM": "Myanmar", + "country_MN": "Mongolia", + "country_MO": "Macao", + "country_MP": "Marianne del Nord, Isole", + "country_MQ": "Martinica", + "country_MR": "Mauritania", + "country_MS": "Monserrato", + "country_MT": "Malta", + "country_MU": "Repubblica di Mauritius", + "country_MV": "Maldive", + "country_MW": "Malawi", + "country_MX": "Messico", + "country_MY": "Malaisia", + "country_MZ": "Mozambico", + "country_NA": "Namibia", + "country_NC": "Nuova Caledonia", + "country_NE": "Niger", + "country_NF": "Norfolk, Isola", + "country_NG": "Nigeria", + "country_NI": "Nicaragua", + "country_NL": "Paesi Bassi", + "country_NO": "Norvegia", + "country_NP": "Nepal", + "country_NR": "Nauru", + "country_NU": "Niue", + "country_NZ": "Nuova Zelanda", + "country_OM": "Oman", + "country_PA": "Panama", + "country_PE": "Perù", + "country_PF": "Polinesia Francese", + "country_PG": "Papua-Nuova Guinea", + "country_PH": "Filippine", + "country_PK": "Pakistan", + "country_PL": "Polonia", + "country_PM": "Saint Pierre and Miquelon", + "country_PN": "Pitcairn, Isole", + "country_PR": "Porto Rico", + "country_PS": "Territori Palestinesi", + "country_PT": "Portogallo", + "country_PW": "Palau", + "country_PY": "Paraguay", + "country_QA": "Qatar", + "country_QC": "Quebec", + "country_RE": "La Riunione", + "country_RO": "Romania", + "country_RS": "Repubblica di Serbia ", + "country_RU": "Russia", + "country_RW": "Ruanda", + "country_SA": "Arabia Saudita", + "country_SB": "Salomone, Isole", + "country_SC": "Seychelles", + "country_SD": "Sudan", + "country_SE": "Svezia", + "country_SG": "Singapore", + "country_SH": "Sant'Elena", + "country_SI": "Slovenia", + "country_SJ": "Svalbard and Jan Mayen", + "country_SK": "Slovacchia", + "country_SL": "Sierra Leone", + "country_SM": "San Marino", + "country_SN": "Senegal", + "country_SO": "Somalia", + "country_SR": "Suriname", + "country_SS": "Sudan del Sud", + "country_ST": "Sao Tomé e Principe", + "country_SV": "El Salvador", + "country_SX": "Saint-Martin (Olanda)", + "country_SY": "Siria", + "country_SZ": "Swaziland", + "country_TA": "Tristan da Cunha", + "country_TC": "Turks e Caicos, Isole", + "country_TD": "Chad", + "country_TF": "Territori australi e antartici Francesi", + "country_TG": "Togo", + "country_TH": "Thailandia", + "country_TJ": "Tagikistan", + "country_TK": "Tokelau", + "country_TL": "Timor-Est", + "country_TM": "Turkmenistan", + "country_TN": "Tunisia", + "country_TO": "Tonga", + "country_TR": "Turchia", + "country_TT": "Trinidad e Tobago", + "country_TV": "Tuvalu", + "country_TW": "Taiwan, provincia cinese", + "country_TZ": "Tanzania, Repubblica Unita", + "country_UA": "Ucraina", + "country_UG": "Uganda", + "country_UK": "Regno Unito", + "country_UM": "Isole Minori USA", + "country_US": "Stati uniti", + "country_UY": "Uruguay", + "country_UZ": "Uzbekistan", + "country_VA": "Vaticano", + "country_VC": "Saint Vincent e Grenadine", + "country_VE": "Venezuela", + "country_VG": "Isole Vergini Britanniche", + "country_VI": "Isole Vergini USA", + "country_VN": "Vietnam", + "country_VU": "Vanuatu", + "country_WF": "Wallis e Futuna", + "country_WS": "Samoa", + "country_XK": "Kosovo", + "country_YE": "Yemen", + "country_YT": "Mayotte", + "country_ZA": "Sudafrica", + "country_ZM": "Zambia", + "country_ZW": "Zimbawe", + "navigation_more": "Altre opzioni", + "wizard_help": "Aiuto", + "old_manager_alert": "Per qualche settimana, sarà ancora disponibile la precedente interfaccia cliente.", + "refresh": "Aggiornare", + "core_new_window": "Nuova finestra", + "core_new_tab": "Apri in una nuova scheda", + "core_change_owner": "Cambia il proprietario", + "contacts_management": "Gestisci i contatti", + "customized": "Personalizzato", + "core_top_guides_header": "Per maggiori informazioni, consulta le nostre guide.", + "core_top_guides_header_fr": "Se hai bisogno di assistenza o maggiori informazioni sui tuoi servizi, accedi alla pagina:", + "core_type_of_guide_vps": "Server Privati Virtuali", + "core_all_guides": "Tutte le guide OVH", + "core_vps_top_guide_1_title": "Crea chiavi SSH", + "core_vps_top_guide_2_title": "Aggiornamento dei VPS 2014 alla versione 2016", + "core_vps_top_guide_3_title": "Utilizza Docker Machine sulle tue istanze Public Cloud", + "core_vps_top_guide_4_title": "Crea un utente per accedere a Horizon", + "core_vps_top_guide_5_title": "Come utilizzare l'API Swift", + "core_vps_top_guide_6_title": "Prepara il tuo ambiente di sviluppo per utilizzare l'API OpenStack", + "core_vps_top_guide_7_title": "Sincronizza un Synology NAS con il tuo Object Storage utilizzando DiskStation Manager 6.0", + "core_vps_top_guide_8_title": "Cloud - Nell'interfaccia cliente OVH", + "core_vps_top_guide_9_title": "Crea un'istanza dallo Spazio Cliente OVH", + "core_type_of_guide_sd": "Server Dedicati", + "core_sd_top_guide_1_title": "Iniziare a utilizzare un server dedicato", + "core_sd_top_guide_2_title": "Iniziare a utilizzare un server dedicato Kimsufi, So you Start o Rise", + "core_sd_top_guide_3_title": "Mettere in sicurezza un server dedicato", + "core_sd_top_guide_4_title": "Creare una chiave SSH", + "core_sd_top_guide_5_title": "Utilizzo dell'IPMI sui server dedicati", + "core_sd_top_guide_6_title": "Migrare i dati da un server dedicato a un altro", + "core_sd_top_guide_7_title": "Configurare una nuova installazione di Windows Server", + "core_sd_top_guide_firewall_title": "Configura il Firewall Network", + "core_type_of_guide_pcc": "Hosted Private Cloud", + "core_pcc_top_guide_1_title": "Accedi a vSphere", + "core_pcc_top_guide_2_title": "Configura la tua prima macchina virtuale", + "core_pcc_top_guide_3_title": "Configura un indirizzo IP su una macchina virtuale", + "core_pcc_top_guide_4_title": "Modificare la configurazione di una macchina virtuale", + "core_pcc_top_guide_5_title": "Accedi via SFTP", + "core_pcc_top_guide_6_title": "Documentazione ufficiale VMware", + "core_pcc_top_guide_7_title": "Elimina un host", + "core_pcc_top_guide_8_title": "Le licenze Windows SPLA", + "core_pcc_top_guide_9_title": "Come utilizzare NSX", + "core_pcc_top_guide_10_title": "Documentazione ufficiale NSX", + "sso_modal_title": "OVH - Autenticazione", + "sso_modal_loading": "Caricamento...", + "sso_modal_user_title": "Sei connesso come:", + "sso_modal_currentuser_title": "Adesso sei connesso come:", + "sso_modal_disconnected": "Adesso non sei connesso", + "sso_modal_what": "Cosa vuoi fare?", + "sso_modal_action_reload": "Continua come {{name}}", + "sso_modal_action_logout": "Accedi alla pagina di autenticazione", + "me_alerts_PAYMENTMEAN_DEFAULT_MISSING": "Non hai impostato nessuna modalità di pagamento predefinita. Accedi alla sezione fatturazione per selezionarne una o aggiungere un nuovo metodo di pagamento.", + "me_alerts_PAYMENTMEAN_DEFAULT_EXPIRED": "Il tuo metodo di pagamento predefinito è scaduto! Accedi alla sezione fatturazione per inserirne uno nuovo.", + "me_alerts_PAYMENTMEAN_DEFAULT_EXPIRE_SOON": "Il tuo metodo di pagamento predefinito scadrà entro 30 giorni. Accedi alla sezione fatturazione per aggiungerne uno nuovo.", + "me_alerts_PAYMENTMEAN_DEFAULT_BANKACCOUNT_PENDINGVALIDATION": "Il tuo metodo di pagamento predefinito (conto bancario) è in attesa di convalida. Accedi alla sezione fatturazione per visualizzare maggiori dettagli.", + "me_alerts_PAYMENTMEAN_DEFAULT_CREDITCARD_TOOMANYFAILURES": "Il tuo metodo di pagamento predefinito (carta di credito) è in errore! Accedi alla sezione fatturazione per effettuare una verifica o per aggiungere un nuovo metodo di pagamento.", + "me_alerts_PAYMENTMEAN_DEFAULT_PAYPAL_TOOMANYFAILURES": "Il tuo metodo di pagamento predefinito (PayPal) è in errore! Accedi alla sezione fatturazione per effettuare una verifica o inserirne uno nuovo.", + "me_alerts_PAYMENTMEAN_BANKACCOUNT_PENDINGVALIDATION": "Hai {{t0}} conti bancari in attesa di convalida. Accedi alla sezione fatturazione per visualizzare maggiori dettagli.", + "me_alerts_PAYMENTMEAN_CREDITCARD_TOOMANYFAILURES": "{{t0}} carte bancarie risultano in errore. Accedi alla sezione fatturazione per effettuare una verifica o aggiungere un nuovo metodo di pagamento.", + "me_alerts_PAYMENTMEAN_PAYPAL_TOOMANYFAILURES": "{{t0}} account PayPal risultano in errore. Accedi alla sezione fatturazione per effettuare una verifica o registrare un nuovo metodo di pagamento.", + "me_alerts_OVHACCOUNT_DEBT": "Il tuo conto prepagato è in debito di {{t0}}
al {{t1}}. Accedi alla sezione fatturazione per regolarizzare la situazione.", + "me_alerts_DEBTACCOUNT_DEBT_WITH_UNMATURED_AMOUNT": "Il tuo account è in debito di {{t0}} (di cui un importo di {{t1}} non scaduti). Accedi alla sezione fatturazione per regolarizzare la situazione.", + "me_alerts_DEBTACCOUNT_DEBT": "Il tuo account è in debito di {{t0}}. Accedi alla sezione fatturazione per regolarizzare la situazione.", + "me_alerts_OVHACCOUNT_ALERTTHRESHOLD": "Il tuo conto prepagato ha raggiunto la soglia massima definita. Per maggiori informazioni, accedi alla sezione fatturazione. ", + "me_alerts_ORDERS_DOCUMENTSREQUESTED": "{{t0}} ordini sono in attesa di documenti. Accedi alla sezione \"Ordini\" per aggiornarli.", + "me_alerts_AGREEMENTS_TODO": "Sono presenti {{t0}} contratti da validare.", + "me_alerts_CONTACTCHANGE_VALIDATINGBYCUSTOMERS": "Sono presenti {{t0}} richieste di modifica di contatto.", + "me_alerts_AUTORENEW_INVITE": "Attiva subito il rinnovo automatico dei tuoi servizi!", + "core_service_expiration_label": "Scadenza", + "core_service_expiration": "Scaduto il ", + "core_service_expiration_manual_renew": "Da rinnovare il", + "core_service_expiration_auto_renew": "Rinnovo previsto il", + "core_service_renew_button": "Rinnova", + "core_user_enterprise_retail_prices": "I prezzi indicati sono quelli di listino e potrebbero non corrispondere ai termini negoziati. Consulta la tua fattura mensile per ulteriori dettagli.", + "core_user_enterprise_retail_prices_hpc": "I prezzi indicati sono una stima basata sul calcolo proporzionale di questo modulo per allinearsi al periodo di fatturazione del tuo contratto attuale. Consulta la tua fattura mensile per ulteriori dettagli.", + "core_user_trusted_retail_prices": "Attenzione: il prezzo visualizzato corrisponde al prezzo del servizio. Il costo supplementare per la Trusted Zone viene aggiunto alla fatturazione mensile totale.", + "browser_alert_not_supported": "Il tuo browser non è supportato", + "browser_alert_deprecated": "Il tuo browser non è aggiornato e potrebbe contenere bug di sicurezza o di compatibilità.", + "browser_alert_update": "Per usufruire di un'esperienza ottimale, ti consigliamo di aggiornare il tuo browser .", + "browser_alert_close": "Chiudi questo alert", + "ovh_task_follow_button": "Dettagli dell'incidente", + "ovh_task_follow_modal_title": "Monitora lo stato dell'incidente", + "ovh_task_follow_modal_comment": "Ultimo aggiornamento: {{t 0 }}", + "otrs_menu_assistance": "Supporto", + "otrs_menu_assistance_expanded": "Bisogno di aiuto?", + "otrs_menu_all_guides": "Tutte le guide", + "otrs_menu_help_center": "Centro di assistenza", + "otrs_menu_new_ticket": "Crea una richiesta di supporto", + "otrs_menu_list_ticket": "Lista delle tue richieste di supporto", + "otrs_menu_ask_for_assistance": "Richieste di assistenza", + "otrs_menu_email_history": "Storico delle tue email", + "otrs_menu_telephony_contact": "Supporto telefonico", + "otrs_menu_changelog": "Cronologia aggiornamenti", + "common_configuration_creation": "Data di creazione", + "menu_action_label": "{{t0}} (Lista delle azioni)", + "server_tab_USB_STORAGE_order_select_duration": "Seleziona la durata:", + "common_subscription_contacts": "Contatti", + "common_subscription_contacts_admin": "Amministratore", + "common_subscription_contacts_billing": "Fatturazione", + "common_subscription_contacts_tech": "Tecnico", + "common_unavailable_information": "Informazione non disponibile", + "common_resiliate_contact_support": "Per disattivare questo servizio, contatta il nostro supporto tecnico al numero 02 5560 0423 o apri un ticket.", + "core_pcc_top_guide_11_title": "Documentazione ufficiale di Nutanix", + "core_pcc_top_guide_12_title": "Documentazione ufficiale di SAP HANA on Private Cloud", + "core_pcc_top_guide_13_title": "Autorizzare IP a connettersi al vCenter", + "core_pcc_top_guide_14_title": "VMware on OVHcloud - VMware Cloud Director" +} diff --git a/packages/manager/modules/new-billing/src/common/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/common/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..55f949e1dc29 --- /dev/null +++ b/packages/manager/modules/new-billing/src/common/translations/Messages_pl_PL.json @@ -0,0 +1,551 @@ +{ + "common_actions": "Operacje", + "common_pagination_display": "Wyświetl", + "common_pagination_page": "strona", + "select_option": "Wybierz...", + "welcome_to_your_manager_1": "Witamy w", + "welcome_to_your_manager_2": "Panel klienta OVHcloud", + "select_product_on_left": "Wybierz usługę z listy dostępnej po lewej stronie.", + "select_product_on_top": "Wybierz z listy usługę do konfiguracji.", + "index_nav_bar_logo_alt": "Panel administracyjny usług dedykowanych w OVH", + "older_interface": "Poprzednia wersja interfejsu", + "universe_univers-v3_name": "Poprzednia wersja interfejsu", + "unit_size_B": "b", + "unit_size_KB": "kb", + "unit_size_MB": "MB", + "unit_size_GB": "GB", + "unit_size_TB": "TB", + "unit_size_PB": "PB", + "unit_size_EB": "EB", + "unit_size_ZB": "ZB", + "unit_size_YB": "YB", + "unit_size_KiB": "KiB", + "unit_size_MiB": "MB", + "unit_size_GiB": "GiB", + "unit_size_TiB": "TiB", + "unit_size_PiB": "PiB", + "unit_size_EiB": "EiB", + "unit_size_ZiB": "ZiB", + "unit_size_YiB": "YiB", + "unit_size_bps": "bps", + "unit_size_Kbps": "kbps", + "unit_size_Mbps": "Mbps", + "unit_size_Gbps": "Gbps", + "unit_size_Tbps": "Tbps", + "unit_size_Pbps": "Pbps", + "unit_size_Ebps": "Ebps", + "unit_size_Zbps": "Zbps", + "unit_size_Ybps": "Ybps", + "unit_frequency_HZ": "Hz", + "unit_frequency_KHZ": "KHz", + "unit_frequency_MHZ": "MHz", + "unit_frequency_GHZ": "GHz", + "unit_frequency_THZ": "THz", + "unit_frequency_PHZ": "PHz", + "unit_frequency_EHZ": "EHz", + "unit_frequency_ZHZ": "ZHz", + "unit_frequency_YHZ": "YHz", + "monday": "Poniedziałek", + "tuesday": "Wtorek", + "wednesday": "Środa", + "thursday": "Czwartek", + "friday": "Piątek", + "saturday": "Sobota", + "sunday": "Niedziela", + "januar": "Styczeń", + "februar": "Luty", + "march": "Marzec", + "april": "Kwiecień", + "may": "Maj", + "june": "Czerwiec", + "jully": "Lipiec", + "august": "Sierpień", + "september": "Wrzesień", + "october": "Październik", + "november": "Listopad", + "december": "Grudzień", + "januar_short": "Styczeń", + "februar_short": "Luty", + "march_short": "Marzec", + "april_short": "Kwiecień", + "may_short": "Maj", + "june_short": "Czerwiec", + "jully_short": "Lipiec", + "august_short": "Sierpień", + "september_short": "Wrzesień", + "october_short": "Październik", + "november_short": "Listopad", + "december_short": "Grudzień", + "wizard_cancel": "Anuluj", + "wizard_close": "Zamknij", + "wizard_confirm": "Zatwierdź", + "wizard_modify": "Zmień", + "wizard_delete": "Usuń", + "wizard_yes": "Tak", + "wizard_no": "Nie", + "wizard_order": "Zamów", + "wizard_pay": "Zamów", + "wizard_renew": "Odnów", + "wizard_next": "Dalej", + "wizard_previous": "Wstecz", + "wizard_breadcrumb": "Krok {{ currentStep }} z {{ stepCount }}", + "pagination_page": "Strona {{ current }} / {{ last }}", + "pagination_go": "OK", + "pagination_display": "Wyświetl", + "common_loading": "Ładowanie…", + "common_cancel": "Anuluj", + "common_confirm": "Potwierdź", + "common_terminate": "Zakończ", + "common_back": "Powrót", + "common_next": "Dalej", + "common_previous": "Wstecz", + "common_activated": "Aktywny", + "common_activate": "Włącz", + "common_desactivated": "Wyłączony", + "common_desactivate": "Wyłącz", + "common_TODO": "Informacja", + "common_not_configurated": "Brak konfiguracji", + "common_ipv4": "IPv4", + "common_ipv6": "IPv6", + "common_bitFormat": "bits", + "common_expired": "Usługa nie została odnowiona. Może to być związane z Twoją decyzją lub z opóźnieniem płatności.", + "common_settle_bill": "Zapłać", + "common_service_expired": "Usługa {{t0}} nie została odnowiona. Może to być związane z Twoją decyzją lub z opóźnieniem płatności.", + "common_reset_zoom": "Resetuj zoom", + "common_alerts_message_see_more": "Wyświetl szczegóły błędów", + "common_alerts_message_see_less": "Ukryj szczegóły dotyczące błędów", + "common_managerv5": "Manager V5", + "common_managerv3": "Manager V3", + "common_refresh": "Odśwież", + "common_change": "Zmień", + "common_download_format": "Pobierz w formacie {{t0}}", + "common_skip_to_main_content": "Przejdź do głównej sekcji", + "common_shortcuts": "Skróty", + "common_links": "Linki", + "common_add": "Dodaj", + "global_app_title": "Panel klienta - Serwery OVHcloud", + "global_language": "Język", + "global_logout": "Wyloguj", + "global_changelog": "Historia aktualizacji", + "global_configuration": "Konfiguracja", + "global_billing": "Płatności", + "global_renew": "Moje usługi", + "global_orders": "Moje zamówienia", + "global_preference": "Moje konto", + "global_support": "Pomoc", + "global_feedback": "Dodaj swoją opinię", + "global_feedback_appreciation": "Twoja opinia nas interesuje.", + "global_feedback_appreciation_text": "Za pomocą tego okna możesz przesłać swoją opinię na temat korzystania z panelu klienta
oraz jego ergonomii.", + "global_feedback_remark": "Typ komentarza", + "global_feedback_type_simplecomment": "Ogólny komentarz", + "global_feedback_type_design": "Design", + "global_feedback_type_ergo": "Ergonomia", + "global_feedback_type_bug": "Bug", + "global_feedback_more_details": "Prosimy o wpisanie wiadomości poniżej", + "global_feedback_warning": "Uwaga, ten formularz nie dotyczy pomocy w zarządzaniu usługami.", + "global_feedback_contact": "W przypadku pytań handlowych lub technicznych, skontaktuj się z pomocą OVH, ", + "global_feedback_contact_link": "klikając tutaj", + "global_feedback_send": "Wyślij", + "global_feedback_subject": "Temat", + "global_feedback_subject_required": "Prosimy o wpisanie tematu", + "global_feedback_subject_maxlength": "Tytuł nie może przekraczać 255 znaków", + "global_profil": "Profil", + "global_OK": "OK", + "global_KO": "KO", + "global_switch_mode": "Tryb:", + "global_switch_simple_mode": "Tryb prosty", + "global_switch_expert_mode": "Tryb expert", + "global_processing": "Trwa przetwarzanie ...", + "global_doing": "W trakcie ...", + "main_menu_products_and_config": "Konfiguracja", + "main_menu_bill_and_renew": "Płatności", + "main_menu_help_and_support": "Pomoc", + "common_yes": "Tak", + "common_no": "Nie", + "common_delete": "Usuń", + "required": "Pole wymagane", + "required_fields": "Pola oznaczone gwiazdką są obowiązkowe.", + "select_placeholder": "Wybierz...", + "common_newtab": "nowa zakładka", + "contract_next": "Dalej", + "contract_previous": "Wstecz", + "download_contract": "Otwórz umowę \"{{ name }}\" w formacie PDF", + "contract_help": "Przed zatwierdzeniem regulaminów należy je przeczytać.", + "contracts_list_title": "Liczba umów do przejrzenia: {{ count }}", + "contract_list_title": "Masz 1 regulamin do przeczytania.", + "contracts_agree": "Akceptuję regulaminy", + "contract_agree": "Akceptuję regulamin", + "day_1": "1 dzień", + "day_other": "{} dni", + "month_1": "1 m-c", + "month_other": "{{t0}} m-c", + "year_1": "1 rok", + "year_other": "{} lat(a)", + "upto": "Do", + "uptofirstdaynextmonth": "Do pierwszego dnia kolejnego miesiąca", + "engage": "Zamów {{t0}}", + "price_ht_label": "{{ price }} net", + "price_ttc_label": "{{ price }} brutto", + "price_free": "W ofercie", + "price_label_yearly": "/rok", + "country_AC": "Wyspa Wniebowstąpienia", + "country_AD": "Andora", + "country_AE": "Zjednoczone Emiraty Arabskie", + "country_AF": "Afganistan", + "country_AG": "Antigua i Barbuda", + "country_AI": "Anguilla", + "country_AL": "Albania", + "country_AM": "Armenia", + "country_AO": "Angola", + "country_AQ": "Antarktyda", + "country_AR": "Argentyna", + "country_AS": "Samoa Amerykańskie", + "country_AT": "Austria", + "country_AU": "Australia", + "country_AW": "Aruba", + "country_AX": "Wyspy Alandzkie", + "country_AZ": "Azerbejdżan", + "country_BA": "Bośnia i Hercegowina", + "country_BB": "Barbados", + "country_BD": "Bangladesz", + "country_BE": "Belgia", + "country_BF": "Burkina Faso", + "country_BG": "Bułgaria", + "country_BH": "Bahrajn", + "country_BI": "Burundi", + "country_BJ": "Benin", + "country_BL": "Saint Barthelemy", + "country_BM": "Bermudy", + "country_BN": "Brunei Darussalam", + "country_BO": "Boliwia", + "country_BQ": "Karaiby", + "country_BR": "Brazylia", + "country_BS": "Bahamy", + "country_BT": "Bhoutan", + "country_BW": "Botswana", + "country_BY": "Białoruś", + "country_BZ": "Belize", + "country_CA": "Kanada", + "country_CC": "Wyspy Kokosowe", + "country_CD": "Demokratyczna Republika Kongo", + "country_CF": "Republika Środkowoafrykańska", + "country_CG": "Kongo", + "country_CH": "Szwajcaria", + "country_CI": "Wybrzeże Kości Słoniowej", + "country_CK": "Wyspy Cooka", + "country_CL": "Chile", + "country_CM": "Kamerun", + "country_CN": "Chiny", + "country_CO": "Kolumbia", + "country_CR": "Costa Rica", + "country_CU": "Kuba", + "country_CV": "Wyspy Zielonego Przylądka", + "country_CW": "Curaçao", + "country_CX": "Wyspa Bożego Narodzenia", + "country_CY": "Cypr", + "country_CZ": "Czechy", + "country_DE": "Niemcy", + "country_DG": "Diego Garcia", + "country_DJ": "Dżibuti", + "country_DK": "Dania", + "country_DM": "Dominika", + "country_DO": "Dominikana, Republika", + "country_DZ": "Algieria", + "country_EA": "Ceuta, Melilla", + "country_EC": "Ekwador", + "country_EE": "Estonia", + "country_EG": "Egipt", + "country_EH": "Sahara Zachodnia", + "country_ER": "Erytrea", + "country_ES": "Hiszpania", + "country_ET": "Etiopia", + "country_FI": "Finlandia", + "country_FJ": "Fidżi", + "country_FK": "Falklandy", + "country_FM": "Sfederowane Stany Mikronezji", + "country_FO": "Wyspy Owcze", + "country_FR": "Francja", + "country_GA": "Gabon", + "country_GB": "Wielka Brytania", + "country_GD": "Grenada", + "country_GE": "Gruzja", + "country_GF": "Gujana Francuska", + "country_GG": "Guernesey", + "country_GH": "Ghana", + "country_GI": "Gibraltar", + "country_GL": "Grenlandia", + "country_GM": "Gambia", + "country_GN": "Gwinea", + "country_GP": "Guadelupa", + "country_GQ": "Gwinea Równikowa", + "country_GR": "Grecja", + "country_GS": "Georgia Południowa i Sandwich Południowy", + "country_GT": "Gwatemala", + "country_GU": "Guam", + "country_GW": "Gwinea Bissau", + "country_GY": "Gujana", + "country_HK": "Hong-Kong", + "country_HN": "Honduras", + "country_HR": "Chorwacja", + "country_HT": "Haiti", + "country_HU": "Węgry", + "country_IC": "Wyspy Kanaryjskie", + "country_ID": "Indonezja", + "country_IE": "Irlandia", + "country_IL": "Izrael", + "country_IM": "Wyspa Man", + "country_IN": "Indie", + "country_IO": "Ocean Indyjski, Terytorium Brytyjskie", + "country_IQ": "Irak", + "country_IR": "Islamska Republika Iranu", + "country_IS": "Islandia", + "country_IT": "Włochy", + "country_JE": "Jersey", + "country_JM": "Jamajka", + "country_JO": "Jordania", + "country_JP": "Japonia", + "country_KE": "Kenia", + "country_KG": "Kirgistan", + "country_KH": "Kambodża", + "country_KI": "Kiribati", + "country_KM": "Komory", + "country_KN": "Saint-Kitts-Et-Nevis", + "country_KP": "Korea, Demokratyczna Republika Ludowa", + "country_KR": "Korea Południowa", + "country_KW": "Kuwejt", + "country_KY": "Kajmany, Wyspy", + "country_KZ": "Kazachstan", + "country_LA": "Laos, Republika Ludowo-Demokratyczna", + "country_LB": "Liban", + "country_LC": "Sainte-Lucie", + "country_LI": "Liechtenstein", + "country_LK": "Sri Lanka", + "country_LR": "Liberia", + "country_LS": "Lesotho", + "country_LT": "Litwa", + "country_LU": "Luxembourg", + "country_LV": "Łotwa", + "country_LY": "Libia", + "country_MA": "Maroko", + "country_MC": "Monako", + "country_MD": "Mołdawia", + "country_ME": "Czarnogóra", + "country_MF": "Saint Martin (część Francuska)", + "country_MG": "Madagaskar", + "country_MH": "Wyspy Marshalla", + "country_MK": "Macedonia", + "country_ML": "Mali", + "country_MM": "Myanmar", + "country_MN": "Mongolia", + "country_MO": "Makao", + "country_MP": "Wyspy Mariany", + "country_MQ": "Martynika", + "country_MR": "Mauretania", + "country_MS": "Montserrat", + "country_MT": "Malta", + "country_MU": "Republika Mauritiusa", + "country_MV": "Malediwy", + "country_MW": "Malawi", + "country_MX": "Meksyk", + "country_MY": "Malezja", + "country_MZ": "Mozambik", + "country_NA": "Namibia", + "country_NC": "Nowa Kaledonia", + "country_NE": "Niger", + "country_NF": "Wyspa Norfolk", + "country_NG": "Nigeria", + "country_NI": "Nikaragua", + "country_NL": "Holandia", + "country_NO": "Norwegia", + "country_NP": "Nepal", + "country_NR": "Nauru", + "country_NU": "Niue", + "country_NZ": "Nowa Zelandia", + "country_OM": "Oman", + "country_PA": "Panama", + "country_PE": "Peru", + "country_PF": "Polinezja Francuska", + "country_PG": "Papua Nowa Gwinea", + "country_PH": "Filipiny", + "country_PK": "Pakistan", + "country_PL": "Polska", + "country_PM": "Saint-Pierre-Et-Miquelon", + "country_PN": "Pitcairn", + "country_PR": "Porto Rico", + "country_PS": "Okupowane Terytorium Palestyny", + "country_PT": "Portugalia", + "country_PW": "Palaos", + "country_PY": "Paragwaj", + "country_QA": "Katar", + "country_QC": "Quebec", + "country_RE": "Reunion", + "country_RO": "Rumunia", + "country_RS": "Republika Serbii (Dawniej Seria i Czarnogóra). ", + "country_RU": "Rosja", + "country_RW": "Rwanda", + "country_SA": "Arabia Saudyjska", + "country_SB": "Wyspy Salomona", + "country_SC": "Seszele", + "country_SD": "Sudan", + "country_SE": "Szwecja", + "country_SG": "Singapur", + "country_SH": "Sainte-Hélène", + "country_SI": "Słowenia", + "country_SJ": "Svalbard i Wyspa Jan Mayen", + "country_SK": "Słowacja", + "country_SL": "Sierra Leone", + "country_SM": "Saint-Marin", + "country_SN": "Senegal", + "country_SO": "Somalia", + "country_SR": "Surinam", + "country_SS": "Południowy Sudan", + "country_ST": "Sao Tomé-Et-Principe", + "country_SV": "Salwador", + "country_SX": "Saint-Martin (Królestwo Holandii)", + "country_SY": "Syria", + "country_SZ": "Suazi", + "country_TA": "Tristan da Cunha", + "country_TC": "Wyspy Turks i Caicos", + "country_TD": "Czad", + "country_TF": "Francuskie Terytoria Południowe", + "country_TG": "Togo", + "country_TH": "Tajlandia", + "country_TJ": "Tadżykistan", + "country_TK": "Tokelau", + "country_TL": "Timor-Leste", + "country_TM": "Turkmenistan", + "country_TN": "Tunezja", + "country_TO": "Tonga", + "country_TR": "Turcja", + "country_TT": "Trynidad i Tobago", + "country_TV": "Tuvalu", + "country_TW": "Tajwan", + "country_TZ": "Tanzania", + "country_UA": "Ukraina", + "country_UG": "Uganda", + "country_UK": "Wielka Brytania", + "country_UM": "Dalekie Wyspy Mniejsze Stanów Zjednoczonych", + "country_US": "Stany Zjednoczone", + "country_UY": "Urugwaj", + "country_UZ": "Uzbekistan", + "country_VA": "Watykan", + "country_VC": "Saint-Vincent i Grenadyny", + "country_VE": "Wenezuela", + "country_VG": "Brytyjskie Wyspy Dziewicze", + "country_VI": "Wyspy Dziewicze Stanów Zjednoczonych", + "country_VN": "Wietnam", + "country_VU": "Vanuatu", + "country_WF": "Wallis i Futuna", + "country_WS": "Samoa", + "country_XK": "Kosowo", + "country_YE": "Jemen", + "country_YT": "Majotta", + "country_ZA": "Republika Południowej Afryki", + "country_ZM": "Zambia", + "country_ZW": "Zimbabwe", + "navigation_more": "Więcej", + "wizard_help": "Pomoc", + "old_manager_alert": "Jeszcze przez kilka tygodni będziesz mógł zarządzać usługami w starszej wersji Panelu klienta.", + "refresh": "Aktualizacja", + "core_new_window": "Nowe okno", + "core_new_tab": "Otwórz nową zakładkę", + "core_change_owner": "Zmiana właściciela", + "contacts_management": "Zarządzanie kontaktami", + "customized": "Spersonalizowany", + "core_top_guides_header": "Aby uzyskać więcej informacji, sprawdź nasze przewodniki.", + "core_top_guides_header_fr": "Aby uzyskać wsparcie lub szczegółowe informacje dotyczące Twoich usług, wejdź na stronę:", + "core_type_of_guide_vps": "Prywatne serwery wirtualne", + "core_all_guides": "Wszystkie nasze przewodniki", + "core_vps_top_guide_1_title": "Tworzenie kluczy SSH", + "core_vps_top_guide_2_title": "Migracja z oferty VPS 2014 na ofertę 2016", + "core_vps_top_guide_3_title": "Korzystanie z docker-machine opartej na instancjach Public Cloud", + "core_vps_top_guide_4_title": "Utwórzenie dostępu do interfejsu Horizon", + "core_vps_top_guide_5_title": "Rozpocznij pracę z API Swift", + "core_vps_top_guide_6_title": "Przygotowanie środowiska dla API OpenStack", + "core_vps_top_guide_7_title": "Synchronizacja NAS Synology z Object Storage za pomocą DiskStation Manager 6.0", + "core_vps_top_guide_8_title": "Cloud - W Panelu klienta OVH", + "core_vps_top_guide_9_title": "Utworzenie instancji w Panelu klienta OVH", + "core_type_of_guide_sd": "Serwery dedykowane", + "core_sd_top_guide_1_title": "Pierwsze kroki z serwerem dedykowanym", + "core_sd_top_guide_2_title": "Pierwsze kroki z serwerem dedykowanym Kimsufi, So You Start lub Rise", + "core_sd_top_guide_3_title": "Bezpieczeństwo serwera dedykowanego", + "core_sd_top_guide_4_title": "Tworzenie klucza SSH", + "core_sd_top_guide_5_title": "Korzystanie z IPMI dla serwerów dedykowanych", + "core_sd_top_guide_6_title": "Przeniesienie danych z jednego serwera dedykowanego na inny", + "core_sd_top_guide_7_title": "Konfiguracja nowej instalacji Windows Server", + "core_sd_top_guide_firewall_title": "Skonfiguruj Firewall Network", + "core_type_of_guide_pcc": "Hosted Private Cloud", + "core_pcc_top_guide_1_title": "Dostęp do vSphere", + "core_pcc_top_guide_2_title": "Wdrożenie pierwszej wirtualnej maszyny", + "core_pcc_top_guide_3_title": "Konfiguracja IP na maszynie wirtualnej", + "core_pcc_top_guide_4_title": "Zmiana konfiguracji wirtualnej maszyny", + "core_pcc_top_guide_5_title": "Logowanie przez SFTP", + "core_pcc_top_guide_6_title": "Oficjalna dokumentacja VMware", + "core_pcc_top_guide_7_title": "Usuwanie hosta", + "core_pcc_top_guide_8_title": "Działanie licencji SPLA Windows", + "core_pcc_top_guide_9_title": "Pierwsze kroki z NSX", + "core_pcc_top_guide_10_title": "Oficjalna dokumentacja NSX", + "sso_modal_title": "OVH - Uwierzytelnianie", + "sso_modal_loading": "Pobieranie...", + "sso_modal_user_title": "Byłeś zalogowany jako:", + "sso_modal_currentuser_title": "Jesteś teraz zalogowany jako:", + "sso_modal_disconnected": "Wylogowałeś się.", + "sso_modal_what": "Co chcesz zrobić?", + "sso_modal_action_reload": "Kontynuuj jako {{name}}", + "sso_modal_action_logout": "Przejdź na stronę logowania", + "me_alerts_PAYMENTMEAN_DEFAULT_MISSING": "Nie wybrano domyślnego sposobu płatności. Przejdź do sekcji Płatności, aby dodać sposób płatności.", + "me_alerts_PAYMENTMEAN_DEFAULT_EXPIRED": "Twój domyślny sposób płatności wygasł! Przejdź do sekcji Płatności, aby zarejestrować nowy sposób płatności.", + "me_alerts_PAYMENTMEAN_DEFAULT_EXPIRE_SOON": "Twój domyślny sposób płatności wygasa w ciągu 30 dni. Przejdź do sekcji Płatności, aby zarejestrować nowy sposób płatności.", + "me_alerts_PAYMENTMEAN_DEFAULT_BANKACCOUNT_PENDINGVALIDATION": "Twój domyślny sposób płatności (konto bankowe) czeka na zatwierdzenie. Przejdź do sekcji Płatności, aby uzyskać dodatkowe informacje.", + "me_alerts_PAYMENTMEAN_DEFAULT_CREDITCARD_TOOMANYFAILURES": "Twój domyślny sposób płatności (karta kredytowa) zgłasza błędy! Przejdź do sekcji Płatności, aby dokonać weryfikacji i/lub zarejestrować nowy sposób płatności.", + "me_alerts_PAYMENTMEAN_DEFAULT_PAYPAL_TOOMANYFAILURES": "Twój domyślny sposób płatności (PayPal) zgłasza błędy! Przejdź do sekcji Płatności, aby dokonać weryfikacji i/lub zarejestrować nowy sposób płatności.", + "me_alerts_PAYMENTMEAN_BANKACCOUNT_PENDINGVALIDATION": "Liczba kont bankowych oczekujących na zatwierdzenie: {{t0}}. Przejdź do sekcji Płatności, aby uzyskać dodatkowe informacje.", + "me_alerts_PAYMENTMEAN_CREDITCARD_TOOMANYFAILURES": "Liczba kart kredytowych z błędem: {{t0}}. Przejdź do sekcji Płatności, aby dokonać weryfikacji i/lub zarejestrować nowy sposób płatności.", + "me_alerts_PAYMENTMEAN_PAYPAL_TOOMANYFAILURES": "Liczba kont PayPal z błędem: {{t0}}. Przejdź do sekcji Płatności, aby dokonać weryfikacji i/lub zarejestrować nowy sposób płatności.", + "me_alerts_OVHACCOUNT_DEBT": "Zadłużenie na Twoim koncie przedpłaconym wynosi {{t0}} na dzień {{t1}}. Przejdź do sekcji płatności, aby uregulować fakturę.", + "me_alerts_DEBTACCOUNT_DEBT_WITH_UNMATURED_AMOUNT": "Zadłużenie na Twoim koncie wynosi {{t0}} (w tym kwota {{t1}}, której termin płatności nie został przekroczony). Przejdź do sekcji płatności, aby uregulować fakturę.", + "me_alerts_DEBTACCOUNT_DEBT": "Zadłużenie na Twoim koncie wynosi {{t0}}. Przejdź do sekcji płatności, aby uregulować fakturę. ", + "me_alerts_OVHACCOUNT_ALERTTHRESHOLD": "Twoje konto prepaid osiągnęło zdefiniowany próg. Przejdź do sekcji płatności, aby uzyskać więcej informacji.", + "me_alerts_ORDERS_DOCUMENTSREQUESTED": "Liczba oczekujących zamówień, dla których wymagane są dokumenty: {{t0}}. Przejdź do sekcji \"Moje zamówienia\", aby dokonać aktualizacji.", + "me_alerts_AGREEMENTS_TODO": "Liczba umów do zatwierdzenia: {{t0}}.", + "me_alerts_CONTACTCHANGE_VALIDATINGBYCUSTOMERS": "Liczba zleceń zmiany kontaktów: {{t0}}", + "me_alerts_AUTORENEW_INVITE": "Włącz automatyczne odnawianie Twoich usług!", + "core_service_expiration_label": "Data wygasania", + "core_service_expiration": "Wygasa dnia", + "core_service_expiration_manual_renew": "Do odnowienia dnia", + "core_service_expiration_auto_renew": "Odnowienie przewidziane na", + "core_service_renew_button": "Odnów", + "core_user_enterprise_retail_prices": "Uwaga: podane ceny są standardowymi cenami katalogowymi, które mogą nie odzwierciedlać wynegocjowanych warunków. Aby uzyskać szczegółowe informacje, zapoznaj się z Twoją miesięczną fakturą.", + "core_user_enterprise_retail_prices_hpc": "Uwaga: podane ceny są cenami szacunkowymi opartymi o wyliczenie prorata dla tego modułu celem dostosowania do okresu rozliczeniowego wynikającego z aktualnej umowy. Aby uzyskać szczegółowe informacje, zapoznaj się z Twoją miesięczną fakturą.", + "core_user_trusted_retail_prices": "Uwaga: Podana cena odpowiada cenie usługi. Dopłata za opcję Trusted Zone jest doliczana do kwoty miesięcznej faktury.", + "browser_alert_not_supported": "Twoja przeglądarka nie jest obsługiwana.", + "browser_alert_deprecated": "Wersja Twojej przeglądarki jest nieaktualna i może zawierać luki związane z bezpieczeństwem lub kompatybilnością.", + "browser_alert_update": "Zalecamy zaktualizowanie przeglądarki .", + "browser_alert_close": "Zamknij ten alert", + "ovh_task_follow_button": "Informacje o incydencie", + "ovh_task_follow_modal_title": "Monitoruj status incydentu", + "ovh_task_follow_modal_comment": "Ostatnia aktualizacja: {{t 0 }}", + "otrs_menu_assistance": "Pomoc", + "otrs_menu_assistance_expanded": "Potrzebujesz pomocy?", + "otrs_menu_all_guides": "Wszystkie przewodniki", + "otrs_menu_help_center": "Centrum pomocy", + "otrs_menu_new_ticket": "Otwórz zgłoszenie", + "otrs_menu_list_ticket": "Lista moich zgłoszeń", + "otrs_menu_ask_for_assistance": "Zgłoszenia (tickets)", + "otrs_menu_email_history": "Historia e-maili", + "otrs_menu_telephony_contact": "Pomoc telefoniczna", + "otrs_menu_changelog": "Historia aktualizacji", + "common_configuration_creation": "Data utworzenia", + "menu_action_label": "{{t0}} (Lista działań)", + "server_tab_USB_STORAGE_order_select_duration": "Wybierz okres:", + "common_subscription_contacts": "Kontakt", + "common_subscription_contacts_admin": "Administrator", + "common_subscription_contacts_billing": "Płatności", + "common_subscription_contacts_tech": "Kontakt techniczny", + "common_unavailable_information": "Informacja niedostępna", + "common_resiliate_contact_support": "Aby zrezygnować z tej usługi, skontaktuj się z Pomocą techniczną. Zadzwoń na numer: 71 750 02 00 i wybierz 3. Dziękujemy za wyrozumiałość.", + "core_pcc_top_guide_11_title": "Oficjalna dokumentacja Nutanix", + "core_pcc_top_guide_12_title": "Oficjalna dokumentacja SAP HANA on Private Cloud", + "core_pcc_top_guide_13_title": "Autoryzacja adresów IP, które mogą łączyć się z vCenter", + "core_pcc_top_guide_14_title": "VMware on OVHcloud - VMware Cloud Director" +} diff --git a/packages/manager/modules/new-billing/src/common/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/common/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..acfa768c9044 --- /dev/null +++ b/packages/manager/modules/new-billing/src/common/translations/Messages_pt_PT.json @@ -0,0 +1,551 @@ +{ + "common_actions": "Ações", + "common_pagination_display": "Mostrar", + "common_pagination_page": "página", + "select_option": "Selecione...", + "welcome_to_your_manager_1": "Bem-vindo/a à", + "welcome_to_your_manager_2": "área de cliente OVHcloud", + "select_product_on_left": "Selecionar na coluna à esquerda o produto que pretende configurar", + "select_product_on_top": "Selecionar acima o produto a configurar.", + "index_nav_bar_logo_alt": "Área de Cliente OVH", + "older_interface": "Interface anterior", + "universe_univers-v3_name": "Interface anterior", + "unit_size_B": "B", + "unit_size_KB": "KB", + "unit_size_MB": "MB", + "unit_size_GB": "GB", + "unit_size_TB": "TB", + "unit_size_PB": "PB", + "unit_size_EB": "EB", + "unit_size_ZB": "ZB", + "unit_size_YB": "YB", + "unit_size_KiB": "KiB", + "unit_size_MiB": "MiB", + "unit_size_GiB": "GiB", + "unit_size_TiB": "TiB", + "unit_size_PiB": "PiB", + "unit_size_EiB": "EiB", + "unit_size_ZiB": "ZiB", + "unit_size_YiB": "YiB", + "unit_size_bps": "bps", + "unit_size_Kbps": "kbps", + "unit_size_Mbps": "Mbps", + "unit_size_Gbps": "Gbps", + "unit_size_Tbps": "Tbps", + "unit_size_Pbps": "Pbps", + "unit_size_Ebps": "Ebps", + "unit_size_Zbps": "Zbps", + "unit_size_Ybps": "Ybps", + "unit_frequency_HZ": "Hz", + "unit_frequency_KHZ": "KHz", + "unit_frequency_MHZ": "MHz", + "unit_frequency_GHZ": "GHz", + "unit_frequency_THZ": "THz", + "unit_frequency_PHZ": "PHz", + "unit_frequency_EHZ": "EHz", + "unit_frequency_ZHZ": "ZHz", + "unit_frequency_YHZ": "YHz", + "monday": "Segunda-feira", + "tuesday": "Terça-feira", + "wednesday": "Quarta-feira", + "thursday": "Quinta-feira", + "friday": "Sexta-feira", + "saturday": "Sábado ", + "sunday": "Domingo", + "januar": "Janeiro", + "februar": "Fevereiro", + "march": "Março", + "april": "Abril", + "may": "Maio", + "june": "Junho", + "jully": "Julho", + "august": "Agosto", + "september": "Setembro", + "october": "Outubro ", + "november": "Novembro", + "december": "Dezembro", + "januar_short": "Jan", + "februar_short": "Fev", + "march_short": "Março", + "april_short": "Abril", + "may_short": "Maio", + "june_short": "Junho", + "jully_short": "Julho", + "august_short": "Agosto", + "september_short": "Set", + "october_short": "Out", + "november_short": "Nov", + "december_short": "Dez", + "wizard_cancel": "Anular", + "wizard_close": "Encerrar", + "wizard_confirm": "Validar", + "wizard_modify": "Alterar", + "wizard_delete": "Eliminar", + "wizard_yes": "Sim", + "wizard_no": "Não", + "wizard_order": "Encomendar", + "wizard_pay": "Pagar", + "wizard_renew": "Renovar", + "wizard_next": "Seguinte", + "wizard_previous": "Anterior", + "wizard_breadcrumb": "Etapa {{ currentStep }} sur {{ stepCount }}", + "pagination_page": "Página {{ current }} / {{ last }}", + "pagination_go": "OK", + "pagination_display": "Mostrar", + "common_loading": "A carregar...", + "common_cancel": "Anular", + "common_confirm": "Confirmar", + "common_terminate": "Concluir", + "common_back": "Retroceder", + "common_next": "Seguinte", + "common_previous": "Anterior", + "common_activated": "Ativado", + "common_activate": "Ativar", + "common_desactivated": "Desativado", + "common_desactivate": "Desativar", + "common_TODO": "Mais informação em breve", + "common_not_configurated": "Não configurado", + "common_ipv4": "IPv4", + "common_ipv6": "IPv6", + "common_bitFormat": "bits", + "common_expired": "O serviço não foi renovado. Possíveis motivos: decisão sua ou atraso no pagamento.", + "common_settle_bill": "Regularizar", + "common_service_expired": "O serviço {{t0}} não foi renovado. Possíveis motivos: decisão sua ou atraso no pagamento.", + "common_reset_zoom": "Reiniciar o zoom", + "common_alerts_message_see_more": "Ver detalhes dos erros", + "common_alerts_message_see_less": "Ocultar detalhes dos erros", + "common_managerv5": "Manager V5", + "common_managerv3": "Manager V3", + "common_refresh": "Atualizar", + "common_change": "Alterar", + "common_download_format": "Transferência de ficheiro {{t0}}", + "common_skip_to_main_content": "Aceder ao conteúdo principal", + "common_shortcuts": "Atalho", + "common_links": "Links", + "common_add": "Adicionar", + "global_app_title": "O seu espaço cliente dedicado OVHcloud", + "global_language": "Idioma", + "global_logout": "Terminar sessão", + "global_changelog": "Histórico das atualizações", + "global_configuration": "Configuração", + "global_billing": "Faturação", + "global_renew": "Serviços", + "global_orders": "Encomendas", + "global_preference": "A minha conta", + "global_support": "Apoio ao Cliente", + "global_feedback": "Dê a sua opinião", + "global_feedback_appreciation": "A sua opinião é importante", + "global_feedback_appreciation_text": "Dê o seu feedback sobre a navegação
e usabilidade da nova Área de Cliente.", + "global_feedback_remark": "Tipo de comentário", + "global_feedback_type_simplecomment": "Comentário geral", + "global_feedback_type_design": "Design", + "global_feedback_type_ergo": "Usabilidade", + "global_feedback_type_bug": "Bug", + "global_feedback_more_details": "Introduza a sua mensagem abaixo", + "global_feedback_warning": "Atenção, este formulário está relacionado com o serviço de apoio técnico aos seus produtos.", + "global_feedback_contact": "Para qualquer questão de ordem comercial ou técnica, contacte os nossos serviços", + "global_feedback_contact_link": "ao clicar aqui", + "global_feedback_send": "Enviar", + "global_feedback_subject": "Assunto", + "global_feedback_subject_required": "Introduza um assunto", + "global_feedback_subject_maxlength": "O título não deverá exceder os 255 caracteres", + "global_profil": "Perfil", + "global_OK": "OK", + "global_KO": "KB", + "global_switch_mode": "Modo:", + "global_switch_simple_mode": "Modo simples", + "global_switch_expert_mode": "Modo expert", + "global_processing": "Processamento em curso ...", + "global_doing": "Em curso...", + "main_menu_products_and_config": "Configuração", + "main_menu_bill_and_renew": "Faturação", + "main_menu_help_and_support": "Ajuda", + "common_yes": "Sim", + "common_no": "Não", + "common_delete": "Eliminar", + "required": "Campos obrigatórios", + "required_fields": "Os campos com asterisco são de preenchimento obrigatório", + "select_placeholder": "Selecionar...", + "common_newtab": "novo separador", + "contract_next": "Seguinte", + "contract_previous": "Anterior", + "download_contract": "Abrir o contrato \"{{ name }}\" em PDF", + "contract_help": "Para poder validar, tem de ler os contratos até ao fim.", + "contracts_list_title": "Existem {{ count }} contratos por consultar.", + "contract_list_title": "Há 1 contrato para ler.", + "contracts_agree": "Aceito as condições contratatuais", + "contract_agree": "Aceito as condições contratatuais", + "day_1": "1 dia", + "day_other": "{} dias", + "month_1": "1 mês", + "month_other": "{{t0}} mês(es)", + "year_1": "1 ano", + "year_other": "{} anos", + "upto": "Até", + "uptofirstdaynextmonth": "Até ao primeiro dia do próximo mês", + "engage": "Contratar {{t0}}", + "price_ht_label": "{{ price }} HT", + "price_ttc_label": "{{ price }} TTC", + "price_free": "Incluído", + "price_label_yearly": "/ano", + "country_AC": "Ilha de Ascenção", + "country_AD": "Andorra", + "country_AE": "Emirates Árabes Unidos", + "country_AF": "Afeganistão", + "country_AG": "Antígua e Barbuda", + "country_AI": "Anguila", + "country_AL": "Albânia", + "country_AM": "Arménia", + "country_AO": "Angola", + "country_AQ": "Antártica", + "country_AR": "Argentina", + "country_AS": "Samoa Americana", + "country_AT": "Áustria", + "country_AU": "Austrália", + "country_AW": "Aruba", + "country_AX": "Åland, Ilhas", + "country_AZ": "Azerbaijão", + "country_BA": "Bósnia-Herzegovina", + "country_BB": "Barbados", + "country_BD": "Bangladeche", + "country_BE": "Bélgica", + "country_BF": "Burquina Faso", + "country_BG": "Bulgária", + "country_BH": "Bahrein", + "country_BI": "Burundi", + "country_BJ": "Benim", + "country_BL": "São Bartolomeu", + "country_BM": "Bermudas", + "country_BN": "Brunei", + "country_BO": "Bolívia", + "country_BQ": "Países Baixos Caribenhos", + "country_BR": "Brasil", + "country_BS": "Baamas", + "country_BT": "Butão", + "country_BW": "Botsuana", + "country_BY": "Bielorrússia", + "country_BZ": "Belize", + "country_CA": "Canadá", + "country_CC": "Cocos (Keeling)", + "country_CD": "República Democrática do Congo", + "country_CF": "República Centro-Africana", + "country_CG": "Congo", + "country_CH": "Suíça", + "country_CI": "Costa do Marfim", + "country_CK": "Cook, Ilhas", + "country_CL": "Chile", + "country_CM": "Camarões", + "country_CN": "China", + "country_CO": "Colômbia", + "country_CR": "Costa Rica", + "country_CU": "Cuba", + "country_CV": "Cabo Verde", + "country_CW": "Curaçao", + "country_CX": "Christmas, Ilha", + "country_CY": "Chipre", + "country_CZ": "República Checa", + "country_DE": "Alemanha", + "country_DG": "Diego Garcia", + "country_DJ": "Djibuti", + "country_DK": "Dinamarca", + "country_DM": "Dominicana", + "country_DO": "República dominicana", + "country_DZ": "Argélia", + "country_EA": "Ceuta, Melilla", + "country_EC": "Equador", + "country_EE": "Estónia", + "country_EG": "Egipto", + "country_EH": "Saara Ocidental", + "country_ER": "Eritreia", + "country_ES": "Espanha", + "country_ET": "Etiópia", + "country_FI": "Finlândia", + "country_FJ": "Fiji", + "country_FK": "Malvinas, Ilhas", + "country_FM": "Micronésia, Estados Federados da", + "country_FO": "Feroe, Ilhas", + "country_FR": "França", + "country_GA": "Gabão", + "country_GB": "Reino Unido", + "country_GD": "Granada", + "country_GE": "Geórgia", + "country_GF": "Guiana Francesa", + "country_GG": "Guernsey", + "country_GH": "Gana", + "country_GI": "Gibraltar", + "country_GL": "Gronelândia", + "country_GM": "Gâmbia", + "country_GN": "Guiné", + "country_GP": "Guadalupe", + "country_GQ": "Guine Equatorial", + "country_GR": "Grécia", + "country_GS": "Geórgia do Sul e Sandwich do Sul, Ilhas", + "country_GT": "Guatemala", + "country_GU": "Guam", + "country_GW": "Guiné-Bissau", + "country_GY": "Guiana", + "country_HK": "Hong-Kong", + "country_HN": "Honduras", + "country_HR": "Croácia", + "country_HT": "Haiti", + "country_HU": "Hungria", + "country_IC": "Ilhas Canárias", + "country_ID": "Indonésia", + "country_IE": "Irlanda ", + "country_IL": "Israel", + "country_IM": "Ilha de Man", + "country_IN": "Índia", + "country_IO": "Oceano Indico, Território Britânico do", + "country_IQ": "Iraque", + "country_IR": "Irão, República Islâmica do", + "country_IS": "Islândia", + "country_IT": "Itália", + "country_JE": "Jersey", + "country_JM": "Jamaica", + "country_JO": "Jordânia", + "country_JP": "Japão", + "country_KE": "Quénia", + "country_KG": "Quirguistão", + "country_KH": "Camboja", + "country_KI": "Kiribati", + "country_KM": "Comores", + "country_KN": "São Cristóvão e Nevis", + "country_KP": "Coreia, República Popular Democrática Da", + "country_KR": "Coreia, República da", + "country_KW": "Kuwait", + "country_KY": "Caimão, Ilhas", + "country_KZ": "Cazaquistão", + "country_LA": "Laos, República Democrática Popular", + "country_LB": "Líbano", + "country_LC": "Santa Lúcia", + "country_LI": "Liechtenstein", + "country_LK": "Sri Lanka", + "country_LR": "Libéria", + "country_LS": "Lesoto", + "country_LT": "Lituânia", + "country_LU": "Luxemburgo", + "country_LV": "Letónia", + "country_LY": "Líbia", + "country_MA": "Marroccos", + "country_MC": "Mónaco", + "country_MD": "Moldávia", + "country_ME": "Montenegro", + "country_MF": "Ilha de São Martinho", + "country_MG": "Madagáscar", + "country_MH": "Ilhas Marshall", + "country_MK": "Macedónia", + "country_ML": "Mali", + "country_MM": "Birmânia", + "country_MN": "Mongólia", + "country_MO": "Macau", + "country_MP": "Marianas Setentrionais", + "country_MQ": "Martinica", + "country_MR": "Mauritânia", + "country_MS": "Montserrat", + "country_MT": "Malta ", + "country_MU": "Républica da Maurícia", + "country_MV": "Maldivas", + "country_MW": "Malauí", + "country_MX": "México", + "country_MY": "Malásia", + "country_MZ": "Moçambique", + "country_NA": "Namíbia", + "country_NC": "Nova Caledónia", + "country_NE": "Níger", + "country_NF": "Ilha Norfolk", + "country_NG": "Nigéria", + "country_NI": "Nicarágua", + "country_NL": "Holanda", + "country_NO": "Noruega", + "country_NP": "Nepal", + "country_NR": "Nauru", + "country_NU": "Niue", + "country_NZ": "Nova Zelândia", + "country_OM": "Omã", + "country_PA": "Panamá", + "country_PE": "Peru", + "country_PF": "Polinésia Francesa", + "country_PG": "Papua-Nova Guiné", + "country_PH": "Filipinas", + "country_PK": "Paquistão", + "country_PL": "Polónia", + "country_PM": "Saint-Pierre e Miquelon", + "country_PN": "Ilhas Pitcairn", + "country_PR": "Porto Rico", + "country_PS": "Palestina, Território da", + "country_PT": "Portugal", + "country_PW": "Palau", + "country_PY": "Paraguai", + "country_QA": "Catar", + "country_QC": "Quebeque", + "country_RE": "Ilha da Reunião", + "country_RO": "Roménia", + "country_RS": "República da Servia (Antiga Sérvia e Montenegro código cs)", + "country_RU": "Rússia", + "country_RW": "Ruanda", + "country_SA": "Arábia Saudita", + "country_SB": "Ilhas Salomão", + "country_SC": "Seicheles", + "country_SD": "Sudão", + "country_SE": "Suécia", + "country_SG": "Singapura", + "country_SH": "Santa Helena", + "country_SI": "Eslovénia", + "country_SJ": "Svalbard e Jan Mayen", + "country_SK": "Eslováquia", + "country_SL": "Serra Leoa", + "country_SM": "São Marino", + "country_SN": "Senegal", + "country_SO": "Somália", + "country_SR": "Suriname", + "country_SS": "Sudão do Sul", + "country_ST": "São Tomé e Príncipe", + "country_SV": "El Salvador", + "country_SX": "Saint-Martin (Reino Unido dos países baixos)", + "country_SY": "Síria", + "country_SZ": "Suazilândia", + "country_TA": "Tristão da Cunha", + "country_TC": "Turks e Caicos, Ilhas", + "country_TD": "Chade", + "country_TF": "Terras Austrais e Antárticas Francesas", + "country_TG": "Togo", + "country_TH": "Tailândia", + "country_TJ": "Tajiquistão", + "country_TK": "Tokelau", + "country_TL": "Timor-Leste", + "country_TM": "Turquemenistão", + "country_TN": "Tunísia", + "country_TO": "Tonga", + "country_TR": "Turquia", + "country_TT": "Trinidad e Tobago", + "country_TV": "Tuvalu", + "country_TW": "Taiwan", + "country_TZ": "República Unida da Tanzânia", + "country_UA": "Ucrânia", + "country_UG": "Uganda", + "country_UK": "Reino Unido", + "country_UM": "Ilhas Menores Distantes dos Estados Unidos", + "country_US": "Estados Unidos", + "country_UY": "Uruguai", + "country_UZ": "Uzbequistão", + "country_VA": "Vaticano", + "country_VC": "São Vicente e Granadinas", + "country_VE": "Venezuela", + "country_VG": "Ilhas Virgens Britânicas", + "country_VI": "Ilhas Virgens Americanas", + "country_VN": "Vietname", + "country_VU": "Vanuatu", + "country_WF": "Wallis e Futuna", + "country_WS": "Samoa", + "country_XK": "Kosovo", + "country_YE": "Iémen", + "country_YT": "Mayotte", + "country_ZA": "África do Sul", + "country_ZM": "Zâmbia", + "country_ZW": "Zimbabwe", + "navigation_more": "Mais +", + "wizard_help": "Ajuda", + "old_manager_alert": "Durante algumas semana poderá administrar os seus serviços através da interface de cliente antiga.", + "refresh": "Atualizar", + "core_new_window": "Nova janela", + "core_new_tab": "Abrir uma nova janela", + "core_change_owner": "Alterar titular", + "contacts_management": "Gerir os contactos", + "customized": "Personalizado", + "core_top_guides_header": "Para mais informação, consulte os nossos guias.", + "core_top_guides_header_fr": "Se precisar de ajuda ou de mais informações sobre os seus serviços, aceda à seguinte página:", + "core_type_of_guide_vps": "Servidores privados virtuais", + "core_all_guides": "Guias de utilizador OVH", + "core_vps_top_guide_1_title": "Criação das chaves SSH", + "core_vps_top_guide_2_title": "Migração de uma VPS 2014 para a oferta 2016", + "core_vps_top_guide_3_title": "Utilização do docker-machine baseado nas instâncias Public Cloud", + "core_vps_top_guide_4_title": "Criar um acesso ao Horizon", + "core_vps_top_guide_5_title": "Dar os primeiros passos com a API Swift", + "core_vps_top_guide_6_title": "Preparar o ambiente para utilizar a API OpenStack", + "core_vps_top_guide_7_title": "Sincronizar uma NAS Synology com o Object Storatge com a ajuda do DiskStation Manager 6.0", + "core_vps_top_guide_8_title": "Cloud - Na interface de cliente OVH", + "core_vps_top_guide_9_title": "Criar uma instância na Área de Cliente OVH", + "core_type_of_guide_sd": "Servidores Dedicados", + "core_sd_top_guide_1_title": "Primeiros passos com um servidor dedicado", + "core_sd_top_guide_2_title": "Primeiros passos com um servidor dedicado Kimsufi, So You Start ou Rise", + "core_sd_top_guide_3_title": "Proteger um servidor dedicado", + "core_sd_top_guide_4_title": "Criar uma chave SSH", + "core_sd_top_guide_5_title": "Utilização do IPMI para servidores dedicados", + "core_sd_top_guide_6_title": "Migrar os dados de um servidor dedicado para outro", + "core_sd_top_guide_7_title": "Configurar uma nova instalação do Windows Server", + "core_sd_top_guide_firewall_title": "Configurar a \"Firewall Network\"", + "core_type_of_guide_pcc": "Hosted Private Cloud", + "core_pcc_top_guide_1_title": "Aceder ao vSphere", + "core_pcc_top_guide_2_title": "Criar a primeira máquina virtual", + "core_pcc_top_guide_3_title": "Configurar endereço IP numa máquina virtual", + "core_pcc_top_guide_4_title": "Modificar a configuração de uma máquina virtual", + "core_pcc_top_guide_5_title": "Ligação via SFTP", + "core_pcc_top_guide_6_title": "Documentação oficial da VMware", + "core_pcc_top_guide_7_title": "Eliminação de um host", + "core_pcc_top_guide_8_title": "Compreender as licenças SPLA Windows", + "core_pcc_top_guide_9_title": "Primeiros passos com o NSX", + "core_pcc_top_guide_10_title": "Documentação oficial do NSX", + "sso_modal_title": "OVH - Autenticação", + "sso_modal_loading": "A carregar...", + "sso_modal_user_title": "Estava ligado como:", + "sso_modal_currentuser_title": "Está ligado como:", + "sso_modal_disconnected": "Sessão desligada.", + "sso_modal_what": "O que pretende fazer?", + "sso_modal_action_reload": "Continuar como {{name}}", + "sso_modal_action_logout": "Aceder à página de autenticação", + "me_alerts_PAYMENTMEAN_DEFAULT_MISSING": "Não predefiniu qualquer método de pagamento. Aceda à secção Faturação para selecionar ou adicionar um novo método de pagamento.", + "me_alerts_PAYMENTMEAN_DEFAULT_EXPIRED": "O seu método de pagamento predefinido expirou! Aceda à secção faturação para atualizar a informação.", + "me_alerts_PAYMENTMEAN_DEFAULT_EXPIRE_SOON": "O seu método de pagamento predefinido irá expirar dentro de 30 dias. Aceda à secção faturação para atualizar a informação.", + "me_alerts_PAYMENTMEAN_DEFAULT_BANKACCOUNT_PENDINGVALIDATION": "O seu método de pagamento predefinido (conta bancária) está a aguardar validação. Aceda à secção faturação para acompanhar o processo.", + "me_alerts_PAYMENTMEAN_DEFAULT_CREDITCARD_TOOMANYFAILURES": "O seu método de pagamento predefinido (cartão de crédito) encontra-se em erro! Aceda à secção faturação para verificar os dados ou registar um novo método de pagamento.", + "me_alerts_PAYMENTMEAN_DEFAULT_PAYPAL_TOOMANYFAILURES": "O seu método de pagamento predefinido (PayPal) encontra-se em erro! Aceda à secção de faturação para verificar os dados ou registar um novo método de pagamento.", + "me_alerts_PAYMENTMEAN_BANKACCOUNT_PENDINGVALIDATION": "Tem {{t0}} conta(s) bancária(s) a aguardar validação. Aceda à secção faturação para obter mais informações.", + "me_alerts_PAYMENTMEAN_CREDITCARD_TOOMANYFAILURES": "Tem {{t0}} cartão de crédito em erro. Aceda à secção faturação para verificar os dados ou registar um novo método de pagamento.", + "me_alerts_PAYMENTMEAN_PAYPAL_TOOMANYFAILURES": "Tem {{t0}} conta(s) PayPal em erro. Aceda à secção faturação para verificar os dados ou registar um novo método de pagamento.", + "me_alerts_OVHACCOUNT_DEBT": "Sua conta pré-paga é debitada de {{t0}} para {{t1}}. Vá para a seção de cobrança para regularizar a situação.", + "me_alerts_DEBTACCOUNT_DEBT_WITH_UNMATURED_AMOUNT": "Você tem uma dívida de {{t0}} (incluindo uma quantia de {{t1}} não vencida). Vá para a seção de cobrança para regularizar a situação.", + "me_alerts_DEBTACCOUNT_DEBT": "Você tem uma dívida de {{t0}} . Vá para a seção de faturamento para regularizar a situação.", + "me_alerts_OVHACCOUNT_ALERTTHRESHOLD": "A sua conta pré-paga atingiu o limite. Aceda à secção de faturação para obter mais informações.", + "me_alerts_ORDERS_DOCUMENTSREQUESTED": "Tem {{t0}} encomenda(s) pendentes a aguardar envio de documentação. Aceda à secção \"As minhas encomendas\" para resolver situação.", + "me_alerts_AGREEMENTS_TODO": "Tem {{t0}} contrato(s) para serem validados.", + "me_alerts_CONTACTCHANGE_VALIDATINGBYCUSTOMERS": "Tem {{t0}} pedido(s) de alteração de contacto.", + "me_alerts_AUTORENEW_INVITE": "Selecione agora a renovação automática dos seus serviços!", + "core_service_expiration_label": "Expiração", + "core_service_expiration": "Expira a", + "core_service_expiration_manual_renew": "A renovar em", + "core_service_expiration_auto_renew": "Renovação prevista para", + "core_service_renew_button": "Renovar", + "core_user_enterprise_retail_prices": "Nota: Os preços apresentados são preços de catálogo padrão e podem não refletir os termos negociados. Verifique sua fatura mensal para obter um detalhamento melhor dos preços.", + "core_user_enterprise_retail_prices_hpc": "Nota: Os preços apresentados são uma estimativa baseada no cálculo proporcional deste módulo para alinhar com o período de faturação do seu contrato atual. Verifique sua fatura mensal para obter um detalhamento melhor dos preços.", + "core_user_trusted_retail_prices": "Nota: o preço indicado corresponde ao preço do serviço. O custo adicional relativo ao Trusted Zone é adicionado à faturação mensal global.", + "browser_alert_not_supported": "O seu browser não é compatível", + "browser_alert_deprecated": "O seu browser não está atualizado e pode ter falhas de segurança ou problemas de compatibilidade.", + "browser_alert_update": "Para melhorar a experiência de navegação, recomendamos que atualize o seu browser .", + "browser_alert_close": "Fechar este alerta", + "ovh_task_follow_button": "Informação sobre o incidente (falha técnica)", + "ovh_task_follow_modal_title": "Acompanhe a resolução do incidente", + "ovh_task_follow_modal_comment": "Última atualização: {{t 0 }}", + "otrs_menu_assistance": "Assistência", + "otrs_menu_assistance_expanded": "Ajuda", + "otrs_menu_all_guides": "Manuais OVH", + "otrs_menu_help_center": "Centro de ajuda", + "otrs_menu_new_ticket": "Criar um ticket", + "otrs_menu_list_ticket": "Lista de tickets", + "otrs_menu_ask_for_assistance": "Pedidos de assistência", + "otrs_menu_email_history": "Histórico dos e-mails", + "otrs_menu_telephony_contact": "Assistência telefónica", + "otrs_menu_changelog": "Histórico das atualizações", + "common_configuration_creation": "Data de criação", + "menu_action_label": "{{t0}} (Lista das ações)", + "server_tab_USB_STORAGE_order_select_duration": "Selecione a duração:", + "common_subscription_contacts": "Contactos", + "common_subscription_contacts_admin": "Administrador", + "common_subscription_contacts_billing": "Faturação", + "common_subscription_contacts_tech": "Técnico ", + "common_unavailable_information": "Informação indisponível", + "common_resiliate_contact_support": "Para cancelar este serviço, contacte o nosso apoio ao cliente através do +351 213 155 642. Obrigado pela sua compreensão.", + "core_pcc_top_guide_11_title": "Documentação oficial da Nutanix", + "core_pcc_top_guide_12_title": "Documentação oficial do SAP HANA on Private Cloud", + "core_pcc_top_guide_13_title": "Autorizar endereços IP a ligar-se ao vCenter", + "core_pcc_top_guide_14_title": "VMware on OVHcloud - VMware Cloud Diretor" +} diff --git a/packages/manager/modules/new-billing/src/components/directives/dateRange/billingDateRange.controller.js b/packages/manager/modules/new-billing/src/components/directives/dateRange/billingDateRange.controller.js new file mode 100644 index 000000000000..2be85531a1ca --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/directives/dateRange/billingDateRange.controller.js @@ -0,0 +1,129 @@ +import head from 'lodash/head'; +import set from 'lodash/set'; + +export default /* @ngInject */ function BillingDateRangeController( + $timeout, + $translate, + BillingdateRangeSelection, +) { + this.today = moment() + .endOf('day') + .toISOString(); + this.CUSTOM_RANGE_MODE = 'custom'; + this.model = {}; + this.dateRangeSelection = BillingdateRangeSelection; + + this.presets = [ + { + id: '3M', + label: $translate.instant('common_time_period_in_months', { + t0: 3, + }), + args: [3, 'months'], + startOf: 'month', + }, + { + id: '6M', + label: $translate.instant('common_time_period_in_months', { + t0: 6, + }), + args: [6, 'months'], + startOf: 'month', + }, + { + id: '1Y', + label: $translate.instant('common_time_period_one_year'), + args: [1, 'years'], + startOf: 'month', + }, + ]; + + this.onDateRangeChange = ([dateFrom, dateTo]) => { + set(BillingdateRangeSelection, 'dateFrom', moment(dateFrom).startOf('day')); + if ( + moment(BillingdateRangeSelection.dateFrom).isAfter( + BillingdateRangeSelection.dateTo, + ) + ) { + set( + BillingdateRangeSelection, + 'dateTo', + BillingdateRangeSelection.dateFrom.endOf('day'), + ); + } + + set(BillingdateRangeSelection, 'dateTo', moment(dateTo).endOf('day')); + if ( + moment(BillingdateRangeSelection.dateTo).isBefore( + BillingdateRangeSelection.dateFrom, + ) + ) { + set( + BillingdateRangeSelection, + 'dateFrom', + BillingdateRangeSelection.dateTo.startOf('day'), + ); + } + + this.triggerChangeHandler(); + this.updateCustomDateRange(); + }; + + this.updateCustomDateRange = () => { + this.customDateRangeModel = [ + moment(BillingdateRangeSelection.dateFrom).toISOString(), + moment(BillingdateRangeSelection.dateTo).toISOString(), + ]; + }; + + this.onPresetBtn = (preset) => { + set(BillingdateRangeSelection, 'mode', preset.id); + this.applyPreset(preset); + this.triggerChangeHandler(); + }; + + this.applyPreset = (preset) => { + set( + BillingdateRangeSelection, + 'dateFrom', + moment() + .subtract(...preset.args) + .startOf(preset.startOf), + ); + + set(BillingdateRangeSelection, 'dateTo', moment().endOf('day')); + + this.updateCustomDateRange(); + }; + + this.onCustomRangeBtn = () => { + set(BillingdateRangeSelection, 'mode', this.CUSTOM_RANGE_MODE); + }; + + this.triggerChangeHandler = () => { + if (angular.isFunction(this.onChange)) { + $timeout(() => { + this.onChange(BillingdateRangeSelection); + }); + } + }; + + /** + * Initialisation + */ + (function init(_self) { + if (BillingdateRangeSelection.mode === _self.CUSTOM_RANGE_MODE) { + return; + } + + let preset = _self.presets.find( + (_preset) => _preset.id === BillingdateRangeSelection.mode, + ); + if (!preset) { + preset = head(_self.presets); + set(BillingdateRangeSelection, 'mode', preset.id); + } + + _self.applyPreset(preset); + })(this); +} diff --git a/packages/manager/modules/new-billing/src/components/directives/dateRange/billingDateRange.directive.js b/packages/manager/modules/new-billing/src/components/directives/dateRange/billingDateRange.directive.js new file mode 100644 index 000000000000..5a25db835629 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/directives/dateRange/billingDateRange.directive.js @@ -0,0 +1,16 @@ +import controller from './billingDateRange.controller'; +import template from './billingDateRange.html'; + +export default /* @ngInject */ function billingDateRangeDirective() { + return { + restrict: 'A', + scope: { + onChange: '=?', + }, + bindToController: true, + controllerAs: '$ctrl', + controller, + replace: false, + template, + }; +} diff --git a/packages/manager/modules/new-billing/src/components/directives/dateRange/billingDateRange.html b/packages/manager/modules/new-billing/src/components/directives/dateRange/billingDateRange.html new file mode 100644 index 000000000000..43bdc86f7e23 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/directives/dateRange/billingDateRange.html @@ -0,0 +1,57 @@ +
+
+ + + +
+ +
+ + +
+ +
+ + + + + + +
+
diff --git a/packages/manager/modules/new-billing/src/components/directives/sortingFieldButton/billingSortingFieldButton.js b/packages/manager/modules/new-billing/src/components/directives/sortingFieldButton/billingSortingFieldButton.js new file mode 100644 index 000000000000..99f3eaa33a63 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/directives/sortingFieldButton/billingSortingFieldButton.js @@ -0,0 +1,33 @@ +import controller from './billingSortingFieldButtonCtrl'; + +export default /* @ngInject */ function billingSortingFieldButtonDirective() { + return { + restrict: 'A', + scope: { + label: '@', + associatedField: '@', + activeField: '=', + reverseOrder: '=', + onChange: '=?', + }, + bindToController: true, + controllerAs: '$ctrl', + controller, + replace: false, + template: ``, + }; +} diff --git a/packages/manager/modules/new-billing/src/components/directives/sortingFieldButton/billingSortingFieldButtonCtrl.js b/packages/manager/modules/new-billing/src/components/directives/sortingFieldButton/billingSortingFieldButtonCtrl.js new file mode 100644 index 000000000000..74ca5eb9f3ff --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/directives/sortingFieldButton/billingSortingFieldButtonCtrl.js @@ -0,0 +1,20 @@ +export default class billingSortingFieldButtonCtrl { + isActive() { + return this.associatedField === this.activeField; + } + + isAscending() { + return !this.reverseOrder; + } + + isDescending() { + return this.reverseOrder; + } + + onClick() { + const newOrder = this.isActive() ? !this.reverseOrder : this.reverseOrder; + if (angular.isFunction(this.onChange)) { + this.onChange(this.associatedField, newOrder); + } + } +} diff --git a/packages/manager/modules/new-billing/src/components/filters/renewFrequence.js b/packages/manager/modules/new-billing/src/components/filters/renewFrequence.js new file mode 100644 index 000000000000..6162d74a9ad3 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/filters/renewFrequence.js @@ -0,0 +1,25 @@ +export default /* @ngInject */ ($translate) => (period) => { + switch (period) { + case 1: + return $translate.instant('autorenew_service_renew_month'); + case 12: + return $translate.instant('autorenew_service_renew_year'); + default: + if (period > 12) { + if (period % 12 !== 0) { + throw new RangeError( + `renewFrequence: the period parameter (${period}) should represent a year in months, thus should be a multiple of 12`, + ); + } + + return $translate.instant( + 'autorenew_service_renew_years_frequency_value', + { t0: period / 12 }, + ); + } + + return $translate.instant('autorenew_service_renew_frequency_value', { + t0: period, + }); + } +}; diff --git a/packages/manager/modules/new-billing/src/components/renewDate/billing-renew-date.component.js b/packages/manager/modules/new-billing/src/components/renewDate/billing-renew-date.component.js new file mode 100644 index 000000000000..5dfb952fcfaa --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/renewDate/billing-renew-date.component.js @@ -0,0 +1,11 @@ +import controller from './billing-renew-date.controller'; +import template from './billing-renew-date.html'; + +export default { + name: 'billingRenewDate', + bindings: { + serviceInfos: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/components/renewDate/billing-renew-date.controller.js b/packages/manager/modules/new-billing/src/components/renewDate/billing-renew-date.controller.js new file mode 100644 index 000000000000..3ed0c20a0b77 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/renewDate/billing-renew-date.controller.js @@ -0,0 +1,16 @@ +export default class BillingRenewDateCtrl { + /* @ngInject */ + constructor(billingRenewHelper) { + this.billingRenewHelper = billingRenewHelper; + } + + $onInit() { + this.content = this.billingRenewHelper.getRenewDateFormated( + this.serviceInfos, + ); + } + + $onChanges() { + this.$onInit(); + } +} diff --git a/packages/manager/modules/new-billing/src/components/renewDate/billing-renew-date.html b/packages/manager/modules/new-billing/src/components/renewDate/billing-renew-date.html new file mode 100644 index 000000000000..0a2bd1d9bfd4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/renewDate/billing-renew-date.html @@ -0,0 +1 @@ + diff --git a/packages/manager/modules/new-billing/src/components/renewLabel/billing-renew-label.component.js b/packages/manager/modules/new-billing/src/components/renewLabel/billing-renew-label.component.js new file mode 100644 index 000000000000..d3a9cb642f76 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/renewLabel/billing-renew-label.component.js @@ -0,0 +1,11 @@ +import controller from './billing-renew-label.controller'; +import template from './billing-renew-label.html'; + +export default { + name: 'billingRenewLabel', + bindings: { + serviceInfos: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/components/renewLabel/billing-renew-label.controller.js b/packages/manager/modules/new-billing/src/components/renewLabel/billing-renew-label.controller.js new file mode 100644 index 000000000000..0fe5fc8af87a --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/renewLabel/billing-renew-label.controller.js @@ -0,0 +1,14 @@ +export default class BillingRenewLabelCtrl { + /* @ngInject */ + constructor(billingRenewHelper) { + this.billingRenewHelper = billingRenewHelper; + } + + $onInit() { + this.content = this.billingRenewHelper.getRenewLabel(this.serviceInfos); + } + + $onChanges() { + this.$onInit(); + } +} diff --git a/packages/manager/modules/new-billing/src/components/renewLabel/billing-renew-label.html b/packages/manager/modules/new-billing/src/components/renewLabel/billing-renew-label.html new file mode 100644 index 000000000000..0a2bd1d9bfd4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/renewLabel/billing-renew-label.html @@ -0,0 +1 @@ + diff --git a/packages/manager/modules/new-billing/src/components/stepper/components/button/navigation-button.component.js b/packages/manager/modules/new-billing/src/components/stepper/components/button/navigation-button.component.js new file mode 100644 index 000000000000..0f0fde2ceabc --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/components/button/navigation-button.component.js @@ -0,0 +1,24 @@ +import controller from './navigation-button.controller'; +import template from './navigation-button.html'; + +export default { + bindings: { + disabled: ' + + + + diff --git a/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_de_DE.json new file mode 100644 index 000000000000..101fa2b67989 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_de_DE.json @@ -0,0 +1,6 @@ +{ + "oui_stepper_v_navigation_button_cancel": "Abbrechen", + "oui_stepper_v_navigation_button_close": "Schließen", + "oui_stepper_v_navigation_button_next": "Weiter", + "oui_stepper_v_navigation_button_previous": "Zurück" +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_en_GB.json new file mode 100644 index 000000000000..8592419c25ee --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_en_GB.json @@ -0,0 +1,6 @@ +{ + "oui_stepper_v_navigation_button_cancel": "Cancel", + "oui_stepper_v_navigation_button_close": "Close", + "oui_stepper_v_navigation_button_next": "Next", + "oui_stepper_v_navigation_button_previous": "Back" +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_es_ES.json new file mode 100644 index 000000000000..269b8915633b --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_es_ES.json @@ -0,0 +1,6 @@ +{ + "oui_stepper_v_navigation_button_cancel": "Cancelar", + "oui_stepper_v_navigation_button_close": "Cerrar", + "oui_stepper_v_navigation_button_next": "Siguiente", + "oui_stepper_v_navigation_button_previous": "Anterior" +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..f6fbf1a7efeb --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_fr_CA.json @@ -0,0 +1,6 @@ +{ + "oui_stepper_v_navigation_button_cancel": "Annuler", + "oui_stepper_v_navigation_button_close": "Fermer", + "oui_stepper_v_navigation_button_next": "Suivant", + "oui_stepper_v_navigation_button_previous": "Précédent" +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..f6fbf1a7efeb --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_fr_FR.json @@ -0,0 +1,6 @@ +{ + "oui_stepper_v_navigation_button_cancel": "Annuler", + "oui_stepper_v_navigation_button_close": "Fermer", + "oui_stepper_v_navigation_button_next": "Suivant", + "oui_stepper_v_navigation_button_previous": "Précédent" +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_it_IT.json new file mode 100644 index 000000000000..6625fe11c0be --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_it_IT.json @@ -0,0 +1,6 @@ +{ + "oui_stepper_v_navigation_button_cancel": "Annulla", + "oui_stepper_v_navigation_button_close": "Chiudi", + "oui_stepper_v_navigation_button_next": "Continua", + "oui_stepper_v_navigation_button_previous": "Indietro" +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..c954a1e31bfc --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_pl_PL.json @@ -0,0 +1,6 @@ +{ + "oui_stepper_v_navigation_button_cancel": "Anuluj", + "oui_stepper_v_navigation_button_close": "Zamknij", + "oui_stepper_v_navigation_button_next": "Dalej", + "oui_stepper_v_navigation_button_previous": "Wstecz" +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..47f8abc0138f --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/components/button/translations/Messages_pt_PT.json @@ -0,0 +1,6 @@ +{ + "oui_stepper_v_navigation_button_cancel": "Cancelar", + "oui_stepper_v_navigation_button_close": "Fechar", + "oui_stepper_v_navigation_button_next": "Seguinte", + "oui_stepper_v_navigation_button_previous": "Anterior" +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/components/header/header.component.js b/packages/manager/modules/new-billing/src/components/stepper/components/header/header.component.js new file mode 100644 index 000000000000..572d5c691014 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/components/header/header.component.js @@ -0,0 +1,9 @@ +import template from './header.html'; + +export default { + bindings: { + steps: '<', + }, + name: 'ovhManagerComponentStepperHeader', + template, +}; diff --git a/packages/manager/modules/new-billing/src/components/stepper/components/header/header.html b/packages/manager/modules/new-billing/src/components/stepper/components/header/header.html new file mode 100644 index 000000000000..6acde37b3508 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/components/header/header.html @@ -0,0 +1,22 @@ +

+ +
+
    +
  1. + + + +
  2. +
+
diff --git a/packages/manager/modules/new-billing/src/components/stepper/components/header/index.js b/packages/manager/modules/new-billing/src/components/stepper/components/header/index.js new file mode 100644 index 000000000000..260df30148cb --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/components/header/index.js @@ -0,0 +1,10 @@ +import component from './header.component'; + +const moduleName = 'ovhManagerComponentStepperHeader'; + +angular + .module(moduleName, ['oui', 'pascalprecht.translate']) + .component(component.name, component) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_de_DE.json new file mode 100644 index 000000000000..fcb0416eef48 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_de_DE.json @@ -0,0 +1,3 @@ +{ + "ovhManagerComponentStepper_header": "Fortschrittsanzeige" +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_en_GB.json new file mode 100644 index 000000000000..de72385acb4e --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_en_GB.json @@ -0,0 +1,3 @@ +{ + "ovhManagerComponentStepper_header": "Progress indicator" +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_es_ES.json new file mode 100644 index 000000000000..3b510d3fb01f --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_es_ES.json @@ -0,0 +1,3 @@ +{ + "ovhManagerComponentStepper_header": "Barra de progreso" +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..5ec56cdebff2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_fr_CA.json @@ -0,0 +1,3 @@ +{ + "ovhManagerComponentStepper_header": "Indicateur de progression" +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..5ec56cdebff2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_fr_FR.json @@ -0,0 +1,3 @@ +{ + "ovhManagerComponentStepper_header": "Indicateur de progression" +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_it_IT.json new file mode 100644 index 000000000000..c1a43766f405 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_it_IT.json @@ -0,0 +1,3 @@ +{ + "ovhManagerComponentStepper_header": "Indicatore di avanzamento" +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..8fabb9183194 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_pl_PL.json @@ -0,0 +1,3 @@ +{ + "ovhManagerComponentStepper_header": "Wskaźnik postępu" +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..625eb99f5e82 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/components/header/translations/Messages_pt_PT.json @@ -0,0 +1,3 @@ +{ + "ovhManagerComponentStepper_header": "Indicador de progresso" +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/index.js b/packages/manager/modules/new-billing/src/components/stepper/index.js new file mode 100644 index 000000000000..c021d0b6dc65 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/index.js @@ -0,0 +1,14 @@ +import header from './components/header'; + +import component from './stepper.component'; +import navigationButton from './components/button/navigation-button.component'; + +const moduleName = 'ovhManagerComponentStepperModule'; + +angular + .module(moduleName, [header, 'oui', 'pascalprecht.translate', 'ui.router']) + .component(component.name, component) + .component(navigationButton.name, navigationButton) + .run(/* @ngTranslationsInject:json ./components/button/translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/components/stepper/step/step.constants.js b/packages/manager/modules/new-billing/src/components/stepper/step/step.constants.js new file mode 100644 index 000000000000..1ab586c487b9 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/step/step.constants.js @@ -0,0 +1,13 @@ +import NavigationStep from './step.navigation'; + +export const NAVIGATION = { + FIRST_STEP: new NavigationStep({ index: 0 }), + PREVIOUS_STEP: new NavigationStep({ relativeIndex: -1 }), + CURRENT_STEP: new NavigationStep({ relativeIndex: 0 }), + NEXT_STEP: new NavigationStep({ relativeIndex: 1 }), + LAST_STEP: new NavigationStep({ index: -1 }), +}; + +export default { + NAVIGATION, +}; diff --git a/packages/manager/modules/new-billing/src/components/stepper/step/step.header.js b/packages/manager/modules/new-billing/src/components/stepper/step/step.header.js new file mode 100644 index 000000000000..d9b522812bca --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/step/step.header.js @@ -0,0 +1,6 @@ +export default class { + constructor(displayValue, isVisible = true) { + this.displayValue = displayValue; + this.isVisible = isVisible; + } +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/step/step.js b/packages/manager/modules/new-billing/src/components/stepper/step/step.js new file mode 100644 index 000000000000..a032980eac2f --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/step/step.js @@ -0,0 +1,25 @@ +export default class { + /* @ngInject */ + constructor(name, state, header) { + this.name = name; + this.state = state; + this.header = header; + + this.setAsToBeDone(); + } + + setAsActive() { + this.isActive = true; + this.isComplete = false; + } + + setAsCompleted() { + this.isActive = false; + this.isComplete = true; + } + + setAsToBeDone() { + this.isActive = false; + this.isComplete = false; + } +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/step/step.navigation.js b/packages/manager/modules/new-billing/src/components/stepper/step/step.navigation.js new file mode 100644 index 000000000000..3566f92e8d4f --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/step/step.navigation.js @@ -0,0 +1,7 @@ +export default class { + constructor({ index, relativeIndex, name }) { + this.index = index; + this.relativeIndex = relativeIndex; + this.name = name; + } +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/stepper.component.js b/packages/manager/modules/new-billing/src/components/stepper/stepper.component.js new file mode 100644 index 000000000000..5b8fc2154aeb --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/stepper.component.js @@ -0,0 +1,12 @@ +import controller from './stepper.controller'; +import template from './stepper.html'; + +export default { + bindings: { + currentStep: ' step.header.isVisible), + }, + }; + + this.transitionManagement.setUpTransitions(this.setLoading.bind(this)); + + return this.currentStep + ? this.navigation.goToStep(this.currentStep) + : this.navigation.goToStep(NAVIGATION.FIRST_STEP); + } + + setLoading(isLoading) { + this.isLoadingBetweenSteps = isLoading; + } + + doesStepExist(step) { + return this.stepCollection.doesStepExist(step); + } + + getStep(step) { + return this.stepCollection.getStep(step); + } + + memorizeParameters(params) { + this.params = { ...this.params, ...params }; + } + + goToStep(step, params) { + this.memorizeParameters(params); + + return this.navigation.goToStep(step, this.params); + } + + close(transitionOptions) { + return this.navigation.close(transitionOptions); + } +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/stepper.html b/packages/manager/modules/new-billing/src/components/stepper/stepper.html new file mode 100644 index 000000000000..edd9a5003d08 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/stepper.html @@ -0,0 +1,13 @@ + + +
+ +
+ +
diff --git a/packages/manager/modules/new-billing/src/components/stepper/stepper.navigation.js b/packages/manager/modules/new-billing/src/components/stepper/stepper.navigation.js new file mode 100644 index 000000000000..3396c166cfe3 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/stepper.navigation.js @@ -0,0 +1,21 @@ +import StateManagement from './stepper.state-management'; + +export default class { + /* @ngInject */ + constructor($state, $stateRegistry, stepCollection) { + this.stateManagement = new StateManagement($state, $stateRegistry); + this.stepCollection = stepCollection; + this.stateManagement.registerStatesFromSteps(stepCollection.steps); + } + + goToStep({ name, index, relativeIndex }, parameters) { + const step = this.stepCollection.getStep({ name, index, relativeIndex }); + this.stepCollection.changeCurrentStep({ name, index, relativeIndex }); + + return this.stateManagement.goToState(step.state.name, parameters); + } + + close(transitionOptions) { + return this.stateManagement.close(transitionOptions); + } +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/stepper.state-management.js b/packages/manager/modules/new-billing/src/components/stepper/stepper.state-management.js new file mode 100644 index 000000000000..9a3670eb5b85 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/stepper.state-management.js @@ -0,0 +1,49 @@ +import forEach from 'lodash/forEach'; +import set from 'lodash/set'; + +export default class { + /* @ngInject */ + constructor($state, $stateRegistry) { + // Each step is a child of the stepper + // This is the root state of the stepper itself, + // parent of the state of the first step + this.$state = $state; + this.rootState = $state.$current; + this.$stateRegistry = $stateRegistry; + } + + registerStatesFromSteps(steps) { + let currentStateName = this.rootState.name; + + forEach(steps, (step) => { + currentStateName = `${currentStateName}.${step.name}`; + set(step, 'state.name', currentStateName); + + if (!this.$state.href(currentStateName)) { + this.registerState(step.state); + } + }); + } + + registerState(state) { + this.$stateRegistry.register({ + ...state, + component: undefined, + views: { + [`content@${this.rootState.name}`]: state.component, + }, + }); + } + + goToState(stateName, parameters) { + return this.$state.go(stateName, parameters); + } + + close(transitionOptions) { + return this.$state.go( + this.rootState.parent.parent.name, + {}, + transitionOptions, + ); + } +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/stepper.step-collection.js b/packages/manager/modules/new-billing/src/components/stepper/stepper.step-collection.js new file mode 100644 index 000000000000..13afee7e9bde --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/stepper.step-collection.js @@ -0,0 +1,89 @@ +import find from 'lodash/find'; +import forEach from 'lodash/forEach'; +import map from 'lodash/map'; +import set from 'lodash/set'; +import slice from 'lodash/slice'; + +export default class { + constructor(steps, indexOfCurrentStep = 0) { + this.steps = map(steps, (step, index) => { + set(step, 'index', index); + return step; + }); + + this.indexOfCurrentStep = indexOfCurrentStep; + } + + validateStepIndex(index) { + if (index < 0) { + throw new RangeError( + `Stepper: minimum allowed index is 0 (input was ${index})`, + ); + } + + if (index >= this.steps.length) { + throw new RangeError( + `Stepper: maximum allowed index is ${this.steps.length - + 1} (input was ${index})`, + ); + } + } + + doesStepExist({ name, index, relativeIndex }) { + try { + return this.getStep({ name, index, relativeIndex }) && true; + } catch (error) { + return false; + } + } + + getStep({ name, index, relativeIndex }) { + const matchingStep = + this.getStepByName(name) || + (Number.isFinite(index) && this.getStepByIndex(index)) || + (Number.isFinite(relativeIndex) && + this.getStepByRelativeIndex(relativeIndex)); + + if (matchingStep == null) { + throw new RangeError( + `Stepper: the step could not be found (input was { name: ${name}, index: ${index} })`, + ); + } + + return matchingStep; + } + + getStepByName(name) { + return find(this.steps, { name }); + } + + getStepByIndex(index) { + return this.validateStepIndex(index) || this.steps[index]; + } + + getStepByRelativeIndex(relativeIndex) { + const index = this.indexOfCurrentStep + relativeIndex; + return this.getStepByIndex(index); + } + + changeCurrentStep(step) { + const stepToSetAsCurrent = this.getStep(step); + stepToSetAsCurrent.setAsActive(); + this.indexOfCurrentStep = stepToSetAsCurrent.index; + this.setStepsBeforeCurrentStepAsCompleted(); + this.setStepsAfterCurrentStepAsToBeDone(); + } + + setStepsBeforeCurrentStepAsCompleted() { + forEach(slice(this.steps, 0, this.indexOfCurrentStep), (step) => + step.setAsCompleted(), + ); + } + + setStepsAfterCurrentStepAsToBeDone() { + forEach( + slice(this.steps, this.indexOfCurrentStep + 1, this.steps.length), + (step) => step.setAsToBeDone(), + ); + } +} diff --git a/packages/manager/modules/new-billing/src/components/stepper/stepper.transition-management.js b/packages/manager/modules/new-billing/src/components/stepper/stepper.transition-management.js new file mode 100644 index 000000000000..99137036c732 --- /dev/null +++ b/packages/manager/modules/new-billing/src/components/stepper/stepper.transition-management.js @@ -0,0 +1,47 @@ +import forEach from 'lodash/forEach'; + +export default class { + /* @ngInject */ + constructor($state, $transitions) { + this.$state = $state; + this.$transitions = $transitions; + + this.transitionUnregistrationHooks = []; + } + + setUpTransitions(isLoadingCallback) { + this.setUpTransitionsBetweenSteps(isLoadingCallback); + this.setUpCloseTransition(); + } + + setUpTransitionsBetweenSteps(isLoadingCallback) { + const transitionBetweenStepsCriteria = { + from: `${this.$state.$current.name}.**`, + to: `${this.$state.$current.name}.**`, + }; + + this.transitionUnregistrationHooks = [ + ...this.transitionUnregistrationHooks, + this.$transitions.onStart(transitionBetweenStepsCriteria, () => { + isLoadingCallback(true); + }), + this.$transitions.onSuccess(transitionBetweenStepsCriteria, () => { + isLoadingCallback(false); + }), + ]; + } + + setUpCloseTransition() { + const closeTransitionCriteria = { + to: this.$state.$current.parent.name, + }; + + this.transitionUnregistrationHooks.push( + // on closing the stepper state... + this.$transitions.onStart(closeTransitionCriteria, () => { + // ... unregister all the transitions + forEach(this.transitionUnregistrationHooks, (hook) => hook()); + }), + ); + } +} diff --git a/packages/manager/modules/new-billing/src/confirmTerminate/legacy/termination-legacy.constants.js b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/termination-legacy.constants.js new file mode 100644 index 000000000000..60c00b3a83e8 --- /dev/null +++ b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/termination-legacy.constants.js @@ -0,0 +1,7 @@ +export const SUB_TYPE_PROPERTIES = { + dedicatedCloud: 'productReference', +}; + +export default { + SUB_TYPE_PROPERTIES, +}; diff --git a/packages/manager/modules/new-billing/src/confirmTerminate/legacy/termination-legacy.controller.js b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/termination-legacy.controller.js new file mode 100644 index 000000000000..112c42ce15ff --- /dev/null +++ b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/termination-legacy.controller.js @@ -0,0 +1,113 @@ +import get from 'lodash/get'; + +import { SUB_TYPE_PROPERTIES } from './termination-legacy.constants'; + +export default class TerminateServiceCtrl { + /* @ngInject */ + constructor($q, $stateParams, coreConfig, BillingTerminateLegacy) { + this.$q = $q; + this.$stateParams = $stateParams; + this.coreConfig = coreConfig; + this.BillingTerminate = BillingTerminateLegacy; + } + + $onInit() { + this.reasons = [ + 'LACK_OF_PERFORMANCES', + 'TOO_EXPENSIVE', + 'TOO_HARD_TO_USE', + 'NOT_RELIABLE', + 'NOT_NEEDED_ANYMORE', + 'MIGRATED_TO_COMPETITOR', + 'MIGRATED_TO_ANOTHER_OVH_PRODUCT', + 'FEATURES_DONT_SUIT_ME', + 'UNSATIFIED_BY_CUSTOMER_SUPPORT', + 'NO_ANSWER', + 'OTHER', + ]; + this.futureUses = [ + 'SUBSCRIBE_AN_OTHER_SERVICE', + 'SUBSCRIBE_SIMILAR_SERVICE_WITH_COMPETITOR', + 'SUBSCRIBE_OTHER_KIND_OF_SERVICE_WITH_COMPETITOR', + 'NOT_REPLACING_SERVICE', + 'NO_ANSWER', + 'OTHER', + ]; + + this.serviceId = this.$stateParams.id; + this.serviceState = null; + this.token = this.$stateParams.token; + this.loading = true; + this.terminating = false; + this.error = false; + this.globalError = null; + + if (!this.token || !this.serviceId) { + this.globalError = true; + return; + } + + const { ovhSubsidiary } = this.coreConfig.getUser(); + this.USVersion = ovhSubsidiary === 'US'; + + this.loadService().catch(() => { + this.globalError = true; + }); + } + + loadService() { + return this.BillingTerminate.getServiceInfo(this.serviceId) + .then((serviceInfos) => { + this.serviceInfos = serviceInfos; + return this.BillingTerminate.getServiceApi(serviceInfos.serviceId).then( + (service) => { + this.serviceState = get(service, 'resource.state'); + }, + ); + }) + .then(() => { + const subTypeProperty = get( + SUB_TYPE_PROPERTIES, + this.serviceInfos.serviceType, + ); + this.serviceType = this.serviceInfos.serviceType; + if (subTypeProperty) { + return this.BillingTerminate.getServiceDetails( + this.serviceInfos.serviceId, + ).then((serviceDetails) => { + this.serviceType = get( + serviceDetails, + subTypeProperty, + this.serviceInfos.serviceType, + ); + }); + } + return this.$q.when(); + }) + .finally(() => { + this.loading = false; + }); + } + + confirmTermination() { + this.terminating = true; + this.BillingTerminate.confirmTermination( + this.serviceId, + this.serviceInfos.domain, + this.futureUse, + this.reason, + this.commentary, + this.token, + ) + .then(() => { + this.error = false; + this.serviceState = 'suspending'; + }) + .catch(() => { + this.error = true; + }) + .finally(() => { + this.terminating = false; + }); + } +} diff --git a/packages/manager/modules/new-billing/src/confirmTerminate/legacy/termination-legacy.html b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/termination-legacy.html new file mode 100644 index 000000000000..109594e7f78f --- /dev/null +++ b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/termination-legacy.html @@ -0,0 +1,216 @@ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +

+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + +
+
+ +
+

+ +
+ + +
+ +

+ +
+ + +
+ +
+ +
+
+ +
+
+
+ +
+ +
+
+
+
+
diff --git a/packages/manager/modules/new-billing/src/confirmTerminate/legacy/termination-legacy.service.js b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/termination-legacy.service.js new file mode 100644 index 000000000000..3d43642dfac7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/termination-legacy.service.js @@ -0,0 +1,81 @@ +export default /* @ngInject */ function BillingTerminate($q, OvhHttp) { + this.getServiceTypeFromPrefix = function getServiceTypeFromPrefix( + serviceApiPrefix, + ) { + return serviceApiPrefix + .replace(/^\//, '') + .replace(/\/\{.+$/, '') + .replace(/\//g, '_'); + }; + + this.getServiceApi = function getServiceApi(serviceId, forceRefresh) { + const params = { + rootPath: 'apiv6', + cache: 'billingTerminateService', + }; + if (forceRefresh) { + delete params.cache; + } + return OvhHttp.get(`/services/${serviceId}`, params); + }; + + this.getServiceInfo = function getServiceInfo(serviceId) { + let serviceType; + return this.getServiceApi(serviceId) + .then((serviceApi) => { + serviceType = this.getServiceTypeFromPrefix(serviceApi.route.path); + return serviceApi.route.url.replace( + serviceApi.resource.name, + window.encodeURIComponent(serviceApi.resource.name), + ); + }) + .then((url) => + OvhHttp.get(`${url}/serviceInfos`, { + rootPath: 'apiv6', + }), + ) + .then((serviceInfos) => ({ ...serviceInfos, serviceType })); + }; + + this.getServiceDetails = function getServiceDetails(serviceId) { + return this.getServiceApi(serviceId) + .then((serviceApi) => { + return serviceApi.route.url.replace( + serviceApi.resource.name, + window.encodeURIComponent(serviceApi.resource.name), + ); + }) + .then((url) => + OvhHttp.get(`${url}`, { + rootPath: 'apiv6', + }), + ); + }; + + this.confirmTermination = function confirmTermination( + serviceId, + serviceName, + futureUse, + reason, + commentary, + token, + ) { + return this.getServiceApi(serviceId) + .then((serviceApi) => + serviceApi.route.url.replace( + serviceApi.resource.name, + window.encodeURIComponent(serviceApi.resource.name), + ), + ) + .then((url) => + OvhHttp.post(`${url}/confirmTermination`, { + rootPath: 'apiv6', + data: { + reason, + commentary, + token, + }, + }), + ); + }; +} diff --git a/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_de_DE.json new file mode 100644 index 000000000000..073b237e9bad --- /dev/null +++ b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_de_DE.json @@ -0,0 +1,90 @@ +{ + "terminate_service_legacy_title": "Kündigungsformular", + "terminate_service_legacy_information_title": "Kündigung Ihrer Dienstleistung", + "terminate_service_legacy_information_text": "Sobald Sie bestätigen, wird Ihre Dienstleistung gekündigt. Dies führt zum automatischen, sofortigen und unumkehrbaren Löschen aller Daten, die mit dieser Dienstleistung in Verbindung stehen (einschließlich ihrer Backups). Bevor Sie nun die Kündigung bestätigen, obliegt es Ihnen, alle notwendigen Maßnahmen zur Sicherung Ihrer Daten zu treffen. OVHcloud lehnt jede Verantwortung dafür ab.", + "terminate_service_legacy_information_text_non_US": "Die Dienstleistung wird am Ende des Verlängerungszeitraums gekündigt. Bitte beachten Sie, dass, nachdem Sie die Kündigung bestätigen, alle Daten, die mit diesem Dienst in Verbindung stehen, und alle Backups unwiderruflich gelöscht werden. Es obliegt Ihnen, alle notwendigen Maßnahmen zur Sicherung Ihrer Daten zu treffen, bevor Sie die Kündigung Ihrer Dienstleistung bestätigen. Wenn Sie diesen Vorgang begonnen haben, können Sie ihn nicht anhalten. OVHcloud lehnt in diesem Fall jede Verantwortung für Datenverlust ab.", + "terminate_service_legacy_services_title": "Von der Kündigung betroffene Dienstleistungen", + "terminate_service_legacy_services_service": "Dienst", + "terminate_service_legacy_services_name": "Name", + "terminate_service_legacy_services_renew": "Verlängerung", + "terminate_service_legacy_services_frequency": "Intervall", + "terminate_service_legacy_reason_title": "Grund der Kündigung", + "terminate_service_legacy_reason_LACK_OF_PERFORMANCES": "Systemperformance des Dienstes ist ungenügend", + "terminate_service_legacy_reason_NOT_NEEDED_ANYMORE": "Ich nutze den Dienst nicht mehr", + "terminate_service_legacy_reason_MIGRATED_TO_ANOTHER_OVH_PRODUCT": "Ich verwende einen anderen OVHcloud Dienst", + "terminate_service_legacy_reason_MIGRATED_TO_COMPETITOR": "Ich nutze den Dienst eines anderen Anbieters", + "terminate_service_legacy_reason_NOT_RELIABLE": "Der Dienst ist nicht zuverlässig genug", + "terminate_service_legacy_reason_OTHER": "Andere...", + "terminate_service_legacy_reason_TOO_EXPENSIVE": "Der Dienst ist zu teuer", + "terminate_service_legacy_reason_TOO_HARD_TO_USE": "Die Verwaltungswerkzeuge (Kundencenter, Abrechnung) sind zu komplex", + "terminate_service_legacy_reason_FEATURES_DONT_SUIT_ME": "Die Funktionen des Dienstes sind nicht für meinen Einsatzzweck geeignet", + "terminate_service_legacy_reason_UNSATIFIED_BY_CUSTOMER_SUPPORT": "Ich bin mit dem Kundendienst nicht zufrieden", + "terminate_service_legacy_reason_NO_ANSWER": "Keine Angabe", + "terminate_service_legacy_futureUses_NO_ANSWER": "Keine Angabe", + "terminate_service_legacy_reason_text": "Möchten Sie detailliertere Angaben machen oder haben Sie Anregungen oder Vorschläge für uns?", + "terminate_service_legacy_error": "Beim Laden der Seite ist ein Fehler aufgetreten.", + "terminate_service_legacy_confirmation_error": "Bei der Bestätigung der Kündigung Ihrer Dienstleistung ist ein Fehler aufgetreten.", + "terminate_service_legacy_confirmation_success": "Sie haben Ihre Dienstleistungen gekündigt. Sie erhalten in den nächsten Minuten eine Bestätigung per E-Mail. Für weitere Fragen und Informationen steht Ihnen unser Team gerne zur Verfügung.", + "terminate_service_legacy_next-steps_title": "Nächster Schritt", + "terminate_service_legacy_futureUses_NOT_REPLACING_SERVICE": "Ich möchte meinen Dienst nicht ersetzen.", + "terminate_service_legacy_futureUses_OTHER": "Andere...", + "terminate_service_legacy_futureUses_SUBSCRIBE_AN_OTHER_SERVICE": "Ich möchte einen anderen OVHcloud Dienst abonnieren.", + "terminate_service_legacy_futureUses_SUBSCRIBE_OTHER_KIND_OF_SERVICE_WITH_COMPETITOR": "Ich möchte einen anderen Dienst bei einem anderen Anbieter abonnieren", + "terminate_service_legacy_futureUses_SUBSCRIBE_SIMILAR_SERVICE_WITH_COMPETITOR": "Ich möchte einen ähnlichen Dienst bei einem anderen Anbieter abonnieren", + "terminate_service_legacy_confirm": "Hiermit bestätige ich die Kündigung", + "terminate_service_legacy_type_allDom": "AllDom-Paket", + "terminate_service_legacy_type_caas_containers": "CaaS Container", + "terminate_service_legacy_type_caas_registry": "CaaS Registry", + "terminate_service_legacy_type_cdn_dedicated": "Dedicated CDN", + "terminate_service_legacy_type_cloud": "Cloud", + "terminate_service_legacy_type_cloud_project": "Cloud Projekt", + "terminate_service_legacy_type_dbaas_logs": "DBaaS Timeseries", + "terminate_service_legacy_type_dbaas_queue": "DBaaS Queue", + "terminate_service_legacy_type_EPCC": "Hosted Private Cloud", + "terminate_service_legacy_type_dedicated_ceph": "Ceph as a Service", + "terminate_service_legacy_type_dedicated_housing": "Server-Housing", + "terminate_service_legacy_type_dedicated_nas": "Dedicated NAS", + "terminate_service_legacy_type_dedicated_nasha": "Dedicated HA-NAS", + "terminate_service_legacy_type_dedicated_server": "Dedicated Server", + "terminate_service_legacy_type_deskaas": "DeskAaS", + "terminate_service_legacy_type_domain": "Domain", + "terminate_service_legacy_type_domain_zone": "Domainzone", + "terminate_service_legacy_type_email_domain": "MX Plan", + "terminate_service_legacy_type_email_exchange": "Exchange", + "terminate_service_legacy_type_email_pro": "E-Mail Pro", + "terminate_service_legacy_type_freefax": "Free Fax", + "terminate_service_legacy_type_hosting_privateDatabase": "SQL Private Datenbankhosting", + "terminate_service_legacy_type_hosting_reseller": "Multisite Hosting", + "terminate_service_legacy_type_hosting_web": "Webhosting", + "terminate_service_legacy_type_ip_service": "IP", + "terminate_service_legacy_type_ipLoadbalancing": "Loadbalancing", + "terminate_service_legacy_type_ip_loadBalancing": "IP Loadbalancer", + "terminate_service_legacy_type_license_cloudLinux": "CloudLinux-Lizenz", + "terminate_service_legacy_type_license_office": "Office-365-Lizenz", + "terminate_service_legacy_type_license_plesk": "Plesk-Lizenz", + "terminate_service_legacy_type_license_cpanel": "CPanel Lizenz ", + "terminate_service_legacy_type_license_windows": "Windows-Lizenz", + "terminate_service_legacy_type_metrics": "Metrics", + "terminate_service_legacy_type_msServices_sharepoint": "SharePoint", + "terminate_service_legacy_type_overTheBox": "OverTheBox", + "terminate_service_legacy_type_paas_database": "PaaS Database", + "terminate_service_legacy_type_paas_monitoring": "PaaS Monitoring", + "terminate_service_legacy_type_pack_xdsl": "xDSL-Paket", + "terminate_service_legacy_type_router": "Router", + "terminate_service_legacy_type_saas_csp2": "Office 365 Reseller", + "terminate_service_legacy_type_sms": "SMS", + "terminate_service_legacy_type_sms_virtualNumbers": "virtuelle SMS Nummer", + "terminate_service_legacy_type_sslGateway": "SSL Gateway", + "terminate_service_legacy_type_stack_mis": "MIS", + "terminate_service_legacy_type_telephony": "Telefonie", + "terminate_service_legacy_type_telephony_aliases": "Telefonie", + "terminate_service_legacy_type_telephony_lines": "Telefonie", + "terminate_service_legacy_type_telephony_trunks": "Telefonie", + "terminate_service_legacy_type_veeamCloudConnect": "Veeam Cloud Connect", + "terminate_service_legacy_type_vps": "Virtual Private Server", + "terminate_service_legacy_type_xdsl": "xDSL-Leitung", + "terminate_service_legacy_type_kube": "Kubernetes", + "terminate_service_legacy_type_webcoach": "WebCoach", + "terminate_service_legacy_comments": "Kommentare", + "terminate_service_legacy_type_MBM": "Managed Bare Metal" +} diff --git a/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_en_GB.json new file mode 100644 index 000000000000..74756a81df32 --- /dev/null +++ b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_en_GB.json @@ -0,0 +1,90 @@ +{ + "terminate_service_legacy_title": "Cancellation form", + "terminate_service_legacy_information_title": "Cancel your service", + "terminate_service_legacy_information_text": "The service will be cancelled once you confirm. This will result in all of the data associated with the service (including backups) being cancelled automatically and immediately. This action cannot be undone. Before you confirm your cancellation, you will need to take the necessary measures to conserve your data. OVH does not accept any responsibility in this regard.", + "terminate_service_legacy_information_text_non_US": "The service will be cancelled at the end of the renewal period. Once you confirm the cancellation, please note that any data linked to this service and any backups will be permanently deleted. You will need to take the necessary measures to conserve your data before you confirm your cancellation. Once the process has been launched, it cannot be cancelled. OVH does not accept any responsibility for data loss in this scenario.", + "terminate_service_legacy_services_title": "Services affected by the cancellation", + "terminate_service_legacy_services_service": "Service", + "terminate_service_legacy_services_name": "Name", + "terminate_service_legacy_services_renew": "Renewal", + "terminate_service_legacy_services_frequency": "Frequency", + "terminate_service_legacy_reason_title": "Reason for cancelling", + "terminate_service_legacy_reason_LACK_OF_PERFORMANCES": "The service’s performance is insufficient", + "terminate_service_legacy_reason_NOT_NEEDED_ANYMORE": "I am not using this solution any more", + "terminate_service_legacy_reason_MIGRATED_TO_ANOTHER_OVH_PRODUCT": "I am using another OVHcloud solution ", + "terminate_service_legacy_reason_MIGRATED_TO_COMPETITOR": "I am using a solution from a different company ", + "terminate_service_legacy_reason_NOT_RELIABLE": "The solution is not reliable enough", + "terminate_service_legacy_reason_OTHER": "Others...", + "terminate_service_legacy_reason_TOO_EXPENSIVE": "The solution is not in my budget ", + "terminate_service_legacy_reason_TOO_HARD_TO_USE": "The management tools (Control Panel, billing) are too complex", + "terminate_service_legacy_reason_FEATURES_DONT_SUIT_ME": "The service's features are not suited to my needs", + "terminate_service_legacy_reason_UNSATIFIED_BY_CUSTOMER_SUPPORT": "I am not satisfied with customer support", + "terminate_service_legacy_reason_NO_ANSWER": "I’d rather not answer", + "terminate_service_legacy_futureUses_NO_ANSWER": "I’d rather not answer", + "terminate_service_legacy_reason_text": "Would you like to provide more details, or give a suggestion?", + "terminate_service_legacy_error": "Sorry, an error has occurred loading the page.", + "terminate_service_legacy_confirmation_error": "An error has occurred confirming your service cancellation.", + "terminate_service_legacy_confirmation_success": "Your services have been cancelled. You will be sent an email confirmation in the next few minutes. Please feel free to contact our support team if you have any queries.", + "terminate_service_legacy_next-steps_title": "Next step", + "terminate_service_legacy_futureUses_NOT_REPLACING_SERVICE": "I don't want to replace my service", + "terminate_service_legacy_futureUses_OTHER": "Others...", + "terminate_service_legacy_futureUses_SUBSCRIBE_AN_OTHER_SERVICE": "I want to sign up to a different OVH service", + "terminate_service_legacy_futureUses_SUBSCRIBE_OTHER_KIND_OF_SERVICE_WITH_COMPETITOR": "I want to sign up to a different type of service offered by a competitor", + "terminate_service_legacy_futureUses_SUBSCRIBE_SIMILAR_SERVICE_WITH_COMPETITOR": "I want to sign up to a similar service offered by a competitor", + "terminate_service_legacy_confirm": "Confirm cancellation", + "terminate_service_legacy_type_allDom": "AllDom Pack", + "terminate_service_legacy_type_caas_containers": "CaaS Containers", + "terminate_service_legacy_type_caas_registry": "CaaS Register", + "terminate_service_legacy_type_cdn_dedicated": "Dedicated CDN", + "terminate_service_legacy_type_cloud": "Cloud", + "terminate_service_legacy_type_cloud_project": "Cloud Project", + "terminate_service_legacy_type_dbaas_logs": "DBaaS Timeseries", + "terminate_service_legacy_type_dbaas_queue": "DBaaS Queue", + "terminate_service_legacy_type_EPCC": "Hosted Private Cloud", + "terminate_service_legacy_type_dedicated_ceph": "Ceph as a Service", + "terminate_service_legacy_type_dedicated_housing": "Housing server ", + "terminate_service_legacy_type_dedicated_nas": "Dedicated NAS", + "terminate_service_legacy_type_dedicated_nasha": "Dedicated HA NAS", + "terminate_service_legacy_type_dedicated_server": "Dedicated Server", + "terminate_service_legacy_type_deskaas": "DeskaaS", + "terminate_service_legacy_type_domain": "Domain", + "terminate_service_legacy_type_domain_zone": "Domain zone", + "terminate_service_legacy_type_email_domain": "MX Plan", + "terminate_service_legacy_type_email_exchange": "Exchange", + "terminate_service_legacy_type_email_pro": "Email Pro", + "terminate_service_legacy_type_freefax": "Free FAX", + "terminate_service_legacy_type_hosting_privateDatabase": "Private SQL hosting", + "terminate_service_legacy_type_hosting_reseller": "Multi-site hosting", + "terminate_service_legacy_type_hosting_web": "Web hosting", + "terminate_service_legacy_type_ip_service": "IP", + "terminate_service_legacy_type_ipLoadbalancing": "Load balancing", + "terminate_service_legacy_type_ip_loadBalancing": "Load balancing IP", + "terminate_service_legacy_type_license_cloudLinux": "CloudLinux licence", + "terminate_service_legacy_type_license_office": "Office 365 licence ", + "terminate_service_legacy_type_license_plesk": "Plesk licence", + "terminate_service_legacy_type_license_cpanel": "cPanel licence", + "terminate_service_legacy_type_license_windows": "Windows licence ", + "terminate_service_legacy_type_metrics": "Metrics", + "terminate_service_legacy_type_msServices_sharepoint": "SharePoint", + "terminate_service_legacy_type_overTheBox": "OverTheBox", + "terminate_service_legacy_type_paas_database": "PaaS Database", + "terminate_service_legacy_type_paas_monitoring": "PaaS Monitoring", + "terminate_service_legacy_type_pack_xdsl": "xDSL pack", + "terminate_service_legacy_type_router": "Router", + "terminate_service_legacy_type_saas_csp2": "Office 365 Reseller", + "terminate_service_legacy_type_sms": "SMS", + "terminate_service_legacy_type_sms_virtualNumbers": "Virtual SMS number", + "terminate_service_legacy_type_sslGateway": "SSL Gateway", + "terminate_service_legacy_type_stack_mis": "MIS", + "terminate_service_legacy_type_telephony": "Telephony", + "terminate_service_legacy_type_telephony_aliases": "Telephony", + "terminate_service_legacy_type_telephony_lines": "Telephony", + "terminate_service_legacy_type_telephony_trunks": "Telephony", + "terminate_service_legacy_type_veeamCloudConnect": "Veeam Cloud Connect", + "terminate_service_legacy_type_vps": "Virtual private servers", + "terminate_service_legacy_type_xdsl": "xDSL line", + "terminate_service_legacy_type_kube": "Kubernetes", + "terminate_service_legacy_type_webcoach": "Web Coach", + "terminate_service_legacy_comments": "Comments", + "terminate_service_legacy_type_MBM": "Managed Bare Metal" +} diff --git a/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_es_ES.json new file mode 100644 index 000000000000..4cea4de90175 --- /dev/null +++ b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_es_ES.json @@ -0,0 +1,90 @@ +{ + "terminate_service_legacy_title": "Formulario de baja", + "terminate_service_legacy_information_title": "Baja del servicio", + "terminate_service_legacy_information_text": "El servicio se dará de baja tras su confirmación. La baja del servicio conlleva la eliminación automática, inmediata e irreversible de todos los datos asociados a dicho servicio (incluidas las copias de seguridad). Antes de confirmar la baja del servicio, deberá adoptar todas las medidas necesarias para conservar sus datos. OVH se exime de toda responsabilidad a este respecto.", + "terminate_service_legacy_information_text_non_US": "El servicio se dará de baja al final del período de renovación. Tenga en cuenta que, una vez confirmada la baja del servicio, todos los datos y backups asociados se eliminarán definitivamente. Antes de confirmar la supresión del servicio, deberá adoptar todas las medidas necesarias para conservar sus datos. Una vez iniciado este proceso, no podrá detenerlo. OVH no podrá ser considerada responsable de la pérdida de datos en este caso.", + "terminate_service_legacy_services_title": "Servicios afectados por la baja", + "terminate_service_legacy_services_service": "Servicio", + "terminate_service_legacy_services_name": "Nombre", + "terminate_service_legacy_services_renew": "Renovación", + "terminate_service_legacy_services_frequency": "Frecuencia", + "terminate_service_legacy_reason_title": "Motivo de la baja", + "terminate_service_legacy_reason_LACK_OF_PERFORMANCES": "Las prestaciones del servicio son insuficientes.", + "terminate_service_legacy_reason_NOT_NEEDED_ANYMORE": "Ya no utilizo el servicio", + "terminate_service_legacy_reason_MIGRATED_TO_ANOTHER_OVH_PRODUCT": "Utilizo otro servicio de OVHcloud", + "terminate_service_legacy_reason_MIGRATED_TO_COMPETITOR": "Utilizo un servicio de otro proveedor", + "terminate_service_legacy_reason_NOT_RELIABLE": "El servicio es poco fiable", + "terminate_service_legacy_reason_OTHER": "Otros...", + "terminate_service_legacy_reason_TOO_EXPENSIVE": "El servicio es demasiado caro", + "terminate_service_legacy_reason_TOO_HARD_TO_USE": "Las herramientas de gestión (área de cliente, facturación) son demasiado complejas.", + "terminate_service_legacy_reason_FEATURES_DONT_SUIT_ME": "Las funcionalidades del servicio no son adecuadas para mí.", + "terminate_service_legacy_reason_UNSATIFIED_BY_CUSTOMER_SUPPORT": "No estoy contento con el soporte al cliente.", + "terminate_service_legacy_reason_NO_ANSWER": "Prefiero no responder", + "terminate_service_legacy_futureUses_NO_ANSWER": "Prefiero no responder", + "terminate_service_legacy_reason_text": "¿Quiere darnos más detalles o enviarnos alguna sugerencia?", + "terminate_service_legacy_error": "¡Vaya! Se ha producido un error al cargar la página.", + "terminate_service_legacy_confirmation_error": "Se ha producido un error al confirmar la baja del servicio. ", + "terminate_service_legacy_confirmation_success": "Sus servicios se han dado de baja. Recibirá un email de confirmación en los próximos minutos. Agradeciéndole la confianza depositada en OVHcloud, quedamos a su entera disposición.", + "terminate_service_legacy_next-steps_title": "Próxima etapa", + "terminate_service_legacy_futureUses_NOT_REPLACING_SERVICE": "No quiero cambiar mi servicio.", + "terminate_service_legacy_futureUses_OTHER": "Otros...", + "terminate_service_legacy_futureUses_SUBSCRIBE_AN_OTHER_SERVICE": "Quiero contratar un servicio diferente con OVH.", + "terminate_service_legacy_futureUses_SUBSCRIBE_OTHER_KIND_OF_SERVICE_WITH_COMPETITOR": "Quiero contratar un servicio diferente con otro proveedor.", + "terminate_service_legacy_futureUses_SUBSCRIBE_SIMILAR_SERVICE_WITH_COMPETITOR": "Quiero contratar un servicio parecido con otro proveedor.", + "terminate_service_legacy_confirm": "Confirmo que quiero dar de baja el servicio", + "terminate_service_legacy_type_allDom": "Pack AllDom", + "terminate_service_legacy_type_caas_containers": "CaaS Containers", + "terminate_service_legacy_type_caas_registry": "Registro CaaS", + "terminate_service_legacy_type_cdn_dedicated": "CDN Dedicada", + "terminate_service_legacy_type_cloud": "Cloud", + "terminate_service_legacy_type_cloud_project": "Proyecto Cloud", + "terminate_service_legacy_type_dbaas_logs": "DBaaS Time Series", + "terminate_service_legacy_type_dbaas_queue": "DBaaS Queue", + "terminate_service_legacy_type_EPCC": "Hosted Private Cloud", + "terminate_service_legacy_type_dedicated_ceph": "Ceph as a Service", + "terminate_service_legacy_type_dedicated_housing": "Servidor en housing", + "terminate_service_legacy_type_dedicated_nas": "NAS Dedicado", + "terminate_service_legacy_type_dedicated_nasha": "NAS-HA Dedicado", + "terminate_service_legacy_type_dedicated_server": "Servidor dedicado", + "terminate_service_legacy_type_deskaas": "DeskaaS", + "terminate_service_legacy_type_domain": "Dominio", + "terminate_service_legacy_type_domain_zone": "Zona de dominio", + "terminate_service_legacy_type_email_domain": "MX Plan", + "terminate_service_legacy_type_email_exchange": "Exchange", + "terminate_service_legacy_type_email_pro": "Email Pro", + "terminate_service_legacy_type_freefax": "Free FAX", + "terminate_service_legacy_type_hosting_privateDatabase": "Alojamiento BD SQL Privado", + "terminate_service_legacy_type_hosting_reseller": "Hosting multisitio", + "terminate_service_legacy_type_hosting_web": "Alojamiento web", + "terminate_service_legacy_type_ip_service": "IP", + "terminate_service_legacy_type_ipLoadbalancing": "Load Balancing", + "terminate_service_legacy_type_ip_loadBalancing": "Balanceador de carga IP", + "terminate_service_legacy_type_license_cloudLinux": "Licencia CloudLinux", + "terminate_service_legacy_type_license_office": "Licencia Office 365", + "terminate_service_legacy_type_license_plesk": "Licencia Plesk", + "terminate_service_legacy_type_license_cpanel": "Licencia cPanel", + "terminate_service_legacy_type_license_windows": "Licencia Windows", + "terminate_service_legacy_type_metrics": "Metrics", + "terminate_service_legacy_type_msServices_sharepoint": "SharePoint", + "terminate_service_legacy_type_overTheBox": "OverTheBox", + "terminate_service_legacy_type_paas_database": "PaaS Database", + "terminate_service_legacy_type_paas_monitoring": "PaaS Monitoring", + "terminate_service_legacy_type_pack_xdsl": "Pack xDSL", + "terminate_service_legacy_type_router": "Router", + "terminate_service_legacy_type_saas_csp2": "Office 365 Reseller", + "terminate_service_legacy_type_sms": "SMS", + "terminate_service_legacy_type_sms_virtualNumbers": "SMS número virtual", + "terminate_service_legacy_type_sslGateway": "SSL Gateway", + "terminate_service_legacy_type_stack_mis": "MIS", + "terminate_service_legacy_type_telephony": "Telefonía", + "terminate_service_legacy_type_telephony_aliases": "Telefonía", + "terminate_service_legacy_type_telephony_lines": "Telefonía", + "terminate_service_legacy_type_telephony_trunks": "Telefonía", + "terminate_service_legacy_type_veeamCloudConnect": "Veeam Cloud Connect", + "terminate_service_legacy_type_vps": "Servidores privados virtuales", + "terminate_service_legacy_type_xdsl": "Línea xDSL", + "terminate_service_legacy_type_kube": "Kubernetes", + "terminate_service_legacy_type_webcoach": "WebCoach", + "terminate_service_legacy_comments": "Comentarios", + "terminate_service_legacy_type_MBM": "Managed Bare Metal" +} diff --git a/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..2adb76b73764 --- /dev/null +++ b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_fr_CA.json @@ -0,0 +1,90 @@ +{ + "terminate_service_legacy_title": "Formulaire de résiliation", + "terminate_service_legacy_information_title": "Résiliation de votre service", + "terminate_service_legacy_information_text": "Le service sera résilié dès votre confirmation. Ceci entraînera la suppression automatique, immédiate et irréversible de l’ensemble des données liées à ce service (y compris leurs sauvegardes). Avant de poursuivre et de confirmer votre résiliation, il vous appartient de prendre toutes les mesures nécessaires pour conserver vos données. OVH décline toute responsabilité à ce titre.", + "terminate_service_legacy_information_text_non_US": "Le service sera résilié à la fin de la période de renouvellement. Une fois que vous confirmez la résiliation, veuillez noter que toutes les données liées à ce service et toutes les sauvegardes seront définitivement supprimées. Il vous appartient de prendre toutes les mesures nécessaires pour conserver vos données avant de donner votre confirmation de supprimer votre service. Une fois le processus initié, vous ne pourrez pas le stopper. OVH décline toute responsabilité de perte de données dans ce cas.", + "terminate_service_legacy_services_title": "Services affectés par la résiliation", + "terminate_service_legacy_services_service": "Service", + "terminate_service_legacy_services_name": "Nom", + "terminate_service_legacy_services_renew": "Renouvellement", + "terminate_service_legacy_services_frequency": "Fréquence", + "terminate_service_legacy_reason_title": "Raison de votre résiliation", + "terminate_service_legacy_reason_LACK_OF_PERFORMANCES": "Les performances du service sont insuffisantes", + "terminate_service_legacy_reason_NOT_NEEDED_ANYMORE": "Je n'utilise plus le service", + "terminate_service_legacy_reason_MIGRATED_TO_ANOTHER_OVH_PRODUCT": "J'utilise un autre service OVH", + "terminate_service_legacy_reason_MIGRATED_TO_COMPETITOR": "J'utilise le service d'un concurrent", + "terminate_service_legacy_reason_NOT_RELIABLE": "Le service manque de fiabilité", + "terminate_service_legacy_reason_OTHER": "Autres...", + "terminate_service_legacy_reason_TOO_EXPENSIVE": "Le service coûte trop cher", + "terminate_service_legacy_reason_TOO_HARD_TO_USE": "Les outils de gestion (espace client, facturation) sont trop complexes", + "terminate_service_legacy_reason_FEATURES_DONT_SUIT_ME": "Les fonctionnalités du service ne me conviennent pas", + "terminate_service_legacy_reason_UNSATIFIED_BY_CUSTOMER_SUPPORT": "Je ne suis pas satisfait du Support client", + "terminate_service_legacy_reason_NO_ANSWER": "Je ne souhaite pas répondre", + "terminate_service_legacy_futureUses_NO_ANSWER": "Je ne souhaite pas répondre", + "terminate_service_legacy_reason_text": "Souhaitez-vous nous donner plus de détails ou nous partager une suggestion ?", + "terminate_service_legacy_error": "Nous sommes désolés, une erreur s'est produite lors du chargement de la page.", + "terminate_service_legacy_confirmation_error": "Une erreur s'est produite lors de la confirmation de l'arrêt de votre service.", + "terminate_service_legacy_confirmation_success": "Vous avez bien résilié vos services. Une confirmation vous sera envoyée par email dans les prochaines minutes. Notre équipe support reste à votre disposition pour toute question.", + "terminate_service_legacy_next-steps_title": "Prochaine étape", + "terminate_service_legacy_futureUses_NOT_REPLACING_SERVICE": "Je ne veux pas remplacer mon service", + "terminate_service_legacy_futureUses_OTHER": "Autres...", + "terminate_service_legacy_futureUses_SUBSCRIBE_AN_OTHER_SERVICE": "Je veux souscrire à un autre service OVH", + "terminate_service_legacy_futureUses_SUBSCRIBE_OTHER_KIND_OF_SERVICE_WITH_COMPETITOR": "Je veux souscrire à un autre type de service auprès d’un autre fournisseur", + "terminate_service_legacy_futureUses_SUBSCRIBE_SIMILAR_SERVICE_WITH_COMPETITOR": "Je veux souscrire à un service similaire auprès d’un autre fournisseur", + "terminate_service_legacy_confirm": "Je confirme la résiliation", + "terminate_service_legacy_type_allDom": "Pack AllDom", + "terminate_service_legacy_type_caas_containers": "CaaS Containers", + "terminate_service_legacy_type_caas_registry": "Registre CaaS", + "terminate_service_legacy_type_cdn_dedicated": "CDN Dédié", + "terminate_service_legacy_type_cloud": "Cloud", + "terminate_service_legacy_type_cloud_project": "Project Cloud", + "terminate_service_legacy_type_dbaas_logs": "DBaaS Timeseries", + "terminate_service_legacy_type_dbaas_queue": "DBaaS Queue", + "terminate_service_legacy_type_EPCC": "Cloud Privé", + "terminate_service_legacy_type_dedicated_ceph": "Ceph as a Service", + "terminate_service_legacy_type_dedicated_housing": "Serveur Housing", + "terminate_service_legacy_type_dedicated_nas": "Nas Dédié", + "terminate_service_legacy_type_dedicated_nasha": "NasHa Dédié", + "terminate_service_legacy_type_dedicated_server": "Serveur Dédié", + "terminate_service_legacy_type_deskaas": "DeskAaS", + "terminate_service_legacy_type_domain": "Domain", + "terminate_service_legacy_type_domain_zone": "Domain zone", + "terminate_service_legacy_type_email_domain": "MX Plan", + "terminate_service_legacy_type_email_exchange": "Exchange", + "terminate_service_legacy_type_email_pro": "E-mail Pro", + "terminate_service_legacy_type_freefax": "Free FAX", + "terminate_service_legacy_type_hosting_privateDatabase": "Hébergement base SQL privée", + "terminate_service_legacy_type_hosting_reseller": "Hébergement multisite", + "terminate_service_legacy_type_hosting_web": "Hébergement web", + "terminate_service_legacy_type_ip_service": "IP", + "terminate_service_legacy_type_ipLoadbalancing": "Load Balancing", + "terminate_service_legacy_type_ip_loadBalancing": "Équilibreur de charge IP", + "terminate_service_legacy_type_license_cloudLinux": "Licence CloudLinux", + "terminate_service_legacy_type_license_office": "Licence Office 365", + "terminate_service_legacy_type_license_plesk": "Licence Plesk", + "terminate_service_legacy_type_license_cpanel": "Licence CPanel", + "terminate_service_legacy_type_license_windows": "Licence Windows", + "terminate_service_legacy_type_metrics": "Metrics", + "terminate_service_legacy_type_msServices_sharepoint": "Sharepoint", + "terminate_service_legacy_type_overTheBox": "OverTheBox", + "terminate_service_legacy_type_paas_database": "PaaS Database", + "terminate_service_legacy_type_paas_monitoring": "PaaS Monitoring", + "terminate_service_legacy_type_pack_xdsl": "Pack xDSL", + "terminate_service_legacy_type_router": "Routeur", + "terminate_service_legacy_type_saas_csp2": "Office 365 Revendeur", + "terminate_service_legacy_type_sms": "SMS", + "terminate_service_legacy_type_sms_virtualNumbers": "SMS numéro virtuel", + "terminate_service_legacy_type_sslGateway": "SSL Gateway", + "terminate_service_legacy_type_stack_mis": "MIS", + "terminate_service_legacy_type_telephony": "Téléphonie", + "terminate_service_legacy_type_telephony_aliases": "Téléphonie", + "terminate_service_legacy_type_telephony_lines": "Téléphonie", + "terminate_service_legacy_type_telephony_trunks": "Téléphonie", + "terminate_service_legacy_type_veeamCloudConnect": "Veeam Cloud Connect", + "terminate_service_legacy_type_vps": "Serveurs privés virtuels", + "terminate_service_legacy_type_xdsl": "Ligne xDSL", + "terminate_service_legacy_type_kube": "Kubernetes", + "terminate_service_legacy_type_webcoach": "WebCoach", + "terminate_service_legacy_comments": "Commentaires", + "terminate_service_legacy_type_MBM": "Managed Bare Metal" +} diff --git a/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..2adb76b73764 --- /dev/null +++ b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_fr_FR.json @@ -0,0 +1,90 @@ +{ + "terminate_service_legacy_title": "Formulaire de résiliation", + "terminate_service_legacy_information_title": "Résiliation de votre service", + "terminate_service_legacy_information_text": "Le service sera résilié dès votre confirmation. Ceci entraînera la suppression automatique, immédiate et irréversible de l’ensemble des données liées à ce service (y compris leurs sauvegardes). Avant de poursuivre et de confirmer votre résiliation, il vous appartient de prendre toutes les mesures nécessaires pour conserver vos données. OVH décline toute responsabilité à ce titre.", + "terminate_service_legacy_information_text_non_US": "Le service sera résilié à la fin de la période de renouvellement. Une fois que vous confirmez la résiliation, veuillez noter que toutes les données liées à ce service et toutes les sauvegardes seront définitivement supprimées. Il vous appartient de prendre toutes les mesures nécessaires pour conserver vos données avant de donner votre confirmation de supprimer votre service. Une fois le processus initié, vous ne pourrez pas le stopper. OVH décline toute responsabilité de perte de données dans ce cas.", + "terminate_service_legacy_services_title": "Services affectés par la résiliation", + "terminate_service_legacy_services_service": "Service", + "terminate_service_legacy_services_name": "Nom", + "terminate_service_legacy_services_renew": "Renouvellement", + "terminate_service_legacy_services_frequency": "Fréquence", + "terminate_service_legacy_reason_title": "Raison de votre résiliation", + "terminate_service_legacy_reason_LACK_OF_PERFORMANCES": "Les performances du service sont insuffisantes", + "terminate_service_legacy_reason_NOT_NEEDED_ANYMORE": "Je n'utilise plus le service", + "terminate_service_legacy_reason_MIGRATED_TO_ANOTHER_OVH_PRODUCT": "J'utilise un autre service OVH", + "terminate_service_legacy_reason_MIGRATED_TO_COMPETITOR": "J'utilise le service d'un concurrent", + "terminate_service_legacy_reason_NOT_RELIABLE": "Le service manque de fiabilité", + "terminate_service_legacy_reason_OTHER": "Autres...", + "terminate_service_legacy_reason_TOO_EXPENSIVE": "Le service coûte trop cher", + "terminate_service_legacy_reason_TOO_HARD_TO_USE": "Les outils de gestion (espace client, facturation) sont trop complexes", + "terminate_service_legacy_reason_FEATURES_DONT_SUIT_ME": "Les fonctionnalités du service ne me conviennent pas", + "terminate_service_legacy_reason_UNSATIFIED_BY_CUSTOMER_SUPPORT": "Je ne suis pas satisfait du Support client", + "terminate_service_legacy_reason_NO_ANSWER": "Je ne souhaite pas répondre", + "terminate_service_legacy_futureUses_NO_ANSWER": "Je ne souhaite pas répondre", + "terminate_service_legacy_reason_text": "Souhaitez-vous nous donner plus de détails ou nous partager une suggestion ?", + "terminate_service_legacy_error": "Nous sommes désolés, une erreur s'est produite lors du chargement de la page.", + "terminate_service_legacy_confirmation_error": "Une erreur s'est produite lors de la confirmation de l'arrêt de votre service.", + "terminate_service_legacy_confirmation_success": "Vous avez bien résilié vos services. Une confirmation vous sera envoyée par email dans les prochaines minutes. Notre équipe support reste à votre disposition pour toute question.", + "terminate_service_legacy_next-steps_title": "Prochaine étape", + "terminate_service_legacy_futureUses_NOT_REPLACING_SERVICE": "Je ne veux pas remplacer mon service", + "terminate_service_legacy_futureUses_OTHER": "Autres...", + "terminate_service_legacy_futureUses_SUBSCRIBE_AN_OTHER_SERVICE": "Je veux souscrire à un autre service OVH", + "terminate_service_legacy_futureUses_SUBSCRIBE_OTHER_KIND_OF_SERVICE_WITH_COMPETITOR": "Je veux souscrire à un autre type de service auprès d’un autre fournisseur", + "terminate_service_legacy_futureUses_SUBSCRIBE_SIMILAR_SERVICE_WITH_COMPETITOR": "Je veux souscrire à un service similaire auprès d’un autre fournisseur", + "terminate_service_legacy_confirm": "Je confirme la résiliation", + "terminate_service_legacy_type_allDom": "Pack AllDom", + "terminate_service_legacy_type_caas_containers": "CaaS Containers", + "terminate_service_legacy_type_caas_registry": "Registre CaaS", + "terminate_service_legacy_type_cdn_dedicated": "CDN Dédié", + "terminate_service_legacy_type_cloud": "Cloud", + "terminate_service_legacy_type_cloud_project": "Project Cloud", + "terminate_service_legacy_type_dbaas_logs": "DBaaS Timeseries", + "terminate_service_legacy_type_dbaas_queue": "DBaaS Queue", + "terminate_service_legacy_type_EPCC": "Cloud Privé", + "terminate_service_legacy_type_dedicated_ceph": "Ceph as a Service", + "terminate_service_legacy_type_dedicated_housing": "Serveur Housing", + "terminate_service_legacy_type_dedicated_nas": "Nas Dédié", + "terminate_service_legacy_type_dedicated_nasha": "NasHa Dédié", + "terminate_service_legacy_type_dedicated_server": "Serveur Dédié", + "terminate_service_legacy_type_deskaas": "DeskAaS", + "terminate_service_legacy_type_domain": "Domain", + "terminate_service_legacy_type_domain_zone": "Domain zone", + "terminate_service_legacy_type_email_domain": "MX Plan", + "terminate_service_legacy_type_email_exchange": "Exchange", + "terminate_service_legacy_type_email_pro": "E-mail Pro", + "terminate_service_legacy_type_freefax": "Free FAX", + "terminate_service_legacy_type_hosting_privateDatabase": "Hébergement base SQL privée", + "terminate_service_legacy_type_hosting_reseller": "Hébergement multisite", + "terminate_service_legacy_type_hosting_web": "Hébergement web", + "terminate_service_legacy_type_ip_service": "IP", + "terminate_service_legacy_type_ipLoadbalancing": "Load Balancing", + "terminate_service_legacy_type_ip_loadBalancing": "Équilibreur de charge IP", + "terminate_service_legacy_type_license_cloudLinux": "Licence CloudLinux", + "terminate_service_legacy_type_license_office": "Licence Office 365", + "terminate_service_legacy_type_license_plesk": "Licence Plesk", + "terminate_service_legacy_type_license_cpanel": "Licence CPanel", + "terminate_service_legacy_type_license_windows": "Licence Windows", + "terminate_service_legacy_type_metrics": "Metrics", + "terminate_service_legacy_type_msServices_sharepoint": "Sharepoint", + "terminate_service_legacy_type_overTheBox": "OverTheBox", + "terminate_service_legacy_type_paas_database": "PaaS Database", + "terminate_service_legacy_type_paas_monitoring": "PaaS Monitoring", + "terminate_service_legacy_type_pack_xdsl": "Pack xDSL", + "terminate_service_legacy_type_router": "Routeur", + "terminate_service_legacy_type_saas_csp2": "Office 365 Revendeur", + "terminate_service_legacy_type_sms": "SMS", + "terminate_service_legacy_type_sms_virtualNumbers": "SMS numéro virtuel", + "terminate_service_legacy_type_sslGateway": "SSL Gateway", + "terminate_service_legacy_type_stack_mis": "MIS", + "terminate_service_legacy_type_telephony": "Téléphonie", + "terminate_service_legacy_type_telephony_aliases": "Téléphonie", + "terminate_service_legacy_type_telephony_lines": "Téléphonie", + "terminate_service_legacy_type_telephony_trunks": "Téléphonie", + "terminate_service_legacy_type_veeamCloudConnect": "Veeam Cloud Connect", + "terminate_service_legacy_type_vps": "Serveurs privés virtuels", + "terminate_service_legacy_type_xdsl": "Ligne xDSL", + "terminate_service_legacy_type_kube": "Kubernetes", + "terminate_service_legacy_type_webcoach": "WebCoach", + "terminate_service_legacy_comments": "Commentaires", + "terminate_service_legacy_type_MBM": "Managed Bare Metal" +} diff --git a/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_it_IT.json new file mode 100644 index 000000000000..0b1d3694296b --- /dev/null +++ b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_it_IT.json @@ -0,0 +1,90 @@ +{ + "terminate_service_legacy_title": "Modulo di rescissione", + "terminate_service_legacy_information_title": "Disattiva il tuo servizio", + "terminate_service_legacy_information_text": "Il servizio verrà disattivato subito dopo la conferma. L’operazione comporterà la cancellazione automatica, immediata e irreversibile di tutti i dati ad esso associati (backup inclusi). Prima di proseguire e confermare la disattivazione, ti ricordiamo di adottare tutte le misure necessarie alla conservazione dei dati. A questo titolo, OVH declina qualsiasi responsabilità.", + "terminate_service_legacy_information_text_non_US": "Il servizio verrà disattivato alla scadenza. Ti ricordiamo che, una volta confermata la disattivazione, tutti i dati e backup associati al servizio verranno definitivamente cancellati. Prima di proseguire con l’operazione è quindi necessario adottare tutte le misure necessarie alla conservazione dei dati. Una volta avviato, il processo non potrà essere sospeso. OVH declina qualsiasi responsabilità associata all’eventuale perdita di dati.", + "terminate_service_legacy_services_title": "Servizi interessati dalla rescissione", + "terminate_service_legacy_services_service": "Servizio", + "terminate_service_legacy_services_name": "Nome", + "terminate_service_legacy_services_renew": "Rinnovo", + "terminate_service_legacy_services_frequency": "Frequenza", + "terminate_service_legacy_reason_title": "Motivo della rescissione", + "terminate_service_legacy_reason_LACK_OF_PERFORMANCES": "Le prestazioni del servizio non sono sufficienti", + "terminate_service_legacy_reason_NOT_NEEDED_ANYMORE": "Non utilizzo più il servizio", + "terminate_service_legacy_reason_MIGRATED_TO_ANOTHER_OVH_PRODUCT": "Utilizzo un altro servizio OVH", + "terminate_service_legacy_reason_MIGRATED_TO_COMPETITOR": "Utilizzo il servizio di un altro provider", + "terminate_service_legacy_reason_NOT_RELIABLE": "Il servizio non è abbastanza affidabile", + "terminate_service_legacy_reason_OTHER": "Altro...", + "terminate_service_legacy_reason_TOO_EXPENSIVE": "Il servizio costa troppo", + "terminate_service_legacy_reason_TOO_HARD_TO_USE": "Gli strumenti di gestione (Spazio Cliente, fatturazione) sono troppo complessi", + "terminate_service_legacy_reason_FEATURES_DONT_SUIT_ME": "Le funzionalità del servizio non sono adeguate alle mie necessità", + "terminate_service_legacy_reason_UNSATIFIED_BY_CUSTOMER_SUPPORT": "Non sono soddisfatto del Supporto Clienti", + "terminate_service_legacy_reason_NO_ANSWER": "Preferisco non rispondere", + "terminate_service_legacy_futureUses_NO_ANSWER": "Preferisco non rispondere", + "terminate_service_legacy_reason_text": "Vuoi fornirci maggiori dettagli o condividere qualche suggerimento?", + "terminate_service_legacy_error": "Si è verificato un errore durante il caricamento della pagina.", + "terminate_service_legacy_confirmation_error": "Si è verificato un errore durante la conferma della disattivazione del servizio.", + "terminate_service_legacy_confirmation_success": "Il servizio è stato disattivato correttamente. Riceverai un’email di conferma entro pochi minuti. Il team di supporto è a disposizione per rispondere alle tue domande.", + "terminate_service_legacy_next-steps_title": "Step successivo", + "terminate_service_legacy_futureUses_NOT_REPLACING_SERVICE": "Non sostituire il servizio", + "terminate_service_legacy_futureUses_OTHER": "Altro...", + "terminate_service_legacy_futureUses_SUBSCRIBE_AN_OTHER_SERVICE": "Voglio scegliere un altro servizio OVH", + "terminate_service_legacy_futureUses_SUBSCRIBE_OTHER_KIND_OF_SERVICE_WITH_COMPETITOR": "Voglio attivare un altro tipo di servizio presso un altro provider", + "terminate_service_legacy_futureUses_SUBSCRIBE_SIMILAR_SERVICE_WITH_COMPETITOR": "Voglio attivare un servizio simile presso un altro provider", + "terminate_service_legacy_confirm": "Confermo di voler disattivare il servizio", + "terminate_service_legacy_type_allDom": "Pack AllDom", + "terminate_service_legacy_type_caas_containers": "CaaS Container", + "terminate_service_legacy_type_caas_registry": "Registro CaaS", + "terminate_service_legacy_type_cdn_dedicated": "CDN Dedicata ", + "terminate_service_legacy_type_cloud": "Cloud", + "terminate_service_legacy_type_cloud_project": "Progetto Cloud", + "terminate_service_legacy_type_dbaas_logs": "DBaaS Timeseries", + "terminate_service_legacy_type_dbaas_queue": "DBaaS Queue", + "terminate_service_legacy_type_EPCC": "Hosted Private Cloud", + "terminate_service_legacy_type_dedicated_ceph": "Ceph as a Service", + "terminate_service_legacy_type_dedicated_housing": "Server in housing", + "terminate_service_legacy_type_dedicated_nas": "NAS dedicato", + "terminate_service_legacy_type_dedicated_nasha": "NAS-HA dedicato", + "terminate_service_legacy_type_dedicated_server": "Server dedicati", + "terminate_service_legacy_type_deskaas": "DeskaaS", + "terminate_service_legacy_type_domain": "Dominio", + "terminate_service_legacy_type_domain_zone": "Zona del dominio", + "terminate_service_legacy_type_email_domain": "MX Plan", + "terminate_service_legacy_type_email_exchange": "Exchange", + "terminate_service_legacy_type_email_pro": "Email Pro", + "terminate_service_legacy_type_freefax": "Free FAX", + "terminate_service_legacy_type_hosting_privateDatabase": "Hosting database SQL Privato", + "terminate_service_legacy_type_hosting_reseller": "Hosting multisito", + "terminate_service_legacy_type_hosting_web": "Hosting Web", + "terminate_service_legacy_type_ip_service": "IP", + "terminate_service_legacy_type_ipLoadbalancing": "Load Balancing", + "terminate_service_legacy_type_ip_loadBalancing": "IP Load Balancer", + "terminate_service_legacy_type_license_cloudLinux": "Licenza Cloud Linux", + "terminate_service_legacy_type_license_office": "Licenza Office 365", + "terminate_service_legacy_type_license_plesk": "Licenza Plesk", + "terminate_service_legacy_type_license_cpanel": "Licenza cPanel", + "terminate_service_legacy_type_license_windows": "Licenza Windows", + "terminate_service_legacy_type_metrics": "Metrics", + "terminate_service_legacy_type_msServices_sharepoint": "SharePoint", + "terminate_service_legacy_type_overTheBox": "OverTheBox", + "terminate_service_legacy_type_paas_database": "PaaS Database", + "terminate_service_legacy_type_paas_monitoring": "PaaS Monitoring", + "terminate_service_legacy_type_pack_xdsl": "Pack xDSL", + "terminate_service_legacy_type_router": "Router", + "terminate_service_legacy_type_saas_csp2": "Office 365 Reseller", + "terminate_service_legacy_type_sms": "SMS", + "terminate_service_legacy_type_sms_virtualNumbers": "SMS numero virtuale", + "terminate_service_legacy_type_sslGateway": "SSL Gateway", + "terminate_service_legacy_type_stack_mis": "MIS", + "terminate_service_legacy_type_telephony": "Telefonia", + "terminate_service_legacy_type_telephony_aliases": "Telefonia", + "terminate_service_legacy_type_telephony_lines": "Telefonia", + "terminate_service_legacy_type_telephony_trunks": "Telefonia", + "terminate_service_legacy_type_veeamCloudConnect": "Veeam Cloud Connect", + "terminate_service_legacy_type_vps": "Server Privati Virtuali", + "terminate_service_legacy_type_xdsl": "Linea xDSL", + "terminate_service_legacy_type_kube": "Kubernetes", + "terminate_service_legacy_type_webcoach": "WebCoach", + "terminate_service_legacy_comments": "Commenti", + "terminate_service_legacy_type_MBM": "Managed Bare Metal" +} diff --git a/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..f22a6cae5a2b --- /dev/null +++ b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_pl_PL.json @@ -0,0 +1,90 @@ +{ + "terminate_service_legacy_title": "Formularz rezygnacji z usługi", + "terminate_service_legacy_information_title": "Rezygnacja z usługi", + "terminate_service_legacy_information_text": "Po potwierdzeniu usługa zostanie wyłączona. Potwierdzenie spowoduje automatyczne, natychmiastowe i nieodwracalne usunięcie wszystkich danych przypisanych do tej usługi (również kopii zapasowych). Przed potwierdzeniem upewnij się, że podjąłeś wszelkie kroki w celu zachowania danych. OVHcloud nie ponosi odpowiedzialności w tym zakresie.", + "terminate_service_legacy_information_text_non_US": "Świadczenie usługi zostanie zakończone z końcem opłaconego okresu dzierżawy. Po potwierdzeniu rezygnacji z usługi wszystkie dane i kopie zapasowe związane z usługą zostaną nieodwracalnie usunięte. Dlatego przed potwierdzeniem woli usunięcia usługi podejmij wszelkie niezbędne kroki mające na celu zachowanie danych. Po rozpoczęciu procesu niemożliwe jest jego anulowanie. W takim przypadku OVHcloud nie ponosi odpowiedzialności za utratę danych.", + "terminate_service_legacy_services_title": "Inne usługi, na które może wpłynąć rezygnacja", + "terminate_service_legacy_services_service": "Usługa", + "terminate_service_legacy_services_name": "Nazwa", + "terminate_service_legacy_services_renew": "Odnowienie", + "terminate_service_legacy_services_frequency": "Częstotliwość", + "terminate_service_legacy_reason_title": "Przyczyna rezygnacji", + "terminate_service_legacy_reason_LACK_OF_PERFORMANCES": "Wydajność systemu jest niewystarczająca.", + "terminate_service_legacy_reason_NOT_NEEDED_ANYMORE": "Nie korzystam już z usługi", + "terminate_service_legacy_reason_MIGRATED_TO_ANOTHER_OVH_PRODUCT": "Korzystam z innej usługi OVH", + "terminate_service_legacy_reason_MIGRATED_TO_COMPETITOR": "Korzystam z usług konkurencji", + "terminate_service_legacy_reason_NOT_RELIABLE": "Usługa nie jest niezawodna", + "terminate_service_legacy_reason_OTHER": "Inne...", + "terminate_service_legacy_reason_TOO_EXPENSIVE": "Usługa jest zbyt droga", + "terminate_service_legacy_reason_TOO_HARD_TO_USE": "Narzędzia (Panel klienta, płatności) są zbyt skomplikowane.", + "terminate_service_legacy_reason_FEATURES_DONT_SUIT_ME": "Funkcje usługi nie są dla mnie odpowiednie.", + "terminate_service_legacy_reason_UNSATIFIED_BY_CUSTOMER_SUPPORT": "Nie jestem zadowolony z obsługi klienta.", + "terminate_service_legacy_reason_NO_ANSWER": "Wolę nie odpowiadać.", + "terminate_service_legacy_futureUses_NO_ANSWER": "Wolę nie odpowiadać.", + "terminate_service_legacy_reason_text": "Czy chcesz nam podać więcej szczegółów lub przekazać jakieś sugestie?", + "terminate_service_legacy_error": "Wystąpił błąd podczas ładowania strony.", + "terminate_service_legacy_confirmation_error": "Wystąpił błąd podczas potwierdzania rezygnacji z usługi.", + "terminate_service_legacy_confirmation_success": "Zrezygnowałeś z usług. W ciągu kilku minut otrzymasz wiadomość e-mail z potwierdzeniem. W przypadku pytań skontaktuj się z Obsługą Klienta OVHcloud.", + "terminate_service_legacy_next-steps_title": "Kolejny etap", + "terminate_service_legacy_futureUses_NOT_REPLACING_SERVICE": "Nie chcę zmieniać mojej usługi.", + "terminate_service_legacy_futureUses_OTHER": "Inne...", + "terminate_service_legacy_futureUses_SUBSCRIBE_AN_OTHER_SERVICE": "Chcę zamówić inną usługę OVH.", + "terminate_service_legacy_futureUses_SUBSCRIBE_OTHER_KIND_OF_SERVICE_WITH_COMPETITOR": "Chcę zamówić inny rodzaj usługi u innego dostawcy.", + "terminate_service_legacy_futureUses_SUBSCRIBE_SIMILAR_SERVICE_WITH_COMPETITOR": "Chcę zamówić podobną usługę u innego dostawcy.", + "terminate_service_legacy_confirm": "Potwierdzam rezygnację z usługi.", + "terminate_service_legacy_type_allDom": "Pakiet AllDom", + "terminate_service_legacy_type_caas_containers": "Kontenery CaaS", + "terminate_service_legacy_type_caas_registry": "Rejestr CaaS", + "terminate_service_legacy_type_cdn_dedicated": "CDN dedykowany", + "terminate_service_legacy_type_cloud": "Cloud", + "terminate_service_legacy_type_cloud_project": "Projekt Cloud", + "terminate_service_legacy_type_dbaas_logs": "DBaaS Timeseries", + "terminate_service_legacy_type_dbaas_queue": "DBaaS Queue", + "terminate_service_legacy_type_EPCC": "Hosted Private Cloud", + "terminate_service_legacy_type_dedicated_ceph": "Ceph as a Service", + "terminate_service_legacy_type_dedicated_housing": "Housing", + "terminate_service_legacy_type_dedicated_nas": "Dedykowana przestrzeń dyskowa NAS", + "terminate_service_legacy_type_dedicated_nasha": "Dedykowana przestrzeń dyskowa NAS-HA", + "terminate_service_legacy_type_dedicated_server": "Serwer dedykowany", + "terminate_service_legacy_type_deskaas": "DeskaaS", + "terminate_service_legacy_type_domain": "Domena", + "terminate_service_legacy_type_domain_zone": "Strefa domeny", + "terminate_service_legacy_type_email_domain": "MX Plan", + "terminate_service_legacy_type_email_exchange": "Exchange", + "terminate_service_legacy_type_email_pro": "E-mail Pro", + "terminate_service_legacy_type_freefax": "Free FAX", + "terminate_service_legacy_type_hosting_privateDatabase": "Serwer Private SQL", + "terminate_service_legacy_type_hosting_reseller": "Hosting MultiSite", + "terminate_service_legacy_type_hosting_web": "Hosting WWW", + "terminate_service_legacy_type_ip_service": "Adresy IP", + "terminate_service_legacy_type_ipLoadbalancing": "Load Balancer", + "terminate_service_legacy_type_ip_loadBalancing": "IP Load Balancer", + "terminate_service_legacy_type_license_cloudLinux": "Licencja CloudLinux", + "terminate_service_legacy_type_license_office": "Licencja Office 365", + "terminate_service_legacy_type_license_plesk": "Licencja Plesk", + "terminate_service_legacy_type_license_cpanel": "Licencja cPanel", + "terminate_service_legacy_type_license_windows": "Licencja Windows", + "terminate_service_legacy_type_metrics": "Metryki", + "terminate_service_legacy_type_msServices_sharepoint": "Sharepoint", + "terminate_service_legacy_type_overTheBox": "OverTheBox", + "terminate_service_legacy_type_paas_database": "PaaS Database", + "terminate_service_legacy_type_paas_monitoring": "PaaS Monitoring", + "terminate_service_legacy_type_pack_xdsl": "Pakiet xDSL", + "terminate_service_legacy_type_router": "Router", + "terminate_service_legacy_type_saas_csp2": "Office 365 Reseller", + "terminate_service_legacy_type_sms": "SMS", + "terminate_service_legacy_type_sms_virtualNumbers": "Wirtualny numer SMS", + "terminate_service_legacy_type_sslGateway": "SSL Gateway", + "terminate_service_legacy_type_stack_mis": "MIS", + "terminate_service_legacy_type_telephony": "Telefonia", + "terminate_service_legacy_type_telephony_aliases": "Telefonia", + "terminate_service_legacy_type_telephony_lines": "Telefonia", + "terminate_service_legacy_type_telephony_trunks": "Telefonia", + "terminate_service_legacy_type_veeamCloudConnect": "Veeam Cloud Connect", + "terminate_service_legacy_type_vps": "Prywatne serwery wirtualne", + "terminate_service_legacy_type_xdsl": "Linia xDSL", + "terminate_service_legacy_type_kube": "Kubernetes", + "terminate_service_legacy_type_webcoach": "WebCoach", + "terminate_service_legacy_comments": "Komentarze", + "terminate_service_legacy_type_MBM": "Managed Bare Metal" +} diff --git a/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..ab8486c0ffdf --- /dev/null +++ b/packages/manager/modules/new-billing/src/confirmTerminate/legacy/translations/Messages_pt_PT.json @@ -0,0 +1,90 @@ +{ + "terminate_service_legacy_title": "Formulário de rescisão", + "terminate_service_legacy_information_title": "Rescisão do serviço", + "terminate_service_legacy_information_text": "O serviço será rescindido após a sua confirmação. Isto eliminará de forma automática, imediata e irreversível todos os dados relacionados com este serviço (incluindo os seus backups). Antes de continuar e confirmar a rescisão, deve tomar todas as medidas necessárias para conservar os seus dados. A OVHcloud declina qualquer responsabilidade a esse respeito.", + "terminate_service_legacy_information_text_non_US": "O serviço será rescindido ao fim do período de renovação. Uma vez confirmada a rescisão, tenha em conta que todos os dados relacionados com este serviço e todos os backups serão eliminados de forma definitiva. Deve tomar todas as medidas necessárias para conservar os seus dados antes de confirmar a eliminação do seu serviço. Uma vez o processo iniciado, não poderá anulá-lo. A OVHcloud declina qualquer responsabilidade em caso de perda de dados nesta situação.", + "terminate_service_legacy_services_title": "Serviços afetados pela rescisão", + "terminate_service_legacy_services_service": "Serviço", + "terminate_service_legacy_services_name": "Nome", + "terminate_service_legacy_services_renew": "Renovação", + "terminate_service_legacy_services_frequency": "Frequência", + "terminate_service_legacy_reason_title": "Motivo da rescisão", + "terminate_service_legacy_reason_LACK_OF_PERFORMANCES": "O rendimento do sistema é insuficiente", + "terminate_service_legacy_reason_NOT_NEEDED_ANYMORE": "Já não utilizo este serviço", + "terminate_service_legacy_reason_MIGRATED_TO_ANOTHER_OVH_PRODUCT": "Estou a usar outro serviço da OVHcloud", + "terminate_service_legacy_reason_MIGRATED_TO_COMPETITOR": "Estou a usar o serviço de um concorrente", + "terminate_service_legacy_reason_NOT_RELIABLE": "O serviço é pouco fiável", + "terminate_service_legacy_reason_OTHER": "Outros...", + "terminate_service_legacy_reason_TOO_EXPENSIVE": "O serviço é demasiado caro", + "terminate_service_legacy_reason_TOO_HARD_TO_USE": "As ferramentas de gestão (Área de Cliente, faturação, etc.) são demasiado complexas", + "terminate_service_legacy_reason_FEATURES_DONT_SUIT_ME": "As funcionalidades do serviço não são adequadas às minhas necessidades", + "terminate_service_legacy_reason_UNSATIFIED_BY_CUSTOMER_SUPPORT": "Não estou satisfeito/a com o Apoio ao Cliente", + "terminate_service_legacy_reason_NO_ANSWER": "Não quero responder", + "terminate_service_legacy_futureUses_NO_ANSWER": "Não quero responder", + "terminate_service_legacy_reason_text": "Deseja fornecer mais informações ou dar alguma sugestão?", + "terminate_service_legacy_error": "Pedimos desculpa, ocorreu um erro durante o carregamento da página.", + "terminate_service_legacy_confirmation_error": "Ocorreu um erro durante a confirmação da interrupção do serviço.", + "terminate_service_legacy_confirmation_success": "Os seus serviços foram rescindidos com êxito. Uma confirmação ser-lhe-á enviada por e-mail nos próximos minutos. A nossa equipa de suporte está à sua disposição para qualquer questão.", + "terminate_service_legacy_next-steps_title": "Próxima etapa", + "terminate_service_legacy_futureUses_NOT_REPLACING_SERVICE": "Não quero substituir o meu serviço", + "terminate_service_legacy_futureUses_OTHER": "Outros...", + "terminate_service_legacy_futureUses_SUBSCRIBE_AN_OTHER_SERVICE": "Quero subscrever outro serviço da OVHcloud", + "terminate_service_legacy_futureUses_SUBSCRIBE_OTHER_KIND_OF_SERVICE_WITH_COMPETITOR": "Quero subscrever outro tipo de serviço com outro fornecedor", + "terminate_service_legacy_futureUses_SUBSCRIBE_SIMILAR_SERVICE_WITH_COMPETITOR": "Quero subscrever um serviço semelhante com outro fornecedor", + "terminate_service_legacy_confirm": "Confirmo a rescisão", + "terminate_service_legacy_type_allDom": "Pack AllDom", + "terminate_service_legacy_type_caas_containers": "CaaS Containers", + "terminate_service_legacy_type_caas_registry": "Registo CaaS", + "terminate_service_legacy_type_cdn_dedicated": "CDN dedicada", + "terminate_service_legacy_type_cloud": "Cloud", + "terminate_service_legacy_type_cloud_project": "Projeto Cloud", + "terminate_service_legacy_type_dbaas_logs": "DBaaS Timeseries", + "terminate_service_legacy_type_dbaas_queue": "DBaaS Queue", + "terminate_service_legacy_type_EPCC": "Hosted Private Cloud", + "terminate_service_legacy_type_dedicated_ceph": "Ceph as a Service", + "terminate_service_legacy_type_dedicated_housing": "Servidor housing", + "terminate_service_legacy_type_dedicated_nas": "Nas dedicado", + "terminate_service_legacy_type_dedicated_nasha": "NasHa dedicado", + "terminate_service_legacy_type_dedicated_server": "Servidor dedicado", + "terminate_service_legacy_type_deskaas": "DeskAaS", + "terminate_service_legacy_type_domain": "Domínio", + "terminate_service_legacy_type_domain_zone": "Zona do domínio", + "terminate_service_legacy_type_email_domain": "MX Plan", + "terminate_service_legacy_type_email_exchange": "Exchange", + "terminate_service_legacy_type_email_pro": "E-mail Pro", + "terminate_service_legacy_type_freefax": "Free FAX", + "terminate_service_legacy_type_hosting_privateDatabase": "Alojamento base SQL Privado", + "terminate_service_legacy_type_hosting_reseller": "Alojamento multisite", + "terminate_service_legacy_type_hosting_web": "Alojamento web", + "terminate_service_legacy_type_ip_service": "IP", + "terminate_service_legacy_type_ipLoadbalancing": "Load balancing", + "terminate_service_legacy_type_ip_loadBalancing": "IP Load Balancer", + "terminate_service_legacy_type_license_cloudLinux": "Licença CloudLinux", + "terminate_service_legacy_type_license_office": "Licença Office 365", + "terminate_service_legacy_type_license_plesk": "Licença Plesk", + "terminate_service_legacy_type_license_cpanel": "Licença cPanel", + "terminate_service_legacy_type_license_windows": "Licença Windows", + "terminate_service_legacy_type_metrics": "Estatísticas", + "terminate_service_legacy_type_msServices_sharepoint": "Sharepoint", + "terminate_service_legacy_type_overTheBox": "OverTheBox", + "terminate_service_legacy_type_paas_database": "PaaS Database", + "terminate_service_legacy_type_paas_monitoring": "PaaS Monitoring", + "terminate_service_legacy_type_pack_xdsl": "Pack xDSL", + "terminate_service_legacy_type_router": "Router", + "terminate_service_legacy_type_saas_csp2": "Office 365 Revendeur", + "terminate_service_legacy_type_sms": "SMS", + "terminate_service_legacy_type_sms_virtualNumbers": "SMS número virtual", + "terminate_service_legacy_type_sslGateway": "SSL Gateway", + "terminate_service_legacy_type_stack_mis": "MIS", + "terminate_service_legacy_type_telephony": "Serviço Telefónico", + "terminate_service_legacy_type_telephony_aliases": "Serviço Telefónico", + "terminate_service_legacy_type_telephony_lines": "Serviço Telefónico", + "terminate_service_legacy_type_telephony_trunks": "Serviço Telefónico", + "terminate_service_legacy_type_veeamCloudConnect": "Veeam Cloud Connect", + "terminate_service_legacy_type_vps": "Servidores privados virtuais", + "terminate_service_legacy_type_xdsl": "Linha xDSL", + "terminate_service_legacy_type_kube": "Kubernetes", + "terminate_service_legacy_type_webcoach": "WebCoach", + "terminate_service_legacy_comments": "Comentários", + "terminate_service_legacy_type_MBM": "Managed Bare Metal" +} diff --git a/packages/manager/modules/new-billing/src/confirmTerminate/termination.module.js b/packages/manager/modules/new-billing/src/confirmTerminate/termination.module.js new file mode 100644 index 000000000000..21dbd4c40620 --- /dev/null +++ b/packages/manager/modules/new-billing/src/confirmTerminate/termination.module.js @@ -0,0 +1,25 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import billingComponents from '@ovh-ux/manager-billing-components'; +import routing from './termination.routing'; + +import legacyService from './legacy/termination-legacy.service'; + +const moduleName = 'ovhManagerBillingTermination'; + +angular + .module(moduleName, [ + angularTranslate, + billingComponents, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .config(routing) + .service('BillingTerminateLegacy', legacyService); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/confirmTerminate/termination.routing.js b/packages/manager/modules/new-billing/src/confirmTerminate/termination.routing.js new file mode 100644 index 000000000000..c6a5025457b9 --- /dev/null +++ b/packages/manager/modules/new-billing/src/confirmTerminate/termination.routing.js @@ -0,0 +1,89 @@ +import controller from './legacy/termination-legacy.controller'; +import template from './legacy/termination-legacy.html'; + +export default /* @ngInject */ ($stateProvider, coreConfigProvider) => { + if (coreConfigProvider.isRegion('US')) { + $stateProvider.state('billing.confirmTerminate', { + url: '/confirmTerminate?id&token', + template, + controller, + controllerAs: 'TerminateServiceCtrl', + translations: { value: ['./legacy', '../autoRenew'], format: 'json' }, + redirectTo: (transition) => { + const injector = transition.injector(); + return injector + .getAsync('hasAgoraTermination') + .then((hasAgoraTermination) => { + return hasAgoraTermination + ? 'billing.confirmTerminateAgora' + : false; + }); + }, + resolve: { + planCode: /* @ngInject */ (BillingTerminate, $transition$) => + BillingTerminate.getServiceApi($transition$.params().id).then( + (service) => service.billing.plan.code, + ), + hasAgoraTermination: /* @ngInject */ (BillingTerminate, planCode) => + BillingTerminate.constructor.hasAgoraTermination(planCode), + hideBreadcrumb: () => true, + }, + }); + + // temporary state to enable agora resiliation on US side + $stateProvider.state('billing.confirmTerminateAgora', { + url: '/confirm-terminate?id&token', + component: 'billingConfirmTermination', + redirectTo: (transition) => { + const injector = transition.injector(); + return injector + .getAsync('hasAgoraTermination') + .then((hasAgoraTermination) => { + return !hasAgoraTermination ? 'billing.confirmTerminate' : false; + }); + }, + resolve: { + confirmTermination: /* @ngInject */ ( + BillingTerminate, + service, + token, + ) => () => BillingTerminate.confirmTermination(service, token), + questions: /* @ngInject */ (BillingTerminate, serviceId) => + BillingTerminate.getTerminationForm(serviceId).then( + ({ questions }) => questions, + ), + service: /* @ngInject */ (BillingTerminate, serviceId) => + BillingTerminate.getServiceApi(serviceId), + planCode: /* @ngInject */ (service) => service.billing.plan.code, + serviceId: /* @ngInject */ ($transition$) => $transition$.params().id, + token: /* @ngInject */ ($transition$) => $transition$.params().token, + user: /* @ngInject */ (currentUser) => currentUser, + hasAgoraTermination: /* @ngInject */ (BillingTerminate, planCode) => + BillingTerminate.constructor.hasAgoraTermination(planCode), + hideBreadcrumb: () => true, + }, + }); + } else { + $stateProvider.state('billing.confirmTerminate', { + url: '/confirmTerminate?id&token', + component: 'billingConfirmTermination', + resolve: { + confirmTermination: /* @ngInject */ ( + BillingTerminate, + service, + token, + ) => () => BillingTerminate.confirmTermination(service, token), + questions: /* @ngInject */ (BillingTerminate, serviceId) => + BillingTerminate.getTerminationForm(serviceId).then( + ({ questions }) => questions, + ), + service: /* @ngInject */ (BillingTerminate, serviceId) => + BillingTerminate.getServiceApi(serviceId), + serviceId: /* @ngInject */ ($transition$) => $transition$.params().id, + token: /* @ngInject */ ($transition$) => $transition$.params().token, + user: /* @ngInject */ (currentUser) => currentUser, + hideBreadcrumb: () => true, + }, + }); + } +}; diff --git a/packages/manager/modules/new-billing/src/constants/autorenewEvent.constants.js b/packages/manager/modules/new-billing/src/constants/autorenewEvent.constants.js new file mode 100644 index 000000000000..6d219bd01900 --- /dev/null +++ b/packages/manager/modules/new-billing/src/constants/autorenewEvent.constants.js @@ -0,0 +1,20 @@ +export const TERMINATE_AT_EXPIRATION = 'ServiceTerminateAtExpiration'; +export const TERMINATE = 'ServiceTerminate'; +export const CANCEL_TERMINATE = 'ServiceCancelTerminate'; +export const ACTIVATE_AUTO_PAYMENT = 'ServiceActivateAutomaticPayment'; +export const DEACTIVATE_AUTO_PAYMENT = 'ServiceDeactivateAutomaticPayment'; +export const MODIFY = 'ServiceModify'; +export const PAY = 'ServicePay'; +export const DISABLE_AUTOMATIC_PAYMENT_FOR_DOMAINS = + 'DisableAutomaticPaymentForDomains'; + +export default { + TERMINATE_AT_EXPIRATION, + TERMINATE, + CANCEL_TERMINATE, + ACTIVATE_AUTO_PAYMENT, + DEACTIVATE_AUTO_PAYMENT, + MODIFY, + PAY, + DISABLE_AUTOMATIC_PAYMENT_FOR_DOMAINS, +}; diff --git a/packages/manager/modules/new-billing/src/constants/billing.constants.js b/packages/manager/modules/new-billing/src/constants/billing.constants.js new file mode 100644 index 000000000000..3f5bd8bb7394 --- /dev/null +++ b/packages/manager/modules/new-billing/src/constants/billing.constants.js @@ -0,0 +1,5 @@ +export const BILLING_BASE_URL = 'billing/'; + +export default { + BILLING_BASE_URL, +}; diff --git a/packages/manager/modules/new-billing/src/constants/fidelityEvent.constants.js b/packages/manager/modules/new-billing/src/constants/fidelityEvent.constants.js new file mode 100644 index 000000000000..71517938f116 --- /dev/null +++ b/packages/manager/modules/new-billing/src/constants/fidelityEvent.constants.js @@ -0,0 +1,4 @@ +export const CREDIT = 'FidelityCredit'; +export default { + CREDIT, +}; diff --git a/packages/manager/modules/new-billing/src/constants/guides-header.constants.js b/packages/manager/modules/new-billing/src/constants/guides-header.constants.js new file mode 100644 index 000000000000..a8b731a7a9f7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/constants/guides-header.constants.js @@ -0,0 +1,179 @@ +export const MANAGE_PAYMENT_METHODS = { + FR: 'https://docs.ovh.com/fr/billing/manage-payment-methods/', + GB: 'https://docs.ovh.com/gb/en/billing/manage-payment-methods/', + DE: 'https://docs.ovh.com/de/billing/zahlungsarten-verwalten/', + ES: 'https://docs.ovh.com/es/billing/gestionar-formas-de-pago/', + IT: 'https://docs.ovh.com/it/billing/manage-payment-methods/', + PL: 'https://docs.ovh.com/pl/billing/zarzadzanie-sposobami-platnosci/', + PT: 'https://docs.ovh.com/pt/billing/gerir-metodos-de-pagamento/', + IE: 'https://docs.ovh.com/ie/en/billing/manage-payment-methods/', + DEFAULT: 'https://docs.ovh.com/gb/en/billing/manage-payment-methods/', + US: + 'https://support.us.ovhcloud.com/hc/en-us/articles/115001824230-How-to-Manage-Your-Payment-Methods-with-OVHcloud', + ASIA: 'https://docs.ovh.com/asia/en/billing/manage-payment-methods/', + AU: 'https://docs.ovh.com/au/en/billing/manage-payment-methods/', + CA: 'https://docs.ovh.com/ca/en/billing/manage-payment-methods/', + QC: 'https://docs.ovh.com/ca/fr/billing/manage-payment-methods/', + SG: 'https://docs.ovh.com/sg/en/billing/manage-payment-methods/', + WE: 'https://docs.ovh.com/us/en/billing/manage-payment-methods/', + WS: 'https://docs.ovh.com/us/es/billing/gestionar-formas-de-pago/', + MA: 'https://docs.ovh.com/fr/billing/manage-payment-methods/', + TN: 'https://docs.ovh.com/fr/billing/manage-payment-methods/', + SN: 'https://docs.ovh.com/fr/billing/manage-payment-methods/', + IN: 'https://docs.ovh.com/asia/en/billing/manage-payment-methods/', +}; + +export const MANAGING_ORDERS = { + FR: 'https://docs.ovh.com/fr/billing/gerer-ses-commandes-ovh/', + GB: 'https://docs.ovh.com/gb/en/billing/managing-ovh-orders/', + DE: 'https://docs.ovh.com/de/billing/bestellungen-verwalten-ovh/', + ES: 'https://docs.ovh.com/es/billing/gestionar-los-pedidos-en-ovh/', + IT: 'https://docs.ovh.com/it/billing/gestire-ordini-ovh/', + PL: 'https://docs.ovh.com/pl/billing/zarzadzanie-zamowieniami-ovh/', + PT: 'https://docs.ovh.com/pt/billing/gerir-as-encomendas-ovh/', + IE: 'https://docs.ovh.com/ie/en/billing/managing-ovh-orders/', + DEFAULT: 'https://docs.ovh.com/gb/en/billing/managing-ovh-orders/', + US: + 'https://support.us.ovhcloud.com/hc/en-us/articles/4408994807827-How-to-Manage-OVHcloud-Orders', + ASIA: 'https://docs.ovh.com/asia/en/billing/managing-ovh-orders/', + AU: 'https://docs.ovh.com/au/en/billing/managing-ovh-orders/', + CA: 'https://docs.ovh.com/ca/en/billing/managing-ovh-orders/', + QC: 'https://docs.ovh.com/ca/fr/billing/gerer-ses-commandes-ovh/', + SG: 'https://docs.ovh.com/sg/en/billing/managing-ovh-orders/', + WE: 'https://docs.ovh.com/us/en/billing/managing-ovh-orders/', + WS: 'https://docs.ovh.com/us/es/billing/gestionar-los-pedidos-en-ovh/', + MA: 'https://docs.ovh.com/fr/billing/gerer-ses-commandes-ovh/', + TN: 'https://docs.ovh.com/fr/billing/gerer-ses-commandes-ovh/', + SN: 'https://docs.ovh.com/fr/billing/gerer-ses-commandes-ovh/', + IN: 'https://docs.ovh.com/asia/en/billing/managing-ovh-orders/', +}; + +export const PURCHASE_ORDER = { + FR: 'https://docs.ovh.com/fr/billing/purchase-order/', + GB: 'https://docs.ovh.com/gb/en/billing/purchase-order/', + DE: 'https://docs.ovh.com/de/billing/purchase-order/', + ES: 'https://docs.ovh.com/es/billing/purchase-order/', + IT: 'https://docs.ovh.com/it/billing/purchase-order/', + PL: 'https://docs.ovh.com/pl/billing/purchase-order/', + PT: 'https://docs.ovh.com/pt/billing/purchase-order/', + IE: 'https://docs.ovh.com/ie/en/billing/purchase-order/', + DEFAULT: 'https://docs.ovh.com/gb/en/billing/purchase-order/', + ASIA: 'https://docs.ovh.com/asia/en/billing/purchase-order/', + AU: 'https://docs.ovh.com/au/en/billing/purchase-order/', + CA: 'https://docs.ovh.com/ca/en/billing/purchase-order/', + QC: 'https://docs.ovh.com/ca/fr/billing/purchase-order/', + SG: 'https://docs.ovh.com/sg/en/billing/purchase-order/', + WE: 'https://docs.ovh.com/us/en/billing/purchase-order/', + WS: 'https://docs.ovh.com/us/es/billing/purchase-order/', + MA: 'https://docs.ovh.com/fr/billing/purchase-order/', + TN: 'https://docs.ovh.com/fr/billing/purchase-order/', + SN: 'https://docs.ovh.com/fr/billing/purchase-order/', + IN: 'https://docs.ovh.com/asia/en/billing/purchase-order/', +}; + +export const MANAGING_BILLS = { + FR: 'https://docs.ovh.com/fr/billing/gerer-factures-ovh/', + GB: 'https://docs.ovh.com/gb/en/billing/manage-ovh-bills/', + DE: 'https://docs.ovh.com/de/billing/ovh-rechnungen-verwalten/', + ES: 'https://docs.ovh.com/es/billing/gestionar-facturas-ovh/', + IT: 'https://docs.ovh.com/it/billing/gestire-fatture-ovhcloud/', + PL: 'https://docs.ovh.com/pl/billing/zarzadzanie-fakturami-ovhcloud/', + PT: 'https://docs.ovh.com/pt/billing/gerir-faturas-ovhcloud/', + IE: 'https://docs.ovh.com/ie/en/billing/manage-ovh-bills/', + DEFAULT: 'https://docs.ovh.com/gb/en/billing/manage-ovh-bills/', + US: + 'https://support.us.ovhcloud.com/hc/en-us/articles/4408612881939-How-to-Manage-OVHcloud-Bills', + ASIA: 'https://docs.ovh.com/asia/en/billing/manage-ovh-bills/', + AU: 'https://docs.ovh.com/au/en/billing/manage-ovh-bills/', + CA: 'https://docs.ovh.com/ca/en/billing/manage-ovh-bills/', + QC: 'https://docs.ovh.com/ca/fr/billing/gerer-factures-ovh/', + SG: 'https://docs.ovh.com/sg/en/billing/manage-ovh-bills/', + WE: 'https://docs.ovh.com/us/en/billing/manage-ovh-bills/', + WS: 'https://docs.ovh.com/us/es/billing/gestionar-facturas-ovh/', + MA: 'https://docs.ovh.com/fr/billing/gerer-factures-ovh/', + TN: 'https://docs.ovh.com/fr/billing/gerer-factures-ovh/', + SN: 'https://docs.ovh.com/fr/billing/gerer-factures-ovh/', + IN: 'https://docs.ovh.com/asia/en/billing/manage-ovh-bills/', +}; + +export const AUTOMATIC_RENEWAL = { + FR: 'https://docs.ovh.com/fr/billing/renouvellement-automatique-ovh/', + GB: 'https://docs.ovh.com/gb/en/billing/how-to-use-automatic-renewal-at-ovh/', + DE: + 'https://docs.ovh.com/de/billing/anleitung_zur_nutzung_der_automatischen_verlangerung_bei_ovh/', + ES: 'https://docs.ovh.com/es/billing/renovacion-automatica-ovh/', + IT: + 'https://docs.ovh.com/it/billing/imposta_il_rinnovo_automatico_dei_tuoi_servizi_ovh/', + PL: + 'https://docs.ovh.com/pl/billing/przewodnik_dotyczacy_opcji_automatycznego_odnawiania_uslug_w_ovh/', + PT: + 'https://docs.ovh.com/pt/billing/guia_de_utilizacao_da_renovacao_automatica_da_ovh/', + IE: 'https://docs.ovh.com/ie/en/billing/how-to-use-automatic-renewal-at-ovh/', + DEFAULT: + 'https://docs.ovh.com/gb/en/billing/how-to-use-automatic-renewal-at-ovh/', + US: + 'https://support.us.ovhcloud.com/hc/en-us/articles/4406907355155-How-to-Manage-Your-Commitments-in-the-OVHcloud-Control-Panel', + ASIA: + 'https://docs.ovh.com/asia/en/billing/how-to-use-automatic-renewal-at-ovh/', + AU: 'https://docs.ovh.com/au/en/billing/how-to-use-automatic-renewal-at-ovh/', + CA: 'https://docs.ovh.com/ca/en/billing/how-to-use-automatic-renewal-at-ovh/', + QC: 'https://docs.ovh.com/ca/fr/billing/renouvellement-automatique-ovh/', + SG: 'https://docs.ovh.com/sg/en/billing/how-to-use-automatic-renewal-at-ovh/', + WE: 'https://docs.ovh.com/us/en/billing/how-to-use-automatic-renewal-at-ovh/', + WS: 'https://docs.ovh.com/us/es/billing/renovacion-automatica-ovh/', + MA: 'https://docs.ovh.com/fr/billing/renouvellement-automatique-ovh/', + TN: 'https://docs.ovh.com/fr/billing/renouvellement-automatique-ovh/', + SN: 'https://docs.ovh.com/fr/billing/renouvellement-automatique-ovh/', + IN: + 'https://docs.ovh.com/asia/en/billing/how-to-use-automatic-renewal-at-ovh/', +}; + +export const PREFIX_UNIVERSE_NAME = 'billing'; + +export const GUIDE_TRACKING_TAG = { + payment_method: `${PREFIX_UNIVERSE_NAME}_payment_method`, + my_orders: `${PREFIX_UNIVERSE_NAME}_my_orders`, + my_invoices: `${PREFIX_UNIVERSE_NAME}_my_invoices`, + my_services: `${PREFIX_UNIVERSE_NAME}_my_services`, +}; + +export const GUIDES_LIST = { + payment_method: { + manage_payment_methods: { + url: MANAGE_PAYMENT_METHODS, + key: 'manage_payment_methods_guides', + tracking: '::guides::manage_payment_methods', + }, + }, + my_orders: { + managing_orders: { + url: MANAGING_ORDERS, + key: 'managing_orders_guides', + tracking: '::guides::managing_orders', + }, + purchase_order: { + url: PURCHASE_ORDER, + key: 'purchase_order_guides', + tracking: '::guides::purchase_order', + }, + }, + my_invoices: { + managing_bills: { + url: MANAGING_BILLS, + key: 'managing_bills_guides', + tracking: '::guides::managing_bills', + }, + }, + my_services: { + automatic_renewal: { + url: AUTOMATIC_RENEWAL, + key: 'automatic_renewal_guides', + tracking: '::guides::automatic_renewal', + }, + }, +}; + +export default { + GUIDES_LIST, + GUIDE_TRACKING_TAG, +}; diff --git a/packages/manager/modules/new-billing/src/constants/ovhAccountEvent.constants.js b/packages/manager/modules/new-billing/src/constants/ovhAccountEvent.constants.js new file mode 100644 index 000000000000..fd4f6b0418a1 --- /dev/null +++ b/packages/manager/modules/new-billing/src/constants/ovhAccountEvent.constants.js @@ -0,0 +1,9 @@ +export const CREDIT = 'PrepaidAccountCredit'; +export const TRANSFER_TO_BANK_ACCOUNT = 'PrepaidAccountTransferToBankAccount'; +export const ALERT = 'PrepaidAccountAlert'; + +export default { + CREDIT, + TRANSFER_TO_BANK_ACCOUNT, + ALERT, +}; diff --git a/packages/manager/modules/new-billing/src/constants/paymentEvent.constants.js b/packages/manager/modules/new-billing/src/constants/paymentEvent.constants.js new file mode 100644 index 000000000000..89357663d2a2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/constants/paymentEvent.constants.js @@ -0,0 +1,5 @@ +export const PAYMENT_MEANS_DISPLAYED = 'PaymentMeansDisplayed'; + +export default { + PAYMENT_MEANS_DISPLAYED, +}; diff --git a/packages/manager/modules/new-billing/src/dbtAccount/billing-debtAccount.service.js b/packages/manager/modules/new-billing/src/dbtAccount/billing-debtAccount.service.js new file mode 100644 index 000000000000..a98ae341457f --- /dev/null +++ b/packages/manager/modules/new-billing/src/dbtAccount/billing-debtAccount.service.js @@ -0,0 +1,103 @@ +import forOwn from 'lodash/forOwn'; + +export default /* @ngInject */ function BillingDebtAccount( + $q, + $cacheFactory, + OvhHttp, +) { + const cache = { + debtAccount: 'UNIVERS_BILLING_DEBT_CREDITS_ACCOUNT', + debts: 'UNIVERS_BILLING_DEBT_CREDITS_DEBTS', + debtOperations: 'UNIVERS_BILLING_DEBT_CREDITS_OPERATIONS', + }; + + this.getDebtAccount = function getDebtAccount() { + return OvhHttp.get('/me/debtAccount', { + rootPath: 'apiv6', + cache: cache.debtAccount, + returnErrorKey: '', + }); + }; + + this.getDebts = function getDebts() { + return OvhHttp.get('/me/debtAccount/debt', { + rootPath: 'apiv6', + cache: cache.debts, + }); + }; + + this.getDebtDetails = function getDebtDetails(debtId) { + return OvhHttp.get('/me/debtAccount/debt/{debtId}', { + rootPath: 'apiv6', + urlParams: { + debtId, + }, + cache: cache.debts, + }); + }; + + this.getDebtOperations = function getDebtOperations(debtId) { + return OvhHttp.get('/me/debtAccount/debt/{debtId}/operation', { + rootPath: 'apiv6', + urlParams: { + debtId, + }, + cache: cache.debtOperations, + }); + }; + + this.getDebtOperationDetail = function getDebtOperationDetail( + debtId, + operationId, + ) { + return OvhHttp.get( + '/me/debtAccount/debt/{debtId}/operation/{operationId}', + { + rootPath: 'apiv6', + urlParams: { + debtId, + operationId, + }, + cache: cache.debtOperations, + }, + ); + }; + + /** + * Creates a BC that allows the payment of outstanding debts. + */ + this.payDebt = function payDebt(debt) { + if (debt && debt.debtId) { + return OvhHttp.post('/me/debtAccount/debt/{debtId}/pay', { + rootPath: 'apiv6', + urlParams: { + debtId: debt.debtId, + }, + }); + } + + return OvhHttp.post('/me/debtAccount/pay', { + rootPath: 'apiv6', + }); + }; + + this.payDebtWithPaymentMethod = function payDebtWithPaymentMethod( + paymentMethodId, + ) { + return OvhHttp.post('/me/debtAccount/pay', { + rootPath: 'apiv6', + data: { + paymentMethodId, + }, + }); + }; + + this.clearCache = function clearCache() { + forOwn(cache, (cacheName) => { + const cacheInstance = $cacheFactory.get(cacheName); + if (cacheInstance) { + cacheInstance.removeAll(); + } + }); + }; +} diff --git a/packages/manager/modules/new-billing/src/index.js b/packages/manager/modules/new-billing/src/index.js new file mode 100644 index 000000000000..836c63f9ede1 --- /dev/null +++ b/packages/manager/modules/new-billing/src/index.js @@ -0,0 +1,68 @@ +import angular from 'angular'; + +import '@uirouter/angularjs'; +import 'oclazyload'; + +import '@ovh-ux/ng-ui-router-breadcrumb'; +import 'ovh-api-services'; +import 'core-js/stable'; + +import ngOvhExportCsv from '@ovh-ux/ng-ovh-export-csv'; +import ngOvhUtils from '@ovh-ux/ng-ovh-utils'; +import ngRoute from 'angular-route'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import ngSanitize from 'angular-sanitize'; + +import ngAtInternetUiRouterPlugin from '@ovh-ux/ng-at-internet-ui-router-plugin'; +import ngOvhPaymentMethod from '@ovh-ux/ng-ovh-payment-method'; +import ngUiRouterLayout from '@ovh-ux/ng-ui-router-layout'; +import ngOvhFeatureFlipping from '@ovh-ux/ng-ovh-feature-flipping'; +import ngOvhOrderTracking from '@ovh-ux/ng-ovh-order-tracking'; +import ngOvhContacts from '@ovh-ux/ng-ovh-contacts'; +import ngOvhUserPref from '@ovh-ux/ng-ovh-user-pref'; + +import 'bootstrap'; +import 'angular-ui-bootstrap'; +import 'punycode'; + +const moduleName = 'ovhManagerDedicatedBillingLazyLoading'; + +angular + .module(moduleName, [ + 'ui.select', + 'ngRoute', + 'ngSanitize', + 'ovh-api-services', + ngOvhUserPref, + 'ui.router', + 'oc.lazyLoad', + ngOvhExportCsv, + ngOvhUtils, + ngRoute, + ngTranslateAsyncLoader, + ngSanitize, + ngAtInternetUiRouterPlugin, + ngOvhPaymentMethod, + ngUiRouterLayout, + ngOvhFeatureFlipping, + ngOvhOrderTracking, + ngOvhContacts, + 'ngUiRouterBreadcrumb', + ngAtInternetUiRouterPlugin, + ]) + .config( + /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.**', { + url: '/', + lazyLoad: ($transition$) => { + const $ocLazyLoad = $transition$.injector().get('$ocLazyLoad'); + + return import('./billing.module').then((mod) => + $ocLazyLoad.inject(mod.default || mod), + ); + }, + }); + }, + ); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/main/billing-main.controller.js b/packages/manager/modules/new-billing/src/main/billing-main.controller.js new file mode 100644 index 000000000000..0ab91713f330 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/billing-main.controller.js @@ -0,0 +1,22 @@ +export default class BillingMainCtrl { + /* @ngInject */ + constructor( + $translate, + coreConfig, + isPayAsYouGoAvailable, + guides, + trackClick, + ) { + this.$translate = $translate; + this.coreConfig = coreConfig; + this.isPayAsYouGoAvailable = isPayAsYouGoAvailable; + this.guides = guides; + this.trackClick = trackClick; + } + + descriptionOfHeading() { + return this.coreConfig.getRegion() !== 'US' + ? this.$translate.instant('billing_main_description') + : ''; + } +} diff --git a/packages/manager/modules/new-billing/src/main/billing-main.html b/packages/manager/modules/new-billing/src/main/billing-main.html new file mode 100644 index 000000000000..989d7b602e3e --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/billing-main.html @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + +
+ +
diff --git a/packages/manager/modules/new-billing/src/main/billing-main.module.js b/packages/manager/modules/new-billing/src/main/billing-main.module.js new file mode 100644 index 000000000000..f3531af39a81 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/billing-main.module.js @@ -0,0 +1,30 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ovhManagerCore from '@ovh-ux/manager-core'; +import '@ovh-ux/ui-kit'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import uiRouter from '@uirouter/angularjs'; + +import history from './history/history.module'; +import payments from './payments/billing-payments.module'; +import payAsYouGo from './payAsYouGo/billing-main-pay-as-you-go.module'; + +import routing from './billing-main.routes'; + +const moduleName = 'ovhManagerBillingMain'; + +angular + .module(moduleName, [ + angularTranslate, + history, + ngTranslateAsyncLoader, + 'oui', + ovhManagerCore, + payments, + payAsYouGo, + uiRouter, + ]) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/main/billing-main.routes.js b/packages/manager/modules/new-billing/src/main/billing-main.routes.js new file mode 100644 index 000000000000..1bd494a05286 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/billing-main.routes.js @@ -0,0 +1,28 @@ +import controller from './billing-main.controller'; +import template from './billing-main.html'; + +export default /* @ngInject */ ($stateProvider, $urlServiceProvider) => { + $stateProvider.state('billing.main', { + url: '', + template, + controller, + controllerAs: '$ctrl', + redirectTo: 'billing.main.history', + resolve: { + isPayAsYouGoAvailable: /* @ngInject */ (ovhFeatureFlipping) => + ovhFeatureFlipping + .checkFeatureAvailability(['billing:payAsYouGo']) + .then((commitmentAvailability) => + commitmentAvailability.isFeatureAvailable('billing:payAsYouGo'), + ) + .catch(() => false), + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('billing_main_title'), + }, + }); + + $urlServiceProvider.rules.when( + '/billing/payment/refunds', + '/billing/refunds', + ); +}; diff --git a/packages/manager/modules/new-billing/src/main/history/balance/billing-history-balance.controller.js b/packages/manager/modules/new-billing/src/main/history/balance/billing-history-balance.controller.js new file mode 100644 index 000000000000..1f998f746b4f --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/balance/billing-history-balance.controller.js @@ -0,0 +1,141 @@ +import filter from 'lodash/filter'; +import find from 'lodash/find'; +import get from 'lodash/get'; + +export default class BillingHistoryBalanceCtrl { + /* @ngInject */ + constructor( + $q, + $state, + $translate, + OvhApiMe, + BillingDebtAccount, + ovhPaymentMethod, + Alerter, + ) { + this.$q = $q; + this.$state = $state; + this.$translate = $translate; + this.OvhApiMe = OvhApiMe; + this.BillingDebtAccount = BillingDebtAccount; + this.ovhPaymentMethod = ovhPaymentMethod; + this.Alerter = Alerter; + + this.balance = null; + this.depositRequests = null; + this.paymentAccepted = false; + + this.loading = { + init: false, + pay: false, + }; + this.model = { + paymentMethod: null, + }; + this.paymentSref = + "billing.payment.method.add({from: 'billing.main.history.balance'})"; + } + + getBalance() { + return this.BillingDebtAccount.getDebtAccount().catch((error) => { + if (error.status === 404) { + return { + active: false, + }; + } + + return this.$q.reject(error); + }); + } + + /* ============================= + = EVENTS = + ============================== */ + + onBalancePayFormSubmit() { + this.loading.pay = true; + + return this.BillingDebtAccount.payDebtWithPaymentMethod( + this.model.paymentMethod.id, + ) + .then(() => { + this.Alerter.success( + this.$translate.instant('billing_history_balance_pay_success', { + trackHref: this.$state.href('billing.payments.request'), + }), + 'billing_balance', + ); + this.paymentAccepted = true; + }) + .catch((error) => { + this.Alerter.alertFromSWS( + this.$translate.instant('billing_history_balance_pay_error'), + { + message: get(error, 'message'), + type: 'ERROR', + }, + 'billing_balance', + ); + }) + .finally(() => { + this.loading.pay = false; + }); + } + + /* ----- End of EVENTS ------ */ + + /* ===================================== + = INITIALIZATION = + ====================================== */ + + $onInit() { + this.loading.init = true; + + return this.OvhApiMe.DepositRequest() + .v6() + .query() + .$promise.then((deposit) => { + this.depositRequests = deposit; + + if (!this.depositRequests.length) { + return this.$q + .all({ + balance: this.getBalance(), + paymentMethods: this.ovhPaymentMethod.getPaymentMethods(), + }) + .then((response) => { + this.balance = response.balance; + this.paymentMethods = filter( + response.paymentMethods, + ({ paymentType, status }) => + ['INTERNAL_TRUSTED_ACCOUNT', 'ENTERPRISE'].indexOf( + paymentType, + ) === -1 && + ['CANCELED_BY_CUSTOMER', 'CANCELING'].indexOf(status) === -1, + ); + + this.model.paymentMethod = find(this.paymentMethods, { + default: true, + }); + }); + } + + return this.depositRequests; + }) + .catch((error) => { + this.Alerter.alertFromSWS( + this.$translate.instant('billing_history_balance_load_error'), + { + message: get(error, 'data.message'), + type: 'ERROR', + }, + 'billing_balance', + ); + }) + .finally(() => { + this.loading.init = false; + }); + } + + /* ----- End of INITIALIZATION ------ */ +} diff --git a/packages/manager/modules/new-billing/src/main/history/balance/billing-history-balance.html b/packages/manager/modules/new-billing/src/main/history/balance/billing-history-balance.html new file mode 100644 index 000000000000..3abcf6be4422 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/balance/billing-history-balance.html @@ -0,0 +1,109 @@ +
+ + + +
+ +
+ +
+ +
+ + + + + + +

+ + +
+ +
+
+ + + + +
+ +
+ + + + +
+ +
+
+
+
+ + +
+ + + +
+ + + +
+
+
+
+
+
+
diff --git a/packages/manager/modules/new-billing/src/main/history/balance/billing-history-balance.module.js b/packages/manager/modules/new-billing/src/main/history/balance/billing-history-balance.module.js new file mode 100644 index 000000000000..63921b9ea1e4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/balance/billing-history-balance.module.js @@ -0,0 +1,21 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import '@ovh-ux/ui-kit'; +import uiBootstrap from 'angular-ui-bootstrap'; +import uiRouter from '@uirouter/angularjs'; +import routing from './billing-history-balance.routes'; + +const moduleName = 'ovhManagerDedicatedBillingHistoryBalance'; + +angular + .module(moduleName, [ + angularTranslate, + 'oui', + 'ovh-api-services', + uiBootstrap, + uiRouter, + ]) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/main/history/balance/billing-history-balance.routes.js b/packages/manager/modules/new-billing/src/main/history/balance/billing-history-balance.routes.js new file mode 100644 index 000000000000..d5a188617a9f --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/balance/billing-history-balance.routes.js @@ -0,0 +1,17 @@ +import controller from './billing-history-balance.controller'; +import template from './billing-history-balance.html'; + +export default /* @ngInject */ ($stateProvider, coreConfigProvider) => { + if (coreConfigProvider.isRegion('US')) { + $stateProvider.state('billing.main.history.balance', { + url: '/balance', + template, + controller, + controllerAs: '$ctrl', + resolve: { + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('billing_history_balance_title'), + }, + }); + } +}; diff --git a/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_de_DE.json new file mode 100644 index 000000000000..9baaf3bd527b --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_de_DE.json @@ -0,0 +1,17 @@ +{ + "billing_history_balance_title": "Kontostand ausgleichen", + "billing_history_balance_cancel": "Abbrechen", + "billing_history_balance_explain": "Der aktuelle Kontostand beträgt {{ balance }}.", + "billing_history_balance_no_balance": "Es kann kein Guthaben für Ihren Account gefunden werden. Klicken Sie hier, um zur Liste der Abrechnungen zurückzukehren.", + "billing_history_balance_choose_payment_method": "Wählen Sie eine Zahlungsmethode aus", + "billing_history_balance_add_payment_method": "Fügen Sie eine Zahlungsmethode hinzu", + "billing_history_balance_no_payment_method": "Sie haben zurzeit keine gültige Zahlungsmethode. Bitte fügen Sie eine gültige Zahlungsmethode hinzu, bevor Sie Ihren Kontostand ausgleichen.", + "billing_history_balance_payment_doing": "Es wird bereits ein Bezahlvorgang durchgeführt. Bitte warten Sie, bis die Zahlung abgeschlossen ist, bevor Sie einen neuen Kontostand ausgleichen.", + "billing_history_balance_payment_go_tracking": "Weitere Informationen finden Sie auf der Seite der Zahlungsnachverfolgung.", + "billing_history_balance_load_error": "Beim Laden Ihres Kontostands ist ein Fehler aufgetreten.", + "billing_history_balance_pay_success": "Kontostandsausgleichung wird durchgeführt. Die Zahlung wird in wenigen Minuten abgeschlossen. Weitere Informationen finden Sie auf der Seite der Zahlungsnachverfolgung.", + "billing_history_balance_pay_error": "Beim Ausgleichen Ihres Kontos ist ein Fehler aufgetreten.", + "billing_history_balance_payment_method_subtype_american_express": "American Express", + "billing_history_balance_payment_method_subtype_mastercard": "Mastercard", + "billing_history_balance_payment_method_subtype_visa": "Visa" +} diff --git a/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_en_GB.json new file mode 100644 index 000000000000..236761e33192 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_en_GB.json @@ -0,0 +1,17 @@ +{ + "billing_history_balance_title": "Pay my account balance", + "billing_history_balance_cancel": "Cancel", + "billing_history_balance_explain": "Your current account balance is {{ balance }}.", + "billing_history_balance_no_balance": "No balance has been found for your account. Click here to go back to your invoice list.", + "billing_history_balance_choose_payment_method": "Choose a payment method", + "billing_history_balance_add_payment_method": "Add a payment method", + "billing_history_balance_no_payment_method": "You do not have any valid payment methods. Add a valid payment method before paying your balance.", + "billing_history_balance_payment_doing": "A balance payment is already in progress. Please wait for this payment to be processed before paying a new balance.", + "billing_history_balance_payment_go_tracking": "Go to the payment tracking page for further information.", + "billing_history_balance_load_error": "An error has occurred loading your balance.", + "billing_history_balance_pay_success": "Your balance payment has been processed. The payment will be effective shortly. Go to the payment tracking page for further information.", + "billing_history_balance_pay_error": "An error has occurred paying your balance.", + "billing_history_balance_payment_method_subtype_american_express": "American Express", + "billing_history_balance_payment_method_subtype_mastercard": "Mastercard", + "billing_history_balance_payment_method_subtype_visa": "Visa" +} diff --git a/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_es_ES.json new file mode 100644 index 000000000000..15f41c270cec --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_es_ES.json @@ -0,0 +1,17 @@ +{ + "billing_history_balance_title": "Pago del saldo", + "billing_history_balance_cancel": "Cancelar", + "billing_history_balance_explain": "Tiene un saldo de {{ balance }}.", + "billing_history_balance_no_balance": "No se ha encontrado ningún saldo en su cuenta. Haga clic aquí para volver a la lista de facturas.", + "billing_history_balance_choose_payment_method": "Seleccione una forma de pago", + "billing_history_balance_add_payment_method": "Añada una forma de pago", + "billing_history_balance_no_payment_method": "No ha registrado ninguna forma de pago válida. Añada una forma de pago válida antes de abonar el saldo.", + "billing_history_balance_payment_doing": "Ya hay un pago del saldo en curso. Espere a que este pago se realice antes de abonar un nuevo importe.", + "billing_history_balance_payment_go_tracking": "Acceda a la página de «Seguimiento de los pagos» para más información.", + "billing_history_balance_load_error": "Se ha producido un error al cargar el saldo.", + "billing_history_balance_pay_success": "El pago de su saldo se ha registrado correctamente y se hará efectivo en unos instantes. Acceda la página de «Seguimiento de los pagos» para más información.", + "billing_history_balance_pay_error": "Se ha producido un error al abonar el saldo.", + "billing_history_balance_payment_method_subtype_american_express": "American Express", + "billing_history_balance_payment_method_subtype_mastercard": "Mastercard", + "billing_history_balance_payment_method_subtype_visa": "Visa" +} diff --git a/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..b21c4a07b5c3 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_fr_CA.json @@ -0,0 +1,17 @@ +{ + "billing_history_balance_title": "Règlement de mon solde", + "billing_history_balance_cancel": "Annuler", + "billing_history_balance_explain": "Votre solde est actuellement de {{ balance }}.", + "billing_history_balance_no_balance": "Aucune balance n'a été trouvée sur votre compte. Cliquez ici pour retourner à la liste des factures.", + "billing_history_balance_choose_payment_method": "Choisissez une méthode de paiement", + "billing_history_balance_add_payment_method": "Ajoutez une méthode de paiement", + "billing_history_balance_no_payment_method": "Vous n'avez aucune méthode de paiement valide. Ajoutez une méthode de paiement valide avant de régler votre solde.", + "billing_history_balance_payment_doing": "Un règlement de solde est déjà en cours. Attendez que ce paiement soit effectué avant de règler un nouveau solde.", + "billing_history_balance_payment_go_tracking": "Rendez-vous sur la page des suivis de paiement pour plus d'informations.", + "billing_history_balance_load_error": "Une erreur est survenue lors du chargement de votre solde.", + "billing_history_balance_pay_success": "Le règlement de votre solde a bien été pris en compte. Le paiement prendra effet dans quelques instants. Rendez-vous sur la page des suivis de paiement pour plus d'informations.", + "billing_history_balance_pay_error": "Une erreur est survenue lors du règlement de votre solde.", + "billing_history_balance_payment_method_subtype_american_express": "American Express", + "billing_history_balance_payment_method_subtype_mastercard": "Mastercard", + "billing_history_balance_payment_method_subtype_visa": "Visa" +} diff --git a/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..0fec6f3777d3 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_fr_FR.json @@ -0,0 +1,17 @@ +{ + "billing_history_balance_title": "Règlement de mon solde", + "billing_history_balance_cancel": "Annuler", + "billing_history_balance_explain": "Votre solde est actuellement de {{ balance }}.", + "billing_history_balance_no_balance": "Aucune balance n'a été trouvée sur votre compte. Cliquez ici pour retourner à la liste des factures.", + "billing_history_balance_choose_payment_method": "Choisissez une méthode de paiement", + "billing_history_balance_add_payment_method": "Ajoutez une méthode de paiement", + "billing_history_balance_no_payment_method": "Vous n'avez aucune méthode de paiement valide. Ajoutez une méthode de paiement valide avant de régler votre solde.", + "billing_history_balance_payment_doing": "Un règlement de solde est déjà en cours. Attendez que ce paiement soit effectué avant de règler un nouveau solde.", + "billing_history_balance_payment_go_tracking": "Rendez-vous sur la page des suivis de paiement pour plus d'informations.", + "billing_history_balance_load_error": "Une erreur est survenue lors du chargement de votre solde.", + "billing_history_balance_pay_success": "Le règlement de votre solde a bien été pris en compte. Le paiement sera effectif dans quelques instants. Rendez-vous sur la page des suivis de paiement pour plus d'informations.", + "billing_history_balance_pay_error": "Une erreur est survenue lors du règlement de votre solde.", + "billing_history_balance_payment_method_subtype_american_express": "American Express", + "billing_history_balance_payment_method_subtype_mastercard": "Mastercard", + "billing_history_balance_payment_method_subtype_visa": "Visa" +} diff --git a/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_it_IT.json new file mode 100644 index 000000000000..a7752c974fb4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_it_IT.json @@ -0,0 +1,17 @@ +{ + "billing_history_balance_title": "Effettua il pagamento del tuo saldo", + "billing_history_balance_cancel": "Annulla", + "billing_history_balance_explain": "Il saldo del tuo account è di {{ balance }}.", + "billing_history_balance_no_balance": "Aucune balance n'a été trouvée sur votre compte. Clicca qui per tornare alla lista delle fatture.", + "billing_history_balance_choose_payment_method": "Scegli un metodo di pagamento", + "billing_history_balance_add_payment_method": "Aggiungi un metodo di pagamento", + "billing_history_balance_no_payment_method": "Non hai registrato alcun metodo di pagamento valido. Aggiungi un metodo di pagamento prima di pagare il tuo saldo.", + "billing_history_balance_payment_doing": "Un pagamento del saldo è già in corso ed è necessario attendere che venga elaborato prima di procedere a un nuovo pagamento.", + "billing_history_balance_payment_go_tracking": "Accedi alla pagina di monitoraggio dei pagamenti per ulteriori informazioni.", + "billing_history_balance_load_error": "Si è verificato un errore durante il caricamento del tuo saldo.", + "billing_history_balance_pay_success": "Il pagamento del tuo saldo è in fase di elaborazione e sarà effettivo tra qualche istante. Accedi alla pagina di monitoraggio dei pagamenti per ulteriori informazioni.", + "billing_history_balance_pay_error": "Si è verificato un errore durante il pagamento del tuo saldo.", + "billing_history_balance_payment_method_subtype_american_express": "American Express", + "billing_history_balance_payment_method_subtype_mastercard": "Mastercard", + "billing_history_balance_payment_method_subtype_visa": "Visa" +} diff --git a/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..1b1070d515a0 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_pl_PL.json @@ -0,0 +1,17 @@ +{ + "billing_history_balance_title": "Rozliczenie mojego salda", + "billing_history_balance_cancel": "Anuluj", + "billing_history_balance_explain": "Twoje saldo wynosi obecnie {{ balance }}.", + "billing_history_balance_no_balance": "Nie znaleziono salda dla Twojego konta. Kliknij tutaj, aby wrócić do listy faktur.", + "billing_history_balance_choose_payment_method": "Wybierz metodę płatności", + "billing_history_balance_add_payment_method": "Dodaj metodę płatności", + "billing_history_balance_no_payment_method": "Nie masz ważnych metod płatności. Dodaj metodę płatności, zanim uregulujesz Twoje saldo.", + "billing_history_balance_payment_doing": "Spłata salda jest już w toku. Zaczekaj na zakończenie tej płatności, zanim przystąpisz do kolejnej. ", + "billing_history_balance_payment_go_tracking": "Aby uzyskać szczegółowe informacje, przejdź do na stronie podsumowania płatności.", + "billing_history_balance_load_error": "Wystąpił błąd podczas ładowania Twojego salda. ", + "billing_history_balance_pay_success": "Spłata Twojego salda jest przetwarzana. Płatność zostanie uznana w ciągu kilku minut. Aby uzyskać szczegółowe informacje, przejdź do na stronie podsumowania płatności.", + "billing_history_balance_pay_error": "Wystąpił błąd podczas spłaty salda.", + "billing_history_balance_payment_method_subtype_american_express": "American Express", + "billing_history_balance_payment_method_subtype_mastercard": "Mastercard", + "billing_history_balance_payment_method_subtype_visa": "Visa" +} diff --git a/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..3a2894f8eb2e --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/balance/translations/Messages_pt_PT.json @@ -0,0 +1,17 @@ +{ + "billing_history_balance_title": "Pagar o saldo da minha conta", + "billing_history_balance_cancel": "Anular", + "billing_history_balance_explain": "Seu saldo atual é {{ balance }}.", + "billing_history_balance_no_balance": "Nenhum saldo foi encontrado para sua conta. Clique aqui para retornar à lista de faturas.", + "billing_history_balance_choose_payment_method": "Escolha um método de pagamento", + "billing_history_balance_add_payment_method": "Adicione um método de pagamento", + "billing_history_balance_no_payment_method": "Você não tem um método de pagamento válido. Adicione um método de pagamento válido antes de pagar seu saldo.", + "billing_history_balance_payment_doing": "Um pagamento de saldo já está em andamento. Por favor, aguarde que este pagamento seja processado antes de pagar um novo saldo.", + "billing_history_balance_payment_go_tracking": "Vá para página de rastreamento de pagamento para mais informação.", + "billing_history_balance_load_error": "Ocorreu um erro ao carregar seu saldo.", + "billing_history_balance_pay_success": "Seu pagamento do saldo devido foi processado. O pagamento será efetivado em breve. Vá para a página de rastreamento de pagamento para mais informações.", + "billing_history_balance_pay_error": "Ocorreu um erro ao tentar pagar seu saldo.", + "billing_history_balance_payment_method_subtype_american_express": "American Express", + "billing_history_balance_payment_method_subtype_mastercard": "Mastercard", + "billing_history_balance_payment_method_subtype_visa": "Visa" +} diff --git a/packages/manager/modules/new-billing/src/main/history/billing-main-history.controller.js b/packages/manager/modules/new-billing/src/main/history/billing-main-history.controller.js new file mode 100644 index 000000000000..e7c5d2a0ada6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/billing-main-history.controller.js @@ -0,0 +1,119 @@ +import { ListLayoutHelper } from '@ovh-ux/manager-ng-layout-helpers'; + +import get from 'lodash/get'; + +export default class BillingMainHistoryCtrl extends ListLayoutHelper.ListLayoutCtrl { + /* @ngInject */ + constructor( + $q, + $translate, + $uibModal, + Alerter, + atInternet, + ouiDatagridService, + ) { + super($q, ouiDatagridService); + this.$translate = $translate; + this.$uibModal = $uibModal; + this.Alerter = Alerter; + this.atInternet = atInternet; + } + + trackInvoiceOpening(format) { + this.atInternet.trackClick({ + name: `open-invoices-${format}`, + type: 'action', + chapter1: 'billing', + chapter2: 'invoices', + }); + } + + trackExport(exportType) { + this.atInternet.trackClick({ + name: `export-${exportType}`, + type: 'action', + chapter1: 'billing', + chapter2: 'invoices', + chapter3: 'export', + }); + } + + exportAll(format) { + this.trackExport(format); + return this.export(format, this.bills); + } + + exportSelection(format) { + this.trackExport(`${format}-select`); + return this.export( + format, + this.selectedBills.map(({ billId }) => billId), + ); + } + + export(format, bills) { + return this.exportBills(format, bills) + .then(() => + this.Alerter.success( + this.$translate.instant('billing_main_history_table_export_success'), + 'billing_main_alert', + ), + ) + .catch((error) => { + this.Alerter.error( + [ + this.$translate.instant('billing_main_history_table_export_error'), + get(error, 'data.message'), + ].join(' '), + 'billing_main_alert', + ); + }); + } + + onRowSelect($rows) { + this.selectedBills = $rows; + } + + onPostalMailOptionsChange() { + const postalOptionsModal = this.$uibModal.open({ + templateUrl: + 'billing/main/history/postalMailOptions/billing-main-history-postal-mail-options.html', + controller: 'BillingHistoryPostalMailOptionsCtrl', + controllerAs: '$ctrl', + resolve: { + postalMailOptionsActivated: () => !this.postalMailOptions.activated, + }, + }); + + return postalOptionsModal.result.catch(() => { + // reset the checkbox state in case modal is closed without confirm + this.postalMailOptions.activated = !this.postalMailOptions.activated; + }); + } + + $onInit() { + this.selectedBills = []; + this.defaultFilterColumn = 'billId'; + + super.$onInit(); + + this.postalMailOptions = { + enabled: !!this.invoicesByPostalMail, + activated: get(this.invoicesByPostalMail, 'data', false), + }; + + this.columnsConfig = [ + { name: 'billId', sortable: this.getSorting('billId') }, + { name: 'orderId', sortable: this.getSorting('orderId') }, + { name: 'date', sortable: this.getSorting('date') }, + { + name: 'priceWithoutTax.value', + sortable: this.getSorting('priceWithoutTax.value'), + }, + { + name: 'priceWithTax.value', + sortable: this.getSorting('priceWithTax.value'), + }, + ]; + } +} diff --git a/packages/manager/modules/new-billing/src/main/history/billing-main-history.html b/packages/manager/modules/new-billing/src/main/history/billing-main-history.html new file mode 100644 index 000000000000..e5e0a164ab49 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/billing-main-history.html @@ -0,0 +1,225 @@ +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + + + + + + +
+
+
+
diff --git a/packages/manager/modules/new-billing/src/main/history/billing-main-history.routes.js b/packages/manager/modules/new-billing/src/main/history/billing-main-history.routes.js new file mode 100644 index 000000000000..da4d9b207ac5 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/billing-main-history.routes.js @@ -0,0 +1,198 @@ +import { Bill, DebtAccount } from '@ovh-ux/manager-models'; +import { ListLayoutHelper } from '@ovh-ux/manager-ng-layout-helpers'; +import get from 'lodash/get'; +import omit from 'lodash/omit'; +import partition from 'lodash/partition'; + +const mapDateFilter = (comparator, value) => { + switch (comparator) { + case 'isAfter': + return { 'date.from': value }; + case 'isBefore': + return { 'date.to': value }; + case 'is': + return { + 'date.from': value, + 'date.to': moment(value) + .add(1, 'day') + .format('YYYY-MM-DD'), + }; + default: + return {}; + } +}; + +export default /* @ngInject */ ($stateProvider, coreConfigProvider) => { + if (coreConfigProvider.isRegion('US')) { + $stateProvider.state('billing.main.history', { + url: `/history?filter`, + params: { + filter: { + value: '[]', + squash: true, + }, + }, + component: 'billingLegacyHistory', + translations: { + value: ['./postalMailOptions'], + format: 'json', + }, + resolve: { + filters: /* @ngInject */ ($transition$) => $transition$.params().filter, + onListParamsChange: /* @ngInject */ ($state) => (params) => + $state.go('billing.main.history', params), + breadcrumb: () => null, + hideBreadcrumb: () => true, + }, + }); + } else { + $stateProvider.state('billing.main.history', { + url: `/history?${ListLayoutHelper.urlQueryParams}`, + params: { + ...ListLayoutHelper.stateParams, + sort: { + value: 'date', + squash: true, + }, + sortOrder: { + value: 'DESC', + squash: true, + }, + }, + component: 'billingHistory', + resolve: { + ...omit(ListLayoutHelper.stateResolves, [ + 'resources', + 'columns', + 'formatters', + 'mappings', + 'schema', + 'apiModel', + 'configuration', + 'displayedColumns', + ]), + bills: /* @ngInject */ (OvhApiMe) => + OvhApiMe.Bill() + .v6() + .query().$promise, + // Override ListLayoutHelper resources to use native filters for date + resources: /* @ngInject */ ($transition$, iceberg) => { + const { filter, pageSize, sort, sortOrder } = $transition$.params(); + let { page } = $transition$.params(); + const filters = JSON.parse(filter); + const [dateFilter, parsedFilters] = partition(filters, { + field: 'date', + }); + + const queryParams = dateFilter.reduce( + (params, date) => ({ + ...params, + ...mapDateFilter(date.comparator, date.reference[0]), + }), + {}, + ); + + const updatedParams = $transition$.paramsChanged(); + + // If we've updated the filters but not the page, + // it means we've only updated the filter in the url then reset page + // If the page is also updated, this means it comes from a direct url update + if (updatedParams.filter && !updatedParams.page) { + page = 1; + } + + const apiPath = '/me/bill'; + + let request = iceberg(apiPath) + .query() + .expand('CachedObjectList-Pages') + .limit(pageSize) + .offset(page) + .sort(sort, sortOrder); + + parsedFilters.forEach(({ field, comparator, reference }) => { + request = request.addFilter( + field, + get(ListLayoutHelper.FILTER_OPERATORS, comparator), + ListLayoutHelper.mapFilterForIceberg(comparator, reference), + ); + }); + + return request.execute(queryParams).$promise.then((bills) => ({ + ...bills, + data: bills.data.map((bill) => new Bill(bill)), + })); + }, + defaultFilterColumn: () => 'billId', + getDebt: /* @ngInject */ ($http, $q) => (bill) => + $http + .get(`/me/bill/${bill.billId}/debt`) + .then(({ data: debt }) => new Bill({ ...bill, debt })) + .catch((error) => + error.status === 404 ? new Bill(bill) : $q.reject(error), + ), + debtAccount: /* @ngInject */ ($q, OvhApiMe) => + OvhApiMe.DebtAccount() + .v6() + .get() + .$promise.then((debtAccount) => new DebtAccount(debtAccount)) + .catch((error) => { + if (error.status === 404) { + return new DebtAccount({ + active: false, + }); + } + + return $q.reject(error); + }), + exportBills: /* @ngInject */ ($http) => (archiveType, bills) => + $http.post('/me/bill/export', { + archiveType, + ids: bills, + }), + + invoicesByPostalMail: /* @ngInject */ ( + $q, + coreConfig, + currentUser, + OvhApiMe, + ) => + coreConfig.isRegion('EU') && currentUser.canHaveInvoicesByPostalMail() + ? OvhApiMe.Billing() + .InvoicesByPostalMail() + .v6() + .get().$promise + : $q.when(null), + + hasDefaultPaymentMethod: /* @ngInject */ (ovhPaymentMethod) => + ovhPaymentMethod.hasDefaultPaymentMethod(), + payDebt: /* @ngInject */ ($state) => (debtId) => + $state.go('billing.main.history.pay-debt', { + debtId, + }), + seeDebt: /* @ngInject */ ($state) => (billId, debtId) => + $state.go('billing.main.history.details.debt.details', { + billId, + debtId, + }), + isHtmlInvoiceAvailable: /* @ngInject */ (ovhFeatureFlipping) => { + const featureName = 'billing:hideHtmlInvoice'; + return ovhFeatureFlipping + .checkFeatureAvailability(featureName) + .then((feature) => !feature.isFeatureAvailable(featureName)); + }, + breadcrumb: () => null, + hideBreadcrumb: () => true, + }, + }); + } + + $stateProvider.state('billing.main.history.details', { + url: `/:billId`, + redirectTo: 'billing.main.history', + resolve: { + billId: /* @ngInject */ ($transition$) => $transition$.params().billId, + breadcrumb: /* @ngInject */ (billId) => billId, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/main/history/debt/billing-main-history-debt.module.js b/packages/manager/modules/new-billing/src/main/history/debt/billing-main-history-debt.module.js new file mode 100644 index 000000000000..e04c2b091898 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/billing-main-history-debt.module.js @@ -0,0 +1,13 @@ +import angular from 'angular'; +import uiRouter from '@uirouter/angularjs'; + +import details from './details/billing-main-history-debt-details.module'; +import pay from './pay/billing-main-history-debt-pay.module'; + +import routing from './billing-main-history-debt.routes'; + +const moduleName = 'ovhManagerBillingMainHistoryDebt'; + +angular.module(moduleName, [details, pay, uiRouter]).config(routing); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/main/history/debt/billing-main-history-debt.routes.js b/packages/manager/modules/new-billing/src/main/history/debt/billing-main-history-debt.routes.js new file mode 100644 index 000000000000..266fcf09cad9 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/billing-main-history-debt.routes.js @@ -0,0 +1,6 @@ +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.main.history.details.debt', { + url: '/debt/:debtId', + abstract: true, + }); +}; diff --git a/packages/manager/modules/new-billing/src/main/history/debt/details/billing-main-history-debt-details.controller.js b/packages/manager/modules/new-billing/src/main/history/debt/details/billing-main-history-debt-details.controller.js new file mode 100644 index 000000000000..9d34190f9b63 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/details/billing-main-history-debt-details.controller.js @@ -0,0 +1,124 @@ +import chunk from 'lodash/chunk'; +import filter from 'lodash/filter'; +import flatten from 'lodash/flatten'; +import get from 'lodash/get'; +import map from 'lodash/map'; + +export default class BillingHistoryDebtDetailsCtrl { + /* @ngInject */ + constructor($q, $state, $stateParams, $translate, OvhApiMe, Alerter) { + this.$q = $q; + this.$state = $state; + this.$stateParams = $stateParams; + this.$translate = $translate; + this.OvhApiMe = OvhApiMe; + this.Alerter = Alerter; + + this.bill = null; + this.order = null; + + this.loading = { + init: false, + }; + + this.operations = []; + } + + getOperations() { + return this.OvhApiMe.DebtAccount() + .Debt() + .Operation() + .v6() + .query({ + debtId: this.$stateParams.debtId, + }) + .$promise.then((operationIds) => this.getOperationsDetails(operationIds)); + } + + getOperationsDetails(operationIds) { + return this.$q + .all( + map(chunk(operationIds, 50), (chunkIds) => + this.OvhApiMe.DebtAccount() + .Debt() + .Operation() + .v6() + .getBatch({ + debtId: this.$stateParams.debtId, + operationId: chunkIds, + }) + .$promise.then((results) => filter(results, ({ error }) => !error)), + ), + ) + .then((resources) => map(flatten(resources), 'value')); + } + + getBill(orderId) { + return this.OvhApiMe.Order() + .v6() + .associatedObject({ + orderId, + }) + .$promise.then((associatedObject) => { + if (associatedObject.type === 'Bill') { + return this.OvhApiMe.Bill() + .v6() + .get({ + billId: associatedObject.id, + }).$promise; + } + + return null; + }); + } + + /* ===================================== + = INITIALIZATION = + ====================================== */ + + $onInit() { + this.loading.init = true; + + return this.$q + .all({ + debt: this.OvhApiMe.DebtAccount() + .Debt() + .v6() + .get({ + debtId: this.$stateParams.debtId, + }).$promise, + operations: this.getOperations(), + }) + .then((results) => { + this.operations = results.operations; + + return this.$q + .all({ + order: this.OvhApiMe.Order() + .v6() + .get({ + orderId: results.debt.orderId, + }).$promise, + bill: this.getBill(results.debt.orderId), + }) + .then((details) => { + this.order = details.order; + this.bill = details.bill; + }); + }) + .catch((error) => { + this.Alerter.error( + [ + this.$translate.instant('billing_history_details_load_error'), + get(error, 'message'), + ].join(' '), + 'billing_main_alert', + ); + }) + .finally(() => { + this.loading.init = false; + }); + } + + /* ----- End of INITIALIZATION ------ */ +} diff --git a/packages/manager/modules/new-billing/src/main/history/debt/details/billing-main-history-debt-details.html b/packages/manager/modules/new-billing/src/main/history/debt/details/billing-main-history-debt-details.html new file mode 100644 index 000000000000..922299d02259 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/details/billing-main-history-debt-details.html @@ -0,0 +1,69 @@ +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/packages/manager/modules/new-billing/src/main/history/debt/details/billing-main-history-debt-details.module.js b/packages/manager/modules/new-billing/src/main/history/debt/details/billing-main-history-debt-details.module.js new file mode 100644 index 000000000000..d18ea4e5ec7f --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/details/billing-main-history-debt-details.module.js @@ -0,0 +1,23 @@ +import angular from 'angular'; +import 'angular-translate'; +import ngOvhUtils from '@ovh-ux/ng-ovh-utils'; +import '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import '@uirouter/angularjs'; + +import routing from './billing-main-history-debt-details.routes'; + +const moduleName = 'ovhManagerBillingMainHistoryDebtDetails'; + +angular + .module(moduleName, [ + ngOvhUtils, + 'ngTranslateAsyncLoader', + 'oui', + 'pascalprecht.translate', + 'ui.router', + ]) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/main/history/debt/details/billing-main-history-debt-details.routes.js b/packages/manager/modules/new-billing/src/main/history/debt/details/billing-main-history-debt-details.routes.js new file mode 100644 index 000000000000..bef1323b176f --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/details/billing-main-history-debt-details.routes.js @@ -0,0 +1,15 @@ +import controller from './billing-main-history-debt-details.controller'; +import template from './billing-main-history-debt-details.html'; + +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.main.history.details.debt.details', { + url: '/details', + template, + controller, + controllerAs: '$ctrl', + resolve: { + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('billing_history_details'), + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_de_DE.json new file mode 100644 index 000000000000..3901494e651f --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_de_DE.json @@ -0,0 +1,46 @@ +{ + "billing_history_details": "Transaktionshistorie ", + "billing_history_details_load_error": "Beim Abruf Ihrer Transaktionshistorie ist ein Fehler aufgetreten. ", + "billing_history_details_table_header_date": "Datum", + "billing_history_details_table_header_operation": "Operation", + "billing_history_details_table_header_status": "Status", + "billing_history_details_table_header_amount": "Betrag", + "billing_history_details_table_order_link": "Détails de la commande associée", + "billing_history_details_table_order_link_title": "Die zu dieser Transaktion gehörende Bestellung in einem neuen Fenster öffnen. ", + "billing_history_details_table_bill_html_link": "Facture en version html", + "billing_history_details_table_bill_html_link_title": "Rechnung im html-Format abrufen (neues Fenster). ", + "billing_history_details_table_bill_pdf_link": "Facture en version pdf", + "billing_history_details_table_bill_pdf_link_title": "Rechnung im PDF-Format abrufen (neues Fenster). ", + "billing_history_details_status_done": "Fertiggestellt ", + "billing_history_details_status_cancelled": "Abgebrochen", + "billing_history_details_status_failed": "Abgebrochen ", + "billing_history_details_status_todo": "Warten auf Zahlung ", + "billing_history_details_status_pending": "In Bearbeitung ", + "billing_history_details_status_paid": "Bezahlt", + "billing_history_details_type_order": "Auftragserstellung ", + "billing_history_details_type_cancel": "Transaktion abbrechen ", + "billing_history_details_type_creditcard_manual": "Manuelle Zahlung per Kreditkarte ", + "billing_history_details_type_creditcard_automatic": "Automatische Abbuchung von einer Kreditkarte ", + "billing_history_details_type_refund_creditcard": "Erstattung auf eine Kreditkarte ", + "billing_history_details_type_unpaid_creditcard": "Abbuchung abgelehnt (Kreditkarte) ", + "billing_history_details_type_paypal_manual": "Manuelle Zahlung via PayPal ", + "billing_history_details_type_paypal_automatic": "Automatische Abbuchung von einem PayPal Konto ", + "billing_history_details_type_refund_paypal": "Erstattung auf ein PayPal Konto ", + "billing_history_details_type_unpaid_paypal": "Abbuchung abgelehnt (PayPal) ", + "billing_history_details_type_sepa_automatic": "Lastschrift von einem Bankkonto ", + "billing_history_details_type_refund_sepa": "Erstattung auf ein Bankkonto ", + "billing_history_details_type_unpaid_sepa": "Lastschrift abgelehnt (Bankkonto) ", + "billing_history_details_type_credit_account_automatic": "Automatische Abbuchung von einem OVH Prepaid-Account ", + "billing_history_details_type_refund_credit_account": "Erstattung auf einen OVH Prepaid-Account", + "billing_history_details_type_unpaid_credit_account": "Zahlung per OVH Prepaid-Account abbrechen ", + "billing_history_details_type_check_manual": "Bezahlung per Scheck ", + "billing_history_details_type_refund_check": "Erstattung einer Überweisung ", + "billing_history_details_type_unpaid_check": "Scheck abgelehnt ", + "billing_history_details_type_transfer_manual": "Zahlung per Überweisung ", + "billing_history_details_type_unpaid_transfer": "Überweisung abgelehnt ", + "billing_history_details_type_warrant_manual": "Zahlung per Postanweisung ", + "billing_history_details_type_refund_warrant": "Erstattung einer Postanweisung ", + "billing_history_details_type_unpaid_warrant": "Postanweisung abgelehnt ", + "billing_history_details_type_refund": "Rückerstattung", + "billing_history_details_type_refund_unknown": "Rückerstattung" +} diff --git a/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_en_GB.json new file mode 100644 index 000000000000..b482ed0bd3d9 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_en_GB.json @@ -0,0 +1,46 @@ +{ + "billing_history_details": "History of operations", + "billing_history_details_load_error": "An error occurred while retrieving the history of operations.", + "billing_history_details_table_header_date": "Date", + "billing_history_details_table_header_operation": "Operation", + "billing_history_details_table_header_status": "Status", + "billing_history_details_table_header_amount": "Amount", + "billing_history_details_table_order_link": "Details of the associated order", + "billing_history_details_table_order_link_title": "Opening the order associated with this operation in a new window.", + "billing_history_details_table_bill_html_link": "Invoice in html format", + "billing_history_details_table_bill_html_link_title": "See the invoice in HMTL (new window).", + "billing_history_details_table_bill_pdf_link": "Invoice in pdf format", + "billing_history_details_table_bill_pdf_link_title": "See the invoice in PDF version (new window).", + "billing_history_details_status_done": "Completed", + "billing_history_details_status_cancelled": "Cancelled", + "billing_history_details_status_failed": "Failed", + "billing_history_details_status_todo": "Awaiting payment", + "billing_history_details_status_pending": "Processing", + "billing_history_details_status_paid": "Paid", + "billing_history_details_type_order": "Order creation", + "billing_history_details_type_cancel": "Cancelling an operation", + "billing_history_details_type_creditcard_manual": "Manual credit card payment", + "billing_history_details_type_creditcard_automatic": "Automatic withdrawal on a credit card", + "billing_history_details_type_refund_creditcard": "Credit card reimbursement", + "billing_history_details_type_unpaid_creditcard": "Credit card withdrawal declined", + "billing_history_details_type_paypal_manual": "Manual payment with PayPal ", + "billing_history_details_type_paypal_automatic": "Automatic withdrawal from a PayPal account", + "billing_history_details_type_refund_paypal": "Reimbursement to a PayPal account", + "billing_history_details_type_unpaid_paypal": "PayPal account withdrawal declined", + "billing_history_details_type_sepa_automatic": "Automatic withdrawal from a bank account", + "billing_history_details_type_refund_sepa": "Reimbursement to a bank account", + "billing_history_details_type_unpaid_sepa": "Bank account withdrawal declined", + "billing_history_details_type_credit_account_automatic": "Automatic withdrawal from a prepaid OVH account", + "billing_history_details_type_refund_credit_account": "Reimbursement through a prepaid OVH account", + "billing_history_details_type_unpaid_credit_account": "Cancellation of a deposit through the OVH prepaid account", + "billing_history_details_type_check_manual": "Payment by cheque", + "billing_history_details_type_refund_check": "Reimbursement of a wire transfer", + "billing_history_details_type_unpaid_check": "Cheque declined", + "billing_history_details_type_transfer_manual": "Payment by wire transfer", + "billing_history_details_type_unpaid_transfer": "Wire transfer declined", + "billing_history_details_type_warrant_manual": "Payment by money order", + "billing_history_details_type_refund_warrant": "Reimbursement of a money order ", + "billing_history_details_type_unpaid_warrant": "Money order declined", + "billing_history_details_type_refund": "Refund", + "billing_history_details_type_refund_unknown": "Refund" +} diff --git a/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_es_ES.json new file mode 100644 index 000000000000..b6611952b9f6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_es_ES.json @@ -0,0 +1,46 @@ +{ + "billing_history_details": "Historial de operaciones", + "billing_history_details_load_error": "Se ha producido un error al cargar el historial de operaciones.", + "billing_history_details_table_header_date": "Fecha", + "billing_history_details_table_header_operation": "Operación", + "billing_history_details_table_header_status": "Estado", + "billing_history_details_table_header_amount": "Importe", + "billing_history_details_table_order_link": "Detalles del pedido asociado", + "billing_history_details_table_order_link_title": "Abrir el pedido asociado a esta operación en otra ventana.", + "billing_history_details_table_bill_html_link": "Factura en versión HTML", + "billing_history_details_table_bill_html_link_title": "Consultar la factura en versión HTML (nueva ventana)", + "billing_history_details_table_bill_pdf_link": "Factura en versión PDF", + "billing_history_details_table_bill_pdf_link_title": "Consultar la factura en versión PDF (nueva ventana)", + "billing_history_details_status_done": "Completado", + "billing_history_details_status_cancelled": "Cancelada", + "billing_history_details_status_failed": "Incompleto", + "billing_history_details_status_todo": "Pendiente de pago", + "billing_history_details_status_pending": "En tratamiento", + "billing_history_details_status_paid": "Pagada", + "billing_history_details_type_order": "Creación del pedido", + "billing_history_details_type_cancel": "Anulación de una operación", + "billing_history_details_type_creditcard_manual": "Pago manual en tarjeta de crédito", + "billing_history_details_type_creditcard_automatic": "Cobro automático en tarjeta de crédito", + "billing_history_details_type_refund_creditcard": "Devolución en tarjeta de crédito", + "billing_history_details_type_unpaid_creditcard": "Cobro rechazado en tarjeta de crédito", + "billing_history_details_type_paypal_manual": "Pago manual en PayPal", + "billing_history_details_type_paypal_automatic": "Cobro automático en PayPal", + "billing_history_details_type_refund_paypal": "Devolución en PayPal", + "billing_history_details_type_unpaid_paypal": "Cobro rechazado en PayPal", + "billing_history_details_type_sepa_automatic": "Cargo automático en cuenta bancaria", + "billing_history_details_type_refund_sepa": "Devolución en cuenta bancaria", + "billing_history_details_type_unpaid_sepa": "Cargo rechazado en cuenta bancaria", + "billing_history_details_type_credit_account_automatic": "Cargo automático en cuenta de prepago OVH", + "billing_history_details_type_refund_credit_account": "Devolución en cuenta de prepago OVH", + "billing_history_details_type_unpaid_credit_account": "Anulación de un pago a través de la cuenta de prepago OVH", + "billing_history_details_type_check_manual": "Pago por cheque", + "billing_history_details_type_refund_check": "Devolución de una transferencia bancaria", + "billing_history_details_type_unpaid_check": "Cheque rechazado", + "billing_history_details_type_transfer_manual": "Pago por transferencia bancaria", + "billing_history_details_type_unpaid_transfer": "Transferencia bancaria rechazada", + "billing_history_details_type_warrant_manual": "Pago por mandato", + "billing_history_details_type_refund_warrant": "Devolución de un mandato", + "billing_history_details_type_unpaid_warrant": "Mandato rechazado", + "billing_history_details_type_refund": "Devolución", + "billing_history_details_type_refund_unknown": "Devolución" +} diff --git a/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..7984296d76bf --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_fr_CA.json @@ -0,0 +1,46 @@ +{ + "billing_history_details": "Historique des opérations", + "billing_history_details_load_error": "Une erreur est survenue dans l'obtention de l'historique des opérations.", + "billing_history_details_table_header_date": "Date", + "billing_history_details_table_header_operation": "Opération", + "billing_history_details_table_header_status": "État", + "billing_history_details_table_header_amount": "Montant", + "billing_history_details_table_order_link": "Détails de la commande associée", + "billing_history_details_table_order_link_title": "Ouvrir la commande associée à cette opération dans une nouvelle fenêtre.", + "billing_history_details_table_bill_html_link": "Facture en version html", + "billing_history_details_table_bill_html_link_title": "Consulter la facture en version html (nouvelle fenêtre).", + "billing_history_details_table_bill_pdf_link": "Facture en version pdf", + "billing_history_details_table_bill_pdf_link_title": "Consulter la facture en version pdf (nouvelle fenêtre).", + "billing_history_details_status_done": "Complétée", + "billing_history_details_status_cancelled": "Annulée", + "billing_history_details_status_failed": "Échouée", + "billing_history_details_status_todo": "En attente de paiement", + "billing_history_details_status_pending": "En cours de traitement", + "billing_history_details_status_paid": "Payée", + "billing_history_details_type_order": "Création de la commande", + "billing_history_details_type_cancel": "Annulation d'une opération", + "billing_history_details_type_creditcard_manual": "Paiement manuel sur carte de crédit", + "billing_history_details_type_creditcard_automatic": "Débit automatique sur carte de crédit", + "billing_history_details_type_refund_creditcard": "Remboursement sur carte de crédit", + "billing_history_details_type_unpaid_creditcard": "Débit refusé sur carte de crédit", + "billing_history_details_type_paypal_manual": "Paiement manuel sur PayPal", + "billing_history_details_type_paypal_automatic": "Débit automatique sur compte PayPal", + "billing_history_details_type_refund_paypal": "Remboursement sur compte PayPal", + "billing_history_details_type_unpaid_paypal": "Débit refusé sur compte PayPal", + "billing_history_details_type_sepa_automatic": "Prélèvement automatique sur compte bancaire", + "billing_history_details_type_refund_sepa": "Remboursement sur compte bancaire", + "billing_history_details_type_unpaid_sepa": "Prélèvement refusé sur compte bancaire", + "billing_history_details_type_credit_account_automatic": "Prélèvement automatique sur compte prépayé OVH", + "billing_history_details_type_refund_credit_account": "Remboursement sur compte prépayé OVH", + "billing_history_details_type_unpaid_credit_account": "Annulation d'un versement via le compte prépayé OVH", + "billing_history_details_type_check_manual": "Paiement par chèque", + "billing_history_details_type_refund_check": "Remboursement d'un virement bancaire", + "billing_history_details_type_unpaid_check": "Chèque refusé", + "billing_history_details_type_transfer_manual": "Paiement par virement bancaire", + "billing_history_details_type_unpaid_transfer": "Virement bancaire refusé", + "billing_history_details_type_warrant_manual": "Paiement par mandat", + "billing_history_details_type_refund_warrant": "Remboursement d'un mandat", + "billing_history_details_type_unpaid_warrant": "Mandat refusé", + "billing_history_details_type_refund": "Remboursement", + "billing_history_details_type_refund_unknown": "Remboursement" +} diff --git a/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..7984296d76bf --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_fr_FR.json @@ -0,0 +1,46 @@ +{ + "billing_history_details": "Historique des opérations", + "billing_history_details_load_error": "Une erreur est survenue dans l'obtention de l'historique des opérations.", + "billing_history_details_table_header_date": "Date", + "billing_history_details_table_header_operation": "Opération", + "billing_history_details_table_header_status": "État", + "billing_history_details_table_header_amount": "Montant", + "billing_history_details_table_order_link": "Détails de la commande associée", + "billing_history_details_table_order_link_title": "Ouvrir la commande associée à cette opération dans une nouvelle fenêtre.", + "billing_history_details_table_bill_html_link": "Facture en version html", + "billing_history_details_table_bill_html_link_title": "Consulter la facture en version html (nouvelle fenêtre).", + "billing_history_details_table_bill_pdf_link": "Facture en version pdf", + "billing_history_details_table_bill_pdf_link_title": "Consulter la facture en version pdf (nouvelle fenêtre).", + "billing_history_details_status_done": "Complétée", + "billing_history_details_status_cancelled": "Annulée", + "billing_history_details_status_failed": "Échouée", + "billing_history_details_status_todo": "En attente de paiement", + "billing_history_details_status_pending": "En cours de traitement", + "billing_history_details_status_paid": "Payée", + "billing_history_details_type_order": "Création de la commande", + "billing_history_details_type_cancel": "Annulation d'une opération", + "billing_history_details_type_creditcard_manual": "Paiement manuel sur carte de crédit", + "billing_history_details_type_creditcard_automatic": "Débit automatique sur carte de crédit", + "billing_history_details_type_refund_creditcard": "Remboursement sur carte de crédit", + "billing_history_details_type_unpaid_creditcard": "Débit refusé sur carte de crédit", + "billing_history_details_type_paypal_manual": "Paiement manuel sur PayPal", + "billing_history_details_type_paypal_automatic": "Débit automatique sur compte PayPal", + "billing_history_details_type_refund_paypal": "Remboursement sur compte PayPal", + "billing_history_details_type_unpaid_paypal": "Débit refusé sur compte PayPal", + "billing_history_details_type_sepa_automatic": "Prélèvement automatique sur compte bancaire", + "billing_history_details_type_refund_sepa": "Remboursement sur compte bancaire", + "billing_history_details_type_unpaid_sepa": "Prélèvement refusé sur compte bancaire", + "billing_history_details_type_credit_account_automatic": "Prélèvement automatique sur compte prépayé OVH", + "billing_history_details_type_refund_credit_account": "Remboursement sur compte prépayé OVH", + "billing_history_details_type_unpaid_credit_account": "Annulation d'un versement via le compte prépayé OVH", + "billing_history_details_type_check_manual": "Paiement par chèque", + "billing_history_details_type_refund_check": "Remboursement d'un virement bancaire", + "billing_history_details_type_unpaid_check": "Chèque refusé", + "billing_history_details_type_transfer_manual": "Paiement par virement bancaire", + "billing_history_details_type_unpaid_transfer": "Virement bancaire refusé", + "billing_history_details_type_warrant_manual": "Paiement par mandat", + "billing_history_details_type_refund_warrant": "Remboursement d'un mandat", + "billing_history_details_type_unpaid_warrant": "Mandat refusé", + "billing_history_details_type_refund": "Remboursement", + "billing_history_details_type_refund_unknown": "Remboursement" +} diff --git a/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_it_IT.json new file mode 100644 index 000000000000..f23072ea752a --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_it_IT.json @@ -0,0 +1,46 @@ +{ + "billing_history_details": "Storico delle operazioni", + "billing_history_details_load_error": "Si è verificato un errore durante il caricamento dello storico delle operazioni.", + "billing_history_details_table_header_date": "Data", + "billing_history_details_table_header_operation": "Operazione", + "billing_history_details_table_header_status": "Stato", + "billing_history_details_table_header_amount": "Importo", + "billing_history_details_table_order_link": "Dettagli dell'ordine associato", + "billing_history_details_table_order_link_title": "Apri in una nuova finestra l'ordine associato a questa operazione.", + "billing_history_details_table_bill_html_link": "Fattura in versione HTML", + "billing_history_details_table_bill_html_link_title": "Visualizza la fattura in versione HTML ((nuova finestra).", + "billing_history_details_table_bill_pdf_link": "Fattura in versione PDF", + "billing_history_details_table_bill_pdf_link_title": "Visualizza la fattura in versione PDF (nuova finestra).", + "billing_history_details_status_done": "Completato", + "billing_history_details_status_cancelled": "Annullata", + "billing_history_details_status_failed": "Fallito", + "billing_history_details_status_todo": "In attesa di pagamento", + "billing_history_details_status_pending": "Gestione in corso", + "billing_history_details_status_paid": "Pagato", + "billing_history_details_type_order": "Crea l'ordine", + "billing_history_details_type_cancel": "Annulla un'operazione", + "billing_history_details_type_creditcard_manual": "Pagamento manuale su carta bancaria", + "billing_history_details_type_creditcard_automatic": "Addebito automatico su carta bancaria", + "billing_history_details_type_refund_creditcard": "Rimborso su carta bancaria", + "billing_history_details_type_unpaid_creditcard": "Addebito rifiutato su carta bancaria", + "billing_history_details_type_paypal_manual": "Pagamento manuale su PayPal", + "billing_history_details_type_paypal_automatic": "Addebito automatico su conto PayPal", + "billing_history_details_type_refund_paypal": "Rimborso su conto PayPal", + "billing_history_details_type_unpaid_paypal": "Addebito rifiutato su conto PayPal", + "billing_history_details_type_sepa_automatic": "Addebito automatico su conto bancario", + "billing_history_details_type_refund_sepa": "Rimborso su conto bancario", + "billing_history_details_type_unpaid_sepa": "Addebito rifiutato su conto bancario", + "billing_history_details_type_credit_account_automatic": "Addebito automatico sul conto prepagato OVH", + "billing_history_details_type_refund_credit_account": "Rimborso su conto prepagato OVH", + "billing_history_details_type_unpaid_credit_account": "Annulla un versamento tramite il conto prepagato OVH", + "billing_history_details_type_check_manual": "Pagamento tramite assegno", + "billing_history_details_type_refund_check": "Rimborso di un bonifico bancario", + "billing_history_details_type_unpaid_check": "Assegno rifiutato", + "billing_history_details_type_transfer_manual": "Pagamento tramite bonifico bancario", + "billing_history_details_type_unpaid_transfer": "Bonifico bancario rifiutato", + "billing_history_details_type_warrant_manual": "Pagamento tramite mandato", + "billing_history_details_type_refund_warrant": "Rimborso di un mandato", + "billing_history_details_type_unpaid_warrant": "Mandato rifiutato", + "billing_history_details_type_refund": "Rimborso", + "billing_history_details_type_refund_unknown": "Rimborso" +} diff --git a/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..8ef0770ca508 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_pl_PL.json @@ -0,0 +1,46 @@ +{ + "billing_history_details": "Historia operacji", + "billing_history_details_load_error": "Wystąpił błąd podczas pobierania historii operacji.", + "billing_history_details_table_header_date": "Data", + "billing_history_details_table_header_operation": "Operacja ", + "billing_history_details_table_header_status": "Status", + "billing_history_details_table_header_amount": "Kwota", + "billing_history_details_table_order_link": "Szczegóły zamówienia ", + "billing_history_details_table_order_link_title": "Otwórz zamówienie przypisane do tej operacji w nowym oknie.", + "billing_history_details_table_bill_html_link": "Faktura w wersji html", + "billing_history_details_table_bill_html_link_title": "Sprawdź fakturę w wersji html (w nowym oknie).", + "billing_history_details_table_bill_pdf_link": "Faktura w wersji pdf", + "billing_history_details_table_bill_pdf_link_title": "Sprawdź fakturę w wersji pdf (w nowym oknie).", + "billing_history_details_status_done": "Uzupełnione", + "billing_history_details_status_cancelled": "Anulowane", + "billing_history_details_status_failed": "Nieudane", + "billing_history_details_status_todo": "W oczekiwaniu na płatność", + "billing_history_details_status_pending": "Przetwarzanie Twojego wniosku", + "billing_history_details_status_paid": "Opłacone", + "billing_history_details_type_order": "Tworzenie zamówienia", + "billing_history_details_type_cancel": "Anulowanie operacji", + "billing_history_details_type_creditcard_manual": "Ręczna płatność kartą kredytową", + "billing_history_details_type_creditcard_automatic": "Automatyczne pobranie z karty kredytowej", + "billing_history_details_type_refund_creditcard": "Zwrot na kartę kredytową", + "billing_history_details_type_unpaid_creditcard": "Pobranie z karty kredytowej odrzucone", + "billing_history_details_type_paypal_manual": "Ręczna płatność za pomoca konta PayPal", + "billing_history_details_type_paypal_automatic": "Automatyczne pobranie z konta PayPal", + "billing_history_details_type_refund_paypal": "Zwrot na konto PayPal", + "billing_history_details_type_unpaid_paypal": "Pobranie z konta PayPal odrzucone", + "billing_history_details_type_sepa_automatic": "Automatyczne pobranie z konta bankowego", + "billing_history_details_type_refund_sepa": "Zwrot na konto bankowe", + "billing_history_details_type_unpaid_sepa": "Pobranie z konta bankowego odrzucone", + "billing_history_details_type_credit_account_automatic": "Automatyczne pobranie z konta prepaid OVH", + "billing_history_details_type_refund_credit_account": "Zwrot na konto prepaid OVH", + "billing_history_details_type_unpaid_credit_account": "Anulowanie przelewu za pomocą konta prepaid OVH", + "billing_history_details_type_check_manual": "Płatność czekiem", + "billing_history_details_type_refund_check": "Zwrot przelewu bankowego", + "billing_history_details_type_unpaid_check": "Czek odrzucony", + "billing_history_details_type_transfer_manual": "Płatność przelewem bankowym", + "billing_history_details_type_unpaid_transfer": "Przelew bankowy odrzucony", + "billing_history_details_type_warrant_manual": "Płatność przekazem", + "billing_history_details_type_refund_warrant": "Zwrot przekazu", + "billing_history_details_type_unpaid_warrant": "Przekaz odrzucony", + "billing_history_details_type_refund": "Zwrot", + "billing_history_details_type_refund_unknown": "Zwrot" +} diff --git a/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..32e0a41a163e --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/details/translations/Messages_pt_PT.json @@ -0,0 +1,46 @@ +{ + "billing_history_details": "Historial das operações", + "billing_history_details_load_error": "Ocorreu um erro aquando da obtenção do historial das operações.", + "billing_history_details_table_header_date": "Data", + "billing_history_details_table_header_operation": "Operação", + "billing_history_details_table_header_status": "Estado", + "billing_history_details_table_header_amount": "Montante", + "billing_history_details_table_order_link": "Détails de la commande associée", + "billing_history_details_table_order_link_title": "Abrir a encomenda associada a esta operação numa nova janela.", + "billing_history_details_table_bill_html_link": "Facture en version html", + "billing_history_details_table_bill_html_link_title": "Consultar a fatura em versão html (nova janela).", + "billing_history_details_table_bill_pdf_link": "Facture en version pdf", + "billing_history_details_table_bill_pdf_link_title": "Consultar a fatura em versão pdf (nova janela).", + "billing_history_details_status_done": "Completo", + "billing_history_details_status_cancelled": "Anulada", + "billing_history_details_status_failed": "Incompleto", + "billing_history_details_status_todo": "Aguardar pagamento", + "billing_history_details_status_pending": "Em curso", + "billing_history_details_status_paid": "Pago", + "billing_history_details_type_order": "Criação da encomenda", + "billing_history_details_type_cancel": "Anulação de uma operação", + "billing_history_details_type_creditcard_manual": "Pagamento manual num cartão de crédito", + "billing_history_details_type_creditcard_automatic": "Débito automático num cartão de crédito", + "billing_history_details_type_refund_creditcard": "Reembolso num cartão de crédito", + "billing_history_details_type_unpaid_creditcard": "Débito recusado no cartão de crédito", + "billing_history_details_type_paypal_manual": "Pagament manual numa conta PayPal", + "billing_history_details_type_paypal_automatic": "Débito automático numa conta PayPal", + "billing_history_details_type_refund_paypal": "Reembolso numa conta PayPal", + "billing_history_details_type_unpaid_paypal": "Débito recusado numa conta PayPal", + "billing_history_details_type_sepa_automatic": "Débito automático numa conta bancária", + "billing_history_details_type_refund_sepa": "Reembolso numa conta bancária", + "billing_history_details_type_unpaid_sepa": "Débito recusado na conta bancária", + "billing_history_details_type_credit_account_automatic": "Débito automático numa conta Prépaga OVH", + "billing_history_details_type_refund_credit_account": "Reembolso numa conta prépaga OVH", + "billing_history_details_type_unpaid_credit_account": "Anulação de um pagamento através da conta prépaga OVH", + "billing_history_details_type_check_manual": "Pagamento por cheque", + "billing_history_details_type_refund_check": "Reembolso de uma transferência bancária", + "billing_history_details_type_unpaid_check": "Cheque recusado", + "billing_history_details_type_transfer_manual": "Pagamento por transferência bancária", + "billing_history_details_type_unpaid_transfer": "Transferência bancária recusada", + "billing_history_details_type_warrant_manual": "Pagamento por mandato", + "billing_history_details_type_refund_warrant": "Reembolso de um mandato", + "billing_history_details_type_unpaid_warrant": "Mandato recusado", + "billing_history_details_type_refund": "Reembolso", + "billing_history_details_type_refund_unknown": "Reembolso" +} diff --git a/packages/manager/modules/new-billing/src/main/history/debt/pay/billing-main-history-debt-pay.controller.js b/packages/manager/modules/new-billing/src/main/history/debt/pay/billing-main-history-debt-pay.controller.js new file mode 100644 index 000000000000..31f47993d41f --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/pay/billing-main-history-debt-pay.controller.js @@ -0,0 +1,105 @@ +import get from 'lodash/get'; + +export default class BillingHistoryDebtPayCtrl { + /* @ngInject */ + constructor( + $q, + $state, + $stateParams, + $translate, + $window, + Alerter, + atInternet, + OvhApiMe, + ) { + // Injections + this.$q = $q; + this.$state = $state; + this.$stateParams = $stateParams; + this.$translate = $translate; + this.$window = $window; + this.Alerter = Alerter; + this.atInternet = atInternet; + this.OvhApiMe = OvhApiMe; + + // Other attributes used in view + this.loading = { + pay: false, + }; + } + + closeModal() { + return this.$state.go('billing.main.history'); + } + + /* ============================= + = EVENTS = + ============================== */ + + onDebtPayFormSubmit() { + this.loading.pay = true; + this.atInternet.trackClick({ + name: + 'dedicated::account::billing::main::history::pay-debt::pay::billing_pay_balance', + type: 'action', + }); + let promise; + + if (this.$stateParams.debtId !== 'all') { + promise = this.OvhApiMe.DebtAccount() + .Debt() + .v6() + .pay( + { + debtId: this.$stateParams.debtId, + }, + {}, + ).$promise; + } else { + promise = this.OvhApiMe.DebtAccount() + .v6() + .pay().$promise; + } + + return promise + .then((order) => { + this.Alerter.success( + this.$translate.instant('billing_main_history_debt_pay_success', { + t0: get(order, 'data.orderId') || get(order, 'orderId'), + t1: get(order, 'data.url') || get(order, 'url'), + }), + 'billing_main_alert', + ); + + this.$window.open( + get(order, 'data.url') || get(order, 'url'), + '_blank', + ); + }) + .catch((error) => { + if (get(error, 'data.message') === 'Nothing to pay') { + return this.Alerter.set( + 'alert-info', + this.$translate.instant( + 'billing_main_history_debt_pay_error_nothing_to_pay', + ), + null, + 'billing_main_alert', + ); + } + + return this.Alerter.error( + `${this.$translate.instant( + 'billing_main_history_debt_pay_error', + )} ${get(error, 'data.message', '')}`, + 'billing_main_alert', + ); + }) + .finally(() => { + this.loading.pay = false; + this.closeModal(); + }); + } + + /* ----- End of EVENTS ------ */ +} diff --git a/packages/manager/modules/new-billing/src/main/history/debt/pay/billing-main-history-debt-pay.html b/packages/manager/modules/new-billing/src/main/history/debt/pay/billing-main-history-debt-pay.html new file mode 100644 index 000000000000..d4a4f085ee35 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/pay/billing-main-history-debt-pay.html @@ -0,0 +1,16 @@ +
+ +

+
+
diff --git a/packages/manager/modules/new-billing/src/main/history/debt/pay/billing-main-history-debt-pay.module.js b/packages/manager/modules/new-billing/src/main/history/debt/pay/billing-main-history-debt-pay.module.js new file mode 100644 index 000000000000..698420b29190 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/pay/billing-main-history-debt-pay.module.js @@ -0,0 +1,23 @@ +import angular from 'angular'; +import 'angular-translate'; +import ngOvhUtils from '@ovh-ux/ng-ovh-utils'; +import '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import '@uirouter/angularjs'; + +import routing from './billing-main-history-debt-pay.routes'; + +const moduleName = 'ovhManagerBillingMainHistoryDebtPay'; + +angular + .module(moduleName, [ + ngOvhUtils, + 'ngTranslateAsyncLoader', + 'oui', + 'pascalprecht.translate', + 'ui.router', + ]) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/main/history/debt/pay/billing-main-history-debt-pay.routes.js b/packages/manager/modules/new-billing/src/main/history/debt/pay/billing-main-history-debt-pay.routes.js new file mode 100644 index 000000000000..425d8b71430f --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/pay/billing-main-history-debt-pay.routes.js @@ -0,0 +1,22 @@ +import controller from './billing-main-history-debt-pay.controller'; +import template from './billing-main-history-debt-pay.html'; + +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.main.history.pay-debt', { + url: '/debt/:debtId/pay', + views: { + modal: { + template, + controller, + }, + }, + layout: { + name: 'modal', + redirectTo: 'billing.main.history', + }, + translations: { value: ['.'], format: 'json' }, + resolve: { + breadcrumb: () => null, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_de_DE.json new file mode 100644 index 000000000000..fa62cf80c42b --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_de_DE.json @@ -0,0 +1,8 @@ +{ + "billing_main_history_debt_pay_title": "Zahlung ", + "billing_main_history_debt_pay_confirm": "Konto ausgleichen ", + "billing_main_history_debt_pay_explanation": "Mit dieser Aktion wird ein Bestellschein erstellt, damit Sie Ihr Konto sofort ausgleichen können. Der Bestellschein ist eine Stunde lang gültig. ", + "billing_main_history_debt_pay_success": "Der Bestellschein {{t0}} wurde erstellt. Sie können Ihre Rechnung jetzt begleichen.", + "billing_main_history_debt_pay_error": "Bei der Zahlung Ihrer Rechnung ist ein Fehler aufgetreten.", + "billing_main_history_debt_pay_error_nothing_to_pay": "Sie haben aktuell keine ausstehenden Zahlungen." +} diff --git a/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_en_GB.json new file mode 100644 index 000000000000..0c68d2f17e3b --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_en_GB.json @@ -0,0 +1,8 @@ +{ + "billing_main_history_debt_pay_title": "Balance payment", + "billing_main_history_debt_pay_confirm": "Pay balance", + "billing_main_history_debt_pay_explanation": "This action will generate a purchase order so you can immediately settle an amount. This purchase order will be valid for one hour.", + "billing_main_history_debt_pay_success": "A purchase order {{t0}} has been generated, so that you can settle your balance.", + "billing_main_history_debt_pay_error": "An error has occurred settling your balance.", + "billing_main_history_debt_pay_error_nothing_to_pay": "Currently you have no pending payments." +} diff --git a/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_es_ES.json new file mode 100644 index 000000000000..214909a984e6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_es_ES.json @@ -0,0 +1,8 @@ +{ + "billing_main_history_debt_pay_title": "Pago del importe pendiente", + "billing_main_history_debt_pay_confirm": "Abonar el importe pendiente", + "billing_main_history_debt_pay_explanation": "Esta acción generará una orden de pedido válida durante una hora que le permitirá abonar el importe pendiente inmediatamente.", + "billing_main_history_debt_pay_success": "Se ha generado la orden de pedido {{t0}} para que pueda abonar el importe pendiente.", + "billing_main_history_debt_pay_error": "Se ha producido un error al abonar el importe pendiente.", + "billing_main_history_debt_pay_error_nothing_to_pay": "Actualmente tiene ningún pago pendiente." +} diff --git a/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..921703e31817 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_fr_CA.json @@ -0,0 +1,8 @@ +{ + "billing_main_history_debt_pay_title": "Réglement du solde", + "billing_main_history_debt_pay_confirm": "Régler mon solde", + "billing_main_history_debt_pay_explanation": "Cette action créera un bon de commande permettant de payer immédiatement un solde. Ce bon de commande sera valide durant une heure.", + "billing_main_history_debt_pay_success": "Le bon de commande {{t0}} a été généré pour vous permettre de régler votre solde.", + "billing_main_history_debt_pay_error": "Une erreur est survenue lors du paiment de votre solde.", + "billing_main_history_debt_pay_error_nothing_to_pay": "Vous n'avez actuellement aucun paiement en attente." +} diff --git a/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..921703e31817 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_fr_FR.json @@ -0,0 +1,8 @@ +{ + "billing_main_history_debt_pay_title": "Réglement du solde", + "billing_main_history_debt_pay_confirm": "Régler mon solde", + "billing_main_history_debt_pay_explanation": "Cette action créera un bon de commande permettant de payer immédiatement un solde. Ce bon de commande sera valide durant une heure.", + "billing_main_history_debt_pay_success": "Le bon de commande {{t0}} a été généré pour vous permettre de régler votre solde.", + "billing_main_history_debt_pay_error": "Une erreur est survenue lors du paiment de votre solde.", + "billing_main_history_debt_pay_error_nothing_to_pay": "Vous n'avez actuellement aucun paiement en attente." +} diff --git a/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_it_IT.json new file mode 100644 index 000000000000..45f76b2e9dab --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_it_IT.json @@ -0,0 +1,8 @@ +{ + "billing_main_history_debt_pay_title": "Saldo dell'importo dovuto", + "billing_main_history_debt_pay_confirm": "Salda l'importo dovuto", + "billing_main_history_debt_pay_explanation": "Con questa operazione viene generato un buono d'ordine valido per un'ora, con cui potrai effettuare direttamente il saldo del tuo conto.", + "billing_main_history_debt_pay_success": "Abbiamo generato il buono d'ordine {{t0}} per permetterti di effettuare il pagamento.", + "billing_main_history_debt_pay_error": "Si è verificato un errore durante il pagamento.", + "billing_main_history_debt_pay_error_nothing_to_pay": "Al momento non ci sono pagamenti in attesa." +} diff --git a/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..69f58e701640 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_pl_PL.json @@ -0,0 +1,8 @@ +{ + "billing_main_history_debt_pay_title": "Uregulowanie salda", + "billing_main_history_debt_pay_confirm": "Ureguluj saldo", + "billing_main_history_debt_pay_explanation": "Zostanie wygenerowane zamówienie pozwalające na natychmiastowe uregulowanie salda. Zamówienie to będzie ważne przez godzinę.", + "billing_main_history_debt_pay_success": "Wygenerowane zostało zamówienie {{t0}} umożliwiające uregulowanie salda. ", + "billing_main_history_debt_pay_error": "Wystąpił błąd podczas spłaty Twojego salda.", + "billing_main_history_debt_pay_error_nothing_to_pay": "Aktualnie brak oczekujących płatności." +} diff --git a/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..0f96d1b6e83d --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/debt/pay/translations/Messages_pt_PT.json @@ -0,0 +1,8 @@ +{ + "billing_main_history_debt_pay_title": "Pagamento do montante pendente", + "billing_main_history_debt_pay_confirm": "Pagar o montante pendente", + "billing_main_history_debt_pay_explanation": "Esta ação levará à criação de uma nota de encomenda que irá permitir pagar um montante pendente. Esta nota de encomenda terá a validade de uma hora.", + "billing_main_history_debt_pay_success": "A nota de encomenda {{t0}} foi gerada para permitir que efetue o pagamento do montante pendente.", + "billing_main_history_debt_pay_error": "Ocorreu um erro durante o pagamento do montante pendente.", + "billing_main_history_debt_pay_error_nothing_to_pay": "Neste momento, não tem qualquer pagamento pendente." +} diff --git a/packages/manager/modules/new-billing/src/main/history/history.component.js b/packages/manager/modules/new-billing/src/main/history/history.component.js new file mode 100644 index 000000000000..0ec73abb65ac --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/history.component.js @@ -0,0 +1,21 @@ +import { ListLayoutHelper } from '@ovh-ux/manager-ng-layout-helpers'; +import controller from './billing-main-history.controller'; +import template from './billing-main-history.html'; + +export default { + bindings: { + bills: '<', + currentUser: '<', + debtAccount: '<', + exportBills: '<', + getDebt: '<', + hasDefaultPaymentMethod: '<', + invoicesByPostalMail: '<', + isHtmlInvoiceAvailable: '<', + payDebt: '<', + seeDebt: '<', + ...ListLayoutHelper.componentBindings, + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/main/history/history.module.js b/packages/manager/modules/new-billing/src/main/history/history.module.js new file mode 100644 index 000000000000..d04fac4f0d27 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/history.module.js @@ -0,0 +1,42 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import uiBootstrap from 'angular-ui-bootstrap'; +import 'ovh-api-services'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; +import ngAtInternet from '@ovh-ux/ng-at-internet'; +import ngOvhApiWrappers from '@ovh-ux/ng-ovh-api-wrappers'; +import ngOvhPaymentMethod from '@ovh-ux/ng-ovh-payment-method'; +import ovhManagerCore from '@ovh-ux/manager-core'; + +import component from './history.component'; +import routing from './billing-main-history.routes'; + +import balance from './balance/billing-history-balance.module'; +import debt from './debt/billing-main-history-debt.module'; +import legacyHistory from './legacy/history.module'; +import postalMailOptions from './postalMailOptions/billing-main-history-postal-mail-options.module'; + +const moduleName = 'ovhManagerDedicatedBillingHistory'; + +angular + .module(moduleName, [ + angularTranslate, + balance, + debt, + legacyHistory, + ngAtInternet, + ngOvhApiWrappers, + ngOvhPaymentMethod, + 'oui', + 'ovh-api-services', + ovhManagerCore, + postalMailOptions, + uiBootstrap, + uiRouter, + ]) + .config(routing) + .component('billingHistory', component) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/main/history/legacy/billing-main-history.controller.js b/packages/manager/modules/new-billing/src/main/history/legacy/billing-main-history.controller.js new file mode 100644 index 000000000000..87c0eaded6bf --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/legacy/billing-main-history.controller.js @@ -0,0 +1,383 @@ +import filter from 'lodash/filter'; +import get from 'lodash/get'; +import map from 'lodash/map'; +import sortBy from 'lodash/sortBy'; + +function applyBillCriteria(request, $config) { + let result = request; + $config.criteria.forEach((criteria) => { + if (criteria.operator === 'contains') { + result = result.addFilter( + criteria.property || 'billId', + 'like', + `*${criteria.value}*`, + ); + } else if (criteria.operator === 'is' && criteria.property === 'date') { + result = result.addFilter('date', 'like', `${criteria.value}*`); + } else if ( + criteria.operator === 'isAfter' && + criteria.property === 'date' + ) { + result = result.addFilter('date', 'gt', criteria.value); + } else if ( + criteria.operator === 'isBefore' && + criteria.property === 'date' + ) { + result = result.addFilter('date', 'lt', criteria.value); + } + }); + return result; +} + +export default class BillingMainHistoryCtrl { + /* @ngInject */ + constructor( + $http, + $q, + $state, + $translate, + $uibModal, + Alerter, + atInternet, + coreConfig, + exportCsv, + OvhApiMe, + ovhPaymentMethod, + ) { + this.$http = $http; + this.$q = $q; + this.$state = $state; + this.$translate = $translate; + this.$uibModal = $uibModal; + this.Alerter = Alerter; + this.atInternet = atInternet; + this.coreConfig = coreConfig; + this.exportCsv = exportCsv; + this.OvhApiMe = OvhApiMe; + this.ovhPaymentMethod = ovhPaymentMethod; + + // Other attributes used in view + this.loading = { + init: false, + export: false, + }; + + this.postalMailOptions = { + enabled: false, + activated: false, + }; + + this.datagridConfig = null; + this.totalBills = 0; + } + + onCriteriaChange($criteria) { + const newFilter = $criteria.map((criteria) => ({ + field: get(criteria, 'property'), + comparator: criteria.operator, + reference: [criteria.value], + })); + + this.onListParamsChange({ + filters: JSON.stringify(newFilter), + }); + } + + trackInvoiceOpening() { + this.atInternet.trackClick({ + name: 'open_invoices', + type: 'action', + chapter1: 'billing', + chapter2: 'invoices', + }); + } + + /* =============================== + = DATAGRID = + ================================ */ + + getBills($config) { + let req = this.OvhApiMe.Bill() + .Iceberg() + .query() + .expand('CachedObjectList-Pages') + .offset(Math.ceil($config.offset / ($config.pageSize || 1))) + .limit($config.pageSize); + + if ($config.sort) { + req = req.sort( + $config.sort.property, + $config.sort.dir > 0 ? 'ASC' : 'DESC', + ); + } + + return applyBillCriteria(req, $config) + .execute(null) + .$promise.then((result) => ({ + data: result.data, + meta: { + totalCount: + parseInt(result.headers['x-pagination-elements'], 10) || 0, + }, + })); + } + + /* ----- End of DATAGRID ------ */ + + /* ==================================== + = EXPORT TO CSV = + ===================================== */ + + fetchAll(route) { + let result = []; + const fetchPart = (page) => { + return this.$http + .get(route, { + serviceType: 'apiv6', + headers: { + 'X-Pagination-Mode': 'CachedObjectList-Pages', + 'X-Pagination-Size': '5000', + 'X-Pagination-Number': `${page}`, + }, + }) + .then(({ data }) => { + if (data.length) { + result = result.concat(data); + return fetchPart(page + 1); + } + return result; + }); + }; + return fetchPart(1); + } + + fetchAllBills() { + return this.fetchAll('/me/bill'); + } + + fetchAllDebts() { + return this.fetchAll('/me/debtAccount/debt'); + } + + exportToCsv() { + this.loading.export = true; + const csvHeaders = [ + this.$translate.instant('billing_main_history_legacy_table_id'), + this.$translate.instant('billing_main_history_legacy_table_order_id'), + this.$translate.instant('billing_main_history_legacy_table_date'), + this.$translate.instant('billing_main_history_legacy_table_total'), + this.$translate.instant( + 'billing_main_history_legacy_table_total_with_VAT', + ), + this.$translate.instant( + 'billing_main_history_legacy_table_balance_due_amount', + ), + this.$translate.instant( + 'billing_main_history_legacy_table_balance_due_date', + ), + ]; + + const getDueDate = (bill) => { + if (get(bill, 'debt.dueAmount.value', 0) > 0) { + return get(bill, 'debt.dueDate') + ? moment(bill.debt.dueDate).format('L') + : this.$translate.instant( + 'billing_main_history_legacy_table_immediately', + ); + } + return this.$translate.instant( + 'billing_main_history_legacy_table_debt_paid', + ); + }; + + const getDebtAmount = (bill) => { + if (bill.debt) { + return get( + bill, + 'debt.dueAmount.text', + this.$translate.instant( + 'billing_main_history_legacy_table_unavailable', + ), + ); + } + return '0'; + }; + + return this.$q + .all({ + bills: this.fetchAllBills(), + debts: this.fetchAllDebts(), + }) + .then(({ bills, debts }) => { + debts.forEach((debt) => { + filter(bills, { orderId: debt.orderId }).forEach((bill) => { + bill.debt = debt; // eslint-disable-line + }); + }); + this.exportCsv.exportData({ + separator: ',', + datas: [csvHeaders].concat( + map(sortBy(bills, 'date'), (bill) => { + return [ + bill.billId, + bill.orderId, + moment(bill.date).format('L'), + bill.priceWithoutTax.text, + bill.priceWithTax.text, + getDebtAmount(bill), + getDueDate(bill), + ]; + }), + ), + }); + }) + .catch((error) => { + this.Alerter.error( + [ + this.$translate.instant('billing_main_history_legacy_export_error'), + get(error, 'data.message'), + ].join(' '), + 'billing_main_alert', + ); + }) + .finally(() => { + this.loading.export = false; + this.atInternet.trackClick({ + name: 'export_csv', + type: 'action', + chapter1: 'billing', + chapter2: 'invoices', + chapter3: 'export', + }); + }); + } + + /* ----- End of EXPORT TO CSV ------ */ + + /* ============================= + = EVENTS = + ============================== */ + + onPostalMailOptionsChange() { + const postalOptionsModal = this.$uibModal.open({ + templateUrl: + 'billing/main/history/postalMailOptions/billing-main-history-postal-mail-options.html', + controller: 'BillingHistoryPostalMailOptionsCtrl', + controllerAs: '$ctrl', + resolve: { + postalMailOptionsActivated: () => !this.postalMailOptions.activated, + }, + }); + + return postalOptionsModal.result.catch(() => { + // reset the checkbox state in case modal is closed without confirm + this.postalMailOptions.activated = !this.postalMailOptions.activated; + }); + } + + /* ----- End of EVENTS ------ */ + + getDebtAccount() { + return this.OvhApiMe.DebtAccount() + .v6() + .get() + .$promise.catch((error) => { + if (error.status === 404) { + return { + active: false, + }; + } + + return this.$q.reject(error); + }); + } + + $onInit() { + this.criteria = JSON.parse(this.filters).map((criteria) => ({ + property: get(criteria, 'field'), + operator: get(criteria, 'comparator'), + value: criteria.reference[0], + })); + + let postalMailOptionPromise = this.$q.when(null); + + this.loading.init = true; + + if ( + this.coreConfig.isRegion('EU') && + this.currentUser.billingCountry === 'FR' && + this.currentUser.legalform === 'individual' + ) { + postalMailOptionPromise = this.OvhApiMe.Billing() + .InvoicesByPostalMail() + .v6() + .get().$promise; + } + + return this.$q + .all({ + debtAccount: this.getDebtAccount(), + hasDefaultPaymentMethod: this.ovhPaymentMethod.hasDefaultPaymentMethod(), + invoicesByPostalMail: postalMailOptionPromise, + }) + .then( + ({ debtAccount, hasDefaultPaymentMethod, invoicesByPostalMail }) => { + this.debtAccount = debtAccount; + this.debtAccount.active = + get(debtAccount, 'active') || + get(debtAccount, 'todoAmount.value') > 0 || + get(debtAccount, 'dueAmount.value') > 0; + this.hasDefaultPaymentMethod = hasDefaultPaymentMethod; + + // set invoice by postal mail options + this.postalMailOptions.enabled = invoicesByPostalMail !== null; + this.postalMailOptions.activated = get( + invoicesByPostalMail, + 'data', + false, + ); + }, + ) + .catch((error) => { + this.Alerter.error( + [ + this.$translate.instant( + 'billing_main_history_legacy_loading_errors', + ), + get(error, 'data.message'), + ].join(' '), + 'billing_main_alert', + ); + }) + .finally(() => { + this.loading.init = false; + }); + } + + getDebt(bill) { + return this.$http + .get(`/me/bill/${bill.billId}/debt`) + .then(({ data: debt }) => { + return { + ...bill, + debt, + }; + }) + .catch((error) => { + // If there is no debt means the bill has been payed + // API return a 404 if there is no debt + if (error.status === 404) { + return { + ...bill, + debt: { + dueAmount: { + value: 0, + text: bill.priceWithTax.text.replace(/([0-9]|\.|,)+/g, '0.00'), + }, + }, + }; + } + return bill; + }); + } +} diff --git a/packages/manager/modules/new-billing/src/main/history/legacy/billing-main-history.html b/packages/manager/modules/new-billing/src/main/history/legacy/billing-main-history.html new file mode 100644 index 000000000000..e155463d842e --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/legacy/billing-main-history.html @@ -0,0 +1,326 @@ +
+

+ +
+ +
+ +
+
+ + +
+ +
+

+ +

+ +

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
diff --git a/packages/manager/modules/new-billing/src/main/history/legacy/history.component.js b/packages/manager/modules/new-billing/src/main/history/legacy/history.component.js new file mode 100644 index 000000000000..fee2328f193b --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/legacy/history.component.js @@ -0,0 +1,12 @@ +import controller from './billing-main-history.controller'; +import template from './billing-main-history.html'; + +export default { + bindings: { + currentUser: '<', + filters: '<', + onListParamsChange: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/main/history/legacy/history.module.js b/packages/manager/modules/new-billing/src/main/history/legacy/history.module.js new file mode 100644 index 000000000000..7dcd4120b20d --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/legacy/history.module.js @@ -0,0 +1,14 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import '@ovh-ux/ui-kit'; + +import component from './history.component'; + +const moduleName = 'ovhManagerDedicatedBillingLegacyHistory'; + +angular + .module(moduleName, [angularTranslate, 'oui']) + .component('billingLegacyHistory', component) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_de_DE.json new file mode 100644 index 000000000000..672311add353 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_de_DE.json @@ -0,0 +1,29 @@ +{ + "billing_main_history_legacy_title": "Meine Rechnungen", + "billing_main_history_legacy_loading_errors": "Beim Abruf Ihrer Rechnungen ist ein Fehler aufgetreten.", + "billing_main_history_legacy_export_error": "Beim Export Ihrer Rechnungen im CSV-Format ist ein Fehler aufgetreten.", + "billing_main_history_legacy_invoices_postal_mail": "Rechnungen auf Papier erhalten", + "billing_main_history_legacy_table_actions": "Aktionen", + "billing_main_history_legacy_table_actions_title": "Meine Rechnungen: Aktionen", + "billing_main_history_legacy_table_action_pay_debt": "Mein Konto sofort ausgleichen ", + "billing_main_history_legacy_table_action_pay_debt_title": "Meine Rechnungen: Kontostand sofort ausgleichen", + "billing_main_history_legacy_table_action_export": "Export als CSV-Datei", + "billing_main_history_legacy_table_action_export_title": "Meine Rechnungen: in CSV exportieren", + "billing_main_history_legacy_table_id": "Referenz", + "billing_main_history_legacy_table_order_id": "Bestellnummer", + "billing_main_history_legacy_table_date": "Ausstellungsdatum ", + "billing_main_history_legacy_table_total": "Betrag", + "billing_main_history_legacy_table_total_with_VAT": "Betrag inkl. MwSt", + "billing_main_history_legacy_table_balance_due_amount": "Rechnungsbetrag ", + "billing_main_history_legacy_table_balance_due_date": "Fälligkeitsdatum ", + "billing_main_history_legacy_table_unavailable": "Information nicht verfügbar ", + "billing_main_history_legacy_table_immediately": "Sofort ", + "billing_main_history_legacy_table_debt_paid": "Bezahlt", + "billing_main_history_legacy_table_download_html": "Die HTML Version anzeigen", + "billing_main_history_legacy_table_download_pdf": "Die PDF Version anzeigen", + "billing_main_history_legacy_table_download_pdf_beta": "PDF-Version ansehen (Beta)", + "billing_main_history_legacy_table_debt_detail": "Details für den Sollbetrag einsehen.", + "billing_main_history_legacy_table_debt_pay": "Mein Konto sofort ausgleichen ", + "billing_main_history_legacy_debt_to_pay": "Für die Verlängerung Ihrer Dienstleistungen ist ein Betrag von {{t0}} fällig.", + "billing_main_history_legacy_debt_automatically_collected": "Ein Betrag in Höhe von {{t0}} wird von Ihrem Standard-Zahlungsmittel abgebucht." +} diff --git a/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_en_GB.json new file mode 100644 index 000000000000..82bdc7723218 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_en_GB.json @@ -0,0 +1,29 @@ +{ + "billing_main_history_legacy_title": "My bills", + "billing_main_history_legacy_loading_errors": "An error has occurred retrieving your bills.", + "billing_main_history_legacy_export_error": "An error has occurred exporting your bills in .csv format.", + "billing_main_history_legacy_invoices_postal_mail": "Receive bills in paper format", + "billing_main_history_legacy_table_actions": "Actions", + "billing_main_history_legacy_table_actions_title": "My bills: Actions", + "billing_main_history_legacy_table_action_pay_debt": "Pay balance immediately", + "billing_main_history_legacy_table_action_pay_debt_title": "My bills: Pay balance immediately", + "billing_main_history_legacy_table_action_export": "Export as CSV", + "billing_main_history_legacy_table_action_export_title": "My bills: Export in .csv format", + "billing_main_history_legacy_table_id": "Reference", + "billing_main_history_legacy_table_order_id": "Order number ", + "billing_main_history_legacy_table_date": "Issue date ", + "billing_main_history_legacy_table_total": "Amount", + "billing_main_history_legacy_table_total_with_VAT": "Amount incl. VAT", + "billing_main_history_legacy_table_balance_due_amount": "Outstanding balance", + "billing_main_history_legacy_table_balance_due_date": "Date due", + "billing_main_history_legacy_table_unavailable": "Information not available ", + "billing_main_history_legacy_table_immediately": "Immediate", + "billing_main_history_legacy_table_debt_paid": "Paid", + "billing_main_history_legacy_table_download_html": "See HTML version", + "billing_main_history_legacy_table_download_pdf": "See PDF version", + "billing_main_history_legacy_table_download_pdf_beta": "See PDF version (Beta)", + "billing_main_history_legacy_table_debt_detail": "View details for this outstanding amount", + "billing_main_history_legacy_table_debt_pay": "Pay balance immediately", + "billing_main_history_legacy_debt_to_pay": "A total of {{t0}} is due for your service renewals.", + "billing_main_history_legacy_debt_automatically_collected": "A total of {{t0}} will be withdrawn from your default payment method." +} diff --git a/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_es_ES.json new file mode 100644 index 000000000000..3e846aa92a10 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_es_ES.json @@ -0,0 +1,29 @@ +{ + "billing_main_history_legacy_title": "Mis facturas", + "billing_main_history_legacy_loading_errors": "Se ha producido un error al cargar sus facturas.", + "billing_main_history_legacy_export_error": "Se ha producido un error al exportar sus facturas en formato CSV.", + "billing_main_history_legacy_invoices_postal_mail": "Recibir mis facturas en formato papel", + "billing_main_history_legacy_table_actions": "Acciones", + "billing_main_history_legacy_table_actions_title": "Mis facturas: Acciones", + "billing_main_history_legacy_table_action_pay_debt": "Abonar el importe pendiente ahora", + "billing_main_history_legacy_table_action_pay_debt_title": "Mis facturas: Abonar el importe pendiente ahora", + "billing_main_history_legacy_table_action_export": "Exportar en CSV", + "billing_main_history_legacy_table_action_export_title": "Mis facturas: Exportar en CSV", + "billing_main_history_legacy_table_id": "Referencia", + "billing_main_history_legacy_table_order_id": "Número de pedido", + "billing_main_history_legacy_table_date": "Fecha de emisión", + "billing_main_history_legacy_table_total": "Importe", + "billing_main_history_legacy_table_total_with_VAT": "Importe IVA incl.", + "billing_main_history_legacy_table_balance_due_amount": "Saldo a pagar", + "billing_main_history_legacy_table_balance_due_date": "Fecha de vencimiento", + "billing_main_history_legacy_table_unavailable": "Información no disponible", + "billing_main_history_legacy_table_immediately": "Inmediato", + "billing_main_history_legacy_table_debt_paid": "Pagada", + "billing_main_history_legacy_table_download_html": "Ver la versión HTML", + "billing_main_history_legacy_table_download_pdf": "Ver la versión PDF", + "billing_main_history_legacy_table_download_pdf_beta": "Ver la versión PDF (Beta)", + "billing_main_history_legacy_table_debt_detail": "Ver los detalles", + "billing_main_history_legacy_table_debt_pay": "Abonar el importe pendiente ahora", + "billing_main_history_legacy_debt_to_pay": "Tiene pendiente un importe de {{t0}} para poder renovar sus servicios.", + "billing_main_history_legacy_debt_automatically_collected": "La cantidad de {{t0}} se cargará a su forma de pago por defecto." +} diff --git a/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..26b3fd01ac36 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_fr_CA.json @@ -0,0 +1,29 @@ +{ + "billing_main_history_legacy_title": "Mes factures", + "billing_main_history_legacy_loading_errors": "Une erreur est survenue lors de la récupération de vos factures.", + "billing_main_history_legacy_export_error": "Une erreur est survenue lors de l'exportation de vos factures au format csv.", + "billing_main_history_legacy_invoices_postal_mail": "Recevoir mes factures au format papier", + "billing_main_history_legacy_table_actions": "Actions", + "billing_main_history_legacy_table_actions_title": "Mes factures : actions", + "billing_main_history_legacy_table_action_pay_debt": "Régler mon solde immédiatement", + "billing_main_history_legacy_table_action_pay_debt_title": "Mes factures : régler mon solde immédiatement", + "billing_main_history_legacy_table_action_export": "Exporter en CSV", + "billing_main_history_legacy_table_action_export_title": "Mes factures : exporter en CSV", + "billing_main_history_legacy_table_id": "Référence", + "billing_main_history_legacy_table_order_id": "Numéro de commande", + "billing_main_history_legacy_table_date": "Date d'émission", + "billing_main_history_legacy_table_total": "Montant", + "billing_main_history_legacy_table_total_with_VAT": "Montant TTC", + "billing_main_history_legacy_table_balance_due_amount": "Solde à payer", + "billing_main_history_legacy_table_balance_due_date": "Date due", + "billing_main_history_legacy_table_unavailable": "Information non-disponible", + "billing_main_history_legacy_table_immediately": "Immédiate", + "billing_main_history_legacy_table_debt_paid": "Payée", + "billing_main_history_legacy_table_download_html": "Voir la version HTML", + "billing_main_history_legacy_table_download_pdf": "Voir la version PDF", + "billing_main_history_legacy_table_download_pdf_beta": "Voir la version PDF (Beta)", + "billing_main_history_legacy_table_debt_detail": "Voir les détails pour cette dette", + "billing_main_history_legacy_table_debt_pay": "Régler mon solde immédiatement", + "billing_main_history_legacy_debt_to_pay": "Un montant de {{t0}} est dû pour le renouvellement de vos services.", + "billing_main_history_legacy_debt_automatically_collected": "Un montant de {{t0}} sera prélevé de votre moyen de paiement par défaut." +} diff --git a/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..26b3fd01ac36 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_fr_FR.json @@ -0,0 +1,29 @@ +{ + "billing_main_history_legacy_title": "Mes factures", + "billing_main_history_legacy_loading_errors": "Une erreur est survenue lors de la récupération de vos factures.", + "billing_main_history_legacy_export_error": "Une erreur est survenue lors de l'exportation de vos factures au format csv.", + "billing_main_history_legacy_invoices_postal_mail": "Recevoir mes factures au format papier", + "billing_main_history_legacy_table_actions": "Actions", + "billing_main_history_legacy_table_actions_title": "Mes factures : actions", + "billing_main_history_legacy_table_action_pay_debt": "Régler mon solde immédiatement", + "billing_main_history_legacy_table_action_pay_debt_title": "Mes factures : régler mon solde immédiatement", + "billing_main_history_legacy_table_action_export": "Exporter en CSV", + "billing_main_history_legacy_table_action_export_title": "Mes factures : exporter en CSV", + "billing_main_history_legacy_table_id": "Référence", + "billing_main_history_legacy_table_order_id": "Numéro de commande", + "billing_main_history_legacy_table_date": "Date d'émission", + "billing_main_history_legacy_table_total": "Montant", + "billing_main_history_legacy_table_total_with_VAT": "Montant TTC", + "billing_main_history_legacy_table_balance_due_amount": "Solde à payer", + "billing_main_history_legacy_table_balance_due_date": "Date due", + "billing_main_history_legacy_table_unavailable": "Information non-disponible", + "billing_main_history_legacy_table_immediately": "Immédiate", + "billing_main_history_legacy_table_debt_paid": "Payée", + "billing_main_history_legacy_table_download_html": "Voir la version HTML", + "billing_main_history_legacy_table_download_pdf": "Voir la version PDF", + "billing_main_history_legacy_table_download_pdf_beta": "Voir la version PDF (Beta)", + "billing_main_history_legacy_table_debt_detail": "Voir les détails pour cette dette", + "billing_main_history_legacy_table_debt_pay": "Régler mon solde immédiatement", + "billing_main_history_legacy_debt_to_pay": "Un montant de {{t0}} est dû pour le renouvellement de vos services.", + "billing_main_history_legacy_debt_automatically_collected": "Un montant de {{t0}} sera prélevé de votre moyen de paiement par défaut." +} diff --git a/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_it_IT.json new file mode 100644 index 000000000000..6b99f487724a --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_it_IT.json @@ -0,0 +1,29 @@ +{ + "billing_main_history_legacy_title": "Le tue fatture", + "billing_main_history_legacy_loading_errors": "Si è verificato un errore durante il recupero delle fatture.", + "billing_main_history_legacy_export_error": "Si è verificato un errore durante l'esportazione delle fatture in formato CSV.", + "billing_main_history_legacy_invoices_postal_mail": "Ricevi le fatture in formato cartaceo", + "billing_main_history_legacy_table_actions": "Azioni", + "billing_main_history_legacy_table_actions_title": "Le tue fatture: azioni", + "billing_main_history_legacy_table_action_pay_debt": "Salda subito l'importo dovuto", + "billing_main_history_legacy_table_action_pay_debt_title": "Le tue fatture: salda subito l'importo dovuto", + "billing_main_history_legacy_table_action_export": "Esporta in CSV", + "billing_main_history_legacy_table_action_export_title": "Le tue fatture: esporta in CSV", + "billing_main_history_legacy_table_id": "Referenza", + "billing_main_history_legacy_table_order_id": "Numero dell'ordine", + "billing_main_history_legacy_table_date": "Data di emissione", + "billing_main_history_legacy_table_total": "Importo", + "billing_main_history_legacy_table_total_with_VAT": "Importo IVA inclusa", + "billing_main_history_legacy_table_balance_due_amount": "Importo da saldare", + "billing_main_history_legacy_table_balance_due_date": "Data di scadenza", + "billing_main_history_legacy_table_unavailable": "Informazione non disponibile", + "billing_main_history_legacy_table_immediately": "Immediato", + "billing_main_history_legacy_table_debt_paid": "Pagato", + "billing_main_history_legacy_table_download_html": "Visualizza la versione HTML", + "billing_main_history_legacy_table_download_pdf": "Visualizza la versione PDF", + "billing_main_history_legacy_table_download_pdf_beta": "Visualizza la versione PDF (Beta)", + "billing_main_history_legacy_table_debt_detail": "Visualizza i dettagli di questo addebito", + "billing_main_history_legacy_table_debt_pay": "Salda subito l'importo dovuto", + "billing_main_history_legacy_debt_to_pay": "Per rinnovare i servizi è necessario saldare un importo di {{t0}}.", + "billing_main_history_legacy_debt_automatically_collected": "Un importo di {{t0}} verrà addebitato sulla modalità di pagamento predefinita." +} diff --git a/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..e2c09c6404b3 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_pl_PL.json @@ -0,0 +1,29 @@ +{ + "billing_main_history_legacy_title": "Faktury", + "billing_main_history_legacy_loading_errors": "Wystąpił błąd podczas pobierania faktur.", + "billing_main_history_legacy_export_error": "Wystąpił błąd podczas eksportu faktur w formacie CSV.", + "billing_main_history_legacy_invoices_postal_mail": "Proszę o przesłanie faktur w formie papierowej", + "billing_main_history_legacy_table_actions": "Operacje", + "billing_main_history_legacy_table_actions_title": "Moje faktury: operacje", + "billing_main_history_legacy_table_action_pay_debt": "Ureguluj saldo teraz", + "billing_main_history_legacy_table_action_pay_debt_title": "Moje faktury: ureguluj saldo teraz", + "billing_main_history_legacy_table_action_export": "Eksportuj w formacie CSV", + "billing_main_history_legacy_table_action_export_title": "Moje faktury: eksportuj w formacie CSV", + "billing_main_history_legacy_table_id": "Opis", + "billing_main_history_legacy_table_order_id": "Numer zamówienia", + "billing_main_history_legacy_table_date": "Data wystawienia", + "billing_main_history_legacy_table_total": "Kwota", + "billing_main_history_legacy_table_total_with_VAT": "Kwota brutto", + "billing_main_history_legacy_table_balance_due_amount": "Kwota do zapłaty", + "billing_main_history_legacy_table_balance_due_date": "Termin płatności", + "billing_main_history_legacy_table_unavailable": "Informacja niedostępna", + "billing_main_history_legacy_table_immediately": "Płatność natychmiastowa ", + "billing_main_history_legacy_table_debt_paid": "Opłacone", + "billing_main_history_legacy_table_download_html": "Wyświetl wersję HTML", + "billing_main_history_legacy_table_download_pdf": "Wyświetl wersję PDF", + "billing_main_history_legacy_table_download_pdf_beta": "Wyświetl wersję PDF (Beta)", + "billing_main_history_legacy_table_debt_detail": "Wyświetl szczegóły dla tego zadłużenia", + "billing_main_history_legacy_table_debt_pay": "Ureguluj saldo teraz", + "billing_main_history_legacy_debt_to_pay": "W celu odnowienia usług należy wpłacić kwotę {{t0}}.", + "billing_main_history_legacy_debt_automatically_collected": "Kwota {{t0}} zostanie pobrana z Twojego domyślnego sposobu płatności." +} diff --git a/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..ed52c1535e66 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/legacy/translations/Messages_pt_PT.json @@ -0,0 +1,29 @@ +{ + "billing_main_history_legacy_title": "Faturas", + "billing_main_history_legacy_loading_errors": "Ocorreu um erro ao recuperar as suas faturas.", + "billing_main_history_legacy_export_error": "Ocorreu um erro ao exportar as suas faturas em formato CSV.", + "billing_main_history_legacy_invoices_postal_mail": "Receber as minhas faturas em papel", + "billing_main_history_legacy_table_actions": "Ações", + "billing_main_history_legacy_table_actions_title": "As minhas faturas: ações", + "billing_main_history_legacy_table_action_pay_debt": "Pagar a minha dívida imediatamente", + "billing_main_history_legacy_table_action_pay_debt_title": "As minhas faturas: pagar a minha dívida imediatamente", + "billing_main_history_legacy_table_action_export": "Exportar em CSV", + "billing_main_history_legacy_table_action_export_title": "As minhas faturas: exportar para CSV", + "billing_main_history_legacy_table_id": "Referência", + "billing_main_history_legacy_table_order_id": "Número de encomenda", + "billing_main_history_legacy_table_date": "Data de emissão", + "billing_main_history_legacy_table_total": "Montante", + "billing_main_history_legacy_table_total_with_VAT": "Montante c/IVA", + "billing_main_history_legacy_table_balance_due_amount": "Saldo a pagar", + "billing_main_history_legacy_table_balance_due_date": "Data de vencimento", + "billing_main_history_legacy_table_unavailable": "Informação indisponível", + "billing_main_history_legacy_table_immediately": "Imediato", + "billing_main_history_legacy_table_debt_paid": "Pago", + "billing_main_history_legacy_table_download_html": "Ver a versão HTML", + "billing_main_history_legacy_table_download_pdf": "Ver a versão PDF", + "billing_main_history_legacy_table_download_pdf_beta": "Ver a versão PDF (Beta)", + "billing_main_history_legacy_table_debt_detail": "Ver os detalhes desta dívida", + "billing_main_history_legacy_table_debt_pay": "Pagar a minha dívida imediatamente", + "billing_main_history_legacy_debt_to_pay": "Para renovar os serviços, é necessário liquidar o montante de {{t0}}", + "billing_main_history_legacy_debt_automatically_collected": "Será debitada a importância de {{t0}} usando o método de pagamento predefinido." +} diff --git a/packages/manager/modules/new-billing/src/main/history/postalMailOptions/billing-main-history-postal-mail-options.controller.js b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/billing-main-history-postal-mail-options.controller.js new file mode 100644 index 000000000000..466c7e40b027 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/billing-main-history-postal-mail-options.controller.js @@ -0,0 +1,59 @@ +import get from 'lodash/get'; + +export default class { + /* @ngInject */ + constructor( + $translate, + $uibModalInstance, + Alerter, + OvhApiMe, + postalMailOptionsActivated, + ) { + this.$translate = $translate; + this.$uibModalInstance = $uibModalInstance; + this.Alerter = Alerter; + this.OvhApiMe = OvhApiMe; + this.postalMailOptionsActivated = postalMailOptionsActivated; + + this.loading = { + update: false, + }; + } + + confirmChoice() { + this.loading.update = true; + + this.OvhApiMe.Billing() + .InvoicesByPostalMail() + .v6() + .post({ + enable: this.postalMailOptionsActivated, + }) + .$promise.then(() => { + this.Alerter.success( + this.$translate.instant( + this.postalMailOptionsActivated + ? 'billing_main_history_postal_mail_options_activate_success' + : 'billing_main_history_postal_mail_options_desactivate_success', + ), + 'billing_main_alert', + ); + this.$uibModalInstance.close(); + }) + .catch((error) => { + this.Alerter.error( + [ + this.$translate.instant( + 'billing_main_history_postal_mail_options_update_error', + ), + get(error, 'data.message'), + ].join(' '), + 'billing_main_alert', + ); + this.$uibModalInstance.dismiss(); + }) + .finally(() => { + this.loading.update = false; + }); + } +} diff --git a/packages/manager/modules/new-billing/src/main/history/postalMailOptions/billing-main-history-postal-mail-options.html b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/billing-main-history-postal-mail-options.html new file mode 100644 index 000000000000..973239634eda --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/billing-main-history-postal-mail-options.html @@ -0,0 +1,16 @@ +
+ +

+
+
diff --git a/packages/manager/modules/new-billing/src/main/history/postalMailOptions/billing-main-history-postal-mail-options.module.js b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/billing-main-history-postal-mail-options.module.js new file mode 100644 index 000000000000..c68c9f9bf23a --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/billing-main-history-postal-mail-options.module.js @@ -0,0 +1,32 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngOvhUtils from '@ovh-ux/ng-ovh-utils'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import controller from './billing-main-history-postal-mail-options.controller'; +import template from './billing-main-history-postal-mail-options.html'; + +const moduleName = 'ovhManagerBillingMainHistoryPostalMailOptions'; + +angular + .module(moduleName, [ + angularTranslate, + ngOvhUtils, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .controller('BillingHistoryPostalMailOptionsCtrl', controller) + .run( + /* @ngInject */ ($templateCache) => { + $templateCache.put( + 'billing/main/history/postalMailOptions/billing-main-history-postal-mail-options.html', + template, + ); + }, + ) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_de_DE.json new file mode 100644 index 000000000000..e4ad399c5525 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_de_DE.json @@ -0,0 +1,8 @@ +{ + "billing_main_history_postal_mail_options_title": "Änderung der Versandoptionen für Rechnungen", + "billing_main_history_postal_mail_options_activation": "Sind Sie sicher, dass Sie den Versand von Papierrechnungen aktivieren möchten?", + "billing_main_history_postal_mail_options_desactivation": "Sind Sie sicher, dass Sie den Versand von Papierrechnungen deaktivieren möchten?", + "billing_main_history_postal_mail_options_activate_success": "Die Einstellung wurde aktualisiert. Sie erhalten Ihre Rechnungen von nun an auf Papier.", + "billing_main_history_postal_mail_options_desactivate_success": "Die Einstellung wurde aktualisiert. Sie erhalten keine Papierrechnungen mehr.", + "billing_main_history_postal_mail_options_update_error": "Bei der Aktualisierung der Einstellung ist ein Fehler aufgetreten." +} diff --git a/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_en_GB.json new file mode 100644 index 000000000000..f44de6d663e2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_en_GB.json @@ -0,0 +1,8 @@ +{ + "billing_main_history_postal_mail_options_title": "Modify options for sending bills", + "billing_main_history_postal_mail_options_activation": "Would you like to confirm that you wish to receive bills in paper format?", + "billing_main_history_postal_mail_options_desactivation": "Would you like to confirm that you no longer wish to receive bills in paper format?", + "billing_main_history_postal_mail_options_activate_success": "Your settings have been updated. From now on, you will receive your bills in paper format.", + "billing_main_history_postal_mail_options_desactivate_success": "Your settings have been updated. From now on, you will no longer receive your bills in paper format.", + "billing_main_history_postal_mail_options_update_error": "An error has occurred updating this setting" +} diff --git a/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_es_ES.json new file mode 100644 index 000000000000..3c2944693e2a --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_es_ES.json @@ -0,0 +1,8 @@ +{ + "billing_main_history_postal_mail_options_title": "Modificar las opciones para el envío de facturas", + "billing_main_history_postal_mail_options_activation": "¿Seguro que quiere activar el envío de sus facturas en formato papel?", + "billing_main_history_postal_mail_options_desactivation": "¿Seguro que quiere desactivar el envío de sus facturas en formato papel?", + "billing_main_history_postal_mail_options_activate_success": "El parámetro se ha actualizado correctamente. A partir de ahora recibirá sus facturas en formato papel.", + "billing_main_history_postal_mail_options_desactivate_success": "El parámetro se ha actualizado correctamente. Ya no recibirá sus facturas en formato papel.", + "billing_main_history_postal_mail_options_update_error": "Se ha producido un error al actualizar el parámetro." +} diff --git a/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..ce16994bb96b --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_fr_CA.json @@ -0,0 +1,8 @@ +{ + "billing_main_history_postal_mail_options_title": "Modification des options d'envoi de factures", + "billing_main_history_postal_mail_options_activation": "Voulez-vous confirmer l'activation de l'envoi de vos factures en format papier?", + "billing_main_history_postal_mail_options_desactivation": "Voulez-vous confirmer la désactivation de l'envoi de vos factures en format papier?", + "billing_main_history_postal_mail_options_activate_success": "Le paramètre a bien été mis à jour. Vous recevrez dorénavant vos factures en format papier.", + "billing_main_history_postal_mail_options_desactivate_success": "Le paramètre a bien été mis à jour. Vous ne recevrez plus vos factures en format papier.", + "billing_main_history_postal_mail_options_update_error": "Une erreur est survenue lors de la mise à jour du paramètre" +} diff --git a/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..3857c68ded3f --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_fr_FR.json @@ -0,0 +1,8 @@ +{ + "billing_main_history_postal_mail_options_title": "Modification des options d'envoi de factures", + "billing_main_history_postal_mail_options_activation": "Voulez-vous confirmer l'activation de l'envoi de vos factures au format papier ?", + "billing_main_history_postal_mail_options_desactivation": "Voulez-vous confirmer la désactivation de l'envoi de vos factures au format papier ?", + "billing_main_history_postal_mail_options_activate_success": "Le paramètre a bien été mis à jour. Vous recevrez dorénavant vos factures au format papier.", + "billing_main_history_postal_mail_options_desactivate_success": "Le paramètre a bien été mis à jour. Vous ne recevrez plus vos factures au format papier.", + "billing_main_history_postal_mail_options_update_error": "Une erreur est survenue lors de la mise à jour du paramètre" +} diff --git a/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_it_IT.json new file mode 100644 index 000000000000..3360a5f9c999 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_it_IT.json @@ -0,0 +1,8 @@ +{ + "billing_main_history_postal_mail_options_title": "Modifica le opzioni di invio delle fatture", + "billing_main_history_postal_mail_options_activation": "Vuoi davvero attivare l'invio delle fatture in formato cartaceo?", + "billing_main_history_postal_mail_options_desactivation": "Vuoi davvero disattivare l'invio delle fatture in formato cartaceo?", + "billing_main_history_postal_mail_options_activate_success": "L'impostazione è stata aggiornata correttamente. Da questo momento riceverai le fatture in formato cartaceo.", + "billing_main_history_postal_mail_options_desactivate_success": "L'impostazione è stata aggiornata correttamente. Da questo momento non riceverai più le fatture in formato cartaceo.", + "billing_main_history_postal_mail_options_update_error": "Si è verificato un errore durante l'aggiornamento dell'impostazione." +} diff --git a/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..328c288819e1 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_pl_PL.json @@ -0,0 +1,8 @@ +{ + "billing_main_history_postal_mail_options_title": "Zmiana opcji wysyłki faktur", + "billing_main_history_postal_mail_options_activation": "Czy chcesz aktywować wysyłkę Twoich faktur w formie papierowej?", + "billing_main_history_postal_mail_options_desactivation": "Czy chcesz potwierdzić dezaktywację wysyłki Twoich faktur w formie papierowej? ", + "billing_main_history_postal_mail_options_activate_success": "Ustawienia zostały zaktualizowane. Od tej pory będziesz otrzymywał faktury w formie papierowej.", + "billing_main_history_postal_mail_options_desactivate_success": "Ustawienia zostały zaktualizowane. Nie będziesz już otrzymywał faktur w formie papierowej.", + "billing_main_history_postal_mail_options_update_error": "Wystąpił błąd podczas aktualizacji ustawień. " +} diff --git a/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..5405d80bcd45 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/postalMailOptions/translations/Messages_pt_PT.json @@ -0,0 +1,8 @@ +{ + "billing_main_history_postal_mail_options_title": "Alteração das opções de envio de faturas", + "billing_main_history_postal_mail_options_activation": "Pretende confirmar a ativação do envio das suas faturas em papel?", + "billing_main_history_postal_mail_options_desactivation": "Pretende confirmar a desativação do envio das suas faturas em papel?", + "billing_main_history_postal_mail_options_activate_success": "A configuração foi atualizada com êxito. Vai começar a receber as suas faturas em papel.", + "billing_main_history_postal_mail_options_desactivate_success": "A configuração foi atualizada com êxito. Vai deixar de receber as suas faturas em papel.", + "billing_main_history_postal_mail_options_update_error": "Ocorreu um erro ao atualizar as suas configurações" +} diff --git a/packages/manager/modules/new-billing/src/main/history/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/main/history/translations/Messages_de_DE.json new file mode 100644 index 000000000000..1d18c8cba031 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/translations/Messages_de_DE.json @@ -0,0 +1,36 @@ +{ + "billing_main_history_loading_errors": "Beim Abruf Ihrer Rechnungen ist ein Fehler aufgetreten.", + "billing_main_history_export_error": "Beim Export Ihrer Rechnungen im CSV-Format ist ein Fehler aufgetreten.", + "billing_main_history_invoices_postal_mail": "Rechnungen auf Papier erhalten", + "billing_main_history_table_actions": "Massenaktionen", + "billing_main_history_table_actions_title": "Meine Rechnungen: Aktionen", + "billing_main_history_table_action_pay_debt": "Mein Konto sofort ausgleichen ", + "billing_main_history_table_action_pay_debt_title": "Meine Rechnungen: Kontostand sofort ausgleichen", + "billing_main_history_table_action_export_selection": "Die Auswahl im CSV-Format exportieren", + "billing_main_history_table_action_export_selection_pdf": "Die Auswahl im PDF-Format exportieren", + "billing_main_history_table_action_export_all": "Alles im CSV-Format exportieren", + "billing_main_history_table_action_export_all_pdf": "Alles im PDF-Format exportieren", + "billing_main_history_table_id": "Referenz", + "billing_main_history_table_order_id": "Bestellnummer ", + "billing_main_history_table_date": "Ausstellungsdatum ", + "billing_main_history_table_total": "Betrag ohne MwSt.", + "billing_main_history_table_total_with_VAT": "Betrag inkl. MwSt", + "billing_main_history_table_balance_status": "Status", + "billing_main_history_table_balance_due_amount": "Stand", + "billing_main_history_table_balance_status_UNPAID": "Ausstehend", + "billing_main_history_table_balance_status_PAID": "Bezahlt", + "billing_main_history_table_balance_status_REFUNDED": "Rückerstattet", + "billing_main_history_table_balance_status_TO_BE_PAID": "Zu begleichen", + "billing_main_history_table_balance_status_UNMATURED": "Zu begleichen", + "billing_main_history_table_download_html": "Die HTML Version anzeigen", + "billing_main_history_table_download_pdf": "Die PDF Version anzeigen", + "billing_main_history_table_download_pdf_beta": "PDF-Version ansehen (Beta)", + "billing_main_history_table_debt_detail": "Details für den Sollbetrag einsehen.", + "billing_main_history_table_debt_pay": "Mein Konto sofort ausgleichen ", + "billing_main_history_debt_to_pay": "Für die Verlängerung Ihrer Dienstleistungen ist ein Betrag von {{t0}} fällig. ", + "billing_main_history_debt_automatically_collected": "Ein Betrag in Höhe von {{t0}} wird von Ihrem Standard-Zahlungsmittel abgebucht. ", + "billing_main_history_table_export_success": "Wir werden Ihnen eine E-Mail mit dem Link zum Download zuschicken, über den Sie Ihre exportierten Rechnungen abrufen können. Je nach Anzahl der Rechnungen kann dies einige Minuten in Anspruch nehmen.", + "billing_main_history_table_export_error": "Bei der Anfrage nach Export Ihrer Rechnungen ist ein Fehler aufgetreten. {{ message }}.", + "billing_main_history": "Meine Rechnungen", + "billing_main_history_table_balance_status_WRITE_OFF": "Abschreibung" +} diff --git a/packages/manager/modules/new-billing/src/main/history/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/main/history/translations/Messages_en_GB.json new file mode 100644 index 000000000000..7c6fd7d8650d --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/translations/Messages_en_GB.json @@ -0,0 +1,36 @@ +{ + "billing_main_history_loading_errors": "An error has occurred retrieving your bills.", + "billing_main_history_export_error": "An error has occurred exporting your bills in .csv format.", + "billing_main_history_invoices_postal_mail": "Receive bills in paper format", + "billing_main_history_table_actions": "Batch actions", + "billing_main_history_table_actions_title": "My bills: Actions", + "billing_main_history_table_action_pay_debt": "Pay balance immediately", + "billing_main_history_table_action_pay_debt_title": "My bills: Settle my balance immediately", + "billing_main_history_table_action_export_selection": "Export selection in CSV format", + "billing_main_history_table_action_export_selection_pdf": "Export selection in PDF format", + "billing_main_history_table_action_export_all": "Export all as CSV", + "billing_main_history_table_action_export_all_pdf": "Export all as PDF", + "billing_main_history_table_id": "Reference", + "billing_main_history_table_order_id": "Order number ", + "billing_main_history_table_date": "Issue date ", + "billing_main_history_table_total": "Amount ex. VAT", + "billing_main_history_table_total_with_VAT": "Amount incl. VAT", + "billing_main_history_table_balance_status": "Status", + "billing_main_history_table_balance_due_amount": "Balance", + "billing_main_history_table_balance_status_UNPAID": "Unpaid", + "billing_main_history_table_balance_status_PAID": "Paid", + "billing_main_history_table_balance_status_REFUNDED": "Refunded", + "billing_main_history_table_balance_status_TO_BE_PAID": "Payment due", + "billing_main_history_table_balance_status_UNMATURED": "Payment due", + "billing_main_history_table_download_html": "See HTML version", + "billing_main_history_table_download_pdf": "See PDF version", + "billing_main_history_table_download_pdf_beta": "See PDF version (Beta)", + "billing_main_history_table_debt_detail": "View details for this outstanding amount", + "billing_main_history_table_debt_pay": "Pay balance immediately", + "billing_main_history_debt_to_pay": "A total of {{t0}} is due for your service renewals.", + "billing_main_history_debt_automatically_collected": "A total of {{t0}} will be withdrawn from your default payment method.", + "billing_main_history_table_export_success": "We will send you an email containing a download link, which you can use to retrieve your exported bills. Depending on the number of bills you want to retrieve, this may take a few minutes.", + "billing_main_history_table_export_error": "An error has occurred requesting an export of your bills. {{ message }}", + "billing_main_history": "My bills", + "billing_main_history_table_balance_status_WRITE_OFF": "Loss" +} diff --git a/packages/manager/modules/new-billing/src/main/history/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/main/history/translations/Messages_es_ES.json new file mode 100644 index 000000000000..4568fec702e3 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/translations/Messages_es_ES.json @@ -0,0 +1,36 @@ +{ + "billing_main_history_loading_errors": "Se ha producido un error al cargar sus facturas.", + "billing_main_history_export_error": "Se ha producido un error al exportar sus facturas en formato CSV.", + "billing_main_history_invoices_postal_mail": "Recibir mis facturas en formato papel", + "billing_main_history_table_actions": "Acciones masivas", + "billing_main_history_table_actions_title": "Mis facturas: Acciones", + "billing_main_history_table_action_pay_debt": "Abonar el importe pendiente ahora", + "billing_main_history_table_action_pay_debt_title": "Mis facturas: Abonar el importe pendiente ahora", + "billing_main_history_table_action_export_selection": "Exportar la selección en formato CSV", + "billing_main_history_table_action_export_selection_pdf": "Exportar la selección en formato PDF", + "billing_main_history_table_action_export_all": "Exportar todo en CSV", + "billing_main_history_table_action_export_all_pdf": "Exportar todo en PDF", + "billing_main_history_table_id": "Referencia", + "billing_main_history_table_order_id": "Número de pedido", + "billing_main_history_table_date": "Fecha de emisión", + "billing_main_history_table_total": "Importe sin IVA", + "billing_main_history_table_total_with_VAT": "Importe IVA incl.", + "billing_main_history_table_balance_status": "Estado", + "billing_main_history_table_balance_due_amount": "Saldo", + "billing_main_history_table_balance_status_UNPAID": "No pagada", + "billing_main_history_table_balance_status_PAID": "Pagada", + "billing_main_history_table_balance_status_REFUNDED": "Devuelta", + "billing_main_history_table_balance_status_TO_BE_PAID": "Pendiente", + "billing_main_history_table_balance_status_UNMATURED": "Pendiente", + "billing_main_history_table_download_html": "Ver la versión HTML", + "billing_main_history_table_download_pdf": "Ver la versión PDF", + "billing_main_history_table_download_pdf_beta": "Ver la versión PDF (Beta)", + "billing_main_history_table_debt_detail": "Ver los detalles", + "billing_main_history_table_debt_pay": "Abonar el importe pendiente ahora", + "billing_main_history_debt_to_pay": "Tiene pendiente un importe de {{t0}} para poder renovar sus servicios.", + "billing_main_history_debt_automatically_collected": "La cantidad de {{t0}} se cargará a su forma de pago por defecto.", + "billing_main_history_table_export_success": "Recibirá un mensaje de correo electrónico con un enlace desde el que podrá descargar las facturas exportadas. En función del número de facturas, esta operación puede tardar unos minutos.", + "billing_main_history_table_export_error": "Se ha producido un error al solicitar la exportación de sus facturas. {{ message }}", + "billing_main_history": "Mis facturas", + "billing_main_history_table_balance_status_WRITE_OFF": "Cancelada" +} diff --git a/packages/manager/modules/new-billing/src/main/history/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/main/history/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..53c165de1559 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/translations/Messages_fr_CA.json @@ -0,0 +1,36 @@ +{ + "billing_main_history": "Mes factures", + "billing_main_history_loading_errors": "Une erreur est survenue lors de la récupération de vos factures.", + "billing_main_history_export_error": "Une erreur est survenue lors de l'exportation de vos factures au format csv.", + "billing_main_history_invoices_postal_mail": "Recevoir mes factures au format papier", + "billing_main_history_table_actions": "Actions de masse", + "billing_main_history_table_actions_title": "Mes factures : actions", + "billing_main_history_table_action_pay_debt": "Régler mon solde immédiatement", + "billing_main_history_table_action_pay_debt_title": "Mes factures : régler mon solde immédiatement", + "billing_main_history_table_action_export_selection": "Exporter la sélection au format CSV", + "billing_main_history_table_action_export_selection_pdf": "Exporter la séléction au format PDF", + "billing_main_history_table_action_export_all": "Tout exporter en CSV", + "billing_main_history_table_action_export_all_pdf": "Tout exporter en PDF", + "billing_main_history_table_id": "Référence", + "billing_main_history_table_order_id": "Numéro de commande", + "billing_main_history_table_date": "Date d'émission", + "billing_main_history_table_total": "Montant HT", + "billing_main_history_table_total_with_VAT": "Montant TTC", + "billing_main_history_table_balance_status": "Statut", + "billing_main_history_table_balance_due_amount": "Solde", + "billing_main_history_table_balance_status_UNPAID": "Impayée", + "billing_main_history_table_balance_status_PAID": "Payée", + "billing_main_history_table_balance_status_REFUNDED": "Remboursée", + "billing_main_history_table_balance_status_TO_BE_PAID": "À régler", + "billing_main_history_table_balance_status_UNMATURED": "À régler", + "billing_main_history_table_balance_status_WRITE_OFF": "Mise en perte", + "billing_main_history_table_download_html": "Voir la version HTML", + "billing_main_history_table_download_pdf": "Voir la version PDF", + "billing_main_history_table_download_pdf_beta": "Voir la version PDF (Beta)", + "billing_main_history_table_debt_detail": "Voir les détails pour cette dette", + "billing_main_history_table_debt_pay": "Régler mon solde immédiatement", + "billing_main_history_debt_to_pay": "Un montant de {{t0}} est dû pour le renouvellement de vos services.", + "billing_main_history_debt_automatically_collected": "Un montant de {{t0}} sera prélevé de votre moyen de paiement par défaut.", + "billing_main_history_table_export_success": "Nous allons vous envoyer un email contenant un lien de téléchargement vous permettant de récupérer votre export de factures. En fonction du nombre de factures, cela peut prendre quelques minutes.", + "billing_main_history_table_export_error": "Une erreur est survenue lors de la demande d'export de vos factures. {{ message }}" +} diff --git a/packages/manager/modules/new-billing/src/main/history/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/main/history/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..53c165de1559 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/translations/Messages_fr_FR.json @@ -0,0 +1,36 @@ +{ + "billing_main_history": "Mes factures", + "billing_main_history_loading_errors": "Une erreur est survenue lors de la récupération de vos factures.", + "billing_main_history_export_error": "Une erreur est survenue lors de l'exportation de vos factures au format csv.", + "billing_main_history_invoices_postal_mail": "Recevoir mes factures au format papier", + "billing_main_history_table_actions": "Actions de masse", + "billing_main_history_table_actions_title": "Mes factures : actions", + "billing_main_history_table_action_pay_debt": "Régler mon solde immédiatement", + "billing_main_history_table_action_pay_debt_title": "Mes factures : régler mon solde immédiatement", + "billing_main_history_table_action_export_selection": "Exporter la sélection au format CSV", + "billing_main_history_table_action_export_selection_pdf": "Exporter la séléction au format PDF", + "billing_main_history_table_action_export_all": "Tout exporter en CSV", + "billing_main_history_table_action_export_all_pdf": "Tout exporter en PDF", + "billing_main_history_table_id": "Référence", + "billing_main_history_table_order_id": "Numéro de commande", + "billing_main_history_table_date": "Date d'émission", + "billing_main_history_table_total": "Montant HT", + "billing_main_history_table_total_with_VAT": "Montant TTC", + "billing_main_history_table_balance_status": "Statut", + "billing_main_history_table_balance_due_amount": "Solde", + "billing_main_history_table_balance_status_UNPAID": "Impayée", + "billing_main_history_table_balance_status_PAID": "Payée", + "billing_main_history_table_balance_status_REFUNDED": "Remboursée", + "billing_main_history_table_balance_status_TO_BE_PAID": "À régler", + "billing_main_history_table_balance_status_UNMATURED": "À régler", + "billing_main_history_table_balance_status_WRITE_OFF": "Mise en perte", + "billing_main_history_table_download_html": "Voir la version HTML", + "billing_main_history_table_download_pdf": "Voir la version PDF", + "billing_main_history_table_download_pdf_beta": "Voir la version PDF (Beta)", + "billing_main_history_table_debt_detail": "Voir les détails pour cette dette", + "billing_main_history_table_debt_pay": "Régler mon solde immédiatement", + "billing_main_history_debt_to_pay": "Un montant de {{t0}} est dû pour le renouvellement de vos services.", + "billing_main_history_debt_automatically_collected": "Un montant de {{t0}} sera prélevé de votre moyen de paiement par défaut.", + "billing_main_history_table_export_success": "Nous allons vous envoyer un email contenant un lien de téléchargement vous permettant de récupérer votre export de factures. En fonction du nombre de factures, cela peut prendre quelques minutes.", + "billing_main_history_table_export_error": "Une erreur est survenue lors de la demande d'export de vos factures. {{ message }}" +} diff --git a/packages/manager/modules/new-billing/src/main/history/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/main/history/translations/Messages_it_IT.json new file mode 100644 index 000000000000..6975d2a64e0f --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/translations/Messages_it_IT.json @@ -0,0 +1,36 @@ +{ + "billing_main_history_loading_errors": "Si è verificato un errore durante il recupero delle tue fatture.", + "billing_main_history_export_error": "Si è verificato un errore durante l'esportazione delle tue fatture in formato CSV.", + "billing_main_history_invoices_postal_mail": "Ricevi le tue fatture in formato cartaceo", + "billing_main_history_table_actions": "Azioni massive", + "billing_main_history_table_actions_title": "Le tue fatture: azioni", + "billing_main_history_table_action_pay_debt": "Salda subito l'importo dovuto", + "billing_main_history_table_action_pay_debt_title": "Le tue fatture: salda le fatture in sospeso", + "billing_main_history_table_action_export_selection": "Esporta la selezione in formato CSV", + "billing_main_history_table_action_export_selection_pdf": "Esporta la selezione in formato PDF", + "billing_main_history_table_action_export_all": "Esporta tutto in CSV", + "billing_main_history_table_action_export_all_pdf": "Esporta tutto in PDF", + "billing_main_history_table_id": "Referenza", + "billing_main_history_table_order_id": "Numero dell'ordine", + "billing_main_history_table_date": "Data di emissione", + "billing_main_history_table_total": "Importo IVA esclusa", + "billing_main_history_table_total_with_VAT": "Importo IVA inclusa", + "billing_main_history_table_balance_status": "Stato", + "billing_main_history_table_balance_due_amount": "Saldo", + "billing_main_history_table_balance_status_UNPAID": "Non pagato", + "billing_main_history_table_balance_status_PAID": "Pagato", + "billing_main_history_table_balance_status_REFUNDED": "Rimborsato", + "billing_main_history_table_balance_status_TO_BE_PAID": "Da saldare", + "billing_main_history_table_balance_status_UNMATURED": "Da saldare", + "billing_main_history_table_download_html": "Visualizza in HTML", + "billing_main_history_table_download_pdf": "Visualizza in PDF", + "billing_main_history_table_download_pdf_beta": "Visualizza la versione PDF (Beta)", + "billing_main_history_table_debt_detail": "Visualizza i dettagli di questo addebito", + "billing_main_history_table_debt_pay": "Salda subito l'importo dovuto", + "billing_main_history_debt_to_pay": "Per rinnovare i tuoi servizi, è necessario saldare un importo di {{t0}}.", + "billing_main_history_debt_automatically_collected": "Un importo di {{t0}} verrà addebitato sulla tua modalità di pagamento predefinita.", + "billing_main_history_table_export_success": "Riceverai un’email con il link da cui sarà possibile scaricare le fatture esportate. In base al numero di fatture, l’operazione potrebbe richiedere alcuni minuti.", + "billing_main_history_table_export_error": "Si è verificato un errore durante la richiesta di esportazione delle fatture: {{ message }}", + "billing_main_history": "Le tue fatture", + "billing_main_history_table_balance_status_WRITE_OFF": "Stornato" +} diff --git a/packages/manager/modules/new-billing/src/main/history/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/main/history/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..ac2f6c331252 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/translations/Messages_pl_PL.json @@ -0,0 +1,36 @@ +{ + "billing_main_history_loading_errors": "Wystąpił błąd podczas pobierania faktur.", + "billing_main_history_export_error": "Wystąpił błąd podczas eksportu faktur w formacie CSV.", + "billing_main_history_invoices_postal_mail": "Proszę o przesłanie faktur w formie papierowej", + "billing_main_history_table_actions": "Masowe operacje", + "billing_main_history_table_actions_title": "Moje faktury: operacje", + "billing_main_history_table_action_pay_debt": "Ureguluj saldo teraz", + "billing_main_history_table_action_pay_debt_title": "Moje faktury: ureguluj saldo teraz", + "billing_main_history_table_action_export_selection": "Eksportuj zaznaczone elementy w formacie CSV", + "billing_main_history_table_action_export_selection_pdf": "Eksportuj zaznaczone elementy w formacie PDF", + "billing_main_history_table_action_export_all": "Eksportuj wszystko w formacie CSV", + "billing_main_history_table_action_export_all_pdf": "Eksportuj wszystko w formacie PDF", + "billing_main_history_table_id": "Opis", + "billing_main_history_table_order_id": "Numer zamówienia", + "billing_main_history_table_date": "Data wystawienia", + "billing_main_history_table_total": "Kwota netto ", + "billing_main_history_table_total_with_VAT": "Kwota brutto", + "billing_main_history_table_balance_status": "Status", + "billing_main_history_table_balance_due_amount": "Saldo", + "billing_main_history_table_balance_status_UNPAID": "Nieopłacone", + "billing_main_history_table_balance_status_PAID": "Opłacone", + "billing_main_history_table_balance_status_REFUNDED": "Płatność zwrócona", + "billing_main_history_table_balance_status_TO_BE_PAID": "Do uregulowania", + "billing_main_history_table_balance_status_UNMATURED": "Do uregulowania", + "billing_main_history_table_download_html": "Wyświetl wersję HTML", + "billing_main_history_table_download_pdf": "Wyświetl wersję PDF", + "billing_main_history_table_download_pdf_beta": "Wyświetl wersję PDF (Beta)", + "billing_main_history_table_debt_detail": "Wyświetl szczegóły dla tego zadłużenia", + "billing_main_history_table_debt_pay": "Ureguluj saldo teraz", + "billing_main_history_debt_to_pay": "Za odnowienie usług należy uiścić opłatę w wysokości {{t0}}.", + "billing_main_history_debt_automatically_collected": "Kwota {{t0}} zostanie pobrana z Twojego domyślnego sposobu płatności.", + "billing_main_history_table_export_success": "Otrzymasz e-mail z linkiem do pobrania wyeksportowanych faktur. Czas pobierania będzie zależał od liczby faktur.", + "billing_main_history_table_export_error": "Wystąpił błąd podczas zlecania eksportu faktur. {{message}} ", + "billing_main_history": "Faktury", + "billing_main_history_table_balance_status_WRITE_OFF": "Strata" +} diff --git a/packages/manager/modules/new-billing/src/main/history/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/main/history/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..cd6f2a3a6a85 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/history/translations/Messages_pt_PT.json @@ -0,0 +1,36 @@ +{ + "billing_main_history_loading_errors": "Ocorreu um erro ao recuperar as suas faturas.", + "billing_main_history_export_error": "Ocorreu um erro ao exportar as suas faturas em formato csv.", + "billing_main_history_invoices_postal_mail": "Receber as minhas faturas em papel", + "billing_main_history_table_actions": "Ações massivas", + "billing_main_history_table_actions_title": "As minhas faturas: ações", + "billing_main_history_table_action_pay_debt": "Pagar a minha dívida imediatamente", + "billing_main_history_table_action_pay_debt_title": "As minhas faturas: pagar a minha dívida imediatamente", + "billing_main_history_table_action_export_selection": "Exportar a seleção em formato CSV", + "billing_main_history_table_action_export_selection_pdf": "Exportar a seleção em formato PDF", + "billing_main_history_table_action_export_all": "Exportar tudo em CSV", + "billing_main_history_table_action_export_all_pdf": "Exportar tudo em PDF", + "billing_main_history_table_id": "Referência", + "billing_main_history_table_order_id": "Número de encomenda", + "billing_main_history_table_date": "Data de emissão", + "billing_main_history_table_total": "Montante s/IVA", + "billing_main_history_table_total_with_VAT": "Montante c/IVA", + "billing_main_history_table_balance_status": "Estado", + "billing_main_history_table_balance_due_amount": "Saldo", + "billing_main_history_table_balance_status_UNPAID": "Não pago", + "billing_main_history_table_balance_status_PAID": "Pago", + "billing_main_history_table_balance_status_REFUNDED": "Reembolsado", + "billing_main_history_table_balance_status_TO_BE_PAID": "Montante a pagar", + "billing_main_history_table_balance_status_UNMATURED": "Montante a pagar", + "billing_main_history_table_download_html": "Ver a versão HTML", + "billing_main_history_table_download_pdf": "Ver a versão PDF", + "billing_main_history_table_download_pdf_beta": "Consultar a versão PDF (Beta)", + "billing_main_history_table_debt_detail": "Ver os detalhes desta dívida", + "billing_main_history_table_debt_pay": "Pagar a minha dívida imediatamente", + "billing_main_history_debt_to_pay": "Para renovar os serviços, é necessário liquidar o seguinte montante: {{t0}}.", + "billing_main_history_debt_automatically_collected": "Será debitada a importância de {{t0}} usando o método de pagamento predefinido.", + "billing_main_history_table_export_success": "Receberá um e-mail com uma ligação a partir da qual poderá descarregar as faturas exportadas. Consoante o número de faturas, este processo poderá demorar alguns minutos.", + "billing_main_history_table_export_error": "Ocorreu um erro ao solicitar a exportação das suas faturas: {{ message }}", + "billing_main_history": "As minhas faturas", + "billing_main_history_table_balance_status_WRITE_OFF": "Cancelada" +} diff --git a/packages/manager/modules/new-billing/src/main/payAsYouGo/billing-main-pay-as-you-go.controller.js b/packages/manager/modules/new-billing/src/main/payAsYouGo/billing-main-pay-as-you-go.controller.js new file mode 100644 index 000000000000..1e99cf4b5c6d --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payAsYouGo/billing-main-pay-as-you-go.controller.js @@ -0,0 +1,117 @@ +import find from 'lodash/find'; +import flatten from 'lodash/flatten'; +import get from 'lodash/get'; +import map from 'lodash/map'; +import set from 'lodash/set'; + +export default class BillingMainPayAsYouGoCtrl { + /* @ngInject */ + constructor( + $q, + $translate, + Alerter, + OvhApiMe, + OvhApiServices, + ServicesHelper, + ) { + // injections + this.$q = $q; + this.$translate = $translate; + this.Alerter = Alerter; + this.OvhApiMe = OvhApiMe; + this.OvhApiServices = OvhApiServices; + this.ServicesHelper = ServicesHelper; + + // other attributes + this.loading = { + init: false, + }; + + this.consumptions = null; + } + + static getConsumptionElementType(planCode) { + if (planCode.indexOf('snapshot') > -1) { + return 'snapshot'; + } + if (planCode.indexOf('volume') > -1) { + return 'volume'; + } + + return 'instance'; + } + + /* ===================================== + = INITIALIZATION = + ====================================== */ + + /** + * This is done for pci projects only. Good luck to implement the rest :-) + * More seriously, the major part of the code will be removed when other service types + * will be taken in consideration. + */ + $onInit() { + this.loading.init = true; + + return this.$q + .all({ + consumptions: this.OvhApiMe.v6().consumption().$promise, + services: this.OvhApiServices.v6().query().$promise, + }) + .then(({ consumptions, services }) => { + const projectPromises = map(consumptions, (consumption) => { + const associatedService = + find(services, { + serviceId: consumption.serviceId, + }) || {}; + + return this.ServicesHelper.getServiceDetails(associatedService).then( + (details) => { + associatedService.details = details; + set(consumption, 'service', associatedService); + }, + ); + }); + + return this.$q.all(projectPromises).then(() => consumptions); + }) + .then((consumptions) => { + this.consumptions = flatten( + map(consumptions, (consumption) => { + const consumptionProjectUrl = this.ServicesHelper.getServiceManageUrl( + consumption.service, + ); + + return map(consumption.elements, (consumptionElement) => ({ + project: { + name: + consumption.service.details.description || + consumption.service.details.project_id, + url: consumptionProjectUrl, + }, + resource: consumptionElement.planCode, + type: BillingMainPayAsYouGoCtrl.getConsumptionElementType( + consumptionElement.planCode, + ), + dueDate: get(consumption.service, 'billing.nextBillingDate'), + current: consumptionElement.price, + })); + }), + ); + }) + .catch((error) => { + this.Alerter.error( + [ + this.$translate.instant('billing_main_pay_as_you_go_load_error'), + get(error, 'data.message'), + ].join(' '), + 'billing_main_alert', + ); + }) + .finally(() => { + this.loading.init = false; + }); + } + + /* ----- End of INITIALIZATION ------ */ +} diff --git a/packages/manager/modules/new-billing/src/main/payAsYouGo/billing-main-pay-as-you-go.html b/packages/manager/modules/new-billing/src/main/payAsYouGo/billing-main-pay-as-you-go.html new file mode 100644 index 000000000000..616e47242261 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payAsYouGo/billing-main-pay-as-you-go.html @@ -0,0 +1,70 @@ +
+

+ +
+ +
+ +
+ + + + + - + + + + + + + + + + + + + +
+
diff --git a/packages/manager/modules/new-billing/src/main/payAsYouGo/billing-main-pay-as-you-go.module.js b/packages/manager/modules/new-billing/src/main/payAsYouGo/billing-main-pay-as-you-go.module.js new file mode 100644 index 000000000000..546e518be72c --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payAsYouGo/billing-main-pay-as-you-go.module.js @@ -0,0 +1,21 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import '@ovh-ux/ui-kit'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import uiRouter from '@uirouter/angularjs'; + +import routing from './billing-main-pay-as-you-go.routes'; + +const moduleName = 'ovhManagerBillingMainPayAsYouGo'; + +angular + .module(moduleName, [ + angularTranslate, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/main/payAsYouGo/billing-main-pay-as-you-go.routes.js b/packages/manager/modules/new-billing/src/main/payAsYouGo/billing-main-pay-as-you-go.routes.js new file mode 100644 index 000000000000..0d0fa570bdad --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payAsYouGo/billing-main-pay-as-you-go.routes.js @@ -0,0 +1,17 @@ +import controller from './billing-main-pay-as-you-go.controller'; +import template from './billing-main-pay-as-you-go.html'; + +export default /* @ngInject */ ($stateProvider, coreConfigProvider) => { + if (coreConfigProvider.isRegion('US')) { + $stateProvider.state('billing.main.pay-as-you-go', { + url: '/payAsYouGo', + controller, + controllerAs: '$ctrl', + template, + resolve: { + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('billing_main_pay_as_you_go'), + }, + }); + } +}; diff --git a/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_de_DE.json new file mode 100644 index 000000000000..b00c1f1e3653 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_de_DE.json @@ -0,0 +1,17 @@ +{ + "billing_main_pay_as_you_go_title": "Aktueller Pay-As-You-Go-Verbrauch", + "billing_main_pay_as_you_go_load_error": "Beim Laden Ihres Pay-As-You-Go-Verbrauchs ist ein Fehler aufgetreten.", + "billing_main_pay_as_you_go_table_project": "Projekt", + "billing_main_pay_as_you_go_table_project_title": "{{ name }}: zur Projektverwaltung gehen.", + "billing_main_pay_as_you_go_table_resource": "Ressource", + "billing_main_pay_as_you_go_table_type": "Typ", + "billing_main_pay_as_you_go_table_type_instance": "Instanz", + "billing_main_pay_as_you_go_table_type_volume": "Volume", + "billing_main_pay_as_you_go_table_type_snapshot": "Snapshot", + "billing_main_pay_as_you_go_table_due_date": "Fälligkeitsdatum", + "billing_main_pay_as_you_go_table_current": "Aktueller Rechnungsbetrag", + "billing_main_pay_as_you_go_table_current_forecast": "Vorkalkulation", + "billing_main_pay_as_you_go_table_action_manage": "Verwalten", + "billing_main_pay_as_you_go_table_action_switch_monthly": "Auf das monatliche Abo umstellen", + "billing_main_pay_as_you_go": "Aktueller Verbrauch (Pay-As-You-Go)" +} diff --git a/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_en_GB.json new file mode 100644 index 000000000000..6830a3432a62 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_en_GB.json @@ -0,0 +1,17 @@ +{ + "billing_main_pay_as_you_go_title": "Current Pay As You Go usage", + "billing_main_pay_as_you_go_load_error": "An error has occurred loading your Pay As You Go usage. ", + "billing_main_pay_as_you_go_table_project": "Project", + "billing_main_pay_as_you_go_table_project_title": "{{ name }}: go to the management page for this project.", + "billing_main_pay_as_you_go_table_resource": "Resource", + "billing_main_pay_as_you_go_table_type": "Type", + "billing_main_pay_as_you_go_table_type_instance": "Instance", + "billing_main_pay_as_you_go_table_type_volume": "Volume", + "billing_main_pay_as_you_go_table_type_snapshot": "Snapshot", + "billing_main_pay_as_you_go_table_due_date": "Due date", + "billing_main_pay_as_you_go_table_current": "Current balance", + "billing_main_pay_as_you_go_table_current_forecast": "Future statement", + "billing_main_pay_as_you_go_table_action_manage": "Manage", + "billing_main_pay_as_you_go_table_action_switch_monthly": "Switch to monthly subscription", + "billing_main_pay_as_you_go": "Current Pay As You Go usage" +} diff --git a/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_es_ES.json new file mode 100644 index 000000000000..d24095c83f4f --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_es_ES.json @@ -0,0 +1,17 @@ +{ + "billing_main_pay_as_you_go_title": "Consumo pay-as-you-go actual", + "billing_main_pay_as_you_go_load_error": "Se ha producido un error al cargar el consumo pay-as-you-go.", + "billing_main_pay_as_you_go_table_project": "Proyecto", + "billing_main_pay_as_you_go_table_project_title": "{{ name }}: Ir a la gestión del proyecto", + "billing_main_pay_as_you_go_table_resource": "Recurso", + "billing_main_pay_as_you_go_table_type": "Tipo", + "billing_main_pay_as_you_go_table_type_instance": "Instancia", + "billing_main_pay_as_you_go_table_type_volume": "Volumen", + "billing_main_pay_as_you_go_table_type_snapshot": "Snapshot", + "billing_main_pay_as_you_go_table_due_date": "Fecha de vencimiento", + "billing_main_pay_as_you_go_table_current": "Salgo actual", + "billing_main_pay_as_you_go_table_current_forecast": "Previsión", + "billing_main_pay_as_you_go_table_action_manage": "Gestionar", + "billing_main_pay_as_you_go_table_action_switch_monthly": "Cambiar a tarifa mensual", + "billing_main_pay_as_you_go": "Consumo «pay-as-you-go»" +} diff --git a/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..60cfbc0a7ba4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_fr_CA.json @@ -0,0 +1,17 @@ +{ + "billing_main_pay_as_you_go": "Consommation Pay As You Go", + "billing_main_pay_as_you_go_title": "Consommation Pay As You Go actuelle", + "billing_main_pay_as_you_go_load_error": "Une erreur est survenue lors du chargement de votre consommation Pay As You Go.", + "billing_main_pay_as_you_go_table_project": "Projet", + "billing_main_pay_as_you_go_table_project_title": "{{ name }} : aller à la gestion du projet.", + "billing_main_pay_as_you_go_table_resource": "Ressource", + "billing_main_pay_as_you_go_table_type": "Type", + "billing_main_pay_as_you_go_table_type_instance": "Instance", + "billing_main_pay_as_you_go_table_type_volume": "Volume", + "billing_main_pay_as_you_go_table_type_snapshot": "Snapshot", + "billing_main_pay_as_you_go_table_due_date": "Date d'échéance", + "billing_main_pay_as_you_go_table_current": "Solde à ce jour", + "billing_main_pay_as_you_go_table_current_forecast": "Prévision", + "billing_main_pay_as_you_go_table_action_manage": "Gérer", + "billing_main_pay_as_you_go_table_action_switch_monthly": "Passer au forfait mensuel" +} diff --git a/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..60cfbc0a7ba4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_fr_FR.json @@ -0,0 +1,17 @@ +{ + "billing_main_pay_as_you_go": "Consommation Pay As You Go", + "billing_main_pay_as_you_go_title": "Consommation Pay As You Go actuelle", + "billing_main_pay_as_you_go_load_error": "Une erreur est survenue lors du chargement de votre consommation Pay As You Go.", + "billing_main_pay_as_you_go_table_project": "Projet", + "billing_main_pay_as_you_go_table_project_title": "{{ name }} : aller à la gestion du projet.", + "billing_main_pay_as_you_go_table_resource": "Ressource", + "billing_main_pay_as_you_go_table_type": "Type", + "billing_main_pay_as_you_go_table_type_instance": "Instance", + "billing_main_pay_as_you_go_table_type_volume": "Volume", + "billing_main_pay_as_you_go_table_type_snapshot": "Snapshot", + "billing_main_pay_as_you_go_table_due_date": "Date d'échéance", + "billing_main_pay_as_you_go_table_current": "Solde à ce jour", + "billing_main_pay_as_you_go_table_current_forecast": "Prévision", + "billing_main_pay_as_you_go_table_action_manage": "Gérer", + "billing_main_pay_as_you_go_table_action_switch_monthly": "Passer au forfait mensuel" +} diff --git a/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_it_IT.json new file mode 100644 index 000000000000..330dfd3967d5 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_it_IT.json @@ -0,0 +1,17 @@ +{ + "billing_main_pay_as_you_go_title": "Consumo Pay-As-You-Go attuale", + "billing_main_pay_as_you_go_load_error": "Si è verificato un errore durante il caricamento del tuo consumo Pay-As-You-Go.", + "billing_main_pay_as_you_go_table_project": "Progetto", + "billing_main_pay_as_you_go_table_project_title": "{{ name }}: accedi alla pagina per la gestione del progetto", + "billing_main_pay_as_you_go_table_resource": "Risorsa", + "billing_main_pay_as_you_go_table_type": "Tipo", + "billing_main_pay_as_you_go_table_type_instance": "Istanza", + "billing_main_pay_as_you_go_table_type_volume": "Volume", + "billing_main_pay_as_you_go_table_type_snapshot": "Snapshot", + "billing_main_pay_as_you_go_table_due_date": "Data di scadenza", + "billing_main_pay_as_you_go_table_current": "Saldo attuale", + "billing_main_pay_as_you_go_table_current_forecast": "Previsione", + "billing_main_pay_as_you_go_table_action_manage": "Gestisci", + "billing_main_pay_as_you_go_table_action_switch_monthly": "Passa al forfait mensile", + "billing_main_pay_as_you_go": "Consumo Pay-As-You-Go" +} diff --git a/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..30b8c535accb --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_pl_PL.json @@ -0,0 +1,17 @@ +{ + "billing_main_pay_as_you_go_title": "Aktualne zużycie Pay As You Go ", + "billing_main_pay_as_you_go_load_error": "Wystąpił błąd podczas pobierania informacji o bieżących płatnościach Pay As You Go.", + "billing_main_pay_as_you_go_table_project": "Projekt", + "billing_main_pay_as_you_go_table_project_title": "{{ name }}: przejdź do zarządzania projektem.", + "billing_main_pay_as_you_go_table_resource": "Zasoby", + "billing_main_pay_as_you_go_table_type": "Typ", + "billing_main_pay_as_you_go_table_type_instance": "Instancja", + "billing_main_pay_as_you_go_table_type_volume": "Wolumin", + "billing_main_pay_as_you_go_table_type_snapshot": "Snapshot", + "billing_main_pay_as_you_go_table_due_date": "Data wygaśnięcia", + "billing_main_pay_as_you_go_table_current": "Aktualne saldo", + "billing_main_pay_as_you_go_table_current_forecast": "Prognoza", + "billing_main_pay_as_you_go_table_action_manage": "Zarządzanie", + "billing_main_pay_as_you_go_table_action_switch_monthly": "Przejdź na abonament miesięczny", + "billing_main_pay_as_you_go": "Zużycie Pay As You Go" +} diff --git a/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..dcf1cce0e049 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payAsYouGo/translations/Messages_pt_PT.json @@ -0,0 +1,17 @@ +{ + "billing_main_pay_as_you_go_title": "Consumo Pay As You Go atual", + "billing_main_pay_as_you_go_load_error": "Ocorreu um erro ao carregar o seu consumo Pay As You Go.", + "billing_main_pay_as_you_go_table_project": "Projeto", + "billing_main_pay_as_you_go_table_project_title": "{{ name }}: ir para a gestão do projeto.", + "billing_main_pay_as_you_go_table_resource": "Recurso", + "billing_main_pay_as_you_go_table_type": "Tipo", + "billing_main_pay_as_you_go_table_type_instance": "Instância", + "billing_main_pay_as_you_go_table_type_volume": "Volume", + "billing_main_pay_as_you_go_table_type_snapshot": "Snapshot", + "billing_main_pay_as_you_go_table_due_date": "Data de vencimento", + "billing_main_pay_as_you_go_table_current": "Saldo atual", + "billing_main_pay_as_you_go_table_current_forecast": "Previsão", + "billing_main_pay_as_you_go_table_action_manage": "Gerir", + "billing_main_pay_as_you_go_table_action_switch_monthly": "Passar para pagamento mensal", + "billing_main_pay_as_you_go": "Consumo Pay As You Go" +} diff --git a/packages/manager/modules/new-billing/src/main/payments/billing-payments.controller.js b/packages/manager/modules/new-billing/src/main/payments/billing-payments.controller.js new file mode 100644 index 000000000000..33e95385eab2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/billing-payments.controller.js @@ -0,0 +1,168 @@ +export default class BillingPaymentsCtrl { + /* @ngInject */ + constructor( + $filter, + $q, + $state, + $translate, + atInternet, + coreConfig, + OvhApiMe, + iceberg, + ) { + this.$filter = $filter; + this.$q = $q; + this.$state = $state; + this.$translate = $translate; + this.atInternet = atInternet; + this.coreConfig = coreConfig; + this.OvhApiMe = OvhApiMe; + this.iceberg = iceberg; + } + + $onInit() { + this.payments = []; + if (this.coreConfig.getRegion() === 'US') { + return this.OvhApiMe.DepositRequest() + .v6() + .query() + .$promise.then((depositRequests) => { + this.paymentRequests = depositRequests; + this.paymentRequestsHref = this.$state.href( + 'billing.main.payments.request', + ); + }); + } + return this.$q.when(); + } + + loadPayments($config) { + let request = this.iceberg('/me/deposit') + .query() + .expand('CachedObjectList-Pages') + .offset(Math.ceil($config.offset / ($config.pageSize || 1))) + .limit($config.pageSize); + + if ($config.sort) { + request = request.sort( + $config.sort.property, + $config.sort.dir > 0 ? 'ASC' : 'DESC', + ); + } + + const filterCriteria = (propName) => + $config.criteria.filter(({ property }) => property === propName); + + filterCriteria('date').forEach((crit) => { + switch (crit.operator) { + case 'is': + request = request.addFilter( + 'date', + 'gt', + moment(crit.value) + .subtract(1, 'd') + .format('YYYY-MM-DD'), + ); + request = request.addFilter( + 'date', + 'lt', + moment(crit.value) + .add(1, 'd') + .format('YYYY-MM-DD'), + ); + break; + case 'isAfter': + request = request.addFilter('date', 'gt', crit.value); + break; + case 'isBefore': + request = request.addFilter('date', 'lt', crit.value); + break; + default: + break; + } + }); + + filterCriteria('amount.value').forEach((crit) => { + request = request.addFilter( + 'amount.value', + { + is: 'eq', + smaller: 'lt', + bigger: 'gt', + }[crit.operator], + crit.value, + ); + }); + + filterCriteria('paymentInfo.paymentType').forEach((crit) => { + request = request.addFilter( + 'paymentInfo.paymentType', + { + is: 'eq', + isNot: 'ne', + }[crit.operator], + crit.value, + ); + }); + + return request.execute(null).$promise.then((result) => { + this.payments = result.data; + return { + data: this.payments, + meta: { + totalCount: + parseInt(result.headers['x-pagination-elements'], 10) || 0, + }, + }; + }); + } + + getDatasToExport() { + const header = [ + this.$translate.instant('payments_table_head_id'), + this.$translate.instant('payments_table_head_date'), + this.$translate.instant('payments_table_head_amount'), + this.$translate.instant('payments_table_head_type'), + ]; + const result = [header]; + return result.concat( + this.payments.map((payment) => [ + payment.depositId, + this.$filter('date')(payment.date, 'mediumDate'), + payment.amount.text, + this.getTranslatedPaiementType(payment), + ]), + ); + } + + getTranslatedPaiementType(payment) { + return this.$translate.instant( + payment.paymentInfo + ? `common_payment_type_${payment.paymentInfo.paymentType}` + : 'payments_table_type_not_available', + ); + } + + shouldDisplayDepositsLinks() { + return this.coreConfig.getRegion() !== 'US'; + } + + displayActionsCol() { + return this.coreConfig.getRegion() !== 'US'; + } + + depositDetailsHref({ depositId }) { + return this.$state.href('billing.main.payments.payment', { + id: depositId, + }); + } + + trackPaymentDetailOpening() { + this.atInternet.trackClick({ + name: 'open_invoices', + type: 'action', + chapter1: 'billing', + chapter2: 'monitored_payments', + }); + } +} diff --git a/packages/manager/modules/new-billing/src/main/payments/billing-payments.html b/packages/manager/modules/new-billing/src/main/payments/billing-payments.html new file mode 100644 index 000000000000..a4d54d97d85a --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/billing-payments.html @@ -0,0 +1,102 @@ +
+ +

+ +
+ + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/packages/manager/modules/new-billing/src/main/payments/billing-payments.module.js b/packages/manager/modules/new-billing/src/main/payments/billing-payments.module.js new file mode 100644 index 000000000000..5ebed5c07074 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/billing-payments.module.js @@ -0,0 +1,30 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ovhManagerCore from '@ovh-ux/manager-core'; +import '@ovh-ux/ui-kit'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import uiRouter from '@uirouter/angularjs'; + +import details from './details/billing-payments-details.module'; +import request from './request/billing-payments-request.module'; + +import routing from './billing-payments.routes'; +import service from './billing-payments.service'; + +const moduleName = 'ovhManagerBillingMainPayments'; + +angular + .module(moduleName, [ + angularTranslate, + details, + ngTranslateAsyncLoader, + 'oui', + ovhManagerCore, + request, + uiRouter, + ]) + .config(routing) + .service('BillingPayments', service) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/main/payments/billing-payments.routes.js b/packages/manager/modules/new-billing/src/main/payments/billing-payments.routes.js new file mode 100644 index 000000000000..5f862d51ad0c --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/billing-payments.routes.js @@ -0,0 +1,15 @@ +import controller from './billing-payments.controller'; +import template from './billing-payments.html'; + +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.main.payments', { + url: '/payments', + template, + controller, + controllerAs: '$ctrl', + resolve: { + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('billing_main_payments_title'), + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/main/payments/billing-payments.service.js b/packages/manager/modules/new-billing/src/main/payments/billing-payments.service.js new file mode 100644 index 000000000000..f9d21b524ffd --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/billing-payments.service.js @@ -0,0 +1,68 @@ +export default class BillingPaymentsService { + /* @ngInject */ + constructor($http, $q, iceberg) { + this.$http = $http; + this.$q = $q; + this.iceberg = iceberg; + } + + getPayment(id) { + return this.$http + .get(`/me/deposit/${id}`) + .then((response) => response.data); + } + + getBills(id, { offset, pageSize }) { + return this.iceberg(`/me/deposit/${id}/paidBills`) + .query() + .expand('CachedObjectList-Pages') + .offset(offset || 1) + .limit(pageSize) + .execute() + .$promise.then((response) => ({ + data: response.data, + meta: { + totalCount: + parseInt(response.headers['x-pagination-elements'], 10) || 0, + }, + })); + } + + getBillDetails(id, bill) { + return this.getOperationsDetails(id, bill.billId, bill.orderId).then( + (operations) => { + if (!operations || operations.length === 0) { + throw new Error('No operation for a bill concerned by a deposit'); + } + if (operations.length > 1) { + throw new Error( + 'More than one operation for a bill concerned by a deposit', + ); + } + return { + ...bill, + payment: operations[0].amount.text, + }; + }, + ); + } + + getBill(id, billId) { + return this.$http + .get(`/me/deposit/${id}/paidBills/${billId}`) + .then((response) => response.data); + } + + getOperationsDetails(id, billId, orderId) { + return this.iceberg( + `/me/deposit/${id}/paidBills/${billId}/debt/operation`, + { + depositOrderId: orderId, + }, + ) + .query() + .expand('CachedObjectList-Pages') + .execute() + .$promise.then((response) => response.data); + } +} diff --git a/packages/manager/modules/new-billing/src/main/payments/details/billing-payments-details.controller.js b/packages/manager/modules/new-billing/src/main/payments/details/billing-payments-details.controller.js new file mode 100644 index 000000000000..e95237558aeb --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/details/billing-payments-details.controller.js @@ -0,0 +1,41 @@ +export default class BillingPaymentDetailsCtrl { + /* @ngInject */ + constructor($q, $state, $stateParams, $translate, Alerter, BillingPayments) { + this.$q = $q; + this.$state = $state; + this.$translate = $translate; + this.Alerter = Alerter; + this.BillingPayments = BillingPayments; + this.paymentId = $stateParams.id; + this.payment = {}; + } + + $onInit() { + return this.BillingPayments.getPayment(this.paymentId) + .then((payment) => { + this.payment = payment; + }) + .catch((err) => { + this.Alerter.alertFromSWS( + this.$translate.instant('payments_error'), + err.data, + ); + return this.$q.reject(err); + }); + } + + loadBills({ offset, pageSize }) { + return this.BillingPayments.getBills(this.paymentId, { + offset, + pageSize, + }); + } + + loadDetails(bill) { + return this.BillingPayments.getBillDetails(this.paymentId, bill); + } + + paymentsHref() { + return this.$state.href('billing.main.payments'); + } +} diff --git a/packages/manager/modules/new-billing/src/main/payments/details/billing-payments-details.html b/packages/manager/modules/new-billing/src/main/payments/details/billing-payments-details.html new file mode 100644 index 000000000000..bedcd01f95a0 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/details/billing-payments-details.html @@ -0,0 +1,51 @@ +
+ + + + +
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/packages/manager/modules/new-billing/src/main/payments/details/billing-payments-details.module.js b/packages/manager/modules/new-billing/src/main/payments/details/billing-payments-details.module.js new file mode 100644 index 000000000000..c06b45aa61b9 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/details/billing-payments-details.module.js @@ -0,0 +1,15 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngOvhUtils from '@ovh-ux/ng-ovh-utils'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import routing from './billing-payments-details.routes'; + +const moduleName = 'ovhManagerBillingMainPaymentsDetails'; + +angular + .module(moduleName, [angularTranslate, ngOvhUtils, 'oui', uiRouter]) + .config(routing); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/main/payments/details/billing-payments-details.routes.js b/packages/manager/modules/new-billing/src/main/payments/details/billing-payments-details.routes.js new file mode 100644 index 000000000000..104de058213f --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/details/billing-payments-details.routes.js @@ -0,0 +1,24 @@ +import controller from './billing-payments-details.controller'; +import template from './billing-payments-details.html'; + +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.main.payments.payment', { + url: '/:id', + template: '
', + redirectTo: 'billing.main.payments.payment.details', + resolve: { + paymentId: /* @ngInject */ ($transition$) => $transition$.params().id, + breadcrumb: /* @ngInject */ (paymentId) => paymentId, + }, + }); + + $stateProvider.state('billing.main.payments.payment.details', { + url: '/details', + template, + controller, + controllerAs: '$ctrl', + resolve: { + breadcrumb: () => null, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/main/payments/request/billing-payments-request.controller.js b/packages/manager/modules/new-billing/src/main/payments/request/billing-payments-request.controller.js new file mode 100644 index 000000000000..ad75dc06d2db --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/request/billing-payments-request.controller.js @@ -0,0 +1,37 @@ +export default class BillingHistoryRequestCtrl { + /* @ngInject */ + constructor($state, BillingPaymentsRequest, Alerter) { + this.$state = $state; + this.BillingPaymentsRequest = BillingPaymentsRequest; + this.Alerter = Alerter; + + this.bills = null; + this.requestPending = true; + + this.loading = { + init: false, + }; + } + + $onInit() { + this.loading.init = true; + this.BillingPaymentsRequest.fetch() + .then(({ depositRequests, bills }) => { + this.requestPending = depositRequests.length > 0; + this.bills = bills; + }) + .catch((error) => { + this.Alerter.alertFromSWS( + this.$translate.instant('billing_payment_request_load_error'), + { + message: error.data?.message || error.message, + type: 'ERROR', + }, + 'billing_payment_request', + ); + }) + .finally(() => { + this.loading.init = false; + }); + } +} diff --git a/packages/manager/modules/new-billing/src/main/payments/request/billing-payments-request.html b/packages/manager/modules/new-billing/src/main/payments/request/billing-payments-request.html new file mode 100644 index 000000000000..1e78f6e48338 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/request/billing-payments-request.html @@ -0,0 +1,57 @@ +
+ + + +
+ +
+ +
+
+ +
+
+ + + +
+
+ +
+
+ + + +
+ + + + + + + + + + + + + + + +
+
+
diff --git a/packages/manager/modules/new-billing/src/main/payments/request/billing-payments-request.module.js b/packages/manager/modules/new-billing/src/main/payments/request/billing-payments-request.module.js new file mode 100644 index 000000000000..ebb6d76708de --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/request/billing-payments-request.module.js @@ -0,0 +1,25 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngOvhUtils from '@ovh-ux/ng-ovh-utils'; +import '@ovh-ux/ui-kit'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import uiRouter from '@uirouter/angularjs'; + +import routing from './billing-payments-request.routes'; +import service from './billing-payments-request.service'; + +const moduleName = 'ovhManagerBillingMainPaymentsRequest'; + +angular + .module(moduleName, [ + angularTranslate, + ngTranslateAsyncLoader, + 'oui', + ngOvhUtils, + uiRouter, + ]) + .config(routing) + .service('BillingPaymentsRequest', service) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/main/payments/request/billing-payments-request.routes.js b/packages/manager/modules/new-billing/src/main/payments/request/billing-payments-request.routes.js new file mode 100644 index 000000000000..80d4cf2b38a3 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/request/billing-payments-request.routes.js @@ -0,0 +1,17 @@ +import controller from './billing-payments-request.controller'; +import template from './billing-payments-request.html'; + +export default /* @ngInject */ ($stateProvider, coreConfigProvider) => { + if (coreConfigProvider.isRegion('US')) { + $stateProvider.state('billing.main.payments.request', { + url: '/request', + template, + controller, + controllerAs: '$ctrl', + resolve: { + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('billing_payments_request_title'), + }, + }); + } +}; diff --git a/packages/manager/modules/new-billing/src/main/payments/request/billing-payments-request.service.js b/packages/manager/modules/new-billing/src/main/payments/request/billing-payments-request.service.js new file mode 100644 index 000000000000..522c48df8af5 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/request/billing-payments-request.service.js @@ -0,0 +1,43 @@ +export default /* @ngInject */ function BillingPaymentsRequestService(iceberg) { + function fetchDepositRequests() { + return iceberg('/me/depositRequest') + .query() + .expand('CachedObjectList-Pages') + .execute() + .$promise.then(({ data }) => data); + } + + function fetchBills(depositRequests) { + if (!depositRequests.length) return { depositRequests, bills: [] }; + + const orderIdFilter = depositRequests.reduce( + (list, { orderIds }) => [...list, ...orderIds], + [], + ); + + return iceberg('/me/bill') + .query() + .expand('CachedObjectList-Pages') + .addFilter('orderId', 'in', orderIdFilter) + .limit(orderIdFilter.length) + .execute() + .$promise.then(({ data: bills }) => ({ depositRequests, bills })); + } + + function formatResponse({ depositRequests, bills }) { + return { + depositRequests, + bills: bills.map((bill) => ({ + ...bill, + paid: depositRequests.find( + ({ orderIds }) => orderIds.indexOf(bill.orderId) >= 0, + )?.creationDate, + })), + }; + } + + this.fetch = () => + fetchDepositRequests() + .then(fetchBills) + .then(formatResponse); +} diff --git a/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_de_DE.json new file mode 100644 index 000000000000..00638393a4b3 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_de_DE.json @@ -0,0 +1,10 @@ +{ + "billing_payments_request_title": "Demandes de paiement", + "billing_payments_request_info": "La liste suivante montre les factures en cours de paiement suite au règlement de votre solde.", + "billing_payments_request_table_reference": "Referenz", + "billing_payments_request_table_date": "Datum", + "billing_payments_request_table_paid_date": "Payé le", + "billing_payments_request_table_amount": "Gesamtbetrag", + "billing_payment_request_no_pending": "Vous n'avez aucune demande de paiement en cours.", + "billing_payment_request_load_error": "Une erreur est survenue lors du chargement des demandes de paiement." +} diff --git a/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_en_GB.json new file mode 100644 index 000000000000..9b9f66e44d89 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_en_GB.json @@ -0,0 +1,10 @@ +{ + "billing_payments_request_title": "Payment requests", + "billing_payments_request_info": "The following list shows bills for which payment is being processed following settlement of outstanding amounts.", + "billing_payments_request_table_reference": "Reference", + "billing_payments_request_table_date": "Date", + "billing_payments_request_table_paid_date": "Paid on", + "billing_payments_request_table_amount": "Total sum", + "billing_payment_request_no_pending": "You do not have any ongoing payment requests.", + "billing_payment_request_load_error": "An error has occurred loading payment requests." +} diff --git a/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_es_ES.json new file mode 100644 index 000000000000..c68b279be65a --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_es_ES.json @@ -0,0 +1,10 @@ +{ + "billing_payments_request_title": "Solicitudes de pago", + "billing_payments_request_info": "La liste suivante montre les factures en cours de paiement suite au règlement de votre solde.", + "billing_payments_request_table_reference": "Referencia", + "billing_payments_request_table_date": "Fecha", + "billing_payments_request_table_paid_date": "Pagado el", + "billing_payments_request_table_amount": "Importe total", + "billing_payment_request_no_pending": "No tiene ninguna solicitud de pago en curso.", + "billing_payment_request_load_error": "Se ha producido un error al cargar las solicitudes de pago." +} diff --git a/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..937feeb950f6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_fr_CA.json @@ -0,0 +1,10 @@ +{ + "billing_payments_request_title": "Demandes de paiement", + "billing_payments_request_info": "La liste suivante montre les factures en cours de paiement suite au règlement de votre solde.", + "billing_payments_request_table_reference": "Référence", + "billing_payments_request_table_date": "Date", + "billing_payments_request_table_paid_date": "Payé le", + "billing_payments_request_table_amount": "Montant total", + "billing_payment_request_no_pending": "Vous n'avez aucune demande de paiement en cours.", + "billing_payment_request_load_error": "Une erreur est survenue lors du chargement des demandes de paiement." +} diff --git a/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..937feeb950f6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_fr_FR.json @@ -0,0 +1,10 @@ +{ + "billing_payments_request_title": "Demandes de paiement", + "billing_payments_request_info": "La liste suivante montre les factures en cours de paiement suite au règlement de votre solde.", + "billing_payments_request_table_reference": "Référence", + "billing_payments_request_table_date": "Date", + "billing_payments_request_table_paid_date": "Payé le", + "billing_payments_request_table_amount": "Montant total", + "billing_payment_request_no_pending": "Vous n'avez aucune demande de paiement en cours.", + "billing_payment_request_load_error": "Une erreur est survenue lors du chargement des demandes de paiement." +} diff --git a/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_it_IT.json new file mode 100644 index 000000000000..db862331569b --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_it_IT.json @@ -0,0 +1,10 @@ +{ + "billing_payments_request_title": "Richieste di pagamento", + "billing_payments_request_info": "Questa lista mostra le fatture il cui pagamento è in fase di elaborazione in seguito al saldo degli importi in sospeso.", + "billing_payments_request_table_reference": "Referenza", + "billing_payments_request_table_date": "Data", + "billing_payments_request_table_paid_date": "Pagamento effettuato il", + "billing_payments_request_table_amount": "Importo totale", + "billing_payment_request_no_pending": "Nessuna richiesta di pagamento in corso.", + "billing_payment_request_load_error": "Si è verificato un errore durante il caricamento delle richieste di pagamento." +} diff --git a/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..f9c1fef7b2c8 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_pl_PL.json @@ -0,0 +1,10 @@ +{ + "billing_payments_request_title": "Wymagane płatności", + "billing_payments_request_info": "Na niniejszej liście widnieją faktury, które regulujesz w związku ze spłatą salda.", + "billing_payments_request_table_reference": "Opis", + "billing_payments_request_table_date": "Data", + "billing_payments_request_table_paid_date": "Zapłacono dnia", + "billing_payments_request_table_amount": "Razem", + "billing_payment_request_no_pending": "Aktualnie nie masz zaległych płatności.", + "billing_payment_request_load_error": "Wystąpił błąd podczas pobierania informacji o wymaganych płatnościach." +} diff --git a/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..28abefc48a08 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/request/translations/Messages_pt_PT.json @@ -0,0 +1,10 @@ +{ + "billing_payments_request_title": "Demandes de paiement", + "billing_payments_request_info": "La liste suivante montre les factures en cours de paiement suite au règlement de votre solde.", + "billing_payments_request_table_reference": "Referência", + "billing_payments_request_table_date": "Data", + "billing_payments_request_table_paid_date": "Payé le", + "billing_payments_request_table_amount": "Montante total", + "billing_payment_request_no_pending": "Vous n'avez aucune demande de paiement en cours.", + "billing_payment_request_load_error": "Une erreur est survenue lors du chargement des demandes de paiement." +} diff --git a/packages/manager/modules/new-billing/src/main/payments/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/main/payments/translations/Messages_de_DE.json new file mode 100644 index 000000000000..42ca112b81ce --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/translations/Messages_de_DE.json @@ -0,0 +1,3 @@ +{ + "billing_main_payments_title": "Zahlungsverfolgung" +} diff --git a/packages/manager/modules/new-billing/src/main/payments/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/main/payments/translations/Messages_en_GB.json new file mode 100644 index 000000000000..5d45b0d30ac7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/translations/Messages_en_GB.json @@ -0,0 +1,3 @@ +{ + "billing_main_payments_title": "Payment tracking" +} diff --git a/packages/manager/modules/new-billing/src/main/payments/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/main/payments/translations/Messages_es_ES.json new file mode 100644 index 000000000000..069a594c03fd --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/translations/Messages_es_ES.json @@ -0,0 +1,3 @@ +{ + "billing_main_payments_title": "Seguimiento de los pagos" +} diff --git a/packages/manager/modules/new-billing/src/main/payments/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/main/payments/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..fcaf9de6f6e6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/translations/Messages_fr_CA.json @@ -0,0 +1,3 @@ +{ + "billing_main_payments_title": "Suivi des paiements" +} diff --git a/packages/manager/modules/new-billing/src/main/payments/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/main/payments/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..fcaf9de6f6e6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/translations/Messages_fr_FR.json @@ -0,0 +1,3 @@ +{ + "billing_main_payments_title": "Suivi des paiements" +} diff --git a/packages/manager/modules/new-billing/src/main/payments/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/main/payments/translations/Messages_it_IT.json new file mode 100644 index 000000000000..ab70f56f0c4f --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/translations/Messages_it_IT.json @@ -0,0 +1,3 @@ +{ + "billing_main_payments_title": "Controllo dei pagamenti" +} diff --git a/packages/manager/modules/new-billing/src/main/payments/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/main/payments/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..ed85d8821512 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/translations/Messages_pl_PL.json @@ -0,0 +1,3 @@ +{ + "billing_main_payments_title": "Informacje o płatnościach" +} diff --git a/packages/manager/modules/new-billing/src/main/payments/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/main/payments/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..3c2beb6d8715 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/payments/translations/Messages_pt_PT.json @@ -0,0 +1,3 @@ +{ + "billing_main_payments_title": "Pagamentos" +} diff --git a/packages/manager/modules/new-billing/src/main/refunds/billing-payment-refunds.routes.js b/packages/manager/modules/new-billing/src/main/refunds/billing-payment-refunds.routes.js new file mode 100644 index 000000000000..43c2266e5c6e --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/refunds/billing-payment-refunds.routes.js @@ -0,0 +1,16 @@ +import template from './billing-refunds.html'; + +export default /* @ngInject */ ($stateProvider) => { + const name = 'billing.main.refunds'; + + $stateProvider.state(name, { + url: '/refunds', + template, + controller: 'BillingRefundsController', + controllerAs: '$ctrl', + resolve: { + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('billing_payment_refunds'), + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/main/refunds/billing-refunds.controller.js b/packages/manager/modules/new-billing/src/main/refunds/billing-refunds.controller.js new file mode 100644 index 000000000000..680a43cf9051 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/refunds/billing-refunds.controller.js @@ -0,0 +1,129 @@ +import { PREPAID_ACCOUNT } from './refunds.constants'; + +export default /* @ngInject */ function BillingRefundsController( + $scope, + BillingRefunds, + $translate, + BillingUser, + BillingmessageParser, + BillingdateRangeSelection, + coreURLBuilder, +) { + const FUSE_CAPACITY = 300; + + $scope.refundsLoading = false; + $scope.refunds = null; + $scope.refundCount = null; + + $scope.orderByState = { + predicate: 'billingDate', + reverse: false, + }; + + $scope.paymentType = { + model: 0, + values: [], + }; + + $scope.fuseRefundOpen = function fuseRefundOpen() { + return $scope.refundCount > FUSE_CAPACITY; + }; + + this.prepaidAccountLink = coreURLBuilder.buildURL( + 'billing', + '/#/payment/ovhaccount', + ); + + this.sortHistoryResult = ({ predicate, reverse }) => { + $scope.refunds.list.results.sort((a, b) => { + let result; + switch (predicate) { + case 'date': + result = moment(a[predicate]) - moment(b[predicate]); + break; + case 'paymentType': + result = $translate + .instant( + `common_payment_type_${a[predicate]}${a.paymentIdentifier}`, + ) + .localeCompare( + $translate.instant( + `common_payment_type_${b[predicate]}${b.paymentIdentifier}`, + ), + ); + break; + case 'priceWithTax': + result = a[predicate].value - b[predicate].value; + break; + default: + result = a[predicate].localeCompare(b[predicate]); + } + + return reverse ? -result : result; + }); + }; + + this.isCreditedOnPrepaidAccount = ({ paymentType }) => + paymentType === PREPAID_ACCOUNT; + + $scope.onOrderStateChanged = (predicate, reverse) => { + $scope.orderByState.predicate = predicate; + $scope.orderByState.reverse = reverse; + this.sortHistoryResult($scope.orderByState); + }; + + BillingUser.isVATNeeded().then((result) => { + $scope.isVATNeeded = result; + }); + + $scope.loadRefunds = function loadRefunds(count, offset) { + $scope.paymentType.values = [0]; + + $scope.refundsLoading = true; + + return BillingRefunds.getBillingRefunds({ + count: 0, + offset: 0, + date: BillingdateRangeSelection.dateFrom, + dateTo: BillingdateRangeSelection.dateTo, + }) + .then((refundCounter) => { + $scope.refundCount = refundCounter.count; + + return BillingRefunds.getBillingRefunds({ + count, + offset, + date: BillingdateRangeSelection.dateFrom, + dateTo: BillingdateRangeSelection.dateTo, + }); + }) + .then((refunds) => { + $scope.refunds = refunds; + $scope.refundsLoading = false; + + angular.forEach(refunds.list.results, (historyLine) => { + if ( + $scope.paymentType.values.indexOf(historyLine.paymentType) === -1 + ) { + $scope.paymentType.values.push(historyLine.paymentType); + } + }); + }) + .catch((err) => { + $scope.setMessage( + $translate.instant('ovhAccount_renew_step2_error'), + err.data, + ); + }); + }; + + $scope.onDateRangeChanged = function onDateRangeChanged() { + $scope.$broadcast('paginationServerSide.loadPage', '1', 'refundTable'); + }; + + $scope.setMessage = function setMessage(message, data) { + const msg = BillingmessageParser(message, data); + $scope.message = msg.message; + $scope.alertType = msg.alertType; + }; +} diff --git a/packages/manager/modules/new-billing/src/main/refunds/billing-refunds.html b/packages/manager/modules/new-billing/src/main/refunds/billing-refunds.html new file mode 100644 index 000000000000..af3229174cb3 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/refunds/billing-refunds.html @@ -0,0 +1,232 @@ +
+ + +

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + - + + + + + + + + + + + +
+ + +
+
+
+
diff --git a/packages/manager/modules/new-billing/src/main/refunds/billing-refunds.service.js b/packages/manager/modules/new-billing/src/main/refunds/billing-refunds.service.js new file mode 100644 index 000000000000..02372fbc6c6c --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/refunds/billing-refunds.service.js @@ -0,0 +1,37 @@ +export default /* @ngInject */ function BillingRefunds($http, $cacheFactory) { + const billingCache = $cacheFactory('UNIVERS_BILLING_REFUNDS'); + + this.getBillingRefunds = function getBillingRefunds({ + count, + offset, + date, + dateTo, + }) { + const data = {}; + + if (count !== undefined) { + data.count = count; + } + if (offset !== undefined) { + data.offset = offset; + } + if (date) { + data.date = moment(date) + .startOf('day') + .toISOString(); + } + if (dateTo) { + data.dateTo = moment(dateTo) + .endOf('day') + .toISOString(); + } + + return $http + .get('/sws/billing/refunds', { + params: data, + cache: billingCache, + serviceType: 'aapi', + }) + .then((response) => response.data); + }; +} diff --git a/packages/manager/modules/new-billing/src/main/refunds/refunds.constants.js b/packages/manager/modules/new-billing/src/main/refunds/refunds.constants.js new file mode 100644 index 000000000000..fced7c3d0b72 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/refunds/refunds.constants.js @@ -0,0 +1,5 @@ +export const PREPAID_ACCOUNT = 'ovhAccount'; + +export default { + PREPAID_ACCOUNT, +}; diff --git a/packages/manager/modules/new-billing/src/main/refunds/refunds.module.js b/packages/manager/modules/new-billing/src/main/refunds/refunds.module.js new file mode 100644 index 000000000000..60c6b41a528f --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/refunds/refunds.module.js @@ -0,0 +1,25 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import controller from './billing-refunds.controller'; +import service from './billing-refunds.service'; +import routing from './billing-payment-refunds.routes'; + +const moduleName = 'ovhManagerBillingRefunds'; + +angular + .module(moduleName, [ + angularTranslate, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .config(routing) + .controller('BillingRefundsController', controller) + .service('BillingRefunds', service) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_de_DE.json new file mode 100644 index 000000000000..c6c3ff5f1caf --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_de_DE.json @@ -0,0 +1,3 @@ +{ + "billing_payment_refunds": "Gutschriften" +} diff --git a/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_en_GB.json new file mode 100644 index 000000000000..1c25970743f9 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_en_GB.json @@ -0,0 +1,3 @@ +{ + "billing_payment_refunds": "Credit" +} diff --git a/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_es_ES.json new file mode 100644 index 000000000000..c24fdb4da7e4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_es_ES.json @@ -0,0 +1,3 @@ +{ + "billing_payment_refunds": "Crédito" +} diff --git a/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..9c130c561cd6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_fr_CA.json @@ -0,0 +1,3 @@ +{ + "billing_payment_refunds": "Avoirs" +} diff --git a/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..9c130c561cd6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_fr_FR.json @@ -0,0 +1,3 @@ +{ + "billing_payment_refunds": "Avoirs" +} diff --git a/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_it_IT.json new file mode 100644 index 000000000000..734bf33889e6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_it_IT.json @@ -0,0 +1,3 @@ +{ + "billing_payment_refunds": "Il tuo credito" +} diff --git a/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..ecc4c3bbbebb --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_pl_PL.json @@ -0,0 +1,3 @@ +{ + "billing_payment_refunds": "Należności" +} diff --git a/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..83d8f4b9b53a --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/refunds/translations/Messages_pt_PT.json @@ -0,0 +1,3 @@ +{ + "billing_payment_refunds": "Notas de crédito" +} diff --git a/packages/manager/modules/new-billing/src/main/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/main/translations/Messages_de_DE.json new file mode 100644 index 000000000000..6577dcc4f2da --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/translations/Messages_de_DE.json @@ -0,0 +1,8 @@ +{ + "billing_main_title": "Meine Rechnungen", + "billing_main_pay_as_you_go_tab": "Pay As You Go", + "billing_main_bills_tab": "Rechnungen", + "billing_main_payments_tab": "Zahlungsverfolgung", + "billing_payment_refunds_title": "Meine Gutschriften", + "billing_main_description": "Laden Sie einfach Ihre Rechnungen herunter. Verfolgen Sie den Zahlungsstatus. Ihr Guthaben im Blick." +} diff --git a/packages/manager/modules/new-billing/src/main/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/main/translations/Messages_en_GB.json new file mode 100644 index 000000000000..ba258e00842a --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/translations/Messages_en_GB.json @@ -0,0 +1,8 @@ +{ + "billing_main_title": "My bills", + "billing_main_pay_as_you_go_tab": "Pay As You Go", + "billing_main_bills_tab": "Invoices", + "billing_main_payments_tab": "Payment tracking", + "billing_payment_refunds_title": "My credit notes", + "billing_main_description": "Find and download your invoices. Track your payment status. View your credit notes." +} diff --git a/packages/manager/modules/new-billing/src/main/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/main/translations/Messages_es_ES.json new file mode 100644 index 000000000000..0c644374fc3a --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/translations/Messages_es_ES.json @@ -0,0 +1,8 @@ +{ + "billing_main_title": "Mis facturas", + "billing_main_pay_as_you_go_tab": "Pay-as-you-go", + "billing_main_bills_tab": "Facturas", + "billing_main_payments_tab": "Seguimiento de los pagos", + "billing_payment_refunds_title": "Mi crédito", + "billing_main_description": "Consulte y descargue sus facturas. Consulte el estado de sus pagos. Consulte su crédito disponible." +} diff --git a/packages/manager/modules/new-billing/src/main/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/main/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..6a3656a9e312 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/translations/Messages_fr_CA.json @@ -0,0 +1,8 @@ +{ + "billing_main_title": "Mes factures", + "billing_main_description": "Retrouvez et téléchargez vos factures. Suivez l'état de vos paiements. Consultez vos avoirs.", + "billing_main_pay_as_you_go_tab": "Pay As You Go", + "billing_main_bills_tab": "Factures", + "billing_main_payments_tab": "Suivi des paiements", + "billing_payment_refunds_title": "Mes avoirs" +} diff --git a/packages/manager/modules/new-billing/src/main/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/main/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..6a3656a9e312 --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/translations/Messages_fr_FR.json @@ -0,0 +1,8 @@ +{ + "billing_main_title": "Mes factures", + "billing_main_description": "Retrouvez et téléchargez vos factures. Suivez l'état de vos paiements. Consultez vos avoirs.", + "billing_main_pay_as_you_go_tab": "Pay As You Go", + "billing_main_bills_tab": "Factures", + "billing_main_payments_tab": "Suivi des paiements", + "billing_payment_refunds_title": "Mes avoirs" +} diff --git a/packages/manager/modules/new-billing/src/main/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/main/translations/Messages_it_IT.json new file mode 100644 index 000000000000..ffb99c22358b --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/translations/Messages_it_IT.json @@ -0,0 +1,8 @@ +{ + "billing_main_title": "Le tue fatture", + "billing_main_pay_as_you_go_tab": "Pay As You Go", + "billing_main_bills_tab": "Fatture", + "billing_main_payments_tab": "Controllo dei pagamenti", + "billing_payment_refunds_title": "Il tuo credito", + "billing_main_description": "Recupera e scarica le tue fatture. Monitora lo stato dei pagamenti. Consulta il tuo credito" +} diff --git a/packages/manager/modules/new-billing/src/main/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/main/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..1d4282b5ab1e --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/translations/Messages_pl_PL.json @@ -0,0 +1,8 @@ +{ + "billing_main_title": "Faktury", + "billing_main_pay_as_you_go_tab": "Pay As You Go", + "billing_main_bills_tab": "Faktury", + "billing_main_payments_tab": "Informacje o płatnościach", + "billing_payment_refunds_title": "Moje należności", + "billing_main_description": "Znajdź i pobierz swoje faktury. Monitoruj stan płatności. Sprawdź faktury korygujące." +} diff --git a/packages/manager/modules/new-billing/src/main/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/main/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..e84daa9263be --- /dev/null +++ b/packages/manager/modules/new-billing/src/main/translations/Messages_pt_PT.json @@ -0,0 +1,8 @@ +{ + "billing_main_title": "As minhas faturas", + "billing_main_pay_as_you_go_tab": "Pay As You Go", + "billing_main_bills_tab": "Facturas", + "billing_main_payments_tab": "Pagamentos", + "billing_payment_refunds_title": "Notas de crédito", + "billing_main_description": "Consulte e transfira as suas faturas. Siga o estado dos seus pagamentos. Consulte as suas notas de crédito." +} diff --git a/packages/manager/modules/new-billing/src/order/billing-order-tracking.controller.js b/packages/manager/modules/new-billing/src/order/billing-order-tracking.controller.js new file mode 100644 index 000000000000..07369abebd8d --- /dev/null +++ b/packages/manager/modules/new-billing/src/order/billing-order-tracking.controller.js @@ -0,0 +1,12 @@ +export default class BillingOrderTrackingCtrl { + /* @ngInject */ + constructor($state, $stateParams, goToOrders) { + this.$state = $state; + this.orderId = $stateParams.orderId; + this.goToOrders = goToOrders; + } + + getBillingHistoryUrl() { + return this.$state.href('billing.main.history'); + } +} diff --git a/packages/manager/modules/new-billing/src/order/billing-order-tracking.html b/packages/manager/modules/new-billing/src/order/billing-order-tracking.html new file mode 100644 index 000000000000..51f4dc3047c9 --- /dev/null +++ b/packages/manager/modules/new-billing/src/order/billing-order-tracking.html @@ -0,0 +1,9 @@ +
+ + +
diff --git a/packages/manager/modules/new-billing/src/order/billing-order-tracking.module.js b/packages/manager/modules/new-billing/src/order/billing-order-tracking.module.js new file mode 100644 index 000000000000..33ee312c1e76 --- /dev/null +++ b/packages/manager/modules/new-billing/src/order/billing-order-tracking.module.js @@ -0,0 +1,9 @@ +import ngOvhOrderTracking from '@ovh-ux/ng-ovh-order-tracking'; +import uiRouter from '@uirouter/angularjs'; +import routing from './billing-order-tracking.routing'; + +const moduleName = 'ovhManagerBillingOrder'; + +angular.module(moduleName, [ngOvhOrderTracking, uiRouter]).config(routing); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/order/billing-order-tracking.routing.js b/packages/manager/modules/new-billing/src/order/billing-order-tracking.routing.js new file mode 100644 index 000000000000..2c186a132ef8 --- /dev/null +++ b/packages/manager/modules/new-billing/src/order/billing-order-tracking.routing.js @@ -0,0 +1,34 @@ +import controller from './billing-order-tracking.controller'; +import template from './billing-order-tracking.html'; + +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.orders.order', { + url: '/:orderId', + params: { + ordersFilter: { + value: '', + }, + }, + template, + controller, + controllerAs: '$ctrl', + atInternet: { + ignore: true, // this to tell AtInternet to not track this state + }, + resolve: { + available: /* @ngInject */ ($state, billingFeatureAvailability) => { + if (!billingFeatureAvailability.allowOrderTracking()) { + $state.go('billing.orders'); + } + }, + ordersFilter: /* @ngInject */ ($transition$) => + $transition$.params().ordersFilter, + goToOrders: /* @ngInject */ ($state, ordersFilter) => () => + $state.go('billing.orders', { + filter: ordersFilter, + }), + orderId: /* @ngInject */ ($transition$) => $transition$.params().orderId, + breadcrumb: /* @ngInject */ (orderId) => orderId, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/orders/billing-orders-main.constant.js b/packages/manager/modules/new-billing/src/orders/billing-orders-main.constant.js new file mode 100644 index 000000000000..2be974217a72 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/billing-orders-main.constant.js @@ -0,0 +1,8 @@ +export const FEATURE_NAME = 'billing:purchasesOrder'; + +export const LEGALFORM_NOT_ALLOWED = 'individual'; + +export default { + FEATURE_NAME, + LEGALFORM_NOT_ALLOWED, +}; diff --git a/packages/manager/modules/new-billing/src/orders/billing-orders-main.controller.js b/packages/manager/modules/new-billing/src/orders/billing-orders-main.controller.js new file mode 100644 index 000000000000..e85681125449 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/billing-orders-main.controller.js @@ -0,0 +1,44 @@ +import { + FEATURE_NAME, + LEGALFORM_NOT_ALLOWED, +} from './billing-orders-main.constant'; + +export default class BillingOrdersMainCtrl { + /* @ngInject */ + constructor( + $translate, + currentUser, + featuresAvailabilities, + purchasesOrdersSectionState, + ordersSectionState, + guides, + trackClick, + ) { + this.$translate = $translate; + this.featuresAvailabilities = featuresAvailabilities; + this.currentUser = currentUser; + this.purchasesOrdersSectionState = purchasesOrdersSectionState; + this.ordersSectionState = ordersSectionState; + this.guides = guides; + this.trackClick = trackClick; + } + + $onInit() { + if (!this.isAvailable()) { + delete this.guides.url.my_orders.purchase_order; + } + } + + isAvailable() { + return ( + this.featuresAvailabilities[FEATURE_NAME] && + this.currentUser.legalform !== LEGALFORM_NOT_ALLOWED + ); + } + + titleheading() { + return this.isAvailable() + ? this.$translate.instant('orders_page_title') + : ''; + } +} diff --git a/packages/manager/modules/new-billing/src/orders/billing-orders-main.html b/packages/manager/modules/new-billing/src/orders/billing-orders-main.html new file mode 100644 index 000000000000..451c5b18a678 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/billing-orders-main.html @@ -0,0 +1,24 @@ + + + + + + + + + + + + +
diff --git a/packages/manager/modules/new-billing/src/orders/orders-main.module.js b/packages/manager/modules/new-billing/src/orders/orders-main.module.js new file mode 100644 index 000000000000..b690b05e6a3d --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders-main.module.js @@ -0,0 +1,28 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import ngOvhFeatureFlipping from '@ovh-ux/ng-ovh-feature-flipping'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import billingOrders from './orders/orders.module'; +import billingOrdersPurchases from './purchaseOrders/billing-orders-purchases.module'; + +import routing from './orders-main.routing'; + +const moduleName = 'ovhManagerBillingOrdersMain'; + +angular + .module(moduleName, [ + angularTranslate, + ngTranslateAsyncLoader, + ngOvhFeatureFlipping, + 'oui', + uiRouter, + billingOrders, + billingOrdersPurchases, + ]) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/orders/orders-main.routing.js b/packages/manager/modules/new-billing/src/orders/orders-main.routing.js new file mode 100644 index 000000000000..0158d1ee7cf0 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders-main.routing.js @@ -0,0 +1,29 @@ +import controller from './billing-orders-main.controller'; +import template from './billing-orders-main.html'; + +export default /* @ngInject */ ($stateProvider) => { + const name = 'billing.orders'; + + $stateProvider.state(name, { + url: '/orders', + static: true, + template, + controller, + controllerAs: '$ctrl', + redirectTo: `${name}.orders`, + resolve: { + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('orders_page_title'), + + featuresAvailabilities: /* @ngInject */ (ovhFeatureFlipping) => + ovhFeatureFlipping + .checkFeatureAvailability('billing:purchasesOrder') + .then(({ features }) => features), + + ordersSectionState: /* @ngInject */ () => 'billing.orders.orders', + + purchasesOrdersSectionState: /* @ngInject */ () => + 'billing.orders.purchases', + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/orders/orders/billing-orders.controller.js b/packages/manager/modules/new-billing/src/orders/orders/billing-orders.controller.js new file mode 100644 index 000000000000..5af6f10d94d5 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/billing-orders.controller.js @@ -0,0 +1,88 @@ +import assign from 'lodash/assign'; +import get from 'lodash/get'; +import omit from 'lodash/omit'; +import set from 'lodash/set'; + +export default class BillingOrdersCtrl { + /* @ngInject */ + constructor( + $q, + $log, + $translate, + OvhApiMeOrder, + constants, + coreConfig, + orders, + schema, + criteria, + currentUser, + filter, + getOrderTrackingHref, + goToOrder, + goToOrderRetractation, + updateFilterParam, + billingFeatureAvailability, + ) { + this.$q = $q; + this.$log = $log; + this.$translate = $translate; + this.OvhApiMeOrder = OvhApiMeOrder; + this.orders = orders; + this.schema = schema; + this.coreConfig = coreConfig; + this.criteria = criteria || []; + this.filter = filter; + this.getOrderTrackingHref = getOrderTrackingHref; + this.goToOrder = goToOrder; + this.goToOrderRetractation = goToOrderRetractation; + this.updateFilterParam = updateFilterParam; + this.allowOrderTracking = billingFeatureAvailability.allowOrderTracking(); + } + + descriptionOfHeading() { + return this.coreConfig.getRegion() !== 'US' + ? this.$translate.instant('orders_page_description') + : ''; + } + + loadRow($row) { + return this.OvhApiMeOrder.v6() + .getStatus({ orderId: $row.orderId }) + .$promise.then((status) => assign($row, status)) + .then(() => + assign($row, { + canRetract: moment($row.retractionDate || 0).isAfter(this.timeNow), + }), + ); + } + + getStateEnumFilter() { + const states = get(this.schema.models, 'billing.order.OrderStatusEnum') + .enum; + const filter = { + values: {}, + }; + + states.forEach((state) => { + set( + filter.values, + state, + this.$translate.instant(`orders_order_status_${state}`), + ); + }); + + return filter; + } + + onCriteriaChange(criteria) { + this.criteria = criteria; + try { + this.filter = encodeURIComponent( + JSON.stringify(criteria.map((c) => omit(c, 'title'))), + ); + this.updateFilterParam(this.filter); + } catch (err) { + this.$log.error(err); + } + } +} diff --git a/packages/manager/modules/new-billing/src/orders/orders/billing-orders.html b/packages/manager/modules/new-billing/src/orders/orders/billing-orders.html new file mode 100644 index 000000000000..b99767cc2be1 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/billing-orders.html @@ -0,0 +1,130 @@ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/packages/manager/modules/new-billing/src/orders/orders/orders.module.js b/packages/manager/modules/new-billing/src/orders/orders/orders.module.js new file mode 100644 index 000000000000..22a3bb500ee3 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/orders.module.js @@ -0,0 +1,26 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngAtInternet from '@ovh-ux/ng-at-internet'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import retraction from './retraction/retraction.module'; + +import routing from './orders.routing'; + +const moduleName = 'ovhManagerBillingOrders'; + +angular + .module(moduleName, [ + angularTranslate, + ngAtInternet, + ngTranslateAsyncLoader, + 'oui', + retraction, + uiRouter, + ]) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/orders/orders/orders.routing.js b/packages/manager/modules/new-billing/src/orders/orders/orders.routing.js new file mode 100644 index 000000000000..e1d8b465d3fc --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/orders.routing.js @@ -0,0 +1,77 @@ +import controller from './billing-orders.controller'; +import template from './billing-orders.html'; + +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.orders.orders', { + url: '/orders?filter', + params: { + filter: { + dynamic: true, + }, + }, + template, + controller, + controllerAs: '$ctrl', + translations: { value: ['../'], format: 'json' }, + resolve: { + orders: /* @ngInject */ (iceberg) => + iceberg('/me/order') + .query() + .expand('CachedObjectList-Pages') + .sort('date', 'DESC') + .limit(5000) + .execute(null, true) + .$promise.then(({ data }) => data.filter((value) => value !== null)), + /* @ngInject */ + timeNow: ($http) => + $http + .get('/auth/time', { serviceType: 'apiv6' }) + .then((result) => parseInt(result.data, 10)) + .then((timestamp) => moment(timestamp)), + filter: /* @ngInject */ ($transition$) => $transition$.params().filter, + criteria: /* @ngInject */ ($log, filter) => { + if (filter) { + try { + const criteria = JSON.parse(decodeURIComponent(filter)); + if (!Array.isArray(criteria)) { + throw new Error('Invalid criteria'); + } + return criteria; + } catch (err) { + $log.error(err); + } + } + return undefined; + }, + schema: /* @ngInject */ (OvhApiMe) => OvhApiMe.v6().schema().$promise, + + getOrderTrackingHref: /* @ngInject */ ($state) => (order, filter) => + $state.href('billing.orders.order', { + orderId: order.orderId, + ordersFilter: filter, + }), + + goToOrder: /* @ngInject */ ($state) => (order, filter) => + $state.go('billing.orders.order', { + orderId: order.orderId, + ordersFilter: filter, + }), + + goToOrderRetractation: /* @ngInject */ ($state) => ({ orderId }) => + $state.go('billing.orders.order.retract', { + orderId, + }), + updateFilterParam: /* @ngInject */ ($state) => (filter) => + $state.go( + 'billing.orders.orders', + { + filter, + }, + { + reload: false, + }, + ), + hideBreadcrumb: () => true, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/orders/orders/retraction/billing-orders-retraction.controller.js b/packages/manager/modules/new-billing/src/orders/orders/retraction/billing-orders-retraction.controller.js new file mode 100644 index 000000000000..45d75e00d752 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/retraction/billing-orders-retraction.controller.js @@ -0,0 +1,31 @@ +export default /* @ngInject */ function BillingOrderRetractionCtrl( + $log, + $translate, + $http, + Alerter, + goToOrders, + orderId, +) { + this.goToOrders = goToOrders; + this.orderId = orderId; + this.loading = false; + + this.retract = () => { + this.success = false; + this.loading = true; + return $http + .post(`/me/order/${orderId}/retraction`, { + reason: 'other', + }) + .then(() => { + this.success = true; + }) + .catch((err) => { + Alerter.alertFromSWS($translate.instant('orders_retract_error'), err); + $log.error(err); + }) + .finally(() => { + this.loading = false; + }); + }; +} diff --git a/packages/manager/modules/new-billing/src/orders/orders/retraction/billing-orders-retraction.html b/packages/manager/modules/new-billing/src/orders/orders/retraction/billing-orders-retraction.html new file mode 100644 index 000000000000..0dbe97a6c9f1 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/retraction/billing-orders-retraction.html @@ -0,0 +1,83 @@ +
+ + + + + + + + +
+ + + +
+
+ + + + +
+ + +
+ +
+
+ +

+

+ +

+
+ +
+ +
+ + + +
+ + + +
+ + + +
+
+
+
diff --git a/packages/manager/modules/new-billing/src/orders/orders/retraction/retraction.module.js b/packages/manager/modules/new-billing/src/orders/orders/retraction/retraction.module.js new file mode 100644 index 000000000000..d106c3c3c4c7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/retraction/retraction.module.js @@ -0,0 +1,23 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngOvhUtils from '@ovh-ux/ng-ovh-utils'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import routing from './retraction.routing'; + +const moduleName = 'ovhManagerBillingOrdersRetraction'; + +angular + .module(moduleName, [ + angularTranslate, + ngOvhUtils, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/orders/orders/retraction/retraction.routing.js b/packages/manager/modules/new-billing/src/orders/orders/retraction/retraction.routing.js new file mode 100644 index 000000000000..88512755880b --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/retraction/retraction.routing.js @@ -0,0 +1,21 @@ +import template from './billing-orders-retraction.html'; +import controller from './billing-orders-retraction.controller'; + +export default /* @ngInject */ ($stateProvider, $urlServiceProvider) => { + $stateProvider.state('billing.orders.order.retract', { + url: '/retract', + template, + controller, + controllerAs: '$ctrl', + translations: { value: ['../../..'], format: 'json' }, + resolve: { + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('billing_orders_retractation'), + }, + }); + + $urlServiceProvider.rules.when( + '/billing/orders/retract/:id', + '/billing/orders/:id/retract', + ); +}; diff --git a/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_de_DE.json new file mode 100644 index 000000000000..6635b5d47c1f --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_de_DE.json @@ -0,0 +1,3 @@ +{ + "billing_orders_retractation": "Abbrechen" +} diff --git a/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_en_GB.json new file mode 100644 index 000000000000..62e79d6c6976 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_en_GB.json @@ -0,0 +1,3 @@ +{ + "billing_orders_retractation": "Cancel" +} diff --git a/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_es_ES.json new file mode 100644 index 000000000000..4a2fedbb943e --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_es_ES.json @@ -0,0 +1,3 @@ +{ + "billing_orders_retractation": "Cancelar" +} diff --git a/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..94f9225b836b --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_fr_CA.json @@ -0,0 +1,3 @@ +{ + "billing_orders_retractation": "Annuler" +} diff --git a/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..94f9225b836b --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_fr_FR.json @@ -0,0 +1,3 @@ +{ + "billing_orders_retractation": "Annuler" +} diff --git a/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_it_IT.json new file mode 100644 index 000000000000..8674dbffbf71 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_it_IT.json @@ -0,0 +1,3 @@ +{ + "billing_orders_retractation": "Annullare" +} diff --git a/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..8ad53bf8b48f --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_pl_PL.json @@ -0,0 +1,3 @@ +{ + "billing_orders_retractation": "Anuluj" +} diff --git a/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..741c61d127b2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/retraction/translations/Messages_pt_PT.json @@ -0,0 +1,3 @@ +{ + "billing_orders_retractation": "Anular" +} diff --git a/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_de_DE.json new file mode 100644 index 000000000000..26388c0288dd --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_de_DE.json @@ -0,0 +1,32 @@ +{ + "orders_page_title": "Meine Bestellungen", + "orders_date": "Datum", + "orders_id": "Bestellnummer", + "orders_status": "Status", + "orders_billing": "Abrechnung", + "orders_guides": "Anleitungen", + "orders_url": "Bestellung im HTML-Format abrufen", + "orders_taxes_included": "Betrag inklusive Steuern", + "orders_total_price": "Betrag", + "orders_table_empty": "Sie haben keine Bestellungen.", + "orders_table_empty_with_filter": "Keine Ihrer Bestellungen entspricht diesen Kriterien:", + "orders_informations_error": "Es ist ein Fehler aufgetreten:", + "orders_order_status_cancelled": "Abgebrochen", + "orders_order_status_cancelling": "Wird storniert", + "orders_order_status_checking": "Bestätigung", + "orders_order_status_delivered": "Geliefert", + "orders_order_status_delivering": "Wird geliefert", + "orders_order_status_documentsRequested": "Warten auf Dokumente", + "orders_order_status_notPaid": "Unbezahlt", + "orders_order_status_unknown": "Unbekannt", + "orders_order_bc_expired": "Bestellung abgelaufen ", + "orders_order_status_filter_progress": "Wird ausgeführt", + "orders_order_status_filter_all": "Alle ", + "orders_order_status_filter_terminated": "Beendet ", + "orders_order_status_filter_expired": "Abgelaufen ", + "orders_order_loading_error": "Fehler beim Abruf dieser Bestellung", + "orders_search_input_title": "Per ID nach meinen Bestellungen suchen.", + "orders_table_actions_tooltip": "Weitere Details zu dieser Bestellung", + "orders_order_action_retract": "Bestellung stornieren", + "orders_tracking": "Bestellungsnachverfolgung" +} diff --git a/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_en_GB.json new file mode 100644 index 000000000000..c71f12363f03 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_en_GB.json @@ -0,0 +1,32 @@ +{ + "orders_page_title": "My orders ", + "orders_date": "Date", + "orders_id": "Order number ", + "orders_status": "Status", + "orders_billing": "Billing", + "orders_guides": "Guides", + "orders_url": "View order in HTML format", + "orders_taxes_included": "Amount with VAT", + "orders_total_price": "Amount", + "orders_table_empty": "You do not have any orders.", + "orders_table_empty_with_filter": "You do not have any orders with these criteria:", + "orders_informations_error": "An error has occurred:", + "orders_order_status_cancelled": "Cancelled", + "orders_order_status_cancelling": "Cancelling...", + "orders_order_status_checking": "Confirmation", + "orders_order_status_delivered": "Complete ", + "orders_order_status_delivering": "Delivery in progress", + "orders_order_status_documentsRequested": "Awaiting documents", + "orders_order_status_notPaid": "Payment not received", + "orders_order_status_unknown": "Unknown", + "orders_order_bc_expired": "Order expired ", + "orders_order_status_filter_progress": "Running", + "orders_order_status_filter_all": "All ", + "orders_order_status_filter_terminated": "Completed ", + "orders_order_status_filter_expired": "Expired ", + "orders_order_loading_error": "An error has occurred retrieving this order", + "orders_search_input_title": "Search for my orders by ID. ", + "orders_table_actions_tooltip": "More details about this order", + "orders_order_action_retract": "Cancel the order", + "orders_tracking": "Order tracking" +} diff --git a/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_es_ES.json new file mode 100644 index 000000000000..46a8c552eb67 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_es_ES.json @@ -0,0 +1,32 @@ +{ + "orders_page_title": "Mis pedidos", + "orders_date": "Fecha", + "orders_id": "Número de pedido", + "orders_status": "Estado", + "orders_billing": "Facturación", + "orders_guides": "Guías", + "orders_url": "Ver la orden de pedido en formato HTML", + "orders_taxes_included": "Importe con IVA incl.", + "orders_total_price": "Importe", + "orders_table_empty": "No tiene ningún pedido.", + "orders_table_empty_with_filter": "No hay pedidos que cumplan los siguientes criterios:", + "orders_informations_error": "Se ha producido un error:", + "orders_order_status_cancelled": "Cancelado", + "orders_order_status_cancelling": "Cancelando...", + "orders_order_status_checking": "Validación", + "orders_order_status_delivered": "Entregado", + "orders_order_status_delivering": "Entregando...", + "orders_order_status_documentsRequested": "Pendiente de documentación", + "orders_order_status_notPaid": "Pago no recibido", + "orders_order_status_unknown": "Desconocido", + "orders_order_bc_expired": "El pedido ha expirado.", + "orders_order_status_filter_progress": "En proceso", + "orders_order_status_filter_all": "Todas", + "orders_order_status_filter_terminated": "Finalizados", + "orders_order_status_filter_expired": "Expirados", + "orders_order_loading_error": "Error al cargar el pedido.", + "orders_search_input_title": "Buscar mis pedidos por identificador.", + "orders_table_actions_tooltip": "Más detalles sobre el pedido", + "orders_order_action_retract": "Cancelar el pedido", + "orders_tracking": "Seguimiento del pedido" +} diff --git a/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..b8772f37974a --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_fr_CA.json @@ -0,0 +1,32 @@ +{ + "orders_page_title": "Mes commandes", + "orders_date": "Date", + "orders_id": "Numéro de commande", + "orders_status": "État", + "orders_billing": "Facturation", + "orders_guides": "Guides", + "orders_url": "Voir la commande au format HTML", + "orders_taxes_included": "Montant avec taxes", + "orders_total_price": "Montant", + "orders_table_empty": "Vous n'avez pas de commande.", + "orders_table_empty_with_filter": "Vous n'avez pas de commande pour ces critères :", + "orders_informations_error": "Une erreur s'est produite :", + "orders_order_status_cancelled": "Annulée", + "orders_order_status_cancelling": "Annulation en cours", + "orders_order_status_checking": "Validation", + "orders_order_status_delivered": "Finalisée", + "orders_order_status_delivering": "Livraison en cours", + "orders_order_status_documentsRequested": "En attente de documents", + "orders_order_status_notPaid": "Paiement non reçu", + "orders_order_status_unknown": "Inconnu", + "orders_order_bc_expired": "Commande expirée", + "orders_order_status_filter_progress": "En cours", + "orders_order_status_filter_all": "Toutes", + "orders_order_status_filter_terminated": "Terminées", + "orders_order_status_filter_expired": "Expirées", + "orders_order_loading_error": "Erreur lors de la récupération de cette commande", + "orders_search_input_title": "Rechercher mes commandes par identifiant.", + "orders_table_actions_tooltip": "Plus de détails sur cette commande", + "orders_order_action_retract": "Annuler la commande", + "orders_tracking": "Suivi de commande" +} diff --git a/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..b8772f37974a --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_fr_FR.json @@ -0,0 +1,32 @@ +{ + "orders_page_title": "Mes commandes", + "orders_date": "Date", + "orders_id": "Numéro de commande", + "orders_status": "État", + "orders_billing": "Facturation", + "orders_guides": "Guides", + "orders_url": "Voir la commande au format HTML", + "orders_taxes_included": "Montant avec taxes", + "orders_total_price": "Montant", + "orders_table_empty": "Vous n'avez pas de commande.", + "orders_table_empty_with_filter": "Vous n'avez pas de commande pour ces critères :", + "orders_informations_error": "Une erreur s'est produite :", + "orders_order_status_cancelled": "Annulée", + "orders_order_status_cancelling": "Annulation en cours", + "orders_order_status_checking": "Validation", + "orders_order_status_delivered": "Finalisée", + "orders_order_status_delivering": "Livraison en cours", + "orders_order_status_documentsRequested": "En attente de documents", + "orders_order_status_notPaid": "Paiement non reçu", + "orders_order_status_unknown": "Inconnu", + "orders_order_bc_expired": "Commande expirée", + "orders_order_status_filter_progress": "En cours", + "orders_order_status_filter_all": "Toutes", + "orders_order_status_filter_terminated": "Terminées", + "orders_order_status_filter_expired": "Expirées", + "orders_order_loading_error": "Erreur lors de la récupération de cette commande", + "orders_search_input_title": "Rechercher mes commandes par identifiant.", + "orders_table_actions_tooltip": "Plus de détails sur cette commande", + "orders_order_action_retract": "Annuler la commande", + "orders_tracking": "Suivi de commande" +} diff --git a/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_it_IT.json new file mode 100644 index 000000000000..03c50d9fdb49 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_it_IT.json @@ -0,0 +1,32 @@ +{ + "orders_page_title": "I miei ordini", + "orders_date": "Data", + "orders_id": "Numero dell'ordine", + "orders_status": "Stato", + "orders_billing": "Fatturazione", + "orders_guides": "Guide", + "orders_url": "Visualizza l'ordine in formato HTML", + "orders_taxes_included": "Importo IVA inclusa", + "orders_total_price": "Importo", + "orders_table_empty": "Non sono presenti ordini", + "orders_table_empty_with_filter": "Non sono presenti ordini con questi criteri:", + "orders_informations_error": "Si è verificato un errore:", + "orders_order_status_cancelled": "Annullata", + "orders_order_status_cancelling": "Annullamento in corso...", + "orders_order_status_checking": "Conferma", + "orders_order_status_delivered": "Completata", + "orders_order_status_delivering": "Consegna in corso...", + "orders_order_status_documentsRequested": "In attesa dei documenti", + "orders_order_status_notPaid": "Pagamento non ricevuto", + "orders_order_status_unknown": "Sconosciuto", + "orders_order_bc_expired": "Ordine scaduto", + "orders_order_status_filter_progress": "In corso", + "orders_order_status_filter_all": "Tutti", + "orders_order_status_filter_terminated": "Completati", + "orders_order_status_filter_expired": "Scaduti", + "orders_order_loading_error": "Si è verificato un errore durante il recupero di questo ordine", + "orders_search_input_title": "Ricerca i tuoi ordini per identificativo.", + "orders_table_actions_tooltip": "Maggiori informazioni su questo ordine", + "orders_order_action_retract": "Annulla l'ordine", + "orders_tracking": "Stato dell'ordine" +} diff --git a/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..9fa4cadb86e7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_pl_PL.json @@ -0,0 +1,32 @@ +{ + "orders_page_title": "Moje zamówienia", + "orders_date": "Data", + "orders_id": "Numer zamówienia", + "orders_status": "Status", + "orders_billing": "Płatności", + "orders_guides": "Przewodniki", + "orders_url": "Wyświetl zamówienie w formacie HTML", + "orders_taxes_included": "Kwota brutto", + "orders_total_price": "Kwota", + "orders_table_empty": "Nie masz zamówień.", + "orders_table_empty_with_filter": "Nie posiadasz zamówień spełniających podane kryteria:", + "orders_informations_error": "Wystąpił błąd:", + "orders_order_status_cancelled": "Anulowane", + "orders_order_status_cancelling": "Trwa anulowanie", + "orders_order_status_checking": "Weryfikacja", + "orders_order_status_delivered": "Zakończone", + "orders_order_status_delivering": "Dostarczanie w trakcie", + "orders_order_status_documentsRequested": "Oczekiwanie na dokumenty", + "orders_order_status_notPaid": "Brak płatności", + "orders_order_status_unknown": "Nieznany", + "orders_order_bc_expired": "Zamówienie wygasło", + "orders_order_status_filter_progress": "W realizacji", + "orders_order_status_filter_all": "Wszystkie", + "orders_order_status_filter_terminated": "Zakończone", + "orders_order_status_filter_expired": "Wygasłe", + "orders_order_loading_error": "Wystąpił błąd podczas pobierania tego zamówienia.", + "orders_search_input_title": "Wyszukaj zamówienie na podstawie identyfikatora.", + "orders_table_actions_tooltip": "Więcej informacji na temat tego zamówienia", + "orders_order_action_retract": "Anuluj zamówienie", + "orders_tracking": "Informacje o zamówieniu" +} diff --git a/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..06caa6839b78 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/orders/translations/Messages_pt_PT.json @@ -0,0 +1,32 @@ +{ + "orders_page_title": "Encomendas", + "orders_date": "Data", + "orders_id": "Número de encomenda", + "orders_status": "Estado", + "orders_billing": "Faturação", + "orders_guides": "Manuais", + "orders_url": "Ver encomenda em formato HTML", + "orders_taxes_included": "Montante com taxas", + "orders_total_price": "Montante", + "orders_table_empty": "Não possui encomendas.", + "orders_table_empty_with_filter": "Não possui encomendas para estes critérios:", + "orders_informations_error": "Ocorreu um erro:", + "orders_order_status_cancelled": "Anulada", + "orders_order_status_cancelling": "Cancelamento em curso", + "orders_order_status_checking": "Validação", + "orders_order_status_delivered": "Concluída", + "orders_order_status_delivering": "Entrega em curso", + "orders_order_status_documentsRequested": "A aguardar documentos", + "orders_order_status_notPaid": "Sem pagamento", + "orders_order_status_unknown": "Desconhecido", + "orders_order_bc_expired": "Encomenda expirada", + "orders_order_status_filter_progress": "Em curso", + "orders_order_status_filter_all": "Todas", + "orders_order_status_filter_terminated": "Concluídas", + "orders_order_status_filter_expired": "Expiradas", + "orders_order_loading_error": "Ocorreu um erro durante a recuperação desta encomenda", + "orders_search_input_title": "Pesquisar as minhas encomendas por ID.", + "orders_table_actions_tooltip": "Mais detalhes sobre esta encomenda", + "orders_order_action_retract": "Anular a encomenda", + "orders_tracking": "Seguir encomenda" +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/billing-orders-purchases.component.js b/packages/manager/modules/new-billing/src/orders/purchaseOrders/billing-orders-purchases.component.js new file mode 100644 index 000000000000..db1b1247c607 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/billing-orders-purchases.component.js @@ -0,0 +1,24 @@ +import controller from './billing-orders-purchases.controller'; +import template from './billing-orders-purchases.html'; + +export default { + bindings: { + criteria: '<', + dateFormat: '<', + disableDate: '<', + filter: '<', + goToEditPurchase: '<', + goToNewPurchase: '<', + goToModalDesactivatePurchase: '<', + goToPurchaseOrder: '<', + maxDate: '<', + minDate: '<', + minDateForEndDate: '<', + purchases: '<', + trackClick: '<', + trackPage: '<', + updateFilterParam: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/billing-orders-purchases.constant.js b/packages/manager/modules/new-billing/src/orders/purchaseOrders/billing-orders-purchases.constant.js new file mode 100644 index 000000000000..b00122e86dc9 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/billing-orders-purchases.constant.js @@ -0,0 +1,24 @@ +export const PURCHASE_ORDER = 'Purchase order'; + +export const ENUM_PURCHASES_STATUS = ['actif', 'inactif', 'desactivate']; + +export const TYPE_PURCHASE = { + REFERENCE_ORDER: 'REFERENCE_ORDER', + PURCHASE_ORDER: 'PURCHASE_ORDER', +}; + +export const TYPE_PURCHASE_FOR_TRACKING = { + REFERENCE_ORDER: 'internal-ref', + PURCHASE_ORDER: 'po', +}; + +export const PAGE_SIZE = 10; + +export const DATE_FORMAT_MOMENT = 'YYYY-MM-DD'; + +export default { + ENUM_PURCHASES_STATUS, + TYPE_PURCHASE_FOR_TRACKING, + PAGE_SIZE, + DATE_FORMAT_MOMENT, +}; diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/billing-orders-purchases.controller.js b/packages/manager/modules/new-billing/src/orders/purchaseOrders/billing-orders-purchases.controller.js new file mode 100644 index 000000000000..3774bd78acfe --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/billing-orders-purchases.controller.js @@ -0,0 +1,103 @@ +import omit from 'lodash/omit'; +import set from 'lodash/set'; + +import { + ENUM_PURCHASES_STATUS, + TYPE_PURCHASE_FOR_TRACKING, + PAGE_SIZE, +} from './billing-orders-purchases.constant'; + +export default class BillingOrdersPurchasesCtrl { + /* @ngInject */ + constructor($log, $translate, billingOrdersPurchasesService) { + this.$log = $log; + this.$translate = $translate; + this.billingOrdersPurchasesService = billingOrdersPurchasesService; + this.ENUM_PURCHASES_STATUS = ENUM_PURCHASES_STATUS; + this.PAGE_SIZE = PAGE_SIZE; + } + + get hasOnGoingPurchase() { + return moment(this.maxDate).isBefore(moment().startOf('day')); + } + + editPurchase(purchase) { + return this.goToEditPurchase(purchase); + } + + editPurchaseStatus(purchase) { + const action = purchase.active + ? 'goToModalDesactivatePurchase' + : 'purchaseReActivation'; + return this[action](purchase); + } + + getStateEnumFilter() { + const states = this.ENUM_PURCHASES_STATUS; + const filter = { + values: {}, + }; + + states.forEach((state) => { + set( + filter.values, + state, + this.$translate.instant(`purchaseOrders_status_${state}`), + ); + }); + + return filter; + } + + newPurchase() { + this.trackClick('create-internal-ref'); + return this.goToNewPurchase(); + } + + onCriteriaChange(criteria) { + this.criteria = criteria; + try { + this.filter = encodeURIComponent( + JSON.stringify(criteria.map((c) => omit(c, 'title'))), + ); + return this.updateFilterParam(this.filter); + } catch (err) { + return this.$log.error(err); + } + } + + purchaseReActivation(purchase) { + this.trackPage(`reactivate-${TYPE_PURCHASE_FOR_TRACKING[purchase.type]}`); + + const data = { + active: true, + }; + + return this.billingOrdersPurchasesService + .putPurchaseOrder(purchase.id, data) + .then(() => { + this.trackPage( + `reactivate-${TYPE_PURCHASE_FOR_TRACKING[purchase.type]}_success`, + ); + + this.goToPurchaseOrder( + this.$translate.instant( + `purchaseOrders_confirmation_reactivation_${purchase.type}_success`, + ), + 'success', + ); + }) + .catch(() => { + this.trackPage( + `reactivate-${TYPE_PURCHASE_FOR_TRACKING[purchase.type]}_error`, + ); + + this.goToPurchaseOrder( + this.$translate.instant( + 'purchaseOrders_confirmation_reactivation_error', + ), + 'danger', + ); + }); + } +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/billing-orders-purchases.html b/packages/manager/modules/new-billing/src/orders/purchaseOrders/billing-orders-purchases.html new file mode 100644 index 000000000000..7bd439256a79 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/billing-orders-purchases.html @@ -0,0 +1,116 @@ +
+
+ + + +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/billing-orders-purchases.module.js b/packages/manager/modules/new-billing/src/orders/purchaseOrders/billing-orders-purchases.module.js new file mode 100644 index 000000000000..b98d2356479b --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/billing-orders-purchases.module.js @@ -0,0 +1,33 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngAtInternet from '@ovh-ux/ng-at-internet'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; + +import editPurchaseModule from './edit-purchase/edit-purchase.module'; +import newPurchaseModule from './new-purchase/new-purchase.module'; +import ordersPurchasesService from './billing-orders-purchases.service'; +import ordersPurchasesComponent from './billing-orders-purchases.component'; +import updatePurchaseStatusModule from './update-purchase-status/update-purchase-status.module'; + +import routing from './billing-orders-purchases.routing'; + +const moduleName = 'ovhManagerBillingOrdersPurchases'; + +angular + .module(moduleName, [ + angularTranslate, + ngAtInternet, + ngTranslateAsyncLoader, + 'oui', + 'ui.router', + editPurchaseModule, + newPurchaseModule, + updatePurchaseStatusModule, + ]) + .config(routing) + .component('billingOrdersPurchasesComponent', ordersPurchasesComponent) + .service('billingOrdersPurchasesService', ordersPurchasesService) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/billing-orders-purchases.routing.js b/packages/manager/modules/new-billing/src/orders/purchaseOrders/billing-orders-purchases.routing.js new file mode 100644 index 000000000000..508007010365 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/billing-orders-purchases.routing.js @@ -0,0 +1,102 @@ +import moment from 'moment'; + +import { DATE_FORMAT_MOMENT } from './billing-orders-purchases.constant'; + +export default /* @ngInject */ ($stateProvider) => { + const stateParent = 'billing.orders.purchases'; + + $stateProvider.state(stateParent, { + url: '/purchases?filter', + params: { + filter: { + dynamic: true, + }, + }, + component: 'billingOrdersPurchasesComponent', + resolve: { + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('purchaseOrders_page_title'), + + criteria: /* @ngInject */ (billingOrdersPurchasesService, filter) => + billingOrdersPurchasesService.criteria(filter), + + dateFormat: /* @ngInject */ (billingOrdersPurchasesService) => + billingOrdersPurchasesService.getDateFormat(), + + disableDate: /* @ngInject */ (billingOrdersPurchasesService, purchases) => + billingOrdersPurchasesService.getDisableDate(purchases), + + maxDate: /* @ngInject */ (billingOrdersPurchasesService, purchases) => + billingOrdersPurchasesService.getMaxDate(purchases), + + filter: /* @ngInject */ ($transition$) => $transition$.params().filter, + + goToEditPurchase: /* @ngInject */ ($state) => (purchase) => { + $state.go(`${stateParent}.edit-purchase`, { + purchase, + }); + }, + + goToNewPurchase: /* @ngInject */ ($state) => () => { + $state.go(`${stateParent}.new-purchase`); + }, + + goToModalDesactivatePurchase: /* @ngInject */ ($state) => (purchase) => { + $state.go(`${stateParent}.update-purchase-status`, { purchase }); + }, + + goToPurchaseOrder: /* @ngInject */ ($state, Alerter) => ( + message = false, + type = 'success', + ) => { + const reload = message && type === 'success'; + const promise = $state.go( + stateParent, + {}, + { + reload, + }, + ); + if (message) { + promise.then(() => Alerter.set(`alert-${type}`, message)); + } + return promise; + }, + + hideBreadcrumb: /* @ngInject */ () => false, + + minDate: /* @ngInject */ () => moment().format(DATE_FORMAT_MOMENT), + + minDateForEndDate: /* @ngInject */ (billingOrdersPurchasesService) => + billingOrdersPurchasesService.minDateForEndDate(), + + purchases: /* @ngInject */ (billingOrdersPurchasesService) => + billingOrdersPurchasesService.getPurchasesOrder(), + + trackClick: /* @ngInject */ (atInternet) => (nameClick) => + atInternet.trackClick({ + name: `dedicated::account::billing::${nameClick}`, + type: 'action', + }), + + trackPage: /* @ngInject */ (atInternet) => (namePage) => + atInternet.trackPage({ + name: `dedicated::account::billing::${namePage}`, + }), + + updateFilterParam: /* @ngInject */ ($state) => (filter) => + $state.go( + 'billing.orders.purchases', + { + filter, + }, + { + reload: false, + }, + ), + }, + atInternet: { + rename: 'dedicated::account::billing::orders-internal-ref', + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/billing-orders-purchases.service.js b/packages/manager/modules/new-billing/src/orders/purchaseOrders/billing-orders-purchases.service.js new file mode 100644 index 000000000000..cc1e17450553 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/billing-orders-purchases.service.js @@ -0,0 +1,108 @@ +import moment from 'moment'; + +import { DATE_FORMAT_MOMENT } from './billing-orders-purchases.constant'; + +export default class BillingOrdersPurchasesService { + /* @ngInject */ + constructor($locale, $log, $http, iceberg) { + this.$locale = $locale; + this.$log = $log; + this.$http = $http; + this.iceberg = iceberg; + } + + postPurchaseOrder(data) { + return this.$http.post('/me/billing/purchaseOrder', data); + } + + putPurchaseOrder(id, data) { + return this.$http.put(`/me/billing/purchaseOrder/${id}`, data); + } + + getPurchasesOrder() { + return this.iceberg('/me/billing/purchaseOrder') + .query() + .expand('CachedObjectList-Pages') + .sort('startDate', 'ASC') + .limit(5000) + .execute(null, true) + .$promise.then(({ data }) => data) + .then((purchases) => + purchases + .filter((elm) => elm.status === 'CREATED') + .map((elm) => { + const newElm = { ...elm }; + if ( + elm.active === true && + (elm.endDate + ? moment().isBetween(elm.startDate, elm.endDate, '[)') || + moment().isSame(elm.startDate) + : moment().isSameOrAfter(elm.startDate)) + ) { + newElm.status = 'actif'; + } else if ( + elm.active === true && + !moment().isBetween(elm.startDate, elm.endDate, '[)') + ) { + newElm.status = 'inactif'; + } else { + newElm.status = 'desactivate'; + } + return newElm; + }), + ); + } + + getDisableDate(purchases) { + this.purchases = purchases; + return this.purchases.flatMap((elm) => { + const array = []; + if (elm.endDate) { + const nbrDays = moment(elm.endDate).diff(elm.startDate, 'days'); + for (let i = 0; i < nbrDays; i += 1) { + array.push( + moment(elm.startDate) + .add(i, 'day') + .format(DATE_FORMAT_MOMENT), + ); + } + } + return array; + }); + } + + getMaxDate(purchases) { + this.purchases = purchases; + const arrayMaxDate = purchases.flatMap((elm) => { + return !elm.endDate ? elm.startDate : []; + }); + return arrayMaxDate.length > 0 ? arrayMaxDate[0] : null; + } + + getDateFormat() { + return this.$locale.DATETIME_FORMATS.shortDate + .replace('dd', 'd') + .replace('MM', 'm') + .replace('y', 'Y'); + } + + criteria(filter) { + if (filter) { + try { + const criteria = JSON.parse(decodeURIComponent(filter)); + if (!Array.isArray(criteria)) { + throw new Error('Invalid criteria'); + } + return criteria; + } catch (err) { + this.$log.error(err); + } + } + return null; + } + + minDateForEndDate() { + this.moment = moment(); + return this.moment.add(1, 'day').format(DATE_FORMAT_MOMENT); + } +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/edit-purchase.component.js b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/edit-purchase.component.js new file mode 100644 index 000000000000..23bd37c2dc25 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/edit-purchase.component.js @@ -0,0 +1,18 @@ +import controller from './edit-purchase.controller'; +import template from './edit-purchase.html'; + +export default { + bindings: { + dateFormat: '<', + disableDate: '<', + goToPurchaseOrder: '<', + minDate: '<', + maxDate: '<', + minDateForEndDate: '<', + purchase: '<', + trackClick: '<', + trackPage: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/edit-purchase.controller.js b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/edit-purchase.controller.js new file mode 100644 index 000000000000..c452ae2390db --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/edit-purchase.controller.js @@ -0,0 +1,109 @@ +import moment from 'moment'; + +import { + PURCHASE_ORDER, + TYPE_PURCHASE_FOR_TRACKING, + TYPE_PURCHASE, + DATE_FORMAT_MOMENT, +} from '../billing-orders-purchases.constant'; + +export default class BillingOrdersPurchaseEditCtrl { + /* @ngInject */ + constructor($translate, billingOrdersPurchasesService) { + this.$translate = $translate; + this.billingOrdersPurchasesService = billingOrdersPurchasesService; + this.TYPE_PURCHASE = TYPE_PURCHASE; + this.PURCHASE_ORDER = PURCHASE_ORDER; + } + + $onInit() { + this.model = { + active: true, + endDate: new Date(this.purchase.endDate), + reference: this.purchase.reference, + startDate: new Date(this.purchase.startDate), + type: this.purchase.type, + }; + + this.maxDate = this.purchase.endDate ? this.maxDate : null; + + this.disableDateForEdit = this.disableDate.flatMap((elm) => { + return moment(elm).isBetween( + this.purchase.startDate, + this.purchase.endDate, + '[]', + ) || + moment(elm).isSame(this.purchase.startDate) || + moment(elm).isSame(this.purchase.endDate) + ? [] + : elm; + }); + + if ( + moment(moment().format(DATE_FORMAT_MOMENT)).isSameOrBefore( + this.purchase.startDate, + ) + ) { + this.onChangeMinDateForEndDate(null, this.purchase.startDate); + } + } + + onCancel() { + this.trackClick( + `modify-${TYPE_PURCHASE_FOR_TRACKING[this.model.type]}_cancel`, + ); + return this.goToPurchaseOrder(); + } + + onChangeMinDateForEndDate(selectedDates, dateStr) { + this.minDateForEndDate = moment(dateStr) + .add(1, 'day') + .toDate(); + this.maxDateForEndDate = this.disableDateForEdit.find((elm) => + moment(elm).isAfter(dateStr), + ); + this.disableDateForEndDate = this.disableDateForEdit.map((elm) => + moment(elm).isAfter(dateStr), + ); + this.maxDateForEndDate = + this.maxDateForEndDate !== undefined + ? moment(this.maxDateForEndDate).format(DATE_FORMAT_MOMENT) + : null; + } + + onSubmit() { + this.trackClick( + `modify-${TYPE_PURCHASE_FOR_TRACKING[this.model.type]}_confirm`, + ); + + const data = { + reference: this.model.reference, + startDate: this.model.startDate, + type: this.model.type, + ...(this.model.endDate && { endDate: this.model.endDate }), + }; + + return this.billingOrdersPurchasesService + .putPurchaseOrder(this.purchase.id, data) + .then(() => { + this.trackPage( + `modify-${TYPE_PURCHASE_FOR_TRACKING[this.model.type]}_success`, + ); + this.goToPurchaseOrder( + this.$translate.instant( + `purchaseOrders_edit_purchase_submit_${this.model.type}_success`, + ), + 'success', + ); + }) + .catch(() => { + this.trackPage( + `modify-${TYPE_PURCHASE_FOR_TRACKING[this.model.type]}_error`, + ); + this.goToPurchaseOrder( + this.$translate.instant('purchaseOrders_edit_purchase_submit_error'), + 'danger', + ); + }); + } +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/edit-purchase.html b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/edit-purchase.html new file mode 100644 index 000000000000..07861894f4df --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/edit-purchase.html @@ -0,0 +1,100 @@ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/edit-purchase.module.js b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/edit-purchase.module.js new file mode 100644 index 000000000000..08abc82b74c8 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/edit-purchase.module.js @@ -0,0 +1,18 @@ +import angular from 'angular'; + +import '@uirouter/angularjs'; +import '@ovh-ux/ng-translate-async-loader'; +import 'angular-translate'; +import '@ovh-ux/ui-kit'; + +import component from './edit-purchase.component'; +import routing from './edit-purchase.routing'; + +const moduleName = 'ovhManagerBillingOrdersPurchaseEdit'; +angular + .module(moduleName, ['ui.router', 'oui', 'ngTranslateAsyncLoader']) + .component('editPurchase', component) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/edit-purchase.routing.js b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/edit-purchase.routing.js new file mode 100644 index 000000000000..1168d924300c --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/edit-purchase.routing.js @@ -0,0 +1,19 @@ +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.orders.purchases.edit-purchase', { + url: '/edit-purchase', + params: { + purchase: null, + }, + component: 'editPurchase', + resolve: { + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('purchaseOrders_edit_page_title'), + + purchase: /* @ngInject */ ($transition$) => + $transition$.params().purchase, + }, + atInternet: { + ignore: true, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_de_DE.json new file mode 100644 index 000000000000..4f9e3ba0b64f --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_de_DE.json @@ -0,0 +1,18 @@ +{ + "purchaseOrders_edit_page_title": "Interne Referenz ändern", + "purchaseOrders_form_edit_internal_reference": "Ihre interne Referenz ändern", + "purchaseOrders_form_edit_purchase_order": "Purchase Order bearbeiten", + "purchaseOrders_form_edit_internal_reference_label": "Name der internen Referenz", + "purchaseOrders_form_edit_internal_reference_placeholder": "Interne Referenz", + "purchaseOrders_form_edit_internal_reference_sub_info": "Die Referenz darf 20 Zeichen nicht überschreiten", + "purchaseOrders_form_edit_purchase_order_label": "Name der Purchase Order", + "purchaseOrders_form_edit_purchase_order_sub_info": "Der Name darf maximal 20 Zeichen lang sein", + "purchaseOrders_form_edit_purchase_startDate": "Startdatum", + "purchaseOrders_form_edit_purchase_endDate": "Enddatum", + "purchaseOrders_form_edit_purchase_endDate_helper": "Enddatum ist ausgeschlossen", + "purchaseOrders_form_edit_purchase_submit": "Bestätigen", + "purchaseOrders_form_edit_purchase_cancel": "Abbrechen", + "purchaseOrders_edit_purchase_submit_REFERENCE_ORDER_success": "Ihre interne Referenz wurde erfolgreich geändert!", + "purchaseOrders_edit_purchase_submit_PURCHASE_ORDER_success": "Ihre Purchase Order wurde erfolgreich bearbeitet!", + "purchaseOrders_edit_purchase_submit_error": "Ihre Anfrage konnte nicht bearbeitet werden. Bitte versuchen Sie es später erneut." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_en_GB.json new file mode 100644 index 000000000000..58f00139beb2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_en_GB.json @@ -0,0 +1,18 @@ +{ + "purchaseOrders_edit_page_title": "Edit internal reference", + "purchaseOrders_form_edit_internal_reference": "Edit your internal reference", + "purchaseOrders_form_edit_purchase_order": "Edit your purchase order", + "purchaseOrders_form_edit_internal_reference_label": "Internal reference name", + "purchaseOrders_form_edit_internal_reference_placeholder": "Internal reference", + "purchaseOrders_form_edit_internal_reference_sub_info": "The reference must not exceed 20 characters", + "purchaseOrders_form_edit_purchase_order_label": "Purchase order name", + "purchaseOrders_form_edit_purchase_order_sub_info": "The name must not exceed 20 characters", + "purchaseOrders_form_edit_purchase_startDate": "Start date", + "purchaseOrders_form_edit_purchase_endDate": "End date ", + "purchaseOrders_form_edit_purchase_endDate_helper": "The end date is excluded", + "purchaseOrders_form_edit_purchase_submit": "Validate", + "purchaseOrders_form_edit_purchase_cancel": "Cancel", + "purchaseOrders_edit_purchase_submit_REFERENCE_ORDER_success": "Your internal reference has been edited.", + "purchaseOrders_edit_purchase_submit_PURCHASE_ORDER_success": "Your purchase order has been edited.", + "purchaseOrders_edit_purchase_submit_error": "Your request could not be processed. Please try again later." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_es_ES.json new file mode 100644 index 000000000000..cf9b94696175 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_es_ES.json @@ -0,0 +1,18 @@ +{ + "purchaseOrders_edit_page_title": "Modificar la referencia interna", + "purchaseOrders_form_edit_internal_reference": "Modificar su referencia interna", + "purchaseOrders_form_edit_purchase_order": "Modificar su «purchase order»", + "purchaseOrders_form_edit_internal_reference_label": "Nombre de la referencia interna", + "purchaseOrders_form_edit_internal_reference_placeholder": "Referencia interna", + "purchaseOrders_form_edit_internal_reference_sub_info": "La referencia no debe superar los 20 caracteres.", + "purchaseOrders_form_edit_purchase_order_label": "Nombre del «purchase order»", + "purchaseOrders_form_edit_purchase_order_sub_info": "El nombre no debe superar los 20 caracteres.", + "purchaseOrders_form_edit_purchase_startDate": "Fecha de inicio", + "purchaseOrders_form_edit_purchase_endDate": "Fecha de finalización", + "purchaseOrders_form_edit_purchase_endDate_helper": "La fecha de finalización está excluida.", + "purchaseOrders_form_edit_purchase_submit": "Confirmar", + "purchaseOrders_form_edit_purchase_cancel": "Cancelar", + "purchaseOrders_edit_purchase_submit_REFERENCE_ORDER_success": "La referencia interna se ha editado correctamente.", + "purchaseOrders_edit_purchase_submit_PURCHASE_ORDER_success": "El «purchase order» se ha editado correctamente.", + "purchaseOrders_edit_purchase_submit_error": "La solicitud no se ha enviado. Por favor, vuelva a intentarlo más adelante." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..f3b1d4a33819 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_fr_CA.json @@ -0,0 +1,18 @@ +{ + "purchaseOrders_edit_page_title": "Modifier la référence interne", + "purchaseOrders_form_edit_internal_reference": "Modifier votre référence interne", + "purchaseOrders_form_edit_purchase_order": "Modifier votre purchase order", + "purchaseOrders_form_edit_internal_reference_label": "Nom de la référence interne", + "purchaseOrders_form_edit_internal_reference_placeholder": "Référence interne", + "purchaseOrders_form_edit_internal_reference_sub_info": "La référence ne doit pas excéder 20 caractères", + "purchaseOrders_form_edit_purchase_order_label": "Nom du purchase order", + "purchaseOrders_form_edit_purchase_order_sub_info": "Le nom ne doit pas excéder 20 caractères", + "purchaseOrders_form_edit_purchase_startDate": "Date de début", + "purchaseOrders_form_edit_purchase_endDate": "Date de fin", + "purchaseOrders_form_edit_purchase_endDate_helper": "La date de fin est exclue", + "purchaseOrders_form_edit_purchase_submit": "Valider", + "purchaseOrders_form_edit_purchase_cancel": "Annuler", + "purchaseOrders_edit_purchase_submit_REFERENCE_ORDER_success": "Votre référence interne a bien été éditée !", + "purchaseOrders_edit_purchase_submit_PURCHASE_ORDER_success": "Votre purchase order a bien été édité !", + "purchaseOrders_edit_purchase_submit_error": "Votre demande n'a pas pu être prise en compte. Merci d'essayer ultérieurement." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..f3b1d4a33819 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_fr_FR.json @@ -0,0 +1,18 @@ +{ + "purchaseOrders_edit_page_title": "Modifier la référence interne", + "purchaseOrders_form_edit_internal_reference": "Modifier votre référence interne", + "purchaseOrders_form_edit_purchase_order": "Modifier votre purchase order", + "purchaseOrders_form_edit_internal_reference_label": "Nom de la référence interne", + "purchaseOrders_form_edit_internal_reference_placeholder": "Référence interne", + "purchaseOrders_form_edit_internal_reference_sub_info": "La référence ne doit pas excéder 20 caractères", + "purchaseOrders_form_edit_purchase_order_label": "Nom du purchase order", + "purchaseOrders_form_edit_purchase_order_sub_info": "Le nom ne doit pas excéder 20 caractères", + "purchaseOrders_form_edit_purchase_startDate": "Date de début", + "purchaseOrders_form_edit_purchase_endDate": "Date de fin", + "purchaseOrders_form_edit_purchase_endDate_helper": "La date de fin est exclue", + "purchaseOrders_form_edit_purchase_submit": "Valider", + "purchaseOrders_form_edit_purchase_cancel": "Annuler", + "purchaseOrders_edit_purchase_submit_REFERENCE_ORDER_success": "Votre référence interne a bien été éditée !", + "purchaseOrders_edit_purchase_submit_PURCHASE_ORDER_success": "Votre purchase order a bien été édité !", + "purchaseOrders_edit_purchase_submit_error": "Votre demande n'a pas pu être prise en compte. Merci d'essayer ultérieurement." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_it_IT.json new file mode 100644 index 000000000000..3429a7ca0ea8 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_it_IT.json @@ -0,0 +1,18 @@ +{ + "purchaseOrders_edit_page_title": "Modifica la referenza interna", + "purchaseOrders_form_edit_internal_reference": "Modifica la tua referenza interna", + "purchaseOrders_form_edit_purchase_order": "Modifica il tuo purchase order", + "purchaseOrders_form_edit_internal_reference_label": "Nome della referenza interna", + "purchaseOrders_form_edit_internal_reference_placeholder": "Referenza interna", + "purchaseOrders_form_edit_internal_reference_sub_info": "La referenza non deve superare i 20 caratteri", + "purchaseOrders_form_edit_purchase_order_label": "Nome del purchase order", + "purchaseOrders_form_edit_purchase_order_sub_info": "Il nome non deve superare i 20 caratteri", + "purchaseOrders_form_edit_purchase_startDate": "Data di inizio", + "purchaseOrders_form_edit_purchase_endDate": "Data di fine", + "purchaseOrders_form_edit_purchase_endDate_helper": "La data di fine è esclusa", + "purchaseOrders_form_edit_purchase_submit": "Confermare", + "purchaseOrders_form_edit_purchase_cancel": "Annullare", + "purchaseOrders_edit_purchase_submit_REFERENCE_ORDER_success": "La tua referenza interna è stata modificata correttamente!", + "purchaseOrders_edit_purchase_submit_PURCHASE_ORDER_success": "Il tuo purchase order è stato modificato correttamente!", + "purchaseOrders_edit_purchase_submit_error": "Non è stato possibile prendere in carico la tua richiesta. Ti preghiamo di riprovare." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..a2a5b1c7c79c --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_pl_PL.json @@ -0,0 +1,18 @@ +{ + "purchaseOrders_edit_page_title": "Zmień wewnętrzne oznaczenie referencyjne", + "purchaseOrders_form_edit_internal_reference": "Zmień Twoje wewnętrzne oznaczenie referencyjne", + "purchaseOrders_form_edit_purchase_order": "Zmień „purchase order”", + "purchaseOrders_form_edit_internal_reference_label": "Brzmienie wewnętrznego oznaczenia referencyjnego", + "purchaseOrders_form_edit_internal_reference_placeholder": "Wewnętrzne oznaczenie referencyjne", + "purchaseOrders_form_edit_internal_reference_sub_info": "Oznaczenie referencyjne nie może przekroczyć 20 znaków", + "purchaseOrders_form_edit_purchase_order_label": "Nazwa „purchase order”", + "purchaseOrders_form_edit_purchase_order_sub_info": "Nazwa nie może przekroczyć 20 znaków", + "purchaseOrders_form_edit_purchase_startDate": "Data rozpoczęcia", + "purchaseOrders_form_edit_purchase_endDate": "Data zakończenia", + "purchaseOrders_form_edit_purchase_endDate_helper": "Data zakończenia jest wyłączona", + "purchaseOrders_form_edit_purchase_submit": "Zatwierdź", + "purchaseOrders_form_edit_purchase_cancel": "Anuluj", + "purchaseOrders_edit_purchase_submit_REFERENCE_ORDER_success": "Twoje wewnętrzne oznaczenie referencyjne zostało edytowane!", + "purchaseOrders_edit_purchase_submit_PURCHASE_ORDER_success": "„Purchase order” został edytowany!", + "purchaseOrders_edit_purchase_submit_error": "Twoja dyspozycja nie mogła zostać przyjęta. Spróbuj później." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..97fed6fb305c --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/edit-purchase/translations/Messages_pt_PT.json @@ -0,0 +1,18 @@ +{ + "purchaseOrders_edit_page_title": "Modificar a referência interna", + "purchaseOrders_form_edit_internal_reference": "Modificar a sua referência interna", + "purchaseOrders_form_edit_purchase_order": "Modificar o purchase order", + "purchaseOrders_form_edit_internal_reference_label": "Nome da referência interna", + "purchaseOrders_form_edit_internal_reference_placeholder": "Referência interna", + "purchaseOrders_form_edit_internal_reference_sub_info": "A referência não deve exceder 20 caracteres", + "purchaseOrders_form_edit_purchase_order_label": "Nome do purchase order", + "purchaseOrders_form_edit_purchase_order_sub_info": "O nome não deve exceder 20 caracteres", + "purchaseOrders_form_edit_purchase_startDate": "Data de início", + "purchaseOrders_form_edit_purchase_endDate": "Data de fim", + "purchaseOrders_form_edit_purchase_endDate_helper": "A data de fim está excluída", + "purchaseOrders_form_edit_purchase_submit": "Validar", + "purchaseOrders_form_edit_purchase_cancel": "Anular", + "purchaseOrders_edit_purchase_submit_REFERENCE_ORDER_success": "A sua referência interna foi corretamente editada!", + "purchaseOrders_edit_purchase_submit_PURCHASE_ORDER_success": "O seu purchase order foi corretamente editado!", + "purchaseOrders_edit_purchase_submit_error": "Não foi possível tratar o seu pedido. Tente novamente mais tarde." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/new-purchase.component.js b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/new-purchase.component.js new file mode 100644 index 000000000000..ff58c913618b --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/new-purchase.component.js @@ -0,0 +1,17 @@ +import controller from './new-purchase.controller'; +import template from './new-purchase.html'; + +export default { + bindings: { + dateFormat: '<', + disableDate: '<', + goToPurchaseOrder: '<', + minDate: '<', + maxDate: '<', + minDateForEndDate: '<', + trackClick: '<', + trackPage: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/new-purchase.controller.js b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/new-purchase.controller.js new file mode 100644 index 000000000000..90a5f9c085c8 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/new-purchase.controller.js @@ -0,0 +1,87 @@ +import moment from 'moment'; + +import { + TYPE_PURCHASE_FOR_TRACKING, + TYPE_PURCHASE, +} from '../billing-orders-purchases.constant'; + +export default class BillingOrdersPurchaseAddCtrl { + /* @ngInject */ + constructor($translate, billingOrdersPurchasesService) { + this.$translate = $translate; + this.billingOrdersPurchasesService = billingOrdersPurchasesService; + this.TYPE_PURCHASE = TYPE_PURCHASE; + + this.model = { + active: true, + endDate: '', + reference: '', + startDate: '', + type: 'REFERENCE_ORDER', + }; + } + + onCancel() { + this.trackClick( + `create-${TYPE_PURCHASE_FOR_TRACKING[this.model.type]}_cancel`, + ); + return this.goToPurchaseOrder(); + } + + onChangeMinDateForEndDate(selectedDates, dateStr) { + this.minDateForEndDate = moment(dateStr) + .add(1, 'day') + .toDate(); + this.maxDateForEndDate = this.disableDate.find((elm) => + moment(elm).isAfter(dateStr), + ); + this.disableDateForEndDate = this.disableDate.map((elm) => + moment(elm).isAfter(dateStr), + ); + this.maxDateForEndDate = + this.maxDateForEndDate !== undefined + ? moment(this.maxDateForEndDate).toDate() + : null; + } + + onSubmit() { + this.trackClick( + `create-${TYPE_PURCHASE_FOR_TRACKING[this.model.type]}_confirm`, + ); + + const data = { + active: this.model.active, + reference: this.model.reference, + startDate: this.model.startDate, + type: this.model.type, + ...(this.model.endDate && { endDate: this.model.endDate }), + }; + + return this.billingOrdersPurchasesService + .postPurchaseOrder(data) + .then(() => { + this.trackClick( + `create-${TYPE_PURCHASE_FOR_TRACKING[this.model.type]}_success`, + ); + + this.goToPurchaseOrder( + this.$translate.instant( + `purchaseOrders_form_add_purchase_submit_${this.model.type}_success`, + ), + 'success', + ); + }) + .catch(() => { + this.trackClick( + `create-${TYPE_PURCHASE_FOR_TRACKING[this.model.type]}_error`, + ); + + this.goToPurchaseOrder( + this.$translate.instant( + 'purchaseOrders_form_add_purchase_submit_error', + ), + 'danger', + ); + }); + } +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/new-purchase.html b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/new-purchase.html new file mode 100644 index 000000000000..8520556dcf17 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/new-purchase.html @@ -0,0 +1,100 @@ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/new-purchase.module.js b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/new-purchase.module.js new file mode 100644 index 000000000000..ccd83f95793f --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/new-purchase.module.js @@ -0,0 +1,18 @@ +import angular from 'angular'; + +import '@uirouter/angularjs'; +import '@ovh-ux/ng-translate-async-loader'; +import 'angular-translate'; +import '@ovh-ux/ui-kit'; + +import component from './new-purchase.component'; +import routing from './new-purchase.routing'; + +const moduleName = 'ovhManagerBillingOrdersPurchaseNew'; +angular + .module(moduleName, ['ui.router', 'oui', 'ngTranslateAsyncLoader']) + .component('newPurchase', component) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/new-purchase.routing.js b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/new-purchase.routing.js new file mode 100644 index 000000000000..8589813faf38 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/new-purchase.routing.js @@ -0,0 +1,13 @@ +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.orders.purchases.new-purchase', { + url: '/new-purchase', + component: 'newPurchase', + resolve: { + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('purchaseOrders_add_page_title'), + }, + atInternet: { + ignore: true, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_de_DE.json new file mode 100644 index 000000000000..1eb0e44005dc --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_de_DE.json @@ -0,0 +1,20 @@ +{ + "purchaseOrders_add_page_title": "Interne Referenz erstellen", + "purchaseOrders_form_add_internal_reference": "Ihre interne Referenz erstellen", + "purchaseOrders_form_add_purchase_order": "Ihre Purchase Order erstellen", + "purchaseOrders_form_add_internal_reference_label": "Name der internen Referenz", + "purchaseOrders_form_add_internal_reference_placeholder": "Interne Referenz", + "purchaseOrders_form_add_internal_reference_sub_info": "Die Referenz darf 20 Zeichen nicht überschreiten", + "purchaseOrders_form_add_purchase_order_label": "Name der Purchase Order", + "purchaseOrders_form_add_purchase_order_placeholder": "Purchase Order", + "purchaseOrders_form_add_purchase_order_sub_info": "Der Name darf maximal 20 Zeichen lang sein", + "purchaseOrders_form_add_purchase_startDate": "Startdatum", + "purchaseOrders_form_add_purchase_endDate": "Enddatum", + "purchaseOrders_form_add_purchase_endDate_helper": "Enddatum ist ausgeschlossen", + "purchaseOrders_form_add_purchase_submit": "Bestätigen", + "purchaseOrders_form_add_purchase_cancel": "Abbrechen", + "purchaseOrders_form_add_purchase_submit_REFERENCE_ORDER_success": "Ihre interne Referenz wurde erfolgreich erstellt!", + "purchaseOrders_form_add_purchase_submit_PURCHASE_ORDER_success": "Ihre Purchase Order wurde erfolgreich erstellt!", + "purchaseOrders_form_add_purchase_submit_error": "Ihre Anfrage konnte nicht bearbeitet werden. Bitte versuchen Sie es später erneut.", + "purchaseOrders_add_page_warning_ongoing_purchase": "Sie haben derzeit eine interne Referenz oder eine frühere Purchase Order ohne Enddatum. Sie können keine neue Referenz einrichten, ohne ein Enddatum für die bestehende Referenz anzugeben." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_en_GB.json new file mode 100644 index 000000000000..bab8174b1f61 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_en_GB.json @@ -0,0 +1,20 @@ +{ + "purchaseOrders_add_page_title": "Create an internal reference", + "purchaseOrders_form_add_internal_reference": "Create your internal reference", + "purchaseOrders_form_add_purchase_order": "Create your purchase order", + "purchaseOrders_form_add_internal_reference_label": "Internal reference name", + "purchaseOrders_form_add_internal_reference_placeholder": "Internal reference", + "purchaseOrders_form_add_internal_reference_sub_info": "The reference must not exceed 20 characters", + "purchaseOrders_form_add_purchase_order_label": "Purchase order name", + "purchaseOrders_form_add_purchase_order_placeholder": "Purchase order", + "purchaseOrders_form_add_purchase_order_sub_info": "The name must not exceed 20 characters", + "purchaseOrders_form_add_purchase_startDate": "Start date", + "purchaseOrders_form_add_purchase_endDate": "End date ", + "purchaseOrders_form_add_purchase_endDate_helper": "The end date is excluded", + "purchaseOrders_form_add_purchase_submit": "Validate", + "purchaseOrders_form_add_purchase_cancel": "Cancel", + "purchaseOrders_form_add_purchase_submit_REFERENCE_ORDER_success": "Your internal reference has been created.", + "purchaseOrders_form_add_purchase_submit_PURCHASE_ORDER_success": "Your purchase order has been created.", + "purchaseOrders_form_add_purchase_submit_error": "Your request could not be processed. Please try again later.", + "purchaseOrders_add_page_warning_ongoing_purchase": "You currently have an internal reference or earlier purchase order with no end date. You cannot set up a new reference without specifying an end date on the existing one." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_es_ES.json new file mode 100644 index 000000000000..158ab544aa4f --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_es_ES.json @@ -0,0 +1,20 @@ +{ + "purchaseOrders_add_page_title": "Crear una referencia interna", + "purchaseOrders_form_add_internal_reference": "Crear su referencia interna", + "purchaseOrders_form_add_purchase_order": "Crear su «purchase order»", + "purchaseOrders_form_add_internal_reference_label": "Nombre de la referencia interna", + "purchaseOrders_form_add_internal_reference_placeholder": "Referencia interna", + "purchaseOrders_form_add_internal_reference_sub_info": "La referencia no debe superar los 20 caracteres.", + "purchaseOrders_form_add_purchase_order_label": "Nombre del «purchase order»", + "purchaseOrders_form_add_purchase_order_placeholder": "Purchase order", + "purchaseOrders_form_add_purchase_order_sub_info": "El nombre no debe superar los 20 caracteres.", + "purchaseOrders_form_add_purchase_startDate": "Fecha de inicio", + "purchaseOrders_form_add_purchase_endDate": "Fecha de finalización", + "purchaseOrders_form_add_purchase_endDate_helper": "La fecha de finalización está excluida.", + "purchaseOrders_form_add_purchase_submit": "Confirmar", + "purchaseOrders_form_add_purchase_cancel": "Cancelar", + "purchaseOrders_form_add_purchase_submit_REFERENCE_ORDER_success": "La referencia interna se ha creado correctamente.", + "purchaseOrders_form_add_purchase_submit_PURCHASE_ORDER_success": "El «purchase order» se ha creado correctamente.", + "purchaseOrders_form_add_purchase_submit_error": "La solicitud no se ha enviado. Por favor, vuelva a intentarlo más adelante.", + "purchaseOrders_add_page_warning_ongoing_purchase": "Tiene una referencia interna o un «purchase order» anterior sin fecha de finalización. No es posible crear una nueva referencia sin indicar una fecha de finalización de la existente." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..4740f1015e9f --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_fr_CA.json @@ -0,0 +1,20 @@ +{ + "purchaseOrders_add_page_title": "Créer une référence interne", + "purchaseOrders_form_add_internal_reference": "Créer votre référence interne", + "purchaseOrders_add_page_warning_ongoing_purchase": "Vous avez actuellement une référence interne ou un purchase order antérieur sans date de fin. Il est impossible de mettre en place une nouvelle référence sans indiquer de date de fin sur celle existante.", + "purchaseOrders_form_add_purchase_order": "Créer votre purchase order", + "purchaseOrders_form_add_internal_reference_label": "Nom de la référence interne", + "purchaseOrders_form_add_internal_reference_placeholder": "Référence interne", + "purchaseOrders_form_add_internal_reference_sub_info": "La référence ne doit pas excéder 20 caractères", + "purchaseOrders_form_add_purchase_order_label": "Nom du purchase order", + "purchaseOrders_form_add_purchase_order_placeholder": "Purchase order", + "purchaseOrders_form_add_purchase_order_sub_info": "Le nom ne doit pas excéder 20 caractères", + "purchaseOrders_form_add_purchase_startDate": "Date de début", + "purchaseOrders_form_add_purchase_endDate": "Date de fin", + "purchaseOrders_form_add_purchase_endDate_helper": "La date de fin est exclue", + "purchaseOrders_form_add_purchase_submit": "Valider", + "purchaseOrders_form_add_purchase_cancel": "Annuler", + "purchaseOrders_form_add_purchase_submit_REFERENCE_ORDER_success": "Votre référence interne a bien été créée !", + "purchaseOrders_form_add_purchase_submit_PURCHASE_ORDER_success": "Votre purchase order a bien été créé !", + "purchaseOrders_form_add_purchase_submit_error": "Votre demande n'a pas pu être prise en compte. Merci d'essayer ultérieurement." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..4740f1015e9f --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_fr_FR.json @@ -0,0 +1,20 @@ +{ + "purchaseOrders_add_page_title": "Créer une référence interne", + "purchaseOrders_form_add_internal_reference": "Créer votre référence interne", + "purchaseOrders_add_page_warning_ongoing_purchase": "Vous avez actuellement une référence interne ou un purchase order antérieur sans date de fin. Il est impossible de mettre en place une nouvelle référence sans indiquer de date de fin sur celle existante.", + "purchaseOrders_form_add_purchase_order": "Créer votre purchase order", + "purchaseOrders_form_add_internal_reference_label": "Nom de la référence interne", + "purchaseOrders_form_add_internal_reference_placeholder": "Référence interne", + "purchaseOrders_form_add_internal_reference_sub_info": "La référence ne doit pas excéder 20 caractères", + "purchaseOrders_form_add_purchase_order_label": "Nom du purchase order", + "purchaseOrders_form_add_purchase_order_placeholder": "Purchase order", + "purchaseOrders_form_add_purchase_order_sub_info": "Le nom ne doit pas excéder 20 caractères", + "purchaseOrders_form_add_purchase_startDate": "Date de début", + "purchaseOrders_form_add_purchase_endDate": "Date de fin", + "purchaseOrders_form_add_purchase_endDate_helper": "La date de fin est exclue", + "purchaseOrders_form_add_purchase_submit": "Valider", + "purchaseOrders_form_add_purchase_cancel": "Annuler", + "purchaseOrders_form_add_purchase_submit_REFERENCE_ORDER_success": "Votre référence interne a bien été créée !", + "purchaseOrders_form_add_purchase_submit_PURCHASE_ORDER_success": "Votre purchase order a bien été créé !", + "purchaseOrders_form_add_purchase_submit_error": "Votre demande n'a pas pu être prise en compte. Merci d'essayer ultérieurement." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_it_IT.json new file mode 100644 index 000000000000..62b2c74c4992 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_it_IT.json @@ -0,0 +1,20 @@ +{ + "purchaseOrders_add_page_title": "Crea una referenza interna", + "purchaseOrders_form_add_internal_reference": "Crea la tua referenza interna", + "purchaseOrders_form_add_purchase_order": "Crea il tuo purchase order", + "purchaseOrders_form_add_internal_reference_label": "Nome della referenza interna", + "purchaseOrders_form_add_internal_reference_placeholder": "Referenza interna", + "purchaseOrders_form_add_internal_reference_sub_info": "La referenza non deve superare i 20 caratteri", + "purchaseOrders_form_add_purchase_order_label": "Nome del purchase order", + "purchaseOrders_form_add_purchase_order_placeholder": "Purchase order", + "purchaseOrders_form_add_purchase_order_sub_info": "Il nome non deve superare i 20 caratteri", + "purchaseOrders_form_add_purchase_startDate": "Data di inizio", + "purchaseOrders_form_add_purchase_endDate": "Data di fine", + "purchaseOrders_form_add_purchase_endDate_helper": "La data di fine è esclusa", + "purchaseOrders_form_add_purchase_submit": "Confermare", + "purchaseOrders_form_add_purchase_cancel": "Annullare", + "purchaseOrders_form_add_purchase_submit_REFERENCE_ORDER_success": "La tua referenza interna è stata creata!", + "purchaseOrders_form_add_purchase_submit_PURCHASE_ORDER_success": "Il tuo purchase order è stato creato!", + "purchaseOrders_form_add_purchase_submit_error": "Non è stato possibile prendere in carico la tua richiesta. Ti preghiamo di riprovare.", + "purchaseOrders_add_page_warning_ongoing_purchase": "Disponi di una referenza interna o un purchase order anteriore senza data di fine. Non è possibile creare una nuova referenza interna senza indicare una data di fine su quella esistente." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..a343a9193f9d --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_pl_PL.json @@ -0,0 +1,20 @@ +{ + "purchaseOrders_add_page_title": "Utwórz wewnętrzne oznaczenie wewnętrzne", + "purchaseOrders_form_add_internal_reference": "Utwórz Twoje wewnętrzne oznaczenie referencyjne", + "purchaseOrders_form_add_purchase_order": "Utwórz „purchase order”", + "purchaseOrders_form_add_internal_reference_label": "Brzmienie wewnętrznego oznaczenia referencyjnego", + "purchaseOrders_form_add_internal_reference_placeholder": "Wewnętrzne oznaczenie referencyjne", + "purchaseOrders_form_add_internal_reference_sub_info": "Oznaczenie referencyjne nie może przekroczyć 20 znaków", + "purchaseOrders_form_add_purchase_order_label": "Nazwa „purchase order”", + "purchaseOrders_form_add_purchase_order_placeholder": "„Purchase order”", + "purchaseOrders_form_add_purchase_order_sub_info": "Nazwa nie może przekroczyć 20 znaków", + "purchaseOrders_form_add_purchase_startDate": "Data rozpoczęcia", + "purchaseOrders_form_add_purchase_endDate": "Data zakończenia", + "purchaseOrders_form_add_purchase_endDate_helper": "Data zakończenia jest wyłączona", + "purchaseOrders_form_add_purchase_submit": "Zatwierdź", + "purchaseOrders_form_add_purchase_cancel": "Anuluj", + "purchaseOrders_form_add_purchase_submit_REFERENCE_ORDER_success": "Twoje wewnętrzne oznaczenie referencyjne zostało utworzone!", + "purchaseOrders_form_add_purchase_submit_PURCHASE_ORDER_success": "Twój „purchase order” został utworzony!", + "purchaseOrders_form_add_purchase_submit_error": "Twoja dyspozycja nie mogła zostać przyjęta. Spróbuj później.", + "purchaseOrders_add_page_warning_ongoing_purchase": "Twoje wewnętrzne oznaczenie referencyjne lub poprzedni „purchase order” nie posiada daty końcowej. Nie jest możliwe ustanowienie nowego oznaczenia referencyjnego bez wskazania daty końcowej dla istniejącego oznaczenia. " +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..8682f88e968d --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/new-purchase/translations/Messages_pt_PT.json @@ -0,0 +1,20 @@ +{ + "purchaseOrders_add_page_title": "Criar uma referência interna", + "purchaseOrders_form_add_internal_reference": "Criar a sua referência interna", + "purchaseOrders_form_add_purchase_order": "Criar o seu purchase order", + "purchaseOrders_form_add_internal_reference_label": "Nome da referência interna", + "purchaseOrders_form_add_internal_reference_placeholder": "Referência interna", + "purchaseOrders_form_add_internal_reference_sub_info": "A referência não deve exceder 20 caracteres", + "purchaseOrders_form_add_purchase_order_label": "Nome do purchase order", + "purchaseOrders_form_add_purchase_order_placeholder": "Purchase order", + "purchaseOrders_form_add_purchase_order_sub_info": "O nome não deve exceder 20 caracteres", + "purchaseOrders_form_add_purchase_startDate": "Data de início", + "purchaseOrders_form_add_purchase_endDate": "Data de fim", + "purchaseOrders_form_add_purchase_endDate_helper": "A data de fim está excluída", + "purchaseOrders_form_add_purchase_submit": "Validar", + "purchaseOrders_form_add_purchase_cancel": "Anular", + "purchaseOrders_form_add_purchase_submit_REFERENCE_ORDER_success": "A sua referência interna foi criada com êxito!", + "purchaseOrders_form_add_purchase_submit_PURCHASE_ORDER_success": "O seu purchase order foi criado com êxito!", + "purchaseOrders_form_add_purchase_submit_error": "Não foi possível tratar o seu pedido. Tente novamente mais tarde.", + "purchaseOrders_add_page_warning_ongoing_purchase": "Atualmente, tem uma referência interna ou um purchase order anterior sem data de fim. Não é possível introduzir uma nova referência sem indicar uma data de fim sobre a já existente." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_de_DE.json new file mode 100644 index 000000000000..d3cb38d9dfbb --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_de_DE.json @@ -0,0 +1,21 @@ +{ + "purchaseOrders_page_title": "Meine internen Referenzen", + "purchaseOrders_page_description": "Ihre interne Referenz entspricht einer Purchase Order (PO), einem Projektnamen oder einer internen Kennzeichnung. Diese Referenz wird auf allen ausgestellten Rechnungen ausgewiesen.", + "purchaseOrders_reference": "Referenz", + "purchaseOrders_creationDate": "Erstellungsdatum", + "purchaseOrders_startDate": "Startdatum", + "purchaseOrders_endDate": "Enddatum", + "purchaseOrders_endDate_helper": "Enddatum ist ausgeschlossen", + "purchaseOrders_status": "Status", + "purchaseOrders_status_actif": "Aktiv", + "purchaseOrders_status_inactif": "Inaktiv", + "purchaseOrders_status_desactivate": "Deaktiviert", + "purchaseOrders_create_reference": "Interne Referenz erstellen", + "purchaseOrders_add_reference": "Interne Referenz hinzufügen", + "purchaseOrders_edit_reference": "Bearbeiten", + "purchaseOrders_status_change_reactivation": "Reaktivieren", + "purchaseOrders_status_change_desactivation": "Deaktivieren", + "purchaseOrders_confirmation_reactivation_REFERENCE_ORDER_success": "Ihre interne Referenz wurde erneut aktiviert.", + "purchaseOrders_confirmation_reactivation_PURCHASE_ORDER_success": "Ihre Purchase Order wurde erneut aktiviert.", + "purchaseOrders_confirmation_reactivation_error": "Ihre Anfrage konnte nicht bearbeitet werden. Bitte versuchen Sie es später erneut." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_en_GB.json new file mode 100644 index 000000000000..f60e580157b2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_en_GB.json @@ -0,0 +1,21 @@ +{ + "purchaseOrders_page_title": "My internal references", + "purchaseOrders_page_description": "Your internal reference is a purchase order (PO), project name, or internal note. All invoices issued will include this reference.", + "purchaseOrders_reference": "Reference", + "purchaseOrders_creationDate": "Creation date", + "purchaseOrders_startDate": "Start date", + "purchaseOrders_endDate": "End date ", + "purchaseOrders_endDate_helper": "The end date is excluded", + "purchaseOrders_status": "Status", + "purchaseOrders_status_actif": "Active", + "purchaseOrders_status_inactif": "Disabled", + "purchaseOrders_status_desactivate": "Disabled", + "purchaseOrders_create_reference": "Create an internal reference", + "purchaseOrders_add_reference": "Add an internal reference", + "purchaseOrders_edit_reference": "Edit", + "purchaseOrders_status_change_reactivation": "Reactivate ", + "purchaseOrders_status_change_desactivation": "Disable", + "purchaseOrders_confirmation_reactivation_REFERENCE_ORDER_success": "Your internal reference has been re-enabled..", + "purchaseOrders_confirmation_reactivation_PURCHASE_ORDER_success": "Your purchase order has been re-enabled.", + "purchaseOrders_confirmation_reactivation_error": "Your request could not be processed. Please try again later." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_es_ES.json new file mode 100644 index 000000000000..e4734d75e625 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_es_ES.json @@ -0,0 +1,21 @@ +{ + "purchaseOrders_page_title": "Mis referencias internas", + "purchaseOrders_page_description": "Su referencia interna corresponde a un «purchase order» (PO o número de pedido), un nombre de proyecto o una mención interna. Todas las facturas emitidas incluirán esta referencia.", + "purchaseOrders_reference": "Referencia", + "purchaseOrders_creationDate": "Fecha de creación", + "purchaseOrders_startDate": "Fecha de inicio", + "purchaseOrders_endDate": "Fecha de finalización", + "purchaseOrders_endDate_helper": "La fecha de finalización está excluida.", + "purchaseOrders_status": "Estatus", + "purchaseOrders_status_actif": "Activo", + "purchaseOrders_status_inactif": "Inactivo", + "purchaseOrders_status_desactivate": "Desactivado", + "purchaseOrders_create_reference": "Crear una referencia interna", + "purchaseOrders_add_reference": "Añadir una referencia interna", + "purchaseOrders_edit_reference": "Editar", + "purchaseOrders_status_change_reactivation": "Reactivar", + "purchaseOrders_status_change_desactivation": "Desactivar", + "purchaseOrders_confirmation_reactivation_REFERENCE_ORDER_success": "La referencia interna se ha reactivado correctamente.", + "purchaseOrders_confirmation_reactivation_PURCHASE_ORDER_success": "El «purchase order» se ha reactivado correctamente.", + "purchaseOrders_confirmation_reactivation_error": "La solicitud no se ha enviado. Por favor, vuelva a intentarlo más adelante." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..e5f199e461de --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_fr_CA.json @@ -0,0 +1,21 @@ +{ + "purchaseOrders_page_title": "Mes références internes", + "purchaseOrders_page_description": "Votre référence interne correspond à une purchase order (PO), un nom de projet ou une mention interne. Toutes les factures émises indiqueront cette référence.", + "purchaseOrders_reference": "Référence", + "purchaseOrders_creationDate": "Date de création", + "purchaseOrders_startDate": "Date de début", + "purchaseOrders_endDate": "Date de fin", + "purchaseOrders_endDate_helper": "La date de fin est exclue", + "purchaseOrders_status": "Statut", + "purchaseOrders_status_actif": "Actif", + "purchaseOrders_status_inactif": "Inactif", + "purchaseOrders_status_desactivate": "Désactivé", + "purchaseOrders_create_reference": "Créer une référence interne", + "purchaseOrders_add_reference": "Ajouter une référence interne", + "purchaseOrders_edit_reference": "Modifier", + "purchaseOrders_status_change_reactivation": "Réactiver", + "purchaseOrders_status_change_desactivation": "Désactiver", + "purchaseOrders_confirmation_reactivation_REFERENCE_ORDER_success": "Votre référence interne a bien été réactivée.", + "purchaseOrders_confirmation_reactivation_PURCHASE_ORDER_success": "Votre purchase order a bien été réactivé.", + "purchaseOrders_confirmation_reactivation_error": "Votre demande n'a pas pu être prise en compte. Merci d'essayer ultérieurement." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..e5f199e461de --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_fr_FR.json @@ -0,0 +1,21 @@ +{ + "purchaseOrders_page_title": "Mes références internes", + "purchaseOrders_page_description": "Votre référence interne correspond à une purchase order (PO), un nom de projet ou une mention interne. Toutes les factures émises indiqueront cette référence.", + "purchaseOrders_reference": "Référence", + "purchaseOrders_creationDate": "Date de création", + "purchaseOrders_startDate": "Date de début", + "purchaseOrders_endDate": "Date de fin", + "purchaseOrders_endDate_helper": "La date de fin est exclue", + "purchaseOrders_status": "Statut", + "purchaseOrders_status_actif": "Actif", + "purchaseOrders_status_inactif": "Inactif", + "purchaseOrders_status_desactivate": "Désactivé", + "purchaseOrders_create_reference": "Créer une référence interne", + "purchaseOrders_add_reference": "Ajouter une référence interne", + "purchaseOrders_edit_reference": "Modifier", + "purchaseOrders_status_change_reactivation": "Réactiver", + "purchaseOrders_status_change_desactivation": "Désactiver", + "purchaseOrders_confirmation_reactivation_REFERENCE_ORDER_success": "Votre référence interne a bien été réactivée.", + "purchaseOrders_confirmation_reactivation_PURCHASE_ORDER_success": "Votre purchase order a bien été réactivé.", + "purchaseOrders_confirmation_reactivation_error": "Votre demande n'a pas pu être prise en compte. Merci d'essayer ultérieurement." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_it_IT.json new file mode 100644 index 000000000000..4368960c9301 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_it_IT.json @@ -0,0 +1,21 @@ +{ + "purchaseOrders_page_title": "Le tue referenze interne", + "purchaseOrders_page_description": "La tua referenza interna corrisponde a un purchase order (PO), un nome di progetto o una dicitura interna. Tutte le fatture emesse conterranno questa referenza.", + "purchaseOrders_reference": "Referenza", + "purchaseOrders_creationDate": "Data di creazione", + "purchaseOrders_startDate": "Data di inizio", + "purchaseOrders_endDate": "Data di fine", + "purchaseOrders_endDate_helper": "La data di fine è esclusa", + "purchaseOrders_status": "Stato", + "purchaseOrders_status_actif": "Attivo", + "purchaseOrders_status_inactif": "Disattivo", + "purchaseOrders_status_desactivate": "Disattivato", + "purchaseOrders_create_reference": "Crea una referenza interna", + "purchaseOrders_add_reference": "Aggiungi una referenza interna", + "purchaseOrders_edit_reference": "Modificare", + "purchaseOrders_status_change_reactivation": "Riattiva", + "purchaseOrders_status_change_desactivation": "Disattivare", + "purchaseOrders_confirmation_reactivation_REFERENCE_ORDER_success": "La tua referenza interna è stata riattivata correttamente.", + "purchaseOrders_confirmation_reactivation_PURCHASE_ORDER_success": "Il purchase order è stato riattivato.", + "purchaseOrders_confirmation_reactivation_error": "Non è stato possibile prendere in carico la tua richiesta. Ti preghiamo di riprovare." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..ebfdb329bbca --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_pl_PL.json @@ -0,0 +1,21 @@ +{ + "purchaseOrders_page_title": "Moje oznaczenia wewnętrzne", + "purchaseOrders_page_description": "Twoje wewnętrzne oznaczenie referencyjne odpowiada „purchase order” (PO), nazwie projektu lub nazwie wewnętrznej. Oznaczenie to będzie się pojawiało na wszystkich wystawionych fakturach.", + "purchaseOrders_reference": "Opis", + "purchaseOrders_creationDate": "Data utworzenia", + "purchaseOrders_startDate": "Data rozpoczęcia", + "purchaseOrders_endDate": "Data zakończenia", + "purchaseOrders_endDate_helper": "Data zakończenia jest wyłączona", + "purchaseOrders_status": "Status", + "purchaseOrders_status_actif": "Aktywny", + "purchaseOrders_status_inactif": "Nieaktywny", + "purchaseOrders_status_desactivate": "Wyłączony", + "purchaseOrders_create_reference": "Utwórz wewnętrzne oznaczenie wewnętrzne", + "purchaseOrders_add_reference": "Dodaj wewnętrzne oznaczenie referencyjne", + "purchaseOrders_edit_reference": "Zmień", + "purchaseOrders_status_change_reactivation": "Przywróć", + "purchaseOrders_status_change_desactivation": "Wyłącz", + "purchaseOrders_confirmation_reactivation_REFERENCE_ORDER_success": "Twoje wewnętrzne oznaczenie referencyjne zostało ponownie włączone.", + "purchaseOrders_confirmation_reactivation_PURCHASE_ORDER_success": "Twój „purchase order” został ponownie włączony.", + "purchaseOrders_confirmation_reactivation_error": "Twoja dyspozycja nie mogła zostać przyjęta. Spróbuj później." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..dcb3282e365a --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/translations/Messages_pt_PT.json @@ -0,0 +1,21 @@ +{ + "purchaseOrders_page_title": "As minhas referências internas", + "purchaseOrders_page_description": "A sua referência interna corresponde a um purchase order (PO), um nome de projeto ou uma menção interna. Todas as faturas emitidas indicarão essa referência.", + "purchaseOrders_reference": "Referência", + "purchaseOrders_creationDate": "Data de criação", + "purchaseOrders_startDate": "Data de início", + "purchaseOrders_endDate": "Data de fim", + "purchaseOrders_endDate_helper": "A data de fim está excluída", + "purchaseOrders_status": "Estado", + "purchaseOrders_status_actif": "Ativo", + "purchaseOrders_status_inactif": "Inativo", + "purchaseOrders_status_desactivate": "Desativado", + "purchaseOrders_create_reference": "Criar uma referência interna", + "purchaseOrders_add_reference": "Adicionar uma referência interna", + "purchaseOrders_edit_reference": "Alterar", + "purchaseOrders_status_change_reactivation": "Reativar", + "purchaseOrders_status_change_desactivation": "Desativar", + "purchaseOrders_confirmation_reactivation_REFERENCE_ORDER_success": "A sua referência interna foi corretamente reativada.", + "purchaseOrders_confirmation_reactivation_PURCHASE_ORDER_success": "O seu purchase order foi corretamente reativado.", + "purchaseOrders_confirmation_reactivation_error": "Não foi possível tratar o seu pedido. Tente novamente mais tarde." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_de_DE.json new file mode 100644 index 000000000000..608a35e5980a --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_de_DE.json @@ -0,0 +1,9 @@ +{ + "purchaseOrders_modal_title": "Deaktivieren", + "purchaseOrders_modal_content": "Sind Sie sicher, dass Sie Ihre interne Referenz deaktivieren möchten? Wenn Sie diese Referenz deaktivieren, wird sie auf Ihren nächsten Rechnungen nicht mehr ausgewiesen.", + "purchaseOrders_modal_primary_action": "Bestätigen", + "purchaseOrders_modal_secondary_action": "Abbrechen", + "purchaseOrders_confirmation_desactivation_REFERENCE_ORDER_success": "Ihre interne Referenz wurde deaktiviert.", + "purchaseOrders_confirmation_desactivation_PURCHASE_ORDER_success": "Ihre Purchase Order wurde deaktiviert.", + "purchaseOrders_confirmation_desactivation_error": "Ihre Anfrage konnte nicht bearbeitet werden. Bitte versuchen Sie es später erneut." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_en_GB.json new file mode 100644 index 000000000000..f0407ba26cde --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_en_GB.json @@ -0,0 +1,9 @@ +{ + "purchaseOrders_modal_title": "Disable", + "purchaseOrders_modal_content": "Are you sure you want to disable your internal reference? If you disable this reference, it will no longer appear on your future bills.", + "purchaseOrders_modal_primary_action": "Validate", + "purchaseOrders_modal_secondary_action": "Cancel", + "purchaseOrders_confirmation_desactivation_REFERENCE_ORDER_success": "Your internal reference has been disabled.", + "purchaseOrders_confirmation_desactivation_PURCHASE_ORDER_success": "Your purchase order has been disabled.", + "purchaseOrders_confirmation_desactivation_error": "Your request could not be processed. Please try again later." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_es_ES.json new file mode 100644 index 000000000000..48ea30c3fd0f --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_es_ES.json @@ -0,0 +1,9 @@ +{ + "purchaseOrders_modal_title": "Desactivar", + "purchaseOrders_modal_content": "¿Seguro que quiere desactivar su referencia interna? Si desactiva esta referencia, ya no aparecerá en sus próximas facturas.", + "purchaseOrders_modal_primary_action": "Confirmar", + "purchaseOrders_modal_secondary_action": "Cancelar", + "purchaseOrders_confirmation_desactivation_REFERENCE_ORDER_success": "La referencia interna se ha desactivado.", + "purchaseOrders_confirmation_desactivation_PURCHASE_ORDER_success": "El «purchase order» se ha desactivado.", + "purchaseOrders_confirmation_desactivation_error": "La solicitud no se ha enviado. Por favor, vuelva a intentarlo más adelante." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..40adef89e758 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_fr_CA.json @@ -0,0 +1,9 @@ +{ + "purchaseOrders_modal_title": "Désactiver", + "purchaseOrders_modal_content": "Êtes vous certain de vouloir désactiver votre référence interne ? Si vous désactivez cette référence, elle n'apparaîtra plus sur vos prochaines factures.", + "purchaseOrders_modal_primary_action": "Valider", + "purchaseOrders_modal_secondary_action": "Annuler", + "purchaseOrders_confirmation_desactivation_REFERENCE_ORDER_success": "Votre référence interne a bien été désactivée.", + "purchaseOrders_confirmation_desactivation_PURCHASE_ORDER_success": "Votre purchase order a bien été désactivé.", + "purchaseOrders_confirmation_desactivation_error": "Votre demande n'a pas pu être prise en compte. Merci d'essayer ultérieurement." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..40adef89e758 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_fr_FR.json @@ -0,0 +1,9 @@ +{ + "purchaseOrders_modal_title": "Désactiver", + "purchaseOrders_modal_content": "Êtes vous certain de vouloir désactiver votre référence interne ? Si vous désactivez cette référence, elle n'apparaîtra plus sur vos prochaines factures.", + "purchaseOrders_modal_primary_action": "Valider", + "purchaseOrders_modal_secondary_action": "Annuler", + "purchaseOrders_confirmation_desactivation_REFERENCE_ORDER_success": "Votre référence interne a bien été désactivée.", + "purchaseOrders_confirmation_desactivation_PURCHASE_ORDER_success": "Votre purchase order a bien été désactivé.", + "purchaseOrders_confirmation_desactivation_error": "Votre demande n'a pas pu être prise en compte. Merci d'essayer ultérieurement." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_it_IT.json new file mode 100644 index 000000000000..f6d6fde127f6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_it_IT.json @@ -0,0 +1,9 @@ +{ + "purchaseOrders_modal_title": "Disattivare", + "purchaseOrders_modal_content": "Vuoi davvero disattivare la referenza interna? Se disattivi questa referenza, non comparirà più sulle prossime fatture.", + "purchaseOrders_modal_primary_action": "Confermare", + "purchaseOrders_modal_secondary_action": "Annullare", + "purchaseOrders_confirmation_desactivation_REFERENCE_ORDER_success": "La referenza interna è stata disattivata correttamente.", + "purchaseOrders_confirmation_desactivation_PURCHASE_ORDER_success": "Il purchase order è stato disattivato correttamente.", + "purchaseOrders_confirmation_desactivation_error": "Non è stato possibile prendere in carico la tua richiesta. Ti preghiamo di riprovare." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..8fcaa36d6f00 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_pl_PL.json @@ -0,0 +1,9 @@ +{ + "purchaseOrders_modal_title": "Wyłącz", + "purchaseOrders_modal_content": "Czy na pewno chcesz wyłączyć Twoje wewnętrzne oznaczenie referencyjne? Jeśli je wyłączysz, nie będzie ono widoczne na kolejnych fakturach.", + "purchaseOrders_modal_primary_action": "Zatwierdź", + "purchaseOrders_modal_secondary_action": "Anuluj", + "purchaseOrders_confirmation_desactivation_REFERENCE_ORDER_success": "Twoje wewnętrzne oznaczenie referencyjne zostało wyłączone.", + "purchaseOrders_confirmation_desactivation_PURCHASE_ORDER_success": "Twój „purchase order” został wyłączony.", + "purchaseOrders_confirmation_desactivation_error": "Twoja dyspozycja nie mogła zostać przyjęta. Spróbuj później." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..f7a39b455986 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/translations/Messages_pt_PT.json @@ -0,0 +1,9 @@ +{ + "purchaseOrders_modal_title": "Desativar", + "purchaseOrders_modal_content": "Tem a certeza de que pretende desativar a sua referência interna? Se desativar esta referência, esta deixará de aparecer nas próximas faturas.", + "purchaseOrders_modal_primary_action": "Validar", + "purchaseOrders_modal_secondary_action": "Anular", + "purchaseOrders_confirmation_desactivation_REFERENCE_ORDER_success": "A sua referência interna foi desativada.", + "purchaseOrders_confirmation_desactivation_PURCHASE_ORDER_success": "O seu purchase order foi desativado.", + "purchaseOrders_confirmation_desactivation_error": "Não foi possível tratar o seu pedido. Tente novamente mais tarde." +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/update-purchase-status.component.js b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/update-purchase-status.component.js new file mode 100644 index 000000000000..2219eca51f6b --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/update-purchase-status.component.js @@ -0,0 +1,12 @@ +import controller from './update-purchase-status.controller'; +import template from './update-purchase-status.html'; + +export default { + bindings: { + goToPurchaseOrder: '<', + purchase: '<', + trackPage: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/update-purchase-status.controller.js b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/update-purchase-status.controller.js new file mode 100644 index 000000000000..069861985f9d --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/update-purchase-status.controller.js @@ -0,0 +1,50 @@ +import { TYPE_PURCHASE_FOR_TRACKING } from '../billing-orders-purchases.constant'; + +export default class BillingOrdersPurchaseUpdatePurchaseStatusCtrl { + /* @ngInject */ + constructor($translate, billingOrdersPurchasesService) { + this.$translate = $translate; + this.billingOrdersPurchasesService = billingOrdersPurchasesService; + } + + onCancel() { + return this.goToPurchaseOrder(); + } + + onSubmit() { + this.trackPage( + `deactivate-${TYPE_PURCHASE_FOR_TRACKING[this.purchase.type]}_confirm`, + ); + + const data = { + active: false, + }; + + return this.billingOrdersPurchasesService + .putPurchaseOrder(this.purchase.id, data) + .then(() => { + this.trackPage( + `deactivate-${ + TYPE_PURCHASE_FOR_TRACKING[this.purchase.type] + }_success`, + ); + this.goToPurchaseOrder( + this.$translate.instant( + `purchaseOrders_confirmation_desactivation_${this.purchase.type}_success`, + ), + 'success', + ); + }) + .catch(() => { + this.trackPage( + `deactivate-${TYPE_PURCHASE_FOR_TRACKING[this.purchase.type]}_error`, + ); + this.goToPurchaseOrder( + this.$translate.instant( + 'purchaseOrders_confirmation_desactivation_error', + ), + 'danger', + ); + }); + } +} diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/update-purchase-status.html b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/update-purchase-status.html new file mode 100644 index 000000000000..a1ea049049e7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/update-purchase-status.html @@ -0,0 +1,9 @@ + +

+
diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/update-purchase-status.module.js b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/update-purchase-status.module.js new file mode 100644 index 000000000000..746cc43be3a7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/update-purchase-status.module.js @@ -0,0 +1,18 @@ +import angular from 'angular'; + +import '@uirouter/angularjs'; +import '@ovh-ux/ng-translate-async-loader'; +import 'angular-translate'; +import '@ovh-ux/ui-kit'; + +import component from './update-purchase-status.component'; +import routing from './update-purchase-status.routing'; + +const moduleName = 'ovhManagerBillingOrdersPurchaseUpdatePurchaseStatus'; +angular + .module(moduleName, ['ui.router', 'oui', 'ngTranslateAsyncLoader']) + .component('updatePurchaseStatus', component) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/update-purchase-status.routing.js b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/update-purchase-status.routing.js new file mode 100644 index 000000000000..02f12c78d907 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/purchaseOrders/update-purchase-status/update-purchase-status.routing.js @@ -0,0 +1,23 @@ +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.orders.purchases.update-purchase-status', { + url: '/update-purchase-status', + params: { + purchase: null, + }, + views: { + modal: { + component: 'updatePurchaseStatus', + }, + }, + layout: 'modal', + resolve: { + breadcrumb: /* @ngInject */ () => null, + + purchase: /* @ngInject */ ($transition$) => + $transition$.params().purchase, + }, + atInternet: { + ignore: true, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/orders/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/orders/translations/Messages_de_DE.json new file mode 100644 index 000000000000..f266e78ec131 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/translations/Messages_de_DE.json @@ -0,0 +1,11 @@ +{ + "purchaseOrders_page_title": "Meine internen Referenzen", + "orders_purchase": "Begriff der Bestellnummer oder „Purchase Order“ (PO)", + "orders_page_title": "Meine Bestellungen", + "orders_page_description": "Sehen Sie Ihren Bestellungsverlauf ein und behalten Sie die aktuellen Bestellungen im Blick. Greifen Sie auf Ihre Bestellscheine zu.", + "orders_date": "Datum", + "orders_id": "Bestellnummer", + "orders_status": "Status", + "orders_billing": "Abrechnung", + "orders_guides": "Anleitungen" +} diff --git a/packages/manager/modules/new-billing/src/orders/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/orders/translations/Messages_en_GB.json new file mode 100644 index 000000000000..2d3e555bc6c5 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/translations/Messages_en_GB.json @@ -0,0 +1,11 @@ +{ + "purchaseOrders_page_title": "My internal references", + "orders_purchase": "Concept of Order Number or Purchase Order (PO)", + "orders_page_title": "My orders ", + "orders_page_description": "View your logs, and track orders in progress. Access your purchase orders.", + "orders_date": "Date", + "orders_id": "Order number ", + "orders_status": "Status", + "orders_billing": "Billing", + "orders_guides": "Guides" +} diff --git a/packages/manager/modules/new-billing/src/orders/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/orders/translations/Messages_es_ES.json new file mode 100644 index 000000000000..baa8764100f8 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/translations/Messages_es_ES.json @@ -0,0 +1,11 @@ +{ + "purchaseOrders_page_title": "Mis referencias internas", + "orders_purchase": "Concepto de número de pedido o «purchase order» (PO)", + "orders_page_title": "Mis pedidos", + "orders_page_description": "Consulte su historial y los pedidos en curso. Acceda a sus órdenes de pedido.", + "orders_date": "Fecha", + "orders_id": "Número de pedido", + "orders_status": "Estado", + "orders_billing": "Facturación", + "orders_guides": "Guías" +} diff --git a/packages/manager/modules/new-billing/src/orders/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/orders/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..091b48227513 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/translations/Messages_fr_CA.json @@ -0,0 +1,11 @@ +{ + "orders_page_title": "Mes commandes", + "orders_page_description": "Consultez votre historique et suivez les commandes en cours. Accédez à vos bons de commande.", + "orders_date": "Date", + "orders_id": "Numéro de commande", + "orders_status": "État", + "purchaseOrders_page_title": "Mes références internes", + "orders_billing": "Facturation", + "orders_purchase": "Notion de Numéro de commande ou Purchase Order (PO)", + "orders_guides": "Guides" +} diff --git a/packages/manager/modules/new-billing/src/orders/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/orders/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..091b48227513 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/translations/Messages_fr_FR.json @@ -0,0 +1,11 @@ +{ + "orders_page_title": "Mes commandes", + "orders_page_description": "Consultez votre historique et suivez les commandes en cours. Accédez à vos bons de commande.", + "orders_date": "Date", + "orders_id": "Numéro de commande", + "orders_status": "État", + "purchaseOrders_page_title": "Mes références internes", + "orders_billing": "Facturation", + "orders_purchase": "Notion de Numéro de commande ou Purchase Order (PO)", + "orders_guides": "Guides" +} diff --git a/packages/manager/modules/new-billing/src/orders/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/orders/translations/Messages_it_IT.json new file mode 100644 index 000000000000..22a4f169a997 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/translations/Messages_it_IT.json @@ -0,0 +1,11 @@ +{ + "purchaseOrders_page_title": "Le tue referenze interne", + "orders_purchase": "Nozione di numero d’ordine o Purchase Order (PO)", + "orders_page_title": "I miei ordini", + "orders_page_description": "Consulta lo storico e segui gli ordini in corso. Accedi ai tuoi ordini.", + "orders_date": "Data", + "orders_id": "Numero dell'ordine", + "orders_status": "Stato", + "orders_billing": "Fatturazione", + "orders_guides": "Guide" +} diff --git a/packages/manager/modules/new-billing/src/orders/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/orders/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..156bdfacbb12 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/translations/Messages_pl_PL.json @@ -0,0 +1,11 @@ +{ + "purchaseOrders_page_title": "Moje oznaczenia wewnętrzne", + "orders_purchase": "Pojęcie numeru zamówienia lub „purchase order” (PO)", + "orders_page_title": "Moje zamówienia", + "orders_page_description": "Sprawdź historię i monitoruj bieżące zamówienia. Wyświetl zamówienia.", + "orders_date": "Data", + "orders_id": "Numer zamówienia", + "orders_status": "Status", + "orders_billing": "Płatności", + "orders_guides": "Przewodniki" +} diff --git a/packages/manager/modules/new-billing/src/orders/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/orders/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..0690c63f01e5 --- /dev/null +++ b/packages/manager/modules/new-billing/src/orders/translations/Messages_pt_PT.json @@ -0,0 +1,11 @@ +{ + "purchaseOrders_page_title": "As minhas referências internas", + "orders_purchase": "Conceito de Nº de encomenda ou Purchase Order (PO)", + "orders_page_title": "Encomendas", + "orders_page_description": "Consulte o seu histórico e siga as encomendas em curso. Aceda às suas notas de encomenda.", + "orders_date": "Data", + "orders_id": "Número de encomenda", + "orders_status": "Estado", + "orders_billing": "Faturação", + "orders_guides": "Manuais" +} diff --git a/packages/manager/modules/new-billing/src/payment/billing-payment.controller.js b/packages/manager/modules/new-billing/src/payment/billing-payment.controller.js new file mode 100644 index 000000000000..fe2d0f625210 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/billing-payment.controller.js @@ -0,0 +1,12 @@ +export default class BillingPaymentCtrl { + /* @ngInject */ + + constructor($state, coreConfig, voucherAccounts, guides, trackClick) { + // dependencies injections + this.$state = $state; + this.coreConfig = coreConfig; + this.voucherAccounts = voucherAccounts; + this.guides = guides; + this.trackClick = trackClick; + } +} diff --git a/packages/manager/modules/new-billing/src/payment/billing-payment.html b/packages/manager/modules/new-billing/src/payment/billing-payment.html new file mode 100644 index 000000000000..0ff781cdd9f5 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/billing-payment.html @@ -0,0 +1,48 @@ +
+ + + + + + + + + + + + + + + + + + + + +
+
diff --git a/packages/manager/modules/new-billing/src/payment/billing-payment.module.js b/packages/manager/modules/new-billing/src/payment/billing-payment.module.js new file mode 100644 index 000000000000..38ddd8f43817 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/billing-payment.module.js @@ -0,0 +1,32 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import credits from './credits/billing-credits.module'; +import fidelity from './fidelity/billing-fidelity.module'; +import method from './method'; +import ovhAccount from './ovhAccount/billing-ovhAccount.module'; +import vouchers from './vouchers/billing-payment-voucher.module'; + +import routing from './billing-payment.routes'; + +const moduleName = 'ovhManagerBillingPayment'; + +angular + .module(moduleName, [ + angularTranslate, + ngTranslateAsyncLoader, + credits, + fidelity, + method, + 'oui', + ovhAccount, + uiRouter, + vouchers, + ]) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/payment/billing-payment.routes.js b/packages/manager/modules/new-billing/src/payment/billing-payment.routes.js new file mode 100644 index 000000000000..1add4d7b3bfe --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/billing-payment.routes.js @@ -0,0 +1,28 @@ +import template from './billing-payment.html'; +import controller from './billing-payment.controller'; + +export default /* @ngInject */ ($stateProvider) => { + const name = 'billing.payment'; + + $stateProvider.state(name, { + url: '/payment', + template, + controller, + controllerAs: '$ctrl', + redirectTo: `${name}.method`, + resolve: { + voucherAccounts: /* @ngInject */ ($http) => + $http + .get('/me/voucherAccount') + .then(({ data }) => data) + .catch(() => []), + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('billing_payment_title'), + }, + }); + + $stateProvider.state(`${name}.mean`, { + url: '/mean', + redirectTo: `${name}.method`, + }); +}; diff --git a/packages/manager/modules/new-billing/src/payment/credits/add/add-credits.component.js b/packages/manager/modules/new-billing/src/payment/credits/add/add-credits.component.js new file mode 100644 index 000000000000..fdf0782e5bc3 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/add/add-credits.component.js @@ -0,0 +1,11 @@ +import controller from './add-credits.controller'; +import template from './add-credits.html'; + +export default { + bindings: { + addCreditCode: '<', + goBack: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/payment/credits/add/add-credits.controller.js b/packages/manager/modules/new-billing/src/payment/credits/add/add-credits.controller.js new file mode 100644 index 000000000000..efa30ffedb5f --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/add/add-credits.controller.js @@ -0,0 +1,41 @@ +export default class BillingCreditsAddController { + /* @ngInject */ + constructor($translate, atInternet) { + this.$translate = $translate; + this.atInternet = atInternet; + } + + $onInit() { + this.isAdding = false; + this.creditCode = null; + } + + add() { + this.isAdding = true; + this.atInternet.trackClick({ + name: 'dedicated::account::billing::payment::credits::add::confirm', + type: 'action', + }); + return this.addCreditCode(this.creditCode) + .then(({ data }) => data) + .then((result) => { + this.atInternet.trackPage({ + name: 'dedicated::account::billing::payment::credits::added', + type: 'navigation', + }); + return this.goBack( + this.$translate.instant('voucher_credit_code_success', { + credit: result.amount.text, + }), + ); + }) + .catch((error) => + this.goBack( + `${this.$translate.instant('voucher_credit_code_error')} ${ + error.data?.message + }`, + 'danger', + ), + ); + } +} diff --git a/packages/manager/modules/new-billing/src/payment/credits/add/add-credits.html b/packages/manager/modules/new-billing/src/payment/credits/add/add-credits.html new file mode 100644 index 000000000000..03ac88bc0086 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/add/add-credits.html @@ -0,0 +1,22 @@ +
+ + + + + +
diff --git a/packages/manager/modules/new-billing/src/payment/credits/add/add-credits.module.js b/packages/manager/modules/new-billing/src/payment/credits/add/add-credits.module.js new file mode 100644 index 000000000000..cbed0a8dd214 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/add/add-credits.module.js @@ -0,0 +1,25 @@ +import angular from 'angular'; +import 'angular-translate'; +import ngAtInternet from '@ovh-ux/ng-at-internet'; +import ngUiRouterLayout from '@ovh-ux/ng-ui-router-layout'; +import uiRouter from '@uirouter/angularjs'; +import '@ovh-ux/ui-kit'; + +import component from './add-credits.component'; +import routing from './add-credits.routing'; + +const moduleName = 'ovhManagerBillingPaymentCreditsAdd'; + +angular + .module(moduleName, [ + ngAtInternet, + ngUiRouterLayout, + 'oui', + 'pascalprecht.translate', + uiRouter, + ]) + .config(routing) + .component('billingPaymentCreditsAdd', component) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/payment/credits/add/add-credits.routing.js b/packages/manager/modules/new-billing/src/payment/credits/add/add-credits.routing.js new file mode 100644 index 000000000000..62751a89070a --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/add/add-credits.routing.js @@ -0,0 +1,17 @@ +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.payment.credits.add', { + url: '/add', + layout: 'modal', + views: { + modal: { + component: 'billingPaymentCreditsAdd', + }, + }, + resolve: { + addCreditCode: /* @ngInject */ ($http) => (inputCode) => + $http.post('/me/credit/code', { inputCode }), + goBack: /* @ngInject */ (goToCredits) => goToCredits, + breadcrumb: () => null, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_de_DE.json new file mode 100644 index 000000000000..bc8ff00b9088 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_de_DE.json @@ -0,0 +1,8 @@ +{ + "voucher_credit_code_add_label": "Einen Gutschein hinzufügen", + "voucher_credit_code_add_placeholder": "Gutscheincode", + "voucher_credit_code_add_submit": "Hinzufügen", + "voucher_credit_code_success": "Ihre Gutschrift in Höhe von {{credit}} wurde erstellt. Sie können nun mit Ihrer Bestellung fortfahren.", + "voucher_credit_code_error": "Beim Hinzufügen des Gutscheins ist ein Fehler aufgetreten:", + "voucher_credit_code_cancel": "Stornieren" +} diff --git a/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_en_GB.json new file mode 100644 index 000000000000..f845c208618c --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_en_GB.json @@ -0,0 +1,8 @@ +{ + "voucher_credit_code_add_label": "Add a coupon or voucher", + "voucher_credit_code_add_placeholder": "Voucher code", + "voucher_credit_code_add_submit": "Add", + "voucher_credit_code_success": "Your {{credit}} credit has been generated. You can proceed with your order.", + "voucher_credit_code_error": "An error has occurred adding the voucher.", + "voucher_credit_code_cancel": "Cancel" +} diff --git a/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_es_ES.json new file mode 100644 index 000000000000..da0abb189ed4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_es_ES.json @@ -0,0 +1,8 @@ +{ + "voucher_credit_code_add_label": "Añadir un voucher", + "voucher_credit_code_add_placeholder": "Código del voucher", + "voucher_credit_code_add_submit": "Añadir", + "voucher_credit_code_success": "Su crédito de {{credit}} se ha generado correctamente. Ya puede realizar su pedido.", + "voucher_credit_code_error": "Se ha producido un error al añadir el voucher.", + "voucher_credit_code_cancel": "Cancelar" +} diff --git a/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..3982227ed7bc --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_fr_CA.json @@ -0,0 +1,8 @@ +{ + "voucher_credit_code_add_label": "Ajouter un bon d'achat", + "voucher_credit_code_add_placeholder": "Code du bon d'achat", + "voucher_credit_code_add_submit": "Ajouter", + "voucher_credit_code_success": "Votre crédit de {{credit}} a bien été généré, vous pouvez procéder à votre commande.", + "voucher_credit_code_error": "Une erreur est survenue lors de l'ajout du bon d'achat.", + "voucher_credit_code_cancel": "Annuler" +} diff --git a/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..3982227ed7bc --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_fr_FR.json @@ -0,0 +1,8 @@ +{ + "voucher_credit_code_add_label": "Ajouter un bon d'achat", + "voucher_credit_code_add_placeholder": "Code du bon d'achat", + "voucher_credit_code_add_submit": "Ajouter", + "voucher_credit_code_success": "Votre crédit de {{credit}} a bien été généré, vous pouvez procéder à votre commande.", + "voucher_credit_code_error": "Une erreur est survenue lors de l'ajout du bon d'achat.", + "voucher_credit_code_cancel": "Annuler" +} diff --git a/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_it_IT.json new file mode 100644 index 000000000000..4e5163aa1671 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_it_IT.json @@ -0,0 +1,8 @@ +{ + "voucher_credit_code_add_label": "Aggiungi un voucher", + "voucher_credit_code_add_placeholder": "Codice del voucher", + "voucher_credit_code_add_submit": "Aggiungi", + "voucher_credit_code_success": "Il credito di {{credit}} è stato generato correttamente, puoi procedere all'ordine.", + "voucher_credit_code_error": "Si è verificato un errore durante l'aggiunta del voucher.", + "voucher_credit_code_cancel": "Annulla" +} diff --git a/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..4af38125d963 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_pl_PL.json @@ -0,0 +1,8 @@ +{ + "voucher_credit_code_add_label": "Wprowadź kod vouchera", + "voucher_credit_code_add_placeholder": "Kod vouchera", + "voucher_credit_code_add_submit": "Dodaj", + "voucher_credit_code_success": "Zasilenie o wartości {{credit}} zostało aktywowane. Możesz złożyć zamówienie.", + "voucher_credit_code_error": "Wystąpił błąd podczas dodawania kodu vouchera.", + "voucher_credit_code_cancel": "Anuluj" +} diff --git a/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..1e8642dc0d0b --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/add/translations/Messages_pt_PT.json @@ -0,0 +1,8 @@ +{ + "voucher_credit_code_add_label": "Adicionar voucher", + "voucher_credit_code_add_placeholder": "Código do voucher", + "voucher_credit_code_add_submit": "Adicionar", + "voucher_credit_code_success": "O seu crédito de {{credit}} foi gerado com êxito. Pode efetuar a sua encomenda.", + "voucher_credit_code_error": "Ocorreu um erro aquando da adição do voucher.", + "voucher_credit_code_cancel": "Cancelar" +} diff --git a/packages/manager/modules/new-billing/src/payment/credits/billing-credits.controller.js b/packages/manager/modules/new-billing/src/payment/credits/billing-credits.controller.js new file mode 100644 index 000000000000..7f0a0a1904be --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/billing-credits.controller.js @@ -0,0 +1,69 @@ +import get from 'lodash/get'; +import head from 'lodash/head'; +import map from 'lodash/map'; +import reduce from 'lodash/reduce'; + +export default class BillingCreditsCtrl { + /* @ngInject */ + constructor($translate, addVoucherLink, Alerter, balances, BillingCredits) { + this.addVoucherLink = addVoucherLink; + this.Alerter = Alerter; + this.$translate = $translate; + this.billingCredits = BillingCredits; + + this.balances = balances; + } + + /* ============================== + = HELPERS = + =============================== */ + + static getExpiringDetails(expiring) { + const copiedSummary = angular.copy(expiring); + + // sort by expiration date to get the less expiring item + copiedSummary.sort((summaryItemA, summaryItemB) => { + const dateA = new Date(summaryItemA.expirationDate); + const dateB = new Date(summaryItemB.expirationDate); + return dateA - dateB; + }); + + // calculate amount of expirate amount + const totalAmount = reduce( + map(copiedSummary, 'amount.value'), + (total, amountValue) => total + amountValue, + ); + + // use the text of the first item amout to build total amount object + const totalAmountObject = { + currencyCode: get(head(copiedSummary), 'amount.currencyCode'), + value: totalAmount, + text: get(head(copiedSummary), 'amount.text').replace( + /\d+(?:[.,]\d+)?/, + `${totalAmount.toFixed(2)}`, + ), + }; + + return { + expirationDate: get(head(copiedSummary), 'expirationDate'), + amount: totalAmountObject, + expireSoon: + moment(get(head(copiedSummary), 'expirationDate')).diff( + moment(), + 'days', + ) <= 7, + }; + } + + /* ----- End of HELPERS ------ */ + + getBalanceDetails({ balanceName }) { + return this.billingCredits.getBalance(balanceName).then((balance) => ({ + ...balance, + expiringDetails: + balance.expiring && balance.expiring.length + ? this.constructor.getExpiringDetails(balance.expiring) + : null, + })); + } +} diff --git a/packages/manager/modules/new-billing/src/payment/credits/billing-credits.html b/packages/manager/modules/new-billing/src/payment/credits/billing-credits.html new file mode 100644 index 000000000000..99efc35da763 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/billing-credits.html @@ -0,0 +1,72 @@ +
+
+ +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/packages/manager/modules/new-billing/src/payment/credits/billing-credits.module.js b/packages/manager/modules/new-billing/src/payment/credits/billing-credits.module.js new file mode 100644 index 000000000000..d45b5a02635f --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/billing-credits.module.js @@ -0,0 +1,28 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngOvhUtils from '@ovh-ux/ng-ovh-utils'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import movements from './movements/billing-credits-movements.module'; + +import routing from './billing-payment-credits.routes'; +import service from './billing-credits.service'; + +const moduleName = 'ovhManagerBillingPaymentCredits'; + +angular + .module(moduleName, [ + angularTranslate, + movements, + ngOvhUtils, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .config(routing) + .service('BillingCredits', service) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/payment/credits/billing-credits.service.js b/packages/manager/modules/new-billing/src/payment/credits/billing-credits.service.js new file mode 100644 index 000000000000..6d11bf486e01 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/billing-credits.service.js @@ -0,0 +1,55 @@ +export default class BillingCreditsService { + /* @ngInject */ + constructor(OvhHttp) { + this.OvhHttp = OvhHttp; + } + + /* ================================ + = API CALLS = + ================================= */ + + /* ---------- Balance API calls ---------- */ + + queryBalance() { + return this.OvhHttp.get('/me/credit/balance', { + rootPath: 'apiv6', + }); + } + + getBalance(balanceName) { + return this.OvhHttp.get(`/me/credit/balance/${balanceName}`, { + rootPath: 'apiv6', + }); + } + + /* ---------- Balance movements API calls ---------- */ + + queryBalanceMovements(balanceName) { + return this.OvhHttp.get(`/me/credit/balance/${balanceName}/movement`, { + rootPath: 'apiv6', + }); + } + + getBalanceMovement(balanceName, movementId) { + return this.OvhHttp.get( + `/me/credit/balance/${balanceName}/movement/${movementId}`, + { + rootPath: 'apiv6', + }, + ); + } + + getOrder(orderId) { + return this.OvhHttp.get(`/me/order/${orderId}`, { + rootPath: 'apiv6', + }); + } + + getRefund(refundId) { + return this.OvhHttp.get(`/me/refund/${refundId}`, { + rootPath: 'apiv6', + }); + } + + /* ----- End of API CALLS ------ */ +} diff --git a/packages/manager/modules/new-billing/src/payment/credits/billing-payment-credits.routes.js b/packages/manager/modules/new-billing/src/payment/credits/billing-payment-credits.routes.js new file mode 100644 index 000000000000..3e0429f0336c --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/billing-payment-credits.routes.js @@ -0,0 +1,45 @@ +import controller from './billing-credits.controller'; +import template from './billing-credits.html'; + +export default /* @ngInject */ ($stateProvider) => { + const name = 'billing.payment.credits'; + $stateProvider.state(name, { + url: '/credits', + template, + controller, + controllerAs: '$ctrl', + resolve: { + balances: /* @ngInject */ ($http) => + $http + .get('/me/credit/balance') + .then(({ data }) => data) + .then((balances) => balances.map((balanceName) => ({ balanceName }))), + goToCredits: /* @ngInject */ ($state, $timeout, Alerter) => ( + message = false, + type = 'success', + ) => { + const reload = message && type === 'success'; + + const promise = $state.go( + 'billing.payment.credits', + {}, + { + reload, + }, + ); + + if (message) { + promise.then(() => + $timeout(() => Alerter.set(`alert-${type}`, message)), + ); + } + + return promise; + }, + addVoucherLink: /* @ngInject */ ($state) => + $state.href('billing.payment.credits.add'), + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('billing_payment_credits'), + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/payment/credits/movements/billing-credits-movements.controller.js b/packages/manager/modules/new-billing/src/payment/credits/movements/billing-credits-movements.controller.js new file mode 100644 index 000000000000..a05096c65577 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/movements/billing-credits-movements.controller.js @@ -0,0 +1,167 @@ +import get from 'lodash/get'; +import set from 'lodash/set'; + +export default class BillingCreditsCtrl { + /* @ngInject */ + constructor( + $filter, + $q, + $stateParams, + $translate, + Alerter, + BillingCredits, + coreURLBuilder, + totalAmount, + ) { + this.$q = $q; + this.$stateParams = $stateParams; + this.$translate = $translate; + this.Alerter = Alerter; + this.billingCredits = BillingCredits; + this.totalAmount = totalAmount; + + this.balance = null; + this.movements = null; + this.paginatedMovements = []; + + // for pagination-front + this.currentPage = 1; + this.itemsPerPage = 10; + this.nbPages = null; + + this.loading = { + init: false, + getMovement: false, + }; + + this.incidentServicesStatus = coreURLBuilder.buildURL( + 'hub', + '#/incident/SBG/status', + ); + + this.currentDate = $filter('date')(new Date(), 'longDate'); + } + + /* ======================================= + = PAGINATION FRONT = + ======================================== */ + + getMovementDetails(movementId) { + this.loading.getMovement = true; + + return this.billingCredits + .getBalanceMovement(this.$stateParams.balanceName, movementId) + .then((data) => { + if (data.orderId || get(data, 'destinationObject.name') === 'ORDER') { + return this.billingCredits + .getOrder(data.orderId || get(data, 'destinationObject.id')) + .then((order) => ({ + ...data, + orderId: order.orderId, + orderUrl: order.url, + })) + .catch(() => data); + } + + if (get(data, 'destinationObject.name') === 'CREDIT_NOTE') { + return this.billingCredits + .getRefund(get(data, 'destinationObject.id')) + .then((refund) => ({ + ...data, + refundUrl: refund.url, + })) + .catch(() => data); + } + + return this.$q.resolve(data); + }) + .catch((error) => { + this.Alerter.set( + 'alert-danger', + [ + this.$translate.instant( + 'billing_credit_balance_movements_load_error', + ), + get(error, 'message'), + ].join(' '), + ); + }); + } + + pushMovementDetails(movementDetails) { + set( + movementDetails, + 'expireSoon', + movementDetails.expirationDate + ? moment(movementDetails.expirationDate).diff(moment(), 'days') <= 7 + : false, + ); + this.paginatedMovements.push(movementDetails); + } + + onDetailsDone() { + this.loading.getMovement = false; + } + + /* ----- End of PAGINATION FRONT ------ */ + + /* ================================ + = API CALLS = + ================================= */ + + getBalance() { + return this.billingCredits + .getBalance(this.$stateParams.balanceName) + .then((balance) => { + this.balance = balance; + }) + .catch((error) => { + this.Alerter.set( + 'alert-danger', + [ + this.$translate.instant( + 'billing_credit_balance_movements_load_error', + ), + get(error, 'message'), + ].join(' '), + ); + }); + } + + getBalanceMovements() { + return this.billingCredits + .queryBalanceMovements(this.$stateParams.balanceName) + .then((movements) => { + this.movements = movements; + }) + .catch((error) => { + this.Alerter.set( + 'alert-danger', + [ + this.$translate.instant( + 'billing_credit_balance_movements_load_error', + ), + get(error, 'message'), + ].join(' '), + ); + }); + } + + /* ----- End of API CALLS ------ */ + + /* ===================================== + = INITIALIZATION = + ====================================== */ + + $onInit() { + this.loading.init = true; + + return this.$q + .all([this.getBalance(), this.getBalanceMovements()]) + .finally(() => { + this.loading.init = false; + }); + } + + /* ----- End of INITIALIZATION ------ */ +} diff --git a/packages/manager/modules/new-billing/src/payment/credits/movements/billing-credits-movements.html b/packages/manager/modules/new-billing/src/payment/credits/movements/billing-credits-movements.html new file mode 100644 index 000000000000..6935cdf03f2e --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/movements/billing-credits-movements.html @@ -0,0 +1,176 @@ +
+
+ + + + + + +
+

+ +

+ +

+ +

+ +

+

+

+

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+ +
+ +
+ + + + + + + + + +
+ + + + + +
+
+
+ + +
+
+
+
+
+ +
+

+

+

+
+
diff --git a/packages/manager/modules/new-billing/src/payment/credits/movements/billing-credits-movements.module.js b/packages/manager/modules/new-billing/src/payment/credits/movements/billing-credits-movements.module.js new file mode 100644 index 000000000000..e31c6bffc61e --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/movements/billing-credits-movements.module.js @@ -0,0 +1,22 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngOvhUtils from '@ovh-ux/ng-ovh-utils'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import routing from './billing-payment-credits-movements.routes'; + +const moduleName = 'ovhManagerBillingPaymentCreditsMovements'; + +angular + .module(moduleName, [ + angularTranslate, + ngOvhUtils, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .config(routing); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/payment/credits/movements/billing-payment-credits-movements.routes.js b/packages/manager/modules/new-billing/src/payment/credits/movements/billing-payment-credits-movements.routes.js new file mode 100644 index 000000000000..92c4d68110f1 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/movements/billing-payment-credits-movements.routes.js @@ -0,0 +1,44 @@ +import controller from './billing-credits-movements.controller'; +import template from './billing-credits-movements.html'; + +export default /* @ngInject */ ($stateProvider, $urlServiceProvider) => { + const name = 'billing.payment.credits.movements'; + + $stateProvider.state(name, { + url: '/:balanceName', + template, + controller, + controllerAs: '$ctrl', + resolve: { + balanceName: /* @ngInject */ ($transition$) => + $transition$.params().balanceName, + totalAmount: /* @ngInject */ (balanceName, iceberg) => + iceberg(`/me/credit/balance/${balanceName}/movement`) + .query() + .expand('CachedObjectList-Pages') + .limit(5000) + .addFilter('type', 'eq', 'VOUCHER') + .execute() + .$promise.then(({ data }) => data) + .then((movements) => ({ + amount: movements.reduce( + (acc, movement) => acc + movement.amount?.value, + 0.0, + ), + movements, + })) + .then(({ amount, movements }) => + movements[0]?.amount?.text.replace( + movements[0]?.amount?.value, + amount, + ), + ), + breadcrumb: /* @ngInject */ (balanceName) => balanceName, + }, + }); + + $urlServiceProvider.rules.when( + '/billing/payment/credits/movements/:name', + '/billing/payment/credits/:name', + ); +}; diff --git a/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_de_DE.json new file mode 100644 index 000000000000..76ff38e072c1 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_de_DE.json @@ -0,0 +1,40 @@ +{ + "billing_payment_credits": "Meine Gutscheine", + "billing_credits_add": "Einen Gutschein hinzufügen", + "billing_credits_description": "Ihre Gutscheine werden verwendet, um Ihre Bestellung ganz oder teilweise zu bezahlen. Ihre Gutscheine werden auf den Betrag zzgl. MwSt. Ihrer Bestellung verwendet.", + "billing_credits_title": "Meine Gutscheine", + "billing_credits_none": "Sie haben keine Gutscheine.", + "billing_credit_balance_header_name": "Name", + "billing_credit_balance_header_creation_date": "Erstellungsdatum", + "billing_credit_balance_header_last_update_date": "Letztes Update", + "billing_credit_balance_header_expiration_date": "Ablaufdatum", + "billing_credit_balance_header_expiration_amount": "Ablaufendes Guthaben", + "billing_credit_balance_header_amount": "Betrag", + "billing_credit_balance_header_movements": "Vorgänge", + "billing_credit_balance_movements_details": "Vorgangsdetails", + "billing_credit_balance_movements_title": "Details zu den Vorgängen unter Verwendung Ihres Gutscheins {{t0}}", + "billing_credit_balance_movements_back": "Zurück zu meinen Gutscheinen", + "billing_credit_balance_movements_header_date": "Datum", + "billing_credit_balance_movements_header_operation": "Operation", + "billing_credit_balance_header_order": "Bestellung", + "billing_credit_balance_movements_operation_credit": "Aufladung", + "billing_credit_balance_movements_operation_debit": "Soll", + "billing_credit_balance_movements_operation_debit_order": "Abbuchung bei der Bestellung {{ orderId }}", + "billing_credit_balance_movements_operation_debit_refund_old": "Ausstellung der Gutschrift {{ refundId }}", + "billing_credit_balance_movements_operation_debit_refund": "Ausstellung der Gutschrift", + "billing_credit_balance_movements_operation_debit_refund_deduction": "Abgezogenes Guthaben", + "billing_credit_balance_movements_operation_expiration": "Ablaufdatum", + "billing_credit_balance_movements_load_error": "Beim Laden der Vorgänge unter Verwendung Ihres Gutscheins ist ein Fehler aufgetreten.", + "billing_credit_back": "Zurück zu meinen Gutscheinen", + "billing_credit_sbg_title": "Transaktionen im Zusammenhang mit den kommerziellen Maßnahmen für SBG", + "billing_credit_sbg_total_amount": "Gesamtwert der kommerziellen Maßnahmen : {{amount}}", + "billing_credit_sbg_total_balance": "Wert des Gutscheins am {{date}} : {{amount}}", + "billing_credit_sbg_services_intro": "Vor dem Hintergrund des Brandes an unserem Standort Straßburg (SBG) und Ihrer davon betroffen Dienste wurden Ihnen Leistungen* zur Verfügung gestellt.", + "billing_credit_sbg_info": "Der diesen Leistungen entsprechende Betrag wurde in Form eines Gutscheins** mit Gültigkeit bis zum 31. August 2022 bereitgestellt. Er galt für alle Dienste von OVHcloud. Dieser Gutschein wurde automatisch*** ausgestellt.", + "billing_credit_sbg_movements_intro": "Die folgende Tabelle gibt Ihnen einen Überblick über die Verwendung dieses Gutscheins.", + "billing_credit_sbg_tips": "Bitte beachten Sie: Dieser Gutschein wurde automatisch dafür eingesetzt, die Rechnungen für die automatische Verlängerung Ihrer bestehenden Dienste zu begleichen. Es war Ihnen ebenfalls möglich, damit neue Bestellungen und Rechnungen über manuelle Verlängerungen zu bezahlen.", + "billing_credit_sbg_legal_info1": "*Diese Leistungen wurden Ihnen im Zuge der außergewöhnlichen Ereignisse als Inhaber dieser Services zugewiesen.", + "billing_credit_sbg_legal_info2": "**Wenn Sie nach dem 10. März einen neuen Dienst abonniert haben und dieser Ihnen berechnet wurde, so profitierten Sie durch diese Leistungen von einem Guthaben in Höhe der ersten Rechnung für diesen Service. Wie oben dargelegt, wird dies von dem Gutschein abgezogen. Im Tab „Meine Rechnungen“ > „Meine Guthaben“ ist dies aufgeführt. Die Leistungen bestehen somit aus einem Guthaben und einem Gutschein.", + "billing_credit_sbg_legal_info3": "***Der Gutschein und das etwaige Guthaben für die „SBG“-Leistungen wurden Ihrem Kundenkonto zugewiesen. Die Zuweisung zu einem anderen Kundenkonto ist nicht möglich. Der Gutschein und das Guthaben waren bis einschließlich 31. August 2022 gültig. Nach Ablauf dieses Datums können sie nicht genutzt, ersetzt oder erstattet werden. Die Übertragung auf und der Verkauf an Dritte sind nicht möglich, weder unentgeltlich noch kostenpflichtig. Diese Leistungen galten nicht für die Dienste „So you Start“ und „Kimsufi“. Der Gutschein konnte weder ersetzt noch erstattet werden. Falls OVHcloud Ihre Bestellung aufgrund einer Störung nicht bearbeiten konnte, wurde diese Bestellung storniert. Der Betrag für die Bestellung wurde dem Gutschein erneut gutgeschrieben, ohne dass sich jedoch die Gültigkeitsdauer dadurch verlängerte. Wenn Sie von Ihrem Widerrufsrecht Gebrauch gemacht und eine Bestellung storniert haben, die ganz oder zum Teil mit dem Gutschein bezahlt wurde, so konnte der tatsächlich gezahlte Teil nicht zurückerstattet werden. Er wurde erneut gutgeschrieben, wodurch sich die Gültigkeitsdauer nicht verlängerte.", + "billing_credit_balance_movements_header_id": "ID" +} diff --git a/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_en_GB.json new file mode 100644 index 000000000000..c7038572548c --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_en_GB.json @@ -0,0 +1,40 @@ +{ + "billing_payment_credits": "My vouchers", + "billing_credits_add": "Add a coupon or voucher", + "billing_credits_description": "Your vouchers will be used to pay for all or part of your order. They will apply to your order total ex. VAT.", + "billing_credits_title": "My vouchers", + "billing_credits_none": "You don't have any vouchers", + "billing_credit_balance_header_name": "Name", + "billing_credit_balance_header_creation_date": "Creation date", + "billing_credit_balance_header_last_update_date": "Last updated", + "billing_credit_balance_header_expiration_date": "Expiry date", + "billing_credit_balance_header_expiration_amount": "Amount reaching expiry", + "billing_credit_balance_header_amount": "Amount", + "billing_credit_balance_header_movements": "Operations", + "billing_credit_balance_movements_details": "Details of operations", + "billing_credit_balance_movements_title": "Details of operations for your {{t0}} voucher", + "billing_credit_balance_movements_back": "Back to your vouchers", + "billing_credit_balance_movements_header_date": "Date", + "billing_credit_balance_movements_header_operation": "Operation", + "billing_credit_balance_header_order": "Order", + "billing_credit_balance_movements_operation_credit": "Credit", + "billing_credit_balance_movements_operation_debit": "Debit", + "billing_credit_balance_movements_operation_debit_order": "Debit on order {{ orderId }}", + "billing_credit_balance_movements_operation_debit_refund_old": "Issuing credit note {{ refundId }}", + "billing_credit_balance_movements_operation_debit_refund": "Issue of credit note", + "billing_credit_balance_movements_operation_debit_refund_deduction": "Credit note deduction", + "billing_credit_balance_movements_operation_expiration": "Expiry", + "billing_credit_balance_movements_load_error": "An error has occurred loading voucher operations.", + "billing_credit_back": "Back to your vouchers", + "billing_credit_sbg_title": "Operations related to your SBG commercial measures", + "billing_credit_sbg_total_amount": "Overall total of commercial measures: {{amount}}", + "billing_credit_sbg_total_balance": "Voucher balance at {{date}}: {{amount}}", + "billing_credit_sbg_services_intro": "You received a provision of commercial measures* relating to your service(s) impacted by the fire that broke out on our Strasbourg (SBG) site.", + "billing_credit_sbg_info": "The amount corresponding to these commercial measures was provided in the form of a voucher** valid until 31 August 2022, which can be used on all OVHcloud services. This voucher was automatically issued***.", + "billing_credit_sbg_movements_intro": "You can view the transaction history on this voucher in the table below.", + "billing_credit_sbg_tips": "Please note: The voucher was used automatically to pay for renewal bills for your existing services. You can also use it to pay for new orders and manual renewal invoices.", + "billing_credit_sbg_legal_info1": "*These exceptional commercial measures have been allocated to you in your personal capacity as the holder of these services.", + "billing_credit_sbg_legal_info2": "**If you were billed for a new service purchased after 10 March, under these commercial measures, you received a credit note equivalent to the first bill for the service. This has been deducted from the voucher, as shown in the history above, and can also be found in the My bills > My credit notes tab. This means that your provision of free service consisted of a credit note and a voucher.", + "billing_credit_sbg_legal_info3": "***The voucher and any credit notes relating to the SBG commercial measures were attached to your customer account. Please note that the connected customer account could not be changed. These vouchers and credit notes are valid until 31 August 2022 inclusive. Once this date has passed, they will no longer be usable, and will not be replaced or refunded. They cannot be transferred, sold or sent in any way, free of charge or for a fee, to a third party. They cannot be used on So you Start and Kimsufi services. The voucher was not replaceable or refundable. If OVHcloud could not process your order, it would be cancelled, and the voucher amount used for the order would be credited back to the voucher. Its validity period would not be extended. If you used your right of withdrawal for a service order paid in whole or in part with part or all of the voucher, the part paid with the voucher was non-refundable, and was credited without any extension of its validity.", + "billing_credit_balance_movements_header_id": "ID" +} diff --git a/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_es_ES.json new file mode 100644 index 000000000000..93ee0381ef71 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_es_ES.json @@ -0,0 +1,40 @@ +{ + "billing_payment_credits": "Mis vouchers", + "billing_credits_add": "Añadir un voucher", + "billing_credits_description": "Los vouchers se utilizarán para abonar la totalidad o parte del pedido. Se aplicarán al importe (IVA no incl.) del pedido.", + "billing_credits_title": "Mis vouchers", + "billing_credits_none": "No tiene ningún voucher.", + "billing_credit_balance_header_name": "Nombre", + "billing_credit_balance_header_creation_date": "Fecha de creación", + "billing_credit_balance_header_last_update_date": "Última actualización", + "billing_credit_balance_header_expiration_date": "Fecha de expiración", + "billing_credit_balance_header_expiration_amount": "Importe próximo a la fecha de expiración", + "billing_credit_balance_header_amount": "Importe", + "billing_credit_balance_header_movements": "Movimientos", + "billing_credit_balance_movements_details": "Detalle de los movimientos", + "billing_credit_balance_movements_title": "Detalle de los movimientos de sus vouchers {{t0}}", + "billing_credit_balance_movements_back": "Volver a mis vouchers", + "billing_credit_balance_movements_header_date": "Fecha", + "billing_credit_balance_movements_header_operation": "Operación", + "billing_credit_balance_header_order": "Pedido", + "billing_credit_balance_movements_operation_credit": "Crédito", + "billing_credit_balance_movements_operation_debit": "Débito", + "billing_credit_balance_movements_operation_debit_order": "Débito en el pedido {{ orderId }}", + "billing_credit_balance_movements_operation_debit_refund_old": "Emisión del crédito {{ refundId }}", + "billing_credit_balance_movements_operation_debit_refund": "Emisión del crédito", + "billing_credit_balance_movements_operation_debit_refund_deduction": "Deducción del crédito", + "billing_credit_balance_movements_operation_expiration": "Expiración", + "billing_credit_balance_movements_load_error": "Se ha producido un error al cargar los movimientos de su voucher.", + "billing_credit_back": "Volver a mis vouchers", + "billing_credit_sbg_title": "Operaciones relativas a las medidas comerciales SBG", + "billing_credit_sbg_total_amount": "Importe total de las medidas comerciales : {{amount}}", + "billing_credit_sbg_total_balance": "Saldo del voucher a {{date}} : {{amount}}", + "billing_credit_sbg_services_intro": "Le informamos de que las medidas comerciales* correspondientes al servicio o los servicios afectados por el incendio registrado en Estrasburgo (SBG) dejarán de estar disponibles el próximo 31 de agosto de 2022.", + "billing_credit_sbg_info": "Le recordamos que el importe correspondiente a estas medidas comerciales ha estado disponible en forma de voucher** válido hasta el 31 de agosto de 2022 y aplicable en todos los servicios de OVHcloud. La asignación del voucher se realiza de forma automática***.", + "billing_credit_sbg_movements_intro": "Puede consultar el historial de movimientos en el voucher en la siguiente tabla.", + "billing_credit_sbg_tips": "Importante: El voucher se utiliza de forma automática para realizar el pago de las facturas de renovación automática de los servicios existentes. Asimismo, también puede utilizarse para abonar nuevos pedidos y facturas con renovación manual.", + "billing_credit_sbg_legal_info1": "* Estas medidas comerciales excepcionales se atribuyen a título personal como titular de los servicios afectados.", + "billing_credit_sbg_legal_info2": "** Para los nuevos servicios contratados después del 10 de marzo, estas medidas comerciales permiten disfrutar de un crédito equivalente a la primera factura del servicio. Este importe se deduce del voucher, tal como se indica en el historial de movimientos más arriba, y aparece en la pestaña «Mis facturas» > «Mi crédito». Las medidas comerciales incluyen tanto un crédito como un voucher.", + "billing_credit_sbg_legal_info3": "*** El voucher y el posible crédito correspondientes a las medidas comerciales SBG están asociados a su cuenta de cliente y no es posible modificar la cuenta de cliente asociada. Tanto el voucher como el crédito son válidos hasta el 31 de agosto de 2022. A partir de esa fecha, ya no es posible utilizarlos, y no pueden ser sustituidos ni reembolsados. Asimismo, tampoco pueden ser cedidos, vendidos o transmitidos, de forma gratuita o de pago, a un tercero. Tampoco pueden utilizarse en los servicios So you Start y Kimsufi. El voucher no es sustituible ni reembolsable. En caso de incidencia que impida el tratamiento de su pedido por parte de OVHcloud, el voucher se anulará y el importe utilizado para realizar el pedido se recargará en el voucher sin prórroga del período de validez. En caso de que el cliente desee ejercer su derecho de desistimiento para el pedido de un servicio abonado, total o parcialmente, con una parte o la totalidad del voucher, la parte abonada con el voucher no será reembolsable y se recargará en el voucher sin prórroga del período de validez.", + "billing_credit_balance_movements_header_id": "ID" +} diff --git a/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..1e9e3b9e91a7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_fr_CA.json @@ -0,0 +1,40 @@ +{ + "billing_payment_credits": "Mes bons d'achat", + "billing_credits_add": "Ajouter un bon d'achat", + "billing_credits_description": "Vos bons d'achat seront utilisés pour payer tout ou partie de votre commande. Ils s'appliqueront sur le montant HT de votre commande.", + "billing_credits_title": "Mes bons d'achat", + "billing_credits_none": "Vous n'avez pas de bons d'achat", + "billing_credit_balance_header_name": "Nom", + "billing_credit_balance_header_creation_date": "Date de création", + "billing_credit_balance_header_last_update_date": "Dernière mise à jour", + "billing_credit_balance_header_expiration_date": "Date d'expiration", + "billing_credit_balance_header_expiration_amount": "Montant arrivant à expiration", + "billing_credit_balance_header_amount": "Montant", + "billing_credit_balance_header_movements": "Mouvements", + "billing_credit_balance_movements_details": "Détails des mouvements", + "billing_credit_balance_movements_title": "Détails des mouvements de votre bon d'achat {{t0}}", + "billing_credit_balance_movements_back": "Retour à mes bons d'achat", + "billing_credit_balance_movements_header_id": "ID", + "billing_credit_balance_movements_header_date": "Date", + "billing_credit_balance_movements_header_operation": "Opération", + "billing_credit_balance_header_order": "Commande", + "billing_credit_balance_movements_operation_credit": "Crédit", + "billing_credit_balance_movements_operation_debit": "Débit", + "billing_credit_balance_movements_operation_debit_order": "Débit sur la commande {{ orderId }}", + "billing_credit_balance_movements_operation_debit_refund_old": "Émission de l'avoir {{ refundId }}", + "billing_credit_balance_movements_operation_debit_refund": "Émission de l'avoir", + "billing_credit_balance_movements_operation_debit_refund_deduction": "Déduction de l'avoir", + "billing_credit_balance_movements_operation_expiration": "Expiration", + "billing_credit_balance_movements_load_error": "Une erreur est survenue lors du chargement des mouvements de votre bon d'achat.", + "billing_credit_back": "Retourner à mes bons d'achat", + "billing_credit_sbg_title": "Opérations concernant vos mesures commerciales SBG", + "billing_credit_sbg_total_amount": "Montant global des mesures commerciales : {{amount}}", + "billing_credit_sbg_total_balance": "Solde du bon d'achat au {{date}} : {{amount}}", + "billing_credit_sbg_services_intro": "Vous bénéficiiez de mesures commerciales* relatives à votre (vos) service(s) impactés par l’incendie survenu sur notre site de Strasbourg (SBG).", + "billing_credit_sbg_info": "Le montant correspondant à ces mesures commerciales était mis à disposition sous la forme d’un bon d’achat** valable jusqu’au 31 août 2022 et utilisable sur tous les services OVHcloud. L’attribution de ce bon d’achat était automatique***.", + "billing_credit_sbg_movements_intro": "Vous pouvez consulter l’historique des mouvements sur ce bon d’achat dans le tableau ci-dessous.", + "billing_credit_sbg_tips": "A noter : Le bon d’achat était utilisé pour paiement des factures de renouvellement automatique de vos services existants et ce de manière automatique. Vous pouviez également l’utiliser pour payer vos nouvelles commandes et vos factures de renouvellement manuel.", + "billing_credit_sbg_legal_info1": "*Ces mesures commerciales exceptionnelles vous ont été attribuées à titre personnel en votre qualité de titulaire de ces services.", + "billing_credit_sbg_legal_info2": "**Si vous aviez été facturé pour un nouveau service souscrit après le 10 mars, vous bénéficiiez au titre de ces mesures commerciales d’un avoir équivalent à la première facture du service. Celui-ci a été déduit du bon d’achat, comme indiqué dans l’historique ci-dessus, et figure par ailleurs dans l’onglet Mes factures > Mes avoirs. Ainsi, vos mesures commerciales étaient constituées d’un avoir et d’un bon d’achat.", + "billing_credit_sbg_legal_info3": "***Le bon d’achat et l’avoir éventuel se rapportant aux mesures commerciales SBG étaient rattachés à votre compte client, sans possibilité de pouvoir changer le compte client de rattachement. Ils étaient valables jusqu’au 31 août 2022 inclus. Cette date étant échue, ils ne seront plus utilisables et ne seront ni remplacés ni remboursés. Ils ne pouvaient être cédés, vendus ou transmis à quelque titre que ce soit, de manière gratuite ou payante, à un tiers. Ils n’étaient pas utilisables sur les services SoYouStart et KimSufi. Le bon d’achat n’était pas remplaçable ni remboursable. En cas d’incident empêchant le traitement de votre commande par OVHcloud, celle-ci était annulée et le montant du voucher utilisé pour la commande était recrédité sur le bon d’achat sans prolongation de sa durée de validité. Dans le cas où vous utilisiez votre droit de rétractation pour une commande de service payée totalement ou partiellement avec une partie ou la totalité du bon d’achat, la partie effectivement payée avec le bon d’achat n’était pas remboursable et était recréditée sans prolongation de sa durée de validité." +} diff --git a/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..1e9e3b9e91a7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_fr_FR.json @@ -0,0 +1,40 @@ +{ + "billing_payment_credits": "Mes bons d'achat", + "billing_credits_add": "Ajouter un bon d'achat", + "billing_credits_description": "Vos bons d'achat seront utilisés pour payer tout ou partie de votre commande. Ils s'appliqueront sur le montant HT de votre commande.", + "billing_credits_title": "Mes bons d'achat", + "billing_credits_none": "Vous n'avez pas de bons d'achat", + "billing_credit_balance_header_name": "Nom", + "billing_credit_balance_header_creation_date": "Date de création", + "billing_credit_balance_header_last_update_date": "Dernière mise à jour", + "billing_credit_balance_header_expiration_date": "Date d'expiration", + "billing_credit_balance_header_expiration_amount": "Montant arrivant à expiration", + "billing_credit_balance_header_amount": "Montant", + "billing_credit_balance_header_movements": "Mouvements", + "billing_credit_balance_movements_details": "Détails des mouvements", + "billing_credit_balance_movements_title": "Détails des mouvements de votre bon d'achat {{t0}}", + "billing_credit_balance_movements_back": "Retour à mes bons d'achat", + "billing_credit_balance_movements_header_id": "ID", + "billing_credit_balance_movements_header_date": "Date", + "billing_credit_balance_movements_header_operation": "Opération", + "billing_credit_balance_header_order": "Commande", + "billing_credit_balance_movements_operation_credit": "Crédit", + "billing_credit_balance_movements_operation_debit": "Débit", + "billing_credit_balance_movements_operation_debit_order": "Débit sur la commande {{ orderId }}", + "billing_credit_balance_movements_operation_debit_refund_old": "Émission de l'avoir {{ refundId }}", + "billing_credit_balance_movements_operation_debit_refund": "Émission de l'avoir", + "billing_credit_balance_movements_operation_debit_refund_deduction": "Déduction de l'avoir", + "billing_credit_balance_movements_operation_expiration": "Expiration", + "billing_credit_balance_movements_load_error": "Une erreur est survenue lors du chargement des mouvements de votre bon d'achat.", + "billing_credit_back": "Retourner à mes bons d'achat", + "billing_credit_sbg_title": "Opérations concernant vos mesures commerciales SBG", + "billing_credit_sbg_total_amount": "Montant global des mesures commerciales : {{amount}}", + "billing_credit_sbg_total_balance": "Solde du bon d'achat au {{date}} : {{amount}}", + "billing_credit_sbg_services_intro": "Vous bénéficiiez de mesures commerciales* relatives à votre (vos) service(s) impactés par l’incendie survenu sur notre site de Strasbourg (SBG).", + "billing_credit_sbg_info": "Le montant correspondant à ces mesures commerciales était mis à disposition sous la forme d’un bon d’achat** valable jusqu’au 31 août 2022 et utilisable sur tous les services OVHcloud. L’attribution de ce bon d’achat était automatique***.", + "billing_credit_sbg_movements_intro": "Vous pouvez consulter l’historique des mouvements sur ce bon d’achat dans le tableau ci-dessous.", + "billing_credit_sbg_tips": "A noter : Le bon d’achat était utilisé pour paiement des factures de renouvellement automatique de vos services existants et ce de manière automatique. Vous pouviez également l’utiliser pour payer vos nouvelles commandes et vos factures de renouvellement manuel.", + "billing_credit_sbg_legal_info1": "*Ces mesures commerciales exceptionnelles vous ont été attribuées à titre personnel en votre qualité de titulaire de ces services.", + "billing_credit_sbg_legal_info2": "**Si vous aviez été facturé pour un nouveau service souscrit après le 10 mars, vous bénéficiiez au titre de ces mesures commerciales d’un avoir équivalent à la première facture du service. Celui-ci a été déduit du bon d’achat, comme indiqué dans l’historique ci-dessus, et figure par ailleurs dans l’onglet Mes factures > Mes avoirs. Ainsi, vos mesures commerciales étaient constituées d’un avoir et d’un bon d’achat.", + "billing_credit_sbg_legal_info3": "***Le bon d’achat et l’avoir éventuel se rapportant aux mesures commerciales SBG étaient rattachés à votre compte client, sans possibilité de pouvoir changer le compte client de rattachement. Ils étaient valables jusqu’au 31 août 2022 inclus. Cette date étant échue, ils ne seront plus utilisables et ne seront ni remplacés ni remboursés. Ils ne pouvaient être cédés, vendus ou transmis à quelque titre que ce soit, de manière gratuite ou payante, à un tiers. Ils n’étaient pas utilisables sur les services SoYouStart et KimSufi. Le bon d’achat n’était pas remplaçable ni remboursable. En cas d’incident empêchant le traitement de votre commande par OVHcloud, celle-ci était annulée et le montant du voucher utilisé pour la commande était recrédité sur le bon d’achat sans prolongation de sa durée de validité. Dans le cas où vous utilisiez votre droit de rétractation pour une commande de service payée totalement ou partiellement avec une partie ou la totalité du bon d’achat, la partie effectivement payée avec le bon d’achat n’était pas remboursable et était recréditée sans prolongation de sa durée de validité." +} diff --git a/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_it_IT.json new file mode 100644 index 000000000000..1e0631cae44e --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_it_IT.json @@ -0,0 +1,40 @@ +{ + "billing_payment_credits": "I tuoi voucher", + "billing_credits_add": "Aggiungi un voucher", + "billing_credits_description": "I tuoi voucher saranno utilizzati per saldare totalmente o in parte il tuo ordine. Saranno applicati all'importo IVA esclusa del tuo ordine.", + "billing_credits_title": "I tuoi voucher", + "billing_credits_none": "Non hai voucher", + "billing_credit_balance_header_name": "Nome", + "billing_credit_balance_header_creation_date": "Data di creazione", + "billing_credit_balance_header_last_update_date": "Ultimo aggiornamento", + "billing_credit_balance_header_expiration_date": "Data di scadenza", + "billing_credit_balance_header_expiration_amount": "Importo in scadenza", + "billing_credit_balance_header_amount": "Importo", + "billing_credit_balance_header_movements": "Movimenti", + "billing_credit_balance_movements_details": "Dettagli dei movimenti", + "billing_credit_balance_movements_title": "Dettagli dei movimenti del voucher {{t0}}", + "billing_credit_balance_movements_back": "Ritorna ai tuoi voucher", + "billing_credit_balance_movements_header_date": "Data", + "billing_credit_balance_movements_header_operation": "Operazione", + "billing_credit_balance_header_order": "Ordine", + "billing_credit_balance_movements_operation_credit": "Credito", + "billing_credit_balance_movements_operation_debit": "Debito", + "billing_credit_balance_movements_operation_debit_order": "Addebito sull'ordine {{ orderId }}", + "billing_credit_balance_movements_operation_debit_refund_old": "Emissione del credito {{ refundId }}", + "billing_credit_balance_movements_operation_debit_refund": "Emissione del credito", + "billing_credit_balance_movements_operation_debit_refund_deduction": "Deduzione del credito", + "billing_credit_balance_movements_operation_expiration": "Scadenza", + "billing_credit_balance_movements_load_error": "Si è verificato un errore durante il caricamento dei movimenti del tuo voucher.", + "billing_credit_back": "Ritorna ai tuoi voucher", + "billing_credit_sbg_title": "Operazioni relative alle tue misure commerciali SBG", + "billing_credit_sbg_total_amount": "Importo complessivo delle misure commerciali : {{amount}}", + "billing_credit_sbg_total_balance": "Saldo del voucher al {{date}} : {{amount}}", + "billing_credit_sbg_services_intro": "Ti ricordiamo che le misure commerciali* applicate ai servizi colpiti dall'incendio avvenuto nella nostra sede di Strasburgo (SBG),", + "billing_credit_sbg_info": "il cui importo è stato messo a disposizione sotto forma di voucher**, saranno valide fino al 31 agosto 2022 e utilizzabili su tutti i servizi OVHcloud. L'attribuzione del voucher era automatica***.", + "billing_credit_sbg_movements_intro": "Per consultare lo storico dei movimenti di questo voucher, consulta la tabella qui sotto.", + "billing_credit_sbg_tips": "Importante: Il voucher poteva essere utilizzato per il pagamento delle fatture di rinnovo automatico dei servizi esistenti o per il saldo dei nuovi ordini e delle fatture con rinnovo manuale.", + "billing_credit_sbg_legal_info1": "*Queste misure commerciali eccezionali sono state attribuite a titolo personale in qualità di titolare di questi servizi.", + "billing_credit_sbg_legal_info2": "**Per la fatturazione di nuovi servizi sottoscritti dopo il 10 marzo, queste misure commerciali permettevano di usufruire di un credito equivalente alla prima fattura del servizio. Questo credito è stato detratto dal voucher, come indicato nello storico qui sopra, e compare nella scheda “Le tue fatture” > “Il tuo credito”. Le misure commerciali erano costituite quindi da un credito e un voucher.", + "billing_credit_sbg_legal_info3": "***Il voucher e l'eventuale credito relativi alle misure commerciali SBG erano collegati all’account cliente, senza possibilità di modificare l'account cliente associato, ed erano validi fino al 31 agosto 2022 compreso. Poiché tale data è trascorsa, non saranno più utilizzabili e non potranno essere né sostituiti né rimborsati. Ricordiamo inoltre che non potevano essere ceduti, venduti o trasmessi a terzi a qualsiasi titolo, gratuitamente o a pagamento, né utilizzabili sui servizi So you Start e KimSufi. Il voucher non era sostituibile né rimborsabile. Qualsiasi incidente che avesse impedito a OVHcloud di gestire l'ordine ne avrebbe comportato l’annullamento e l'importo del voucher utilizzato per l'ordine sarebbe stato riaccreditato sul voucher senza proroga della durata di validità. In caso di decisione di avvalersi del diritto di recesso per l’ordine di servizi pagati totalmente o parzialmente con una parte o la totalità del voucher, la parte effettivamente pagata con il voucher non era rimborsabile e quindi riaccreditata senza proroga della durata di validità.", + "billing_credit_balance_movements_header_id": "ID" +} diff --git a/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..7d3dc014bb93 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_pl_PL.json @@ -0,0 +1,40 @@ +{ + "billing_payment_credits": "Moje vouchery", + "billing_credits_add": "Wprowadź kod vouchera", + "billing_credits_description": "Twoje vouchery zostaną wykorzystane do opłacenia całości lub części zamówienia. Zostaną zastosowane do kwoty netto zamówienia.", + "billing_credits_title": "Moje vouchery", + "billing_credits_none": "Nie posiadasz voucherów", + "billing_credit_balance_header_name": "Nazwisko", + "billing_credit_balance_header_creation_date": "Data utworzenia", + "billing_credit_balance_header_last_update_date": "Ostatnia aktualizacja", + "billing_credit_balance_header_expiration_date": "Data wygasania", + "billing_credit_balance_header_expiration_amount": "Kwota, której termin płatności wkrótce upłynie", + "billing_credit_balance_header_amount": "Kwota", + "billing_credit_balance_header_movements": "Transakcje", + "billing_credit_balance_movements_details": "Szczegóły transakcji", + "billing_credit_balance_movements_title": "Szczegóły transakcji dotyczące vouchera {{t0}}", + "billing_credit_balance_movements_back": "Powrót do voucherów", + "billing_credit_balance_movements_header_date": "Data", + "billing_credit_balance_movements_header_operation": "Operacja ", + "billing_credit_balance_header_order": "Zamówienie", + "billing_credit_balance_movements_operation_credit": "Zasilenie", + "billing_credit_balance_movements_operation_debit": "Wykorzystane środki", + "billing_credit_balance_movements_operation_debit_order": "Obciążenie rachunku w związku z zamówieniem {{orderId}}", + "billing_credit_balance_movements_operation_debit_refund_old": "Wystawienie noty kredytowej {{refundId}}", + "billing_credit_balance_movements_operation_debit_refund": "Wystawienie noty kredytowej", + "billing_credit_balance_movements_operation_debit_refund_deduction": "Wykorzystana kwota", + "billing_credit_balance_movements_operation_expiration": "Data ważności", + "billing_credit_balance_movements_load_error": "Wystąpił błąd podczas pobierania listy transakcji powiązanych z Twoim voucherem.", + "billing_credit_back": "Powrót do voucherów", + "billing_credit_sbg_title": "Operacje dotyczące środków przyznanych w związku z incydentem w SBG", + "billing_credit_sbg_total_amount": "Łączna kwota środków: {{amount}}", + "billing_credit_sbg_total_balance": "Saldo vouchera na dzień {{date}} : {{amount}}", + "billing_credit_sbg_services_intro": "Skorzystaliście Państwo ze środków* przyznanych w odniesieniu do usług(i), które zostały dotknięte pożarem w obiekcie w Strasburgu (SBG).", + "billing_credit_sbg_info": "Kwota przyznana w ramach środków została udostępniona w formie vouchera*, który obowiązywał do dnia 31 sierpnia 2022 r., i który można było wykorzystać na wszystkie usługi OVHcloud. Voucher został przyznany automatycznie**.", + "billing_credit_sbg_movements_intro": "Historię transakcji zrealizowanych przy użyciu vouchera można sprawdzić w poniższej tabeli.", + "billing_credit_sbg_tips": "Uwaga: Voucher był używany do opłacania faktur za automatyczne odnowienie Twoich usług. Ponadto można go było wykorzystać do opłacenia nowych zamówień oraz uregulowania faktur za odnowienie ręczne.", + "billing_credit_sbg_legal_info1": "*Te wyjątkowe środki zostały Państwu przyznane jako posiadaczowi tych usług. ", + "billing_credit_sbg_legal_info2": "**Jeżeli po 10 marca 2021 została wystawiona faktura za nową usługę, otrzymaliście Państwo środki równe kwocie pierwszej faktury za usługę. Środki te zostały odjęte od wartości vouchera, jak wskazano w powyższej historii i pojawiły się w zakładce Moje faktury > Moje zasilenia. Przyznane środki składały się zatem z zasilenia i vouchera.", + "billing_credit_sbg_legal_info3": "*** Voucher i ewentualne zasilenie przyznane w związku ze skutkami incydentu w SBG były przypisane do Twojego konta klienta. Konta tego nie można było zmienić na inne. Środki były ważne do dnia 31 sierpnia 2022 r. włącznie. Po tym terminie nie będzie już ich można wykorzystać, nie będą też podlegały wymianie ani zwrotowi. Środków nie wolno było przekazywać osobom trzecim w jakikolwiek sposób - nieodpłatnie lub płatnie. Nie można ich było również wykorzystać w przypadku usług SoYouStart i Kimsufi. Voucher nie podlegał wymianie ani zwrotowi. W przypadku wystąpienia zdarzenia uniemożliwiającego OVHcloud realizację zamówienia, zamówienie było anulowane, a kwota wykorzystanego w tym zamówieniu vouchera była ponownie do niego przypisywana bez przedłużania okresu jego ważności. W przypadku skorzystania z prawa do odstąpienia od umowy w odniesieniu do zamówienia usługi, które zostało opłacone w całości lub w części przy użyciu vouchera, część opłacona voucherem nie podlegała zwrotowi i była ponownie do niego przypisywana bez przedłużenia okresu jego ważności.", + "billing_credit_balance_movements_header_id": "ID" +} diff --git a/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..a7d91cc26348 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/credits/translations/Messages_pt_PT.json @@ -0,0 +1,40 @@ +{ + "billing_payment_credits": "Os meus vouchers", + "billing_credits_add": "Adicionar voucher", + "billing_credits_description": "Os seus vouchers serão utilizados para pagar a totalidade ou parte da sua encomenda. Estes aplicar-se-ão ao montante s/IVA da sua encomenda.", + "billing_credits_title": "Os meus vouchers", + "billing_credits_none": "Não possui vouchers", + "billing_credit_balance_header_name": "Nome", + "billing_credit_balance_header_creation_date": "Data de criação", + "billing_credit_balance_header_last_update_date": "Última atualização", + "billing_credit_balance_header_expiration_date": "Data de expiração", + "billing_credit_balance_header_expiration_amount": "Montante prestes a expirar", + "billing_credit_balance_header_amount": "Montante", + "billing_credit_balance_header_movements": "Movimentos", + "billing_credit_balance_movements_details": "Detalhes dos movimentos", + "billing_credit_balance_movements_title": "Detalhes dos movimentos do seu voucher {{t0}}", + "billing_credit_balance_movements_back": "Voltar aos meus vouchers", + "billing_credit_balance_movements_header_date": "Data", + "billing_credit_balance_movements_header_operation": "Operação", + "billing_credit_balance_header_order": "Comando", + "billing_credit_balance_movements_operation_credit": "Crédito", + "billing_credit_balance_movements_operation_debit": "Débito", + "billing_credit_balance_movements_operation_debit_order": "Débito na encomenda {{ orderId }}", + "billing_credit_balance_movements_operation_debit_refund_old": "Emissão da nota de crédito {{ refundId }}", + "billing_credit_balance_movements_operation_debit_refund": "Emissão da nota de crédito", + "billing_credit_balance_movements_operation_debit_refund_deduction": "Dedução da nota de crédito", + "billing_credit_balance_movements_operation_expiration": "Expiração", + "billing_credit_balance_movements_load_error": "Ocorreu um erro aquando do carregamento dos movimentos do seu voucher.", + "billing_credit_back": "Voltar aos meus vouchers", + "billing_credit_sbg_title": "Operações relativas às suas medidas comerciais SBG", + "billing_credit_sbg_total_amount": "Montante total das medidas comerciais : {{amount}}", + "billing_credit_sbg_total_balance": "Saldo do voucher a {{date}} : {{amount}}", + "billing_credit_sbg_services_intro": "Teve direito a usufruir de medidas comerciais* relativas ao(s) seu(s) serviço(s) afetado(s) pelo incêndio ocorrido em Estrasburgo (SBG).", + "billing_credit_sbg_info": "O montante correspondente a estas medidas comerciais foi disponibilizado sob a forma de um voucher** válido até 31 de agosto de 2022 e utilizável em todos os serviços da OVHcloud. A atribuição deste voucher era automática***.", + "billing_credit_sbg_movements_intro": "Pode consultar o histórico de movimentos deste voucher na tabela abaixo.", + "billing_credit_sbg_tips": "Nota: o voucher podia ser utilizado para o pagamento das faturas de renovação automática dos seus serviços, de forma automática. Também era possível utilizá-lo para pagar as suas novas encomendas e as suas faturas com renovação manual.", + "billing_credit_sbg_legal_info1": "* Estas medidas comerciais excecionais foram-lhe atribuídas a título pessoal enquanto titular destes serviços.", + "billing_credit_sbg_legal_info2": "** Se lhe tivesse sido faturado um novo serviço subscrito depois de 10 de março, graças a estas medidas comerciais poderia ter usufruído de uma nota de crédito equivalente à primeira fatura do serviço. Esta nota de crédito foi deduzida do voucher, como indicado no histórico de movimentos anterior, e figura também no separador Faturas > Notas de crédito. Assim, as medidas comerciais eram compostas por uma nota de crédito e um voucher.", + "billing_credit_sbg_legal_info3": "*** O voucher e a possível nota de crédito relativos às medidas comerciais SBG foram associados à sua conta de cliente. Não é possível alterar a conta de cliente associada. Tanto o voucher como a nota de crédito eram válidos até 31 de agosto de 2022, inclusive. A partir dessa data, deixou de ser possível utilizá-los, bem como substituí-los ou reembolsá-los. Além disso, não podem ser cedidos, vendidos nem transmitidos por nenhum motivo, de forma gratuita ou paga, a terceiros. Não podem ser usados nos serviços So you Start e Kimsufi. O voucher não era substituível nem reembolsável. Em caso de incidente que impedisse o tratamento da sua encomenda pela OVHcloud, esta seria anulada e o montante do voucher utilizado para a encomenda seria novamente creditado no voucher, sem prorrogar o período de validade. Se decidiu exercer o seu direito de retratação para uma encomenda de serviço paga total ou parcialmente com uma parte ou a totalidade do voucher, a parte efetivamente paga com o voucher não era reembolsável e seria novamente creditada no voucher sem prorrogar o período de validade.", + "billing_credit_balance_movements_header_id": "ID" +} diff --git a/packages/manager/modules/new-billing/src/payment/fidelity/billing-fidelity.component.js b/packages/manager/modules/new-billing/src/payment/fidelity/billing-fidelity.component.js new file mode 100644 index 000000000000..ef4949f195f3 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/fidelity/billing-fidelity.component.js @@ -0,0 +1,7 @@ +import controller from './billing-fidelity.controller'; +import template from './billing-fidelity.html'; + +export default { + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/payment/fidelity/billing-fidelity.controller.js b/packages/manager/modules/new-billing/src/payment/fidelity/billing-fidelity.controller.js new file mode 100644 index 000000000000..c5a4f52e3585 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/fidelity/billing-fidelity.controller.js @@ -0,0 +1,161 @@ +export default class { + /* @ngInject */ + constructor( + $filter, + $scope, + $timeout, + $translate, + BillingFidelity, + BillingmessageParser, + BillingdateRangeSelection, + coreConfig, + ) { + this.$filter = $filter; + this.$scope = $scope; + this.$timeout = $timeout; + this.$translate = $translate; + this.BillingFidelity = BillingFidelity; + this.BillingmessageParser = BillingmessageParser; + this.BillingdateRangeSelection = BillingdateRangeSelection; + this.coreConfig = coreConfig; + } + + $onInit() { + this.fidelityLoading = false; + this.fidelityAccountLoading = false; + this.fidelityAccount = null; + this.showCustomRangeDate = false; + this.currency = null; + this.today = moment(); + + // Set items count by page + this.itemsPerPage = 10; + this.tasksId = []; + this.tasksDetails = []; + + this.loaders = { + tasks: true, + }; + + this.currency = this.coreConfig.getUser().currency; + this.dateFrom = this.BillingdateRangeSelection.dateFrom; + this.dateTo = this.BillingdateRangeSelection.dateTo; + return this.getFidelityAccount(); + } + + getMovements({ offset, pageSize }) { + return this.BillingFidelity.getMovements( + this.BillingdateRangeSelection.dateFrom, + this.BillingdateRangeSelection.dateTo, + ).then((movements) => ({ + data: movements + .reverse() + .slice(offset - 1, offset + pageSize - 1) + .map((movementId) => ({ + movementId, + })), + meta: { + currentOffset: offset, + pageCount: Math.ceil(movements.length / pageSize), + pageSize, + totalCount: movements.length, + }, + })); + } + + getMovementDetails({ movementId }) { + return this.BillingFidelity.getMovementsDetails(movementId); + } + + onBasicDateRangeChange(_dateFrom) { + this.showCustomRangeDate = false; + this.dateFrom = moment() + .subtract(parseInt(_dateFrom, 10), 'month') + .startOf('month'); + + this.dateTo = moment(); + + this.onDateRangeChange(this.dateFrom, this.dateTo); + } + + onDateRangeChange(dateFrom, dateTo) { + this.fidelityLoading = true; + this.BillingdateRangeSelection.dateFrom = dateFrom; + this.BillingdateRangeSelection.dateTo = dateTo; + + this.$timeout(() => { + return this.getMovements({ + offset: 1, + pageSize: this.itemsPerPage, + }).finally(() => { + this.fidelityLoading = false; + }); + }, 100); + } + + onCustomDateRangeChange([_dateFrom, _dateTo]) { + let dateFrom; + let dateTo; + + if (_dateFrom && _dateTo) { + dateFrom = moment(_dateFrom).startOf('day'); + if (moment(dateFrom).isAfter(dateTo)) { + dateTo = dateFrom.endOf('day'); + } + + dateTo = moment(_dateTo).endOf('day'); + if (moment(dateTo).isBefore(dateFrom)) { + dateFrom = dateTo.startOf('day'); + } + + this.onDateRangeChange(dateFrom, dateTo); + } + } + + setMessage(message, data) { + const msg = this.BillingmessageParser(message, data); + this.message = msg.message; + this.alertType = msg.alertType; + } + + getLastUpdate(format) { + if (this.fidelityAccount) { + return this.$filter('date')(this.fidelityAccount.lastUpdate, format); + } + return ''; + } + + setAction(action, data) { + if (action) { + this.$scope.currentAction = action; + this.$scope.currentActionData = data; + + this.$scope.stepPath = `billing/payment/fidelity/${this.$scope.currentAction}/billing-fidelity-${this.$scope.currentAction}.html`; + $('#currentAction').modal({ + keyboard: true, + backdrop: 'static', + }); + } + } + + getFidelityAccount() { + this.fidelityAccountLoading = true; + return this.BillingFidelity.getFidelityAccount() + .then((fidelityAccount) => { + this.fidelityAccount = fidelityAccount; + }) + .catch((data) => { + if (data.status !== 404) { + this.setMessage( + this.$translate.instant('fidelity_get_accounts_error'), + data.data, + ); + } else { + this.fidelityAccount = null; + } + }) + .finally(() => { + this.fidelityAccountLoading = false; + }); + } +} diff --git a/packages/manager/modules/new-billing/src/payment/fidelity/billing-fidelity.html b/packages/manager/modules/new-billing/src/payment/fidelity/billing-fidelity.html new file mode 100644 index 000000000000..9c0a31b0b1eb --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/fidelity/billing-fidelity.html @@ -0,0 +1,190 @@ +
+
+ + +

+ +

+

+
+
+ +
+
+
+ + + + + + + + + + + + +

+
+ + + + +
+
+
+
+ +
+ + + + + + + + + + + + + - + + + + + - + + + + + + +
+ + +
diff --git a/packages/manager/modules/new-billing/src/payment/fidelity/billing-fidelity.module.js b/packages/manager/modules/new-billing/src/payment/fidelity/billing-fidelity.module.js new file mode 100644 index 000000000000..8e3d31aabfb3 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/fidelity/billing-fidelity.module.js @@ -0,0 +1,36 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import component from './billing-fidelity.component'; +import routing from './billing-payment-fidelity.routes'; +import service from './billing-fidelity.service'; +import creditOrderCtrl from './creditOrder/billing-fidelity-creditOrder.controller'; +import creditOrderTpl from './creditOrder/billing-fidelity-creditOrder.html'; + +const moduleName = 'ovhManagerBillingPaymentFidelity'; + +angular + .module(moduleName, [ + angularTranslate, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .config(routing) + .component('billingFidelityComponent', component) + .controller('Billing.controllers.FidelityCreditOrder', creditOrderCtrl) + .service('BillingFidelity', service) + .run( + /* @ngInject */ ($templateCache) => { + $templateCache.put( + 'billing/payment/fidelity/creditOrder/billing-fidelity-creditOrder.html', + creditOrderTpl, + ); + }, + ) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/payment/fidelity/billing-fidelity.service.js b/packages/manager/modules/new-billing/src/payment/fidelity/billing-fidelity.service.js new file mode 100644 index 000000000000..75e1dd610943 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/fidelity/billing-fidelity.service.js @@ -0,0 +1,56 @@ +export default /* @ngInject */ function BillingFidelity($http, $cacheFactory) { + const fidelityProxyPath = 'apiv6/me/fidelityAccount'; + + const fidelityAccountCache = $cacheFactory('UNIVERS_BILLING_FIDELITYACCOUNT'); + const movementsCache = $cacheFactory('UNIVERS_BILLING_FIDELITYMOVEMENTS'); + + this.getFidelityAccount = function getFidelityAccount() { + return $http + .get(fidelityProxyPath, { + cache: fidelityAccountCache, + }) + .then((response) => response.data); + }; + + this.getMovements = function getMovements(_dateStart, _dateEnd) { + let dateStart = _dateStart; + let dateEnd = _dateEnd; + + if (_dateStart) { + dateStart = moment(_dateStart) + .startOf('day') + .toISOString(); + } + if (_dateEnd) { + dateEnd = moment(_dateEnd) + .endOf('day') + .toISOString(); + } + + return $http + .get([fidelityProxyPath, 'movements'].join('/'), { + cache: movementsCache, + params: { + 'date.from': dateStart, + 'date.to': dateEnd, + }, + }) + .then((response) => response.data); + }; + + this.getMovementsDetails = function getMovementsDetails(movementId) { + return $http + .get([fidelityProxyPath, 'movements', movementId].join('/'), { + cache: movementsCache, + }) + .then((response) => response.data); + }; + + this.creditOrder = function creditOrder(amount) { + return $http + .post([fidelityProxyPath, 'creditOrder'].join('/'), { + amount, + }) + .then((response) => response.data); + }; +} diff --git a/packages/manager/modules/new-billing/src/payment/fidelity/billing-payment-fidelity.routes.js b/packages/manager/modules/new-billing/src/payment/fidelity/billing-payment-fidelity.routes.js new file mode 100644 index 000000000000..2bff49ec111b --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/fidelity/billing-payment-fidelity.routes.js @@ -0,0 +1,18 @@ +export default /* @ngInject */ ( + $stateProvider, + $urlRouterProvider, + coreConfigProvider, +) => { + if (coreConfigProvider.isRegion('EU')) { + const name = 'billing.payment.fidelity'; + + $stateProvider.state(name, { + url: '/fidelity', + component: 'billingFidelityComponent', + resolve: { + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('billing_payment_fidelity'), + }, + }); + } +}; diff --git a/packages/manager/modules/new-billing/src/payment/fidelity/creditOrder/billing-fidelity-creditOrder.controller.js b/packages/manager/modules/new-billing/src/payment/fidelity/creditOrder/billing-fidelity-creditOrder.controller.js new file mode 100644 index 000000000000..370737fc87f2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/fidelity/creditOrder/billing-fidelity-creditOrder.controller.js @@ -0,0 +1,155 @@ +import { CREDIT } from '../../../constants/fidelityEvent.constants'; + +export default /* @ngInject */ ( + $scope, + $timeout, + $translate, + atInternet, + BillingFidelity, + Alerter, +) => { + $scope.creditOrder = { + amount: 1000, + account: null, + BC: null, + loading: false, + erreurMin: false, + erreurMax: false, + erreurFormat: false, + min: 1000, + max: 1500000, + }; + + function getFidelityAccount() { + $scope.creditOrder.loading = true; + + BillingFidelity.getFidelityAccount() + .then( + (fidelityAccount) => { + $scope.creditOrder.account = fidelityAccount; + }, + (data) => { + $scope.setMessage( + $translate.instant('fidelity_get_accounts_error'), + data.data, + ); + }, + ) + .finally(() => { + $scope.creditOrder.loading = false; + }); + } + + function isAmount(val) { + if (val && /^[0-9]+$/.test(val)) { + return val; + } + return false; + } + + function init() { + getFidelityAccount(); + } + + $scope.getBC = function getBC() { + $scope.creditOrder.loading = true; + $scope.creditOrder.BC = null; + + const amount = isAmount($scope.creditOrder.amount); + if (amount) { + BillingFidelity.creditOrder(amount).then( + (data) => { + $scope.$emit(CREDIT); + $scope.creditOrder.BC = data; + $scope.creditOrder.loading = false; + Alerter.success( + $translate.instant('fidelity_creditOrder_submit_success', { + t0: amount, + }), + 'billingPaymentFidelityAlert', + ); + }, + () => { + $scope.creditOrder.loading = false; + $scope.resetAction(); + Alerter.alertFromSWS( + $translate.instant('fidelity_creditOrder_submit_error'), + 'error', + 'billingPaymentFidelityAlert', + ); + }, + ); + } + }; + + $scope.displayBC = function displayBC() { + $scope.resetAction(); + window.open($scope.creditOrder.BC.url, '_blank'); + + atInternet.trackClick({ + name: 'validation_credit_loyalty_account', + type: 'action', + chapter1: 'loyalty_account', + }); + }; + + $scope.checkAmount = function checkAmount() { + let oldBalance; + let balance; + + if ($scope.creditOrder.amount === '') { + $scope.creditOrder.erreurMin = false; + $scope.creditOrder.erreurMax = false; + $scope.creditOrder.erreurFormat = false; + return; + } + + const amount = isAmount($scope.creditOrder.amount); + if (amount) { + $scope.creditOrder.erreurFormat = false; + + oldBalance = $scope.creditOrder.account.balance; + balance = $scope.creditOrder.account.balance + amount; + + if (amount > $scope.creditOrder.max) { + $scope.creditOrder.erreurMax = true; + } else { + $scope.creditOrder.erreurMax = false; + } + + if (oldBalance >= 0 && amount < $scope.creditOrder.min) { + $scope.creditOrder.erreurMin = true; + } else if ( + oldBalance < 0 && + (balance < 0 || amount < $scope.creditOrder.min) + ) { + $scope.creditOrder.erreurMin = true; + } else { + $scope.creditOrder.erreurMin = false; + } + } else { + $scope.creditOrder.erreurFormat = true; + $scope.creditOrder.erreurMin = false; + $scope.creditOrder.erreurMax = false; + } + }; + + $scope.renewStepValidator = function renewStepValidator() { + return !( + $scope.creditOrder.erreurMin || + $scope.creditOrder.erreurMax || + $scope.creditOrder.erreurFormat || + !$scope.creditOrder.amount + ); + }; + + $scope.resetAction = function resetAction() { + $('#currentAction').modal('hide'); + $scope.currentActionData = null; + $timeout(() => { + $scope.stepPath = ''; + }, 300); + }; + + init(); +}; diff --git a/packages/manager/modules/new-billing/src/payment/fidelity/creditOrder/billing-fidelity-creditOrder.html b/packages/manager/modules/new-billing/src/payment/fidelity/creditOrder/billing-fidelity-creditOrder.html new file mode 100644 index 000000000000..ec315beaa295 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/fidelity/creditOrder/billing-fidelity-creditOrder.html @@ -0,0 +1,81 @@ +
+
+
+

+ + + + + + + + +
+ +
+
+

+

+ + + +

+
+ + +
+ +
+
+
+
diff --git a/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_de_DE.json new file mode 100644 index 000000000000..0f17e4578698 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_de_DE.json @@ -0,0 +1,3 @@ +{ + "billing_payment_fidelity": "Meine Punkte" +} diff --git a/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_en_GB.json new file mode 100644 index 000000000000..373d25b3d678 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_en_GB.json @@ -0,0 +1,3 @@ +{ + "billing_payment_fidelity": "My points" +} diff --git a/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_es_ES.json new file mode 100644 index 000000000000..a5366abdda6c --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_es_ES.json @@ -0,0 +1,3 @@ +{ + "billing_payment_fidelity": "Mis puntos" +} diff --git a/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..9c58c0594b43 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_fr_CA.json @@ -0,0 +1,3 @@ +{ + "billing_payment_fidelity": "Mes points" +} diff --git a/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..9c58c0594b43 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_fr_FR.json @@ -0,0 +1,3 @@ +{ + "billing_payment_fidelity": "Mes points" +} diff --git a/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_it_IT.json new file mode 100644 index 000000000000..5b9f038771bf --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_it_IT.json @@ -0,0 +1,3 @@ +{ + "billing_payment_fidelity": "I miei punti" +} diff --git a/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..28dd119be22d --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_pl_PL.json @@ -0,0 +1,3 @@ +{ + "billing_payment_fidelity": "Moje punkty" +} diff --git a/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..0a407740bb17 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/fidelity/translations/Messages_pt_PT.json @@ -0,0 +1,3 @@ +{ + "billing_payment_fidelity": "Os meus pontos" +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/component.js b/packages/manager/modules/new-billing/src/payment/method/add/component.js new file mode 100644 index 000000000000..75ab6accff2b --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/component.js @@ -0,0 +1,23 @@ +import controller from './controller'; +import template from './index.html'; + +export default { + name: 'billingPaymentMethodAdd', + controller, + template, + bindings: { + addSteps: '<', + callback: '<', + currentUser: '<', + defaultPaymentMethodIntegration: '<', + hasAllowDefaultChoiceForFirstPaymentMethod: '<', + isLastStep: '<', + isStepVisible: '<', + getBackButtonHref: '<', + model: '<', + onPaymentMethodAdded: '<', + onPaymentMethodAddError: '<', + paymentMethods: '<', + isDisplayableRupayCreditCardInfoBanner: '<', + }, +}; diff --git a/packages/manager/modules/new-billing/src/payment/method/add/constants.js b/packages/manager/modules/new-billing/src/payment/method/add/constants.js new file mode 100644 index 000000000000..6db3d2ecd517 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/constants.js @@ -0,0 +1,10 @@ +export const CREDITCARD_FOOTPRINT_AMOUNT = '1€'; +export const PAYMENT_RUPAY_CREDIT_CARD_CHARGES_FEATURE_ID = + 'payments:rupay-message'; +export const CHARGES = 2; + +export default { + CREDITCARD_FOOTPRINT_AMOUNT, + PAYMENT_RUPAY_CREDIT_CARD_CHARGES_FEATURE_ID, + CHARGES, +}; diff --git a/packages/manager/modules/new-billing/src/payment/method/add/controller.js b/packages/manager/modules/new-billing/src/payment/method/add/controller.js new file mode 100644 index 000000000000..4ec25e66a04b --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/controller.js @@ -0,0 +1,185 @@ +import get from 'lodash/get'; +import isFunction from 'lodash/isFunction'; +import set from 'lodash/set'; + +import { CREDITCARD_FOOTPRINT_AMOUNT, CHARGES } from './constants'; + +export default class BillingPaymentMethodAddCtrl { + /* @ngInject */ + constructor( + $translate, + Alerter, + coreURLBuilder, + ovhContacts, + ovhPaymentMethod, + ovhPaymentMethodHelper, + OVH_PAYMENT_METHOD_TYPE, + OVH_PAYMENT_METHOD_INTEGRATION_TYPE, + coreConfig, + ) { + this.$translate = $translate; + this.Alerter = Alerter; + this.coreURLBuilder = coreURLBuilder; + this.ovhContacts = ovhContacts; + this.ovhPaymentMethod = ovhPaymentMethod; + this.ovhPaymentMethodHelper = ovhPaymentMethodHelper; + this.OVH_PAYMENT_METHOD_TYPE = OVH_PAYMENT_METHOD_TYPE; + this.OVH_PAYMENT_METHOD_INTEGRATION_TYPE = OVH_PAYMENT_METHOD_INTEGRATION_TYPE; + this.coreConfig = coreConfig; + this.registrationCharges = `${CHARGES}${ + this.coreConfig.getUser().currency.code + }`; + + // other attributes used in view + this.creditCardFootprintAmount = CREDITCARD_FOOTPRINT_AMOUNT; + this.integrationSubmitFunction = null; + + this.loading = { + redirecting: false, + }; + + this.hostname = window.location.hostname; + } + + initializeStepper() { + this.componentInitialParams = null; + } + + /* ================================ + = Callbacks = + ================================= */ + + /* ---------- Integration callbacks ---------- */ + + onPaymentMethodIntegrationInitialized(submitFn, initialParams = {}) { + // set integration submit function to give the possibility to submit + // some integration types (e.g.: redirect, vantivIframe). + this.integrationSubmitFunction = submitFn; + + // return specific options for integration rendering + // depending on the payment method type integration value. + return initialParams; + } + + onPaymentMethodIntegrationSubmit(componentAdditionalParams = {}) { + const postParams = { + default: this.model.setAsDefault, + ...(this.model.selectedPaymentMethodType.isHandleByComponent() + ? componentAdditionalParams + : {}), + }; + + if (this.model.selectedPaymentMethodType.isRequiringContactId()) { + const { billingContact } = this.model; + + // if no id to contact, we need to create it first before adding payment method + if (!get(billingContact, 'id')) { + // force non needed value for contact creation + // this should be done in component + if (!billingContact.legalForm) { + billingContact.legalForm = 'individual'; + } + if (!billingContact.language) { + billingContact.language = this.currentUser.language; + } + + // create a new contact + return this.ovhContacts + .createContact(billingContact) + .then((contact) => { + set(postParams, 'billingContactId', contact.id); + return postParams; + }); + } + + set(postParams, 'billingContactId', billingContact.id); + } + + return postParams; + } + + onPaymentMethodIntegrationSubmitError(error) { + this.loading.redirecting = true; + this.onPaymentMethodAddError(error); + } + + onPaymentMethodIntegrationSuccess(paymentMethod, selectedPaymentMethodType) { + this.loading.redirecting = true; + this.onPaymentMethodAdded(paymentMethod, selectedPaymentMethodType); + } + + /* ---------- OuiStepper callbacks ---------- */ + + onPaymentMethodAddStepperFinish() { + if (this.model.selectedPaymentMethodType.isHandleByComponent()) { + this.componentInitialParams = this.onPaymentMethodIntegrationInitialized( + null, + { + paymentMethod: this.model.selectedPaymentMethodType, + setAsDefault: this.model.setAsDefault, + }, + ); + } + + // call integrationSubmitFunction if provided + if (isFunction(this.integrationSubmitFunction)) { + return this.integrationSubmitFunction(); + } + + if (this.addSteps.bankAccount.isVisible()) { + const callback = this.coreURLBuilder.buildURL( + 'dedicated', + '#/billing/payment/method', + ); + return this.ovhPaymentMethod + .addPaymentMethod(this.model.selectedPaymentMethodType, { + formData: window.btoa( + JSON.stringify({ + bic: this.model.bankAccount.bic, + iban: this.model.bankAccount.iban, + ownerAddress: this.model.billingAddress.ownerAddress, + ownerName: this.model.billingAddress.ownerName, + }), + ), + callbackUrl: { + success: callback, + pending: callback, + error: callback, + cancel: callback, + failure: callback, + }, + default: this.model.setAsDefault, + register: true, + description: this.ovhPaymentMethodHelper.getPaymentMethodTypeText( + this.model.selectedPaymentMethodType, + ), + }) + .then((paymentMethod) => + this.onPaymentMethodIntegrationSuccess( + paymentMethod, + this.model.selectedPaymentMethodType, + ), + ) + .catch((error) => this.onPaymentMethodIntegrationSubmitError(error)); + } + + return true; + } + + /* ----- End of Callbacks ------ */ + + /* ============================ + = Hooks = + ============================= */ + + $onInit() { + return this.ovhPaymentMethodHelper + .hasSpecificCrossBorderSentenceForCardPayment() + .then((hasSpecificCrossBorderSentenceForCardPayment) => { + // display or not the specific cross border sentence for given subsidiaries + this.hasSpecificCrossBorderSentenceForCardPayment = hasSpecificCrossBorderSentenceForCardPayment; + }); + } + + /* ----- End of Hooks ------ */ +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/index.html b/packages/manager/modules/new-billing/src/payment/method/add/index.html new file mode 100644 index 000000000000..c7bca142a21c --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/index.html @@ -0,0 +1,163 @@ +
+
+ + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + +
+
+ + + + +
+
+ + + + + + + + +
+ + +
+

+ + + +
+
+
+
diff --git a/packages/manager/modules/new-billing/src/payment/method/add/index.js b/packages/manager/modules/new-billing/src/payment/method/add/index.js new file mode 100644 index 000000000000..12c806c52758 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/index.js @@ -0,0 +1,33 @@ +import angular from 'angular'; + +import angularTranslate from 'angular-translate'; +import '@ovh-ux/ui-kit'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import ngOvhPaymentMethod from '@ovh-ux/ng-ovh-payment-method'; +import ovhManagerCore from '@ovh-ux/manager-core'; + +import routing from './routing'; +import component from './component'; + +import billingContactViewModule from './views/billingContact'; +import bankAccountViewModule from './views/bankAccount'; +import legacyBillingAddressViewModule from './views/legacyBillingAddress'; + +const moduleName = 'ovhBillingPaymentMethodAdd'; + +angular + .module(moduleName, [ + angularTranslate, + 'oui', + ngTranslateAsyncLoader, + ngOvhPaymentMethod, + ovhManagerCore, + billingContactViewModule, + bankAccountViewModule, + legacyBillingAddressViewModule, + ]) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */) + .component(component.name, component); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/payment/method/add/routing.js b/packages/manager/modules/new-billing/src/payment/method/add/routing.js new file mode 100644 index 000000000000..7df0d7cc3b3d --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/routing.js @@ -0,0 +1,200 @@ +import get from 'lodash/get'; +import component from './component'; +import { PAYMENT_RUPAY_CREDIT_CARD_CHARGES_FEATURE_ID } from './constants'; + +export default /* @ngInject */ ($stateProvider, $urlRouterProvider) => { + const name = 'billing.payment.method.add'; + + $stateProvider.state(name, { + url: '/add?callbackUrl&status&redirectResult&paymentMethodId&transactionId', + views: { + '@billing.payment': { + component: component.name, + }, + 'bankAccount@billing.payment.method.add': { + component: 'paymentMethodAddBankAccountView', + }, + 'bankAccountOwner@billing.payment.method.add': { + component: 'paymentMethodAddLegacyBillingAddressView', + }, + 'billingContact@billing.payment.method.add': { + component: 'paymentMethodAddBillingContactView', + }, + }, + resolve: { + addSteps: /* @ngInject */ ( + model, + OVH_PAYMENT_METHOD_INTEGRATION_TYPE, + OVH_PAYMENT_METHOD_TYPE, + ) => ({ + paymentMethodType: { + name: 'paymentMethodType', + loading: true, + isVisible: () => true, + isLastStep: () => { + const paymentMethodType = model.selectedPaymentMethodType; + + return [ + OVH_PAYMENT_METHOD_INTEGRATION_TYPE.IN_CONTEXT, + OVH_PAYMENT_METHOD_INTEGRATION_TYPE.REDIRECT, + ].includes(paymentMethodType.integration); + }, + }, + bankAccount: { + name: 'bankAccount', + position: 1, + isVisible: () => + model.selectedPaymentMethodType.paymentType === + OVH_PAYMENT_METHOD_TYPE.BANK_ACCOUNT, + isLastStep: () => false, + }, + bankAccountOwner: { + name: 'bankAccountOwner', + position: 2, + isVisible: () => + model.selectedPaymentMethodType.paymentType === + OVH_PAYMENT_METHOD_TYPE.BANK_ACCOUNT, + isLastStep: () => true, + }, + billingContact: { + // for US only + name: 'billingContact', + position: 1, + loading: false, + isVisible: () => + model.selectedPaymentMethodType.isRequiringContactId(), + isLastStep: () => false, + }, + paymentMethodIntegration: { + name: 'paymentMethodIntegration', + position: 2, + loading: false, + isVisible: () => + model.selectedPaymentMethodType.isRequiringContactId(), + isLastStep: () => true, + }, + }), + + callback: /* @ngInject */ ($location) => $location.search(), + + isDisplayableRupayCreditCardInfoBanner: /* @ngInject */ ( + ovhFeatureFlipping, + ) => + ovhFeatureFlipping + .checkFeatureAvailability( + PAYMENT_RUPAY_CREDIT_CARD_CHARGES_FEATURE_ID, + ) + .then((featureAvailability) => + featureAvailability.isFeatureAvailable( + PAYMENT_RUPAY_CREDIT_CARD_CHARGES_FEATURE_ID, + ), + ), + + defaultPaymentMethodIntegration: /* @ngInject */ ( + $location, + ovhPaymentMethodHelper, + ) => { + return Object.keys($location.search()).length > 0 + ? ovhPaymentMethodHelper.constructor.getCallbackIntegrationTypeRelated( + $location.search(), + ) + : null; + }, + + getBackButtonHref: /* @ngInject */ ($state, $transition$) => () => + $state.href(get($transition$.params(), 'from', '^')), + + isLastStep: /* @ngInject */ (addSteps, model) => (stepName) => { + const step = get(addSteps, stepName); + if (step.loading || !model.selectedPaymentMethodType) { + return true; + } + + return step.isLastStep(); + }, + + isStepVisible: /* @ngInject */ (addSteps, model) => (stepName) => { + const step = get(addSteps, stepName); + if (!model.selectedPaymentMethodType) { + return false; + } + + return step.isVisible(); + }, + + model: () => ({}), + status: /* @ngInject */ ($transition$) => $transition$.params().status, + redirectResult: /* @ngInject */ ($transition$) => + $transition$.params().redirectResult, + onPaymentMethodAdded: /* @ngInject */ ( + $transition$, + $translate, + goPaymentList, + RedirectionService, + OVH_PAYMENT_METHOD_TYPE, + ) => (paymentMethod, selectedPaymentMethodType) => { + const { callbackUrl } = $transition$.params(); + if (callbackUrl && RedirectionService.validate(callbackUrl)) { + window.location.href = callbackUrl; + return callbackUrl; + } + + return goPaymentList( + { + type: 'success', + text: $translate.instant( + selectedPaymentMethodType?.paymentType === + OVH_PAYMENT_METHOD_TYPE.BANK_ACCOUNT + ? 'billing_payment_method_add_sepa_success' + : 'billing_payment_method_add_status_success', + ), + }, + get($transition$.params(), 'from', null), + ); + }, + onPaymentMethodAddError: /* @ngInject */ ( + $transition$, + $translate, + goPaymentList, + ) => (error) => { + return goPaymentList( + { + type: 'error', + text: $translate.instant('billing_payment_method_add_error', { + errorMessage: get(error, 'data.message'), + }), + }, + get($transition$.params(), 'from', null), + ); + }, + goToPaymentListPage: /* @ngInject */ ( + $translate, + status, + redirectResult, + goPaymentList, + ) => { + const MESSAGE_TYPE = { + error: 'error', + failure: 'error', + pending: 'info', + cancel: 'error', + success: 'success', + }; + if (status && !redirectResult) { + goPaymentList({ + type: MESSAGE_TYPE[status], + text: $translate.instant( + `billing_payment_method_add_status_${status}`, + ), + }); + } + }, + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('billing_payment_method_add_title'), + }, + }); + + $urlRouterProvider.when(/^\/billing\/mean\/add$/, ($location, $state) => + $state.go(name), + ); +}; diff --git a/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_de_DE.json new file mode 100644 index 000000000000..133925b0e48f --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_de_DE.json @@ -0,0 +1,41 @@ +{ + "billing_payment_method_add_title": "Zahlungsmittel hinzufügen", + "billing_payment_method_add_back_btn_title": "Zurück zu meinen Zahlungsmitteln", + "billing_payment_method_add_choose_type": "Auswahl des Zahlungsmittels", + "billing_payment_method_add_selected_common_redirect": "Sie werden auf das gesicherte Interface unseres Dienstleisters weitergeleitet, um eine neue Kreditkarte zu hinterlegen.", + "billing_payment_method_add_selected_paypal_redirect": "Wenn Sie auf den Button „PayPal“ klicken, wird ein Pop-up-Fenster geöffnet, um das Zahlungsmittel hinzuzufügen.", + "billing_payment_method_add_selected_paypal_redirect_US": "Bitte klicken Sie auf den Button „PayPal“ unten, um das Hinzufügen Ihres PayPal-Accounts und Ihrer Zahlungsmethode abzuschließen. Es öffnet sich ein Pop-up-Fenster, das Sie zum gesicherten PayPal-Server weiterleitet. Geben Sie hier bitte die erforderlichen Informationen ein.", + "billing_payment_method_add_selected_original_credit_card_redirect": "Wenn Sie auf den Button „Hinzufügen“ klicken, wird ein Dokument heruntergeladen. Bitte befolgen Sie die im Dokument beschriebene Vorgehensweise, um das Zahlungsmittel zu bestätigen.", + "billing_payment_method_add_credit_card_selected": "Ihre Kreditkarte wird sofort aktiviert.", + "billing_payment_method_add_credit_card_selected_explain_generic": "Bei der Registrierung einer neuen Kreditkarte wird eine Testabbuchung bei Ihrem Bankinstitut vorgenommen, um Nummer und Gültigkeit der Karte zu überprüfen. Der Betrag wird nicht abgezogen.", + "billing_payment_method_add_default_payment": "Dieses Zahlungsmittel wird für die automatischen Zahlungen Ihres Produkts verwendet. Sie können es jederzeit im Bereich „Zahlungsmittel“ ändern. Vor jeder Verlängerung erhalten Sie eine E-Mail-Benachrichtigung.", + "billing_payment_method_add_set_as_default_payment": "Zahlungsmittel nach Validierung als Standardzahlungsmittel\nverwenden.", + "billing_payment_method_add_bank_account_informations": "Bankinformationen", + "billing_payment_method_add_bank_account_address": "Kontoinhaber", + "billing_payment_method_add_billing_address": "Rechnungsadresse", + "billing_payment_method_add_billing_address_existing": "Vorhandene Adresse auswählen", + "billing_payment_method_add_billing_address_create": "Neue Adresse hinzufügen", + "billing_payment_method_add_payment_method": "Zahlungsmittelinformation", + "billing_payment_method_add_info": "Es wird eine gesicherte Seite in einem neuen Tab geöffnet, um das Hinzufügen des neuen Zahlungsmittels abzuschließen. Wenn kein neuer Tab geöffnet wurde, klicken Sie bitte hier.", + "billing_payment_method_add_bank_account_success": "Das Bankkonto wurde hinzugefügt und wird nach der Validierung aktiviert. Bitte gehen Sie wie in diesem Dokument beschrieben vor, um das Zahlungsmittel zu bestätigen. Wir bitten um Zusendung per Post. Ihr Bankkonto wird 24 bis 48 Stunden nach Eingang Ihrer Einzugsermächtigung freigeschaltet.", + "billing_payment_method_add_load_error": "Beim Laden der Seite ist ein Fehler aufgetreten.", + "billing_payment_method_add_status_cancel": "Die Anfrage zum Hinzufügen des Zahlungsmittels wurde storniert. Ihr Zahlungsmittel wurde somit nicht mit Ihrem OVH Account verbunden.", + "billing_payment_method_add_status_error": "Beim Hinzufügen des Zahlungsmittels ist ein Fehler aufgetreten.", + "billing_payment_method_add_status_failure": "Beim Hinzufügen des Zahlungsmittels ist ein Fehler aufgetreten.", + "billing_payment_method_add_status_pending": "Hinzufügen des Zahlungsmittels ausstehend.", + "billing_payment_method_add_vantiv_recoverable_credit_card_error": "Beim Hinzufügen des Zahlungsmittels ist ein Fehler aufgetreten. Bitte überprüfen Sie die Nummer Ihrer Kreditkarte und geben Sie diese erneut ein.", + "billing_payment_method_add_vantiv_recoverable_card_validation_number_error": "Beim Hinzufügen des Zahlungsmittels ist ein Fehler aufgetreten. Bitte überprüfen Sie die Kartenprüfnummer Ihrer Kreditkarte und geben Sie diese erneut ein.", + "billing_payment_method_add_status_success": "Ihr neues Zahlungsmittel wurde erfolgreich hinzugefügt.", + "billing_payment_method_add_sepa_success": "Ihre Anfrage zum Hinzufügen eines Bankkontos für SEPA-Zahlungen wurde registriert. Die Anfrage erfordert noch eine elektronische Signatur (bitte sehen Sie in Ihr E-Mail-Postfach) oder sie wird bereits von unseren Mitarbeitern bearbeitet.", + "billing_payment_method_add_error": "Beim Hinzufügen Ihres Zahlungsmittels ist ein Fehler aufgetreten: {{ errorMessage }}", + "billing_payment_method_add_alert_add_method": "Falls beim Hinzufügen eines neuen Zahlungsmittels ein Problem auftaucht, fügen Sie bitte Ihrem Werbeblocker eine Ausnahme für {{ hostname }} hinzu. Alternativ dazu können Sie sich auch im privaten Modus Ihres Browsers verbinden und den Vorgang erneut starten. Im Kundencenter werden wir Ihnen niemals Werbung zeigen. Bitte beachten Sie, dass es zu Konflikten zwischen Ihrem Werbeblocker und unserem Zahlungssystem kommen kann.", + "billing_payment_method_add_alert_first_payment_failure": "Wenn Ihr erstes Zahlungsmittel nicht hinterlegt werden kann, versuchen Sie, eine neue Zahlungsart hinzuzufügen. Verwenden Sie dafür dieselbe Karte, die Sie gerade auch verwendet haben. Unser System wird automatisch mit der neuen Karte arbeiten.", + "billing_payment_method_add_sepa_direct_debit_info": "Mit dem Unterzeichnen eines Lastschriftmandats erlauben Sie OVH S.A.S, dieses Zahlungsmittel als Standardzahlungsmittel zu speichern. Dies erleichtert die Abwicklung Ihrer nächsten Bestellungen. Dieses Zahlungsmittel wird dann an jedem Fälligkeitsdatum für die Bezahlung Ihrer Dienstleistungen mit automatischer Verlängerung verwendet, ebenso wie für die Zahlung auf Grundlage der Nutzung („Pay as you go\"). Im Kundencenter können Sie jederzeit Zahlungsmittel hinzufügen, löschen oder bearbeiten.", + "billing_payment_method_add_sepa_direct_debit_warning_redirection": "Sie werden in einen Bereich weitergeleitet, um Ihr Bankkonto und die elektronische Signatur des Lastschriftmandats zu registrieren.", + "billing_payment_method_add_sepa_direct_debit_warning_order": "Mit diesem Zahlungsmittel können Sie dann Ihre Bestellung abschließen.", + "billing_payment_method_add_sepa_direct_debit_warning_owner_identity": "Bitte beachten Sie: Der Inhaber des Bankkontos muss mit dem Inhaber des OVHcloud Accounts identisch sein.", + "billing_payment_method_add_sepa_direct_debit_data_processing_info": "OVHcloud verarbeitet die erhobenen Daten als für die Verarbeitung Verantwortlicher, um Ihr SEPA-Lastschriftmandat einzurichten.", + "billing_payment_method_add_sepa_direct_debit_digital_signature_info": "Das Einrichten einer SEPA-Lastschrift erfordert ein Mandat. Wir bitten Sie, dieses elektronisch zu unterzeichnen. Dies erfolgt mit der IT-Lösung von Worldline, einem Anbieter von zuverlässigen Dienstleistungen gemäß der EU-Verordnung Nr. 910/2014 vom 23. Juli 2014 über elektronische Identifizierung und Vertrauensdienste für elektronische Transaktionen (Electronic IDentification Authentication and trust Services, eDIAS). In diesem Zusammenhang werden ihm diese Daten übermittelt.", + "billing_payment_method_add_credit_card_selected_explain_ovh_transaction": "Die Transaktion zur Registrierung Ihrer Karte wird von OVH S.A.S bearbeitet.", + "billing_payment_method_add_credit_card_registration_charges_info": "Mit einer Zahlung von maximal {{ registrationCharges }} wird sichergestellt, dass Ihre Karte ordnungsgemäß funktioniert. Dieser Betrag wird Ihnen innerhalb von 48 Stunden in voller Höhe erstattet." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_en_GB.json new file mode 100644 index 000000000000..d33ba3862273 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_en_GB.json @@ -0,0 +1,41 @@ +{ + "billing_payment_method_add_title": "Add a payment method ", + "billing_payment_method_add_back_btn_title": "Back to my payment methods", + "billing_payment_method_add_choose_type": "Choose a payment method", + "billing_payment_method_add_selected_common_redirect": "You will be redirected to our service provider's secure interface to save a new bank card.", + "billing_payment_method_add_selected_paypal_redirect": "When you click on the PayPal button, a pop-up window will open in order for you to finish adding your payment method.", + "billing_payment_method_add_selected_paypal_redirect_US": "To finish adding your PayPal account and payment method, click on the PayPal button below. A pop-up window, redirecting you to the secure PayPal server, will open allowing you to enter the required information. ", + "billing_payment_method_add_selected_original_credit_card_redirect": "By clicking \"Add\", a document will be downloaded. Please follow the procedure outlined in the document to confirm the payment method.", + "billing_payment_method_add_credit_card_selected": "Your credit card will be activated automatically.", + "billing_payment_method_add_credit_card_selected_explain_generic": "To register a new bank card, a small amount of money is temporarily deducted from your bank account in order to check your card's details and validity. Nothing will be charged to your account.", + "billing_payment_method_add_default_payment": "This payment method will be used for your product's automatic payments. You can change it at any time via your payment methods. You will receive an email notification before each renewal date.", + "billing_payment_method_add_set_as_default_payment": "I want to choose this as my default payment method as soon as it is validated.", + "billing_payment_method_add_bank_account_informations": "Bank details", + "billing_payment_method_add_bank_account_address": "Account holder", + "billing_payment_method_add_billing_address": "Billing address ", + "billing_payment_method_add_billing_address_existing": "Choose an existing address", + "billing_payment_method_add_billing_address_create": "Add a new address", + "billing_payment_method_add_payment_method": "Payment method information", + "billing_payment_method_add_info": "A new tab should open to a secure page, for you to finish adding your payment method. If the tab has not opened, please click here.", + "billing_payment_method_add_bank_account_success": "The bank account has been added, it will be enabled as soon as it has been validated. Please follow the procedure described in this document to confirm the payment method to be sent by post. Your bank account will be validated within 24 to 48 hours from the moment we receive your authorisation for direct debit.", + "billing_payment_method_add_load_error": "An error has occurred loading the page.", + "billing_payment_method_add_status_cancel": "The request to add the payment method has been cancelled. Your payment method is not linked to your OVHcloud account.", + "billing_payment_method_add_status_error": "An error has occurred adding the payment method.", + "billing_payment_method_add_status_failure": "An error has occurred adding the payment method.", + "billing_payment_method_add_status_pending": "The payment method addition has been switched to pending status.", + "billing_payment_method_add_vantiv_recoverable_credit_card_error": "An error has occurred adding the payment method. Please check and re-enter your credit card number and try again.", + "billing_payment_method_add_vantiv_recoverable_card_validation_number_error": "An error has occurred adding the payment method. Please check and re-enter your card validation number and try again.", + "billing_payment_method_add_status_success": "Your new payment method has been added.", + "billing_payment_method_add_sepa_success": "Your request to add a SEPA bank account has been processed. The request is pending an electronic signature (please check your inbox), or is being processed by our services.", + "billing_payment_method_add_error": "An error has occurred adding your payment method: {{ errorMessage }}", + "billing_payment_method_add_alert_add_method": "If you experience any problems adding a new payment method, please add an exception to your ad-blocker for {{ hostname }}, or log in using incognito mode on your browser, then try again. We never display ads in the OVHcloud Control Panel. Please note that your ad-blocker may interfere with our payment system.", + "billing_payment_method_add_alert_first_payment_failure": "Otherwise, if your first payment fails to be processed, please try creating a new payment method with the same payment card you just used. Our system will automatically bill the new card.", + "billing_payment_method_add_sepa_direct_debit_info": "By signing a direct debit mandate, you authorise OVH S.A.S to register this payment method as a default payment method for future orders. When your services reach their expiry dates, this payment method will automatically be used to pay for your services with automatic renewal and pay-as-you-go billing. You can add, delete or modify payment methods at any time via the OVHcloud Control Panel.", + "billing_payment_method_add_sepa_direct_debit_warning_redirection": "You will be redirected to a space where you can register your bank account and electronically sign your direct debit mandate.", + "billing_payment_method_add_sepa_direct_debit_warning_order": "You can then use this payment method to complete your order.", + "billing_payment_method_add_sepa_direct_debit_warning_owner_identity": "Warning: the bank account owner must also be the OVHcloud account owner.", + "billing_payment_method_add_sepa_direct_debit_data_processing_info": "The data collected is processed by OVHcloud as a data controller in order to set up your SEPA direct debit.", + "billing_payment_method_add_sepa_direct_debit_digital_signature_info": "To set up a SEPA direct debit, you will need to sign a mandate electronically using a solution provided by Worldline, a service provider authorised to deliver the trusted services defined by the “eDIAS” Regulation No. 910/2014 of 23 July 2014. In this context, the data is sent to Worldline.", + "billing_payment_method_add_credit_card_selected_explain_ovh_transaction": "The transaction to register your card will be processed by OVH S.A.S.", + "billing_payment_method_add_credit_card_registration_charges_info": "A maximum of {{ registrationCharges }} will be charged to your card to confirm that it’s active. This charge will be fully refunded within 48 hours." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_es_ES.json new file mode 100644 index 000000000000..dcfa24603879 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_es_ES.json @@ -0,0 +1,41 @@ +{ + "billing_payment_method_add_title": "Añadir una forma de pago", + "billing_payment_method_add_back_btn_title": "Volver a mis formas de pago", + "billing_payment_method_add_choose_type": "Selección de la forma de pago", + "billing_payment_method_add_selected_common_redirect": "Será redirigido a la página de pago seguro de nuestro proveedor, donde podrá registrar la nueva tarjeta bancaria.", + "billing_payment_method_add_selected_paypal_redirect": "Al hacer clic en el botón «Paypal», se abrirá una ventana emergente en la que podrá añadir la forma de pago.", + "billing_payment_method_add_selected_paypal_redirect_US": "Para terminar de añadir su cuenta de PayPal y su forma de pago, haga clic en el botón PayPal que aparece a continuación. Se abrirá una ventana emergente y será redirigido hacia el servidor seguro de PayPal desde donde podrá introducir los datos necesarios.", + "billing_payment_method_add_selected_original_credit_card_redirect": "Al hacer clic en el botón «Añadir», se descargará un documento. Por favor, siga los pasos que se describen en él para validar la forma de pago.", + "billing_payment_method_add_credit_card_selected": "Su tarjeta bancaria se activará de inmediato.", + "billing_payment_method_add_credit_card_selected_explain_generic": "Para confirmar el registro y la validez de la nueva tarjeta bancaria, realizaremos una retención en su cuenta, a modo de fianza. No se cargará ningún importe.", + "billing_payment_method_add_default_payment": "Esta forma de pago se utilizará para el pago automático del servicio. Podrá modificarla en cualquier momento desde la sección «Formas de pago» de su área de cliente. Antes de cada vencimiento recibirá una notificación por correo electrónico.", + "billing_payment_method_add_set_as_default_payment": "Una vez validada, quiero seleccionar esta forma de pago por defecto.", + "billing_payment_method_add_bank_account_informations": "Información bancaria", + "billing_payment_method_add_bank_account_address": "Propietario de la cuenta", + "billing_payment_method_add_billing_address": "Dirección de facturación", + "billing_payment_method_add_billing_address_existing": "Seleccionar una dirección existente", + "billing_payment_method_add_billing_address_create": "Añadir una nueva dirección", + "billing_payment_method_add_payment_method": "Información sobre la forma de pago", + "billing_payment_method_add_info": "Se ha abierto una página segura en una nueva pestaña, desde la que podrá terminar de añadir su forma de pago. En caso contrario, haga clic en este enlace.", + "billing_payment_method_add_bank_account_success": "Se ha añadido la cuenta bancaria. Es necesario validarla para que esté activa. Siga el procedimiento descrito en este documento para validar la forma de pago y envíenoslo por correo postal. Su cuenta bancaria se validará en las 24-48 horas posteriores a la recepción de su autorización de domiciliación.", + "billing_payment_method_add_load_error": "Se ha producido un error al cargar la página.", + "billing_payment_method_add_status_cancel": "La solicitud para añadir la forma de pago ha sido anulada. Esta forma de pago no está, por lo tanto, asociada a su cuenta de OVHcloud.", + "billing_payment_method_add_status_error": "Se ha producido un error al añadir la forma de pago.", + "billing_payment_method_add_status_failure": "Se ha producido un error al añadir la forma de pago.", + "billing_payment_method_add_status_pending": "La adición de su forma de pago está en espera.", + "billing_payment_method_add_vantiv_recoverable_credit_card_error": "Se ha producido un error al añadir su forma de pago. Compruebe que el número de su tarjeta bancaria es correcto y vuelva a introducirlo.", + "billing_payment_method_add_vantiv_recoverable_card_validation_number_error": "Se ha producido un error al añadir su forma de pago. Compruebe que el código de seguridad de su tarjeta bancaria es correcto y vuelva a introducirlo.", + "billing_payment_method_add_status_success": "La forma de pago se ha añadido correctamente.", + "billing_payment_method_add_sepa_success": "La solicitud para añadir una cuenta bancaria SEPA se ha registrado correctamente. La solicitud está pendiente de una firma electrónica (compruebe su bandeja de correo) o está siendo tratada por nuestros equipos.", + "billing_payment_method_add_error": "Se ha producido un error al añadir la forma de pago: {{ errorMessage }}.", + "billing_payment_method_add_alert_add_method": "Si tiene problemas para añadir una nueva forma de pago, puede añadir una excepción a su bloqueador de anuncios para {{ hostname }} o utilizar el modo incógnito de su navegador. Nunca mostraremos anuncios en el área de cliente. Tenga en cuenta que su bloqueador de anuncios puede interferir con nuestro sistema de pago.", + "billing_payment_method_add_alert_first_payment_failure": "Asimismo, si no ha podido realizar el primer pago, intente registrar una nueva forma de pago con la misma tarjeta que acaba de utilizar. El sistema intentará cargar el importe automáticamente en la nueva tarjeta.", + "billing_payment_method_add_sepa_direct_debit_info": "Al firmar un mandato de adeudo o domiciliación bancaria autoriza a OVH S. A. S. a registrar esta forma de pago como forma de pago por defecto para facilitar el pago de sus próximos pedidos. Así pues, esta forma de pago se utilizará automáticamente, en la fecha de vencimiento, para abonar el importe de los servicios con renovación automática y pago por uso («pay-as-you-go»). Podrá añadir nuevas formas de pago en cualquier momento, así como modificar o eliminar las existentes, desde su área de cliente.", + "billing_payment_method_add_sepa_direct_debit_warning_redirection": "A continuación, será redirigido a una nueva ventana desde donde podrá registrar su cuenta bancaria y firmar electrónicamente su mandato de adeudo o domiciliación bancaria.", + "billing_payment_method_add_sepa_direct_debit_warning_order": "A continuación, podrá utilizar esta forma de pago para completar el pedido.", + "billing_payment_method_add_sepa_direct_debit_warning_owner_identity": "Atención: El propietario de la cuenta bancaria debe ser el mismo que el propietario de la cuenta de OVHcloud.", + "billing_payment_method_add_sepa_direct_debit_data_processing_info": "Los datos recogidos serán tratados por OVHcloud como responsable del tratamiento para poder crear y gestionar su adeudo directo SEPA.", + "billing_payment_method_add_sepa_direct_debit_digital_signature_info": "Para poder crear un adeudo directo SEPA, deberá firmar electrónicamente un mandato utilizando una solución proporcionada por Worldline, un proveedor autorizado para prestar servicios de confianza, tal como se establece en el Reglamento (UE) n.º 910/2014 de 23 de julio de 2014, también conocido como «eDIAS». Los datos serán comunicados en el marco de esta operación de firma.", + "billing_payment_method_add_credit_card_selected_explain_ovh_transaction": "La transacción para registrar su tarjeta será procesada por OVH S.A.S.", + "billing_payment_method_add_credit_card_registration_charges_info": "Para confirmar el correcto funcionamiento de su tarjeta bancaria, se realizará un cargo por un importe máximo de {{ registrationCharges }}. Este importe se le reembolsará íntegramente en un plazo de 48 horas." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..c7f96c70bb2d --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_fr_CA.json @@ -0,0 +1,42 @@ +{ + "billing_payment_method_add_title": "Ajouter un moyen de paiement", + "billing_payment_method_add_back_btn_title": "Retourner à mes moyens de paiement", + "billing_payment_method_add_choose_type": "Choix du moyen de paiement", + + "billing_payment_method_add_selected_common_redirect": "Vous allez être redirigé·e vers l’interface sécurisée de notre prestataire pour enregistrer une nouvelle carte bancaire.", + "billing_payment_method_add_selected_paypal_redirect": "En cliquant sur le bouton \"Paypal\", une fenêtre contextuelle s'ouvrira afin de finaliser l'ajout du moyen de paiement.", + "billing_payment_method_add_selected_paypal_redirect_US": "Pour terminer l'ajout de votre compte PayPal et de votre mode de paiement, cliquez sur le bouton PayPal ci-dessous. Une fenêtre pop-up, vous redirigeant vers le serveur sécurisé PayPal, s'ouvrira vous permettant de saisir les informations requises.", + "billing_payment_method_add_selected_original_credit_card_redirect": "En cliquant sur le bouton \"Ajouter\", un document sera téléchargé. Veuillez suivre la procédure décrite dans le document pour valider le moyen de paiement.", + "billing_payment_method_add_credit_card_selected_explain_ovh_transaction": "La transaction pour enregistrer votre carte sera traitée par OVH S.A.S.", + "billing_payment_method_add_credit_card_selected": "Votre carte bancaire sera activée immédiatement.", + "billing_payment_method_add_credit_card_selected_explain_generic": "Pour enregistrer une nouvelle carte bancaire, une empreinte financière est faite auprès de votre organisme bancaire afin de valider la saisie et la validité de votre carte. Aucun montant ne sera prélevé.", + "billing_payment_method_add_default_payment": "Ce moyen de paiement sera utilisé pour les paiements automatiques de votre produit. Vous pouvez à tout moment modifier celui-ci dans vos moyens de paiements. Vous serez notifié par e-mail avant chaque nouvelle échéance.", + "billing_payment_method_add_set_as_default_payment": "Je veux sélectionner ce moyen de paiement par défaut dès sa validation.", + "billing_payment_method_add_bank_account_informations": "Informations bancaires", + "billing_payment_method_add_bank_account_address": "Propriétaire du compte", + "billing_payment_method_add_billing_address": "Adresse de facturation", + "billing_payment_method_add_billing_address_existing": "Choisir une adresse existante", + "billing_payment_method_add_billing_address_create": "Ajouter une nouvelle adresse", + "billing_payment_method_add_payment_method": "Information du moyen de paiement", + "billing_payment_method_add_info": "Un nouvel onglet s'est ouvert vers une page sécurisée afin de finaliser l'ajout de votre moyen de paiement. Si aucun onglet ne s'est ouvert, veuillez cliquer sur ce lien.", + "billing_payment_method_add_bank_account_success": "Le compte bancaire a été ajouté, il sera actif une fois validé. Veuillez suivre la procédure décrite dans ce document pour valider le moyen de paiement à retourner par voie postale. Votre compte bancaire sera validé dans les 24h à 48h à compter de la réception de votre autorisation de prélèvement.", + "billing_payment_method_add_load_error": "Une erreur est survenue lors du chargement de la page.", + "billing_payment_method_add_status_cancel": "La demande d'ajout du moyen de paiement a été annulée. Votre moyen de paiement n'est donc pas lié à votre compte OVH.", + "billing_payment_method_add_status_error": "Une erreur est survenue lors de l'ajout du moyen de paiement.", + "billing_payment_method_add_status_failure": "Une erreur est survenue lors de l'ajout du moyen de paiement.", + "billing_payment_method_add_status_pending": "L'ajout de votre moyen de paiement a été placé en attente.", + "billing_payment_method_add_vantiv_recoverable_credit_card_error": "Une erreur est survenue lors de l'ajout de votre moyen de paiement. Veuillez vérifier le numéro de votre carte bancaire puis le ressaisir.", + "billing_payment_method_add_vantiv_recoverable_card_validation_number_error": "Une erreur est survenue lors de l'ajout de votre moyen de paiement. Veuillez vérifier le numéro de validation de votre carte bancaire puis le ressaisir.", + "billing_payment_method_add_status_success": "Votre nouveau moyen de paiement a bien été ajouté.", + "billing_payment_method_add_sepa_success": "Votre demande d'ajout d'un compte bancaire SEPA a été prise en compte. La demande est en attente d'une signature électronique (pensez à vérifier votre boite mail), ou en cours de traitement par nos services.", + "billing_payment_method_add_error": "Une erreur est survenue lors de l'ajout de votre moyen de paiement : {{ errorMessage }}", + "billing_payment_method_add_alert_add_method": "Si vous rencontrez un problème pour ajouter un nouveau moyen de paiement, veuillez ajouter une exception à votre bloqueur de publicités pour {{ hostname }}, ou veuillez vous connecter via le mode incognito de votre navigateur, puis réessayez. Nous n'afficherons jamais de publicités dans l'espace client. Sachez que votre bloqueur de publicités peut interférer avec notre système de paiement.", + "billing_payment_method_add_alert_first_payment_failure": "En outre, si votre premier paiement échoue à être pris en compte, essayez de créer un nouveau moyen de paiement avec la même carte que vous venez d'utiliser. Notre système facturera automatiquement la nouvelle carte.", + "billing_payment_method_add_sepa_direct_debit_info": "En signant un mandat de prélèvement, vous autorisez OVH S.A.S à enregistrer ce moyen de paiement comme moyen de paiement par défaut afin de faciliter le règlement de vos prochaines commandes. Il sera automatiquement utilisé, à chaque nouvelle échéance, pour paiement de vos services en renouvellement automatique et en paiement à l'usage (\"Pay as you go\"). Vous pouvez à tout moment ajouter, supprimer ou modifier des moyens de paiement dans votre espace client.", + "billing_payment_method_add_sepa_direct_debit_warning_redirection": "Vous allez être redirigé vers un espace permettant l'enregistrement de votre compte bancaire et la signature électronique de votre mandat de prélèvement.", + "billing_payment_method_add_sepa_direct_debit_warning_order": "Vous pourrez alors utiliser ce moyen de paiement pour finaliser votre commande.", + "billing_payment_method_add_sepa_direct_debit_warning_owner_identity": "Attention, le propriétaire du compte bancaire doit être identique au propriétaire du compte OVHcloud.", + "billing_payment_method_add_sepa_direct_debit_data_processing_info": "Les données collectées sont traitées par OVHcloud en qualité de responsable de traitement afin de mettre en place votre prélèvement SEPA.", + "billing_payment_method_add_sepa_direct_debit_digital_signature_info": "La mise en place d'un prélèvement SEPA nécessite un mandat qu'il vous sera demandé de signer électroniquement en utilisant une solution fournie par Worldline, un prestataire habilité à délivrer les services de confiance définies par le règlement \"eDIAS\" n° 910/2014 du 23 juillet 2014. Dans ce cadre, ces données lui sont communiquées.", + "billing_payment_method_add_credit_card_registration_charges_info": "Un paiement de {{ registrationCharges }} maximum sera réalisé afin de valider le bon fonctionnement de votre carte. Il vous sera intégralement remboursé dans un délai de 48 heures." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..c7f96c70bb2d --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_fr_FR.json @@ -0,0 +1,42 @@ +{ + "billing_payment_method_add_title": "Ajouter un moyen de paiement", + "billing_payment_method_add_back_btn_title": "Retourner à mes moyens de paiement", + "billing_payment_method_add_choose_type": "Choix du moyen de paiement", + + "billing_payment_method_add_selected_common_redirect": "Vous allez être redirigé·e vers l’interface sécurisée de notre prestataire pour enregistrer une nouvelle carte bancaire.", + "billing_payment_method_add_selected_paypal_redirect": "En cliquant sur le bouton \"Paypal\", une fenêtre contextuelle s'ouvrira afin de finaliser l'ajout du moyen de paiement.", + "billing_payment_method_add_selected_paypal_redirect_US": "Pour terminer l'ajout de votre compte PayPal et de votre mode de paiement, cliquez sur le bouton PayPal ci-dessous. Une fenêtre pop-up, vous redirigeant vers le serveur sécurisé PayPal, s'ouvrira vous permettant de saisir les informations requises.", + "billing_payment_method_add_selected_original_credit_card_redirect": "En cliquant sur le bouton \"Ajouter\", un document sera téléchargé. Veuillez suivre la procédure décrite dans le document pour valider le moyen de paiement.", + "billing_payment_method_add_credit_card_selected_explain_ovh_transaction": "La transaction pour enregistrer votre carte sera traitée par OVH S.A.S.", + "billing_payment_method_add_credit_card_selected": "Votre carte bancaire sera activée immédiatement.", + "billing_payment_method_add_credit_card_selected_explain_generic": "Pour enregistrer une nouvelle carte bancaire, une empreinte financière est faite auprès de votre organisme bancaire afin de valider la saisie et la validité de votre carte. Aucun montant ne sera prélevé.", + "billing_payment_method_add_default_payment": "Ce moyen de paiement sera utilisé pour les paiements automatiques de votre produit. Vous pouvez à tout moment modifier celui-ci dans vos moyens de paiements. Vous serez notifié par e-mail avant chaque nouvelle échéance.", + "billing_payment_method_add_set_as_default_payment": "Je veux sélectionner ce moyen de paiement par défaut dès sa validation.", + "billing_payment_method_add_bank_account_informations": "Informations bancaires", + "billing_payment_method_add_bank_account_address": "Propriétaire du compte", + "billing_payment_method_add_billing_address": "Adresse de facturation", + "billing_payment_method_add_billing_address_existing": "Choisir une adresse existante", + "billing_payment_method_add_billing_address_create": "Ajouter une nouvelle adresse", + "billing_payment_method_add_payment_method": "Information du moyen de paiement", + "billing_payment_method_add_info": "Un nouvel onglet s'est ouvert vers une page sécurisée afin de finaliser l'ajout de votre moyen de paiement. Si aucun onglet ne s'est ouvert, veuillez cliquer sur ce lien.", + "billing_payment_method_add_bank_account_success": "Le compte bancaire a été ajouté, il sera actif une fois validé. Veuillez suivre la procédure décrite dans ce document pour valider le moyen de paiement à retourner par voie postale. Votre compte bancaire sera validé dans les 24h à 48h à compter de la réception de votre autorisation de prélèvement.", + "billing_payment_method_add_load_error": "Une erreur est survenue lors du chargement de la page.", + "billing_payment_method_add_status_cancel": "La demande d'ajout du moyen de paiement a été annulée. Votre moyen de paiement n'est donc pas lié à votre compte OVH.", + "billing_payment_method_add_status_error": "Une erreur est survenue lors de l'ajout du moyen de paiement.", + "billing_payment_method_add_status_failure": "Une erreur est survenue lors de l'ajout du moyen de paiement.", + "billing_payment_method_add_status_pending": "L'ajout de votre moyen de paiement a été placé en attente.", + "billing_payment_method_add_vantiv_recoverable_credit_card_error": "Une erreur est survenue lors de l'ajout de votre moyen de paiement. Veuillez vérifier le numéro de votre carte bancaire puis le ressaisir.", + "billing_payment_method_add_vantiv_recoverable_card_validation_number_error": "Une erreur est survenue lors de l'ajout de votre moyen de paiement. Veuillez vérifier le numéro de validation de votre carte bancaire puis le ressaisir.", + "billing_payment_method_add_status_success": "Votre nouveau moyen de paiement a bien été ajouté.", + "billing_payment_method_add_sepa_success": "Votre demande d'ajout d'un compte bancaire SEPA a été prise en compte. La demande est en attente d'une signature électronique (pensez à vérifier votre boite mail), ou en cours de traitement par nos services.", + "billing_payment_method_add_error": "Une erreur est survenue lors de l'ajout de votre moyen de paiement : {{ errorMessage }}", + "billing_payment_method_add_alert_add_method": "Si vous rencontrez un problème pour ajouter un nouveau moyen de paiement, veuillez ajouter une exception à votre bloqueur de publicités pour {{ hostname }}, ou veuillez vous connecter via le mode incognito de votre navigateur, puis réessayez. Nous n'afficherons jamais de publicités dans l'espace client. Sachez que votre bloqueur de publicités peut interférer avec notre système de paiement.", + "billing_payment_method_add_alert_first_payment_failure": "En outre, si votre premier paiement échoue à être pris en compte, essayez de créer un nouveau moyen de paiement avec la même carte que vous venez d'utiliser. Notre système facturera automatiquement la nouvelle carte.", + "billing_payment_method_add_sepa_direct_debit_info": "En signant un mandat de prélèvement, vous autorisez OVH S.A.S à enregistrer ce moyen de paiement comme moyen de paiement par défaut afin de faciliter le règlement de vos prochaines commandes. Il sera automatiquement utilisé, à chaque nouvelle échéance, pour paiement de vos services en renouvellement automatique et en paiement à l'usage (\"Pay as you go\"). Vous pouvez à tout moment ajouter, supprimer ou modifier des moyens de paiement dans votre espace client.", + "billing_payment_method_add_sepa_direct_debit_warning_redirection": "Vous allez être redirigé vers un espace permettant l'enregistrement de votre compte bancaire et la signature électronique de votre mandat de prélèvement.", + "billing_payment_method_add_sepa_direct_debit_warning_order": "Vous pourrez alors utiliser ce moyen de paiement pour finaliser votre commande.", + "billing_payment_method_add_sepa_direct_debit_warning_owner_identity": "Attention, le propriétaire du compte bancaire doit être identique au propriétaire du compte OVHcloud.", + "billing_payment_method_add_sepa_direct_debit_data_processing_info": "Les données collectées sont traitées par OVHcloud en qualité de responsable de traitement afin de mettre en place votre prélèvement SEPA.", + "billing_payment_method_add_sepa_direct_debit_digital_signature_info": "La mise en place d'un prélèvement SEPA nécessite un mandat qu'il vous sera demandé de signer électroniquement en utilisant une solution fournie par Worldline, un prestataire habilité à délivrer les services de confiance définies par le règlement \"eDIAS\" n° 910/2014 du 23 juillet 2014. Dans ce cadre, ces données lui sont communiquées.", + "billing_payment_method_add_credit_card_registration_charges_info": "Un paiement de {{ registrationCharges }} maximum sera réalisé afin de valider le bon fonctionnement de votre carte. Il vous sera intégralement remboursé dans un délai de 48 heures." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_it_IT.json new file mode 100644 index 000000000000..a4538f773a45 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_it_IT.json @@ -0,0 +1,41 @@ +{ + "billing_payment_method_add_title": "Aggiungi un metodo di pagamento", + "billing_payment_method_add_back_btn_title": "Ritorna ai tuoi metodi di pagamento", + "billing_payment_method_add_choose_type": "Scegli il metodo di pagamento", + "billing_payment_method_add_selected_common_redirect": "Verrai reindirizzato all'interfaccia sicura del nostro provider per memorizzare una nuova carta bancaria.", + "billing_payment_method_add_selected_paypal_redirect": "Cliccando sul pulsante \"Paypal\" si aprirà una finestra pop-up per finalizzare l'aggiunta del metodo di pagamento.", + "billing_payment_method_add_selected_paypal_redirect_US": "Per completare l'aggiunta del tuo conto PayPal e del metodo di pagamento, clicca sul pulsante PayPal qui sotto. Si aprirà una finestra pop-up che ti reindirizzerà verso il server sicuro PayPal, in cui sarà possibile inserire le informazioni necessarie.", + "billing_payment_method_add_selected_original_credit_card_redirect": "Cliccando sul pulsante \"Aggiungi\", verrà scaricato un documento. Segui la procedura descritta per convalidare il metodo di pagamento.", + "billing_payment_method_add_credit_card_selected": "La tua carta bancaria verrà attivata immediatamente.", + "billing_payment_method_add_credit_card_selected_explain_generic": "Durante la registrazione della nuova carta bancaria, verrà effettuato un tentativo di prelievo presso il tuo istituto bancario per verificarne il numero e la validità. L'importo non verrà addebitato.", + "billing_payment_method_add_default_payment": "Questo metodo di pagamento sarà utilizzato per il pagamento automatico del servizio. È possibile modificarlo in qualsiasi momento dalla sezione “Metodi di pagamento” dello Spazio Cliente. Riceverai un'email di notifica prima di ogni scadenza.", + "billing_payment_method_add_set_as_default_payment": "Una volta confermata, voglio impostare questa modalità di pagamento come predefinita.", + "billing_payment_method_add_bank_account_informations": "Informazioni bancarie", + "billing_payment_method_add_bank_account_address": "Intestatario del conto", + "billing_payment_method_add_billing_address": "Indirizzo di fatturazione", + "billing_payment_method_add_billing_address_existing": "Scegli un indirizzo esistente", + "billing_payment_method_add_billing_address_create": "Aggiungi un nuovo indirizzo", + "billing_payment_method_add_payment_method": "Informazioni sul metodo di pagamento", + "billing_payment_method_add_info": "Utilizza la nuova scheda che si è aperta in una pagina sicura per finalizzare l'aggiunta del metodo di pagamento. Se non si è aperta nessuna scheda, clicca su questo link.", + "billing_payment_method_add_bank_account_success": "Il tuo conto bancario è stato aggiunto e, una volta convalidato, sarà attivo. Segui la procedura descritta in questo documentoper confermare la modalità di pagamento da restituire via posta. Il tuo conto bancario verrà convalidato entro 24-48 ore dalla tua autorizzazione al prelievo.", + "billing_payment_method_add_load_error": "Si è verificato un errore durante il caricamento della pagina.", + "billing_payment_method_add_status_cancel": "La richiesta di aggiunta della modalità di pagamento è stata annullata. Il metodo di pagamento non è quindi associato al tuo account OVH.", + "billing_payment_method_add_status_error": "Si è verificato un errore durante l'aggiunta del metodo di pagamento.", + "billing_payment_method_add_status_failure": "Si è verificato un errore durante l'aggiunta del metodo di pagamento.", + "billing_payment_method_add_status_pending": "L'aggiunta del metodo di pagamento è in attesa di convalida.", + "billing_payment_method_add_vantiv_recoverable_credit_card_error": "Si è verificato un errore durante l'aggiunta del metodo di pagamento. Verifica il numero della tua carta bancaria e, se necessario, inseriscilo di nuovo.", + "billing_payment_method_add_vantiv_recoverable_card_validation_number_error": "Si è verificato un errore durante l'aggiunta del metodo di pagamento. Verifica il codice CVV della tua carta bancaria e, se necessario, inseriscilo di nuovo.", + "billing_payment_method_add_status_success": "Il nuovo metodo di pagamento è stato aggiunto correttamente.", + "billing_payment_method_add_sepa_success": "La tua richiesta di aggiunta di un conto bancario SEPA è stata presa in carico. La richiesta è in attesa di firma elettronica (verifica la tua casella email) o in fase di elaborazione da parte dei nostri servizi.", + "billing_payment_method_add_error": "Si è verificato un errore durante l'aggiunta del metodo di pagamento: {{ errorMessage }}", + "billing_payment_method_add_alert_add_method": "In caso di problemi durante l’aggiunta di un nuovo metodo di pagamento, è possibile aggiungere un’eccezione all’ad-blocker per {{ hostname }} o aprire il browser in modalità incognito e riprovare. Nello Spazio Cliente non verranno mai mostrate pubblicità. Ti ricordiamo che l’ad-blocker potrebbe interferire con il nostro sistema di pagamento.", + "billing_payment_method_add_alert_first_payment_failure": "Nel caso in cui il primo pagamento non vada a buon fine, ti consigliamo di provare a inserire un nuovo metodo con la stessa carta appena utilizzata. Il nostro sistema addebiterà l’importo dovuto direttamente sulla nuova carta.", + "billing_payment_method_add_sepa_direct_debit_info": "Firmando il mandato di addebito diretto, autorizzi OVH S.A.S a registrare questo metodo di pagamento come predefinito per facilitare il saldo dei prossimi ordini. Questa modalità verrà utilizzata automaticamente a ogni scadenza per pagare i servizi con rinnovo automatico e fatturazione a consumo (\"Pay as you go\"). I metodi di pagamento possono essere aggiunti, rimossi o modificati in qualsiasi momento dallo Spazio Cliente.", + "billing_payment_method_add_sepa_direct_debit_warning_redirection": "Verrai reindirizzato a uno spazio che permetterà di registrare il conto bancario e firmare elettronicamente il mandato di addebito diretto.", + "billing_payment_method_add_sepa_direct_debit_warning_order": "A questo punto sarà possibile utilizzare la modalità inserita per completare l'ordine.", + "billing_payment_method_add_sepa_direct_debit_warning_owner_identity": "Attenzione: il titolare del conto bancario deve corrispondere al proprietario dell'account OVHcloud.", + "billing_payment_method_add_sepa_direct_debit_data_processing_info": "Per poter eseguire il prelievo SEPA, i dati raccolti sono trattati da OVHcloud in qualità di responsabile del trattamento dei dati.", + "billing_payment_method_add_sepa_direct_debit_digital_signature_info": "La realizzazione di un addebito diretto SEPA richiede un mandato che dovrà essere firmato elettronicamente utilizzando una soluzione fornita da Worldline, provider abilitato alla fornitura dei servizi fiduciari definiti nella normativa “eDIAS” n. 910/2014 del 23 luglio 2014. Nell’ambito di questa operazione di firma, è necessario comunicare questi dati.", + "billing_payment_method_add_credit_card_selected_explain_ovh_transaction": "La transazione per registrare la tua carta sarà gestita da OVH S.A.S.", + "billing_payment_method_add_credit_card_registration_charges_info": "Per verificare il corretto funzionamento della carta verrà effettuato un addebito per un importo massimo di {{ registrationCharges }}. Questa somma verrà totalmente rimborsata entro 48 ore." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..658c2a705808 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_pl_PL.json @@ -0,0 +1,41 @@ +{ + "billing_payment_method_add_title": "Dodaj sposób płatności", + "billing_payment_method_add_back_btn_title": "Powrót do sposobów płatności", + "billing_payment_method_add_choose_type": "Wybór metody płatności", + "billing_payment_method_add_selected_common_redirect": "Zostaniesz przekierowany do bezpiecznego interfejsu naszego dostawcy, abyś mógł zarejestrować nową kartę bankową.", + "billing_payment_method_add_selected_paypal_redirect": "Klikając na przycisk \"Paypal\", otworzy się wyskakujące okno, aby dokończyć dodawanie metody płatności.", + "billing_payment_method_add_selected_paypal_redirect_US": "Aby zakończyć dodawanie konta PayPal i sposobu płatności, kliknij przycisk PayPal poniżej. Otworzy się okno pop-up, które przekieruje Cię do bezpiecznego serwera PayPal. Wprowadź w tym oknie wymagane informacje.", + "billing_payment_method_add_selected_original_credit_card_redirect": "Klikając na przycisk \"Dodaj\", dokument zostanie pobrany. Proszę postępować zgodnie z procedurą opisaną w dokumencie, aby zatwierdzić metodę płatności.", + "billing_payment_method_add_credit_card_selected": "Twoja karta bankowa zostanie natychmiast włączona.", + "billing_payment_method_add_credit_card_selected_explain_generic": "W celu potwierdzenia rejestracji i ważności Twojej nowej karty bankowej zablokujemy na Twoim koncie określoną kwotę. Kwota ta nie zostanie jednak przez nas pobrana. Karta nie zostanie obciążona.", + "billing_payment_method_add_default_payment": "Ten sposób płatności będzie używany do automatycznych płatności za Twoją usługę. Możesz to zmienić w każdej chwili w swoich metodach płatności. Dostaniesz powiadomienie e-mailem przed każdym nowym terminem płatności,", + "billing_payment_method_add_set_as_default_payment": "Chcę wybrać ten domyślny sposób płatności od chwili jego zatwierdzenia.", + "billing_payment_method_add_bank_account_informations": "Informacje bankowe", + "billing_payment_method_add_bank_account_address": "Właściciel konta", + "billing_payment_method_add_billing_address": "Adres na fakturze", + "billing_payment_method_add_billing_address_existing": "Wybierz istniejący adres", + "billing_payment_method_add_billing_address_create": "Dodaj nowy adres", + "billing_payment_method_add_payment_method": "Informacja o metodzie płatności", + "billing_payment_method_add_info": "Otworzyła się nowa zakładka kierująca do bezpiecznej strony, abyś mógł zakończyć dodawania Twojego sposobu płatności. Jeśli nie otworzyła się żadna zakładka, kliknij ten link.", + "billing_payment_method_add_bank_account_success": "Konto bankowe zostało dodane. Będzie ono aktywne po zatwierdzeniu. Aby potwierdzić sposób płatności, postępuj zgodnie z procedurą opisaną w tym dokumencie. Procedurę należy przesłać drogą pocztową. Twoje konto bankowe zostanie zatwierdzone w ciągu 24-48 godzin od chwili uzyskania upoważnienia do obciążania rachunku.", + "billing_payment_method_add_load_error": "Wystąpił błąd podczas ładowania strony.", + "billing_payment_method_add_status_cancel": "Żądanie dodania metody płatności zostało anulowane. Twoja metoda płatności nie jest zatem powiązana z Twoim kontem OVH.", + "billing_payment_method_add_status_error": "Wystąpił błąd podczas dodawania metody płatności. ", + "billing_payment_method_add_status_failure": "Wystąpił błąd podczas dodawania metody płatności. ", + "billing_payment_method_add_status_pending": "Twoja metoda płatności oczekuje na dodanie.", + "billing_payment_method_add_vantiv_recoverable_credit_card_error": "Wystąpił błąd podczas dodawania metody płatności. Sprawdź, czy numer Twojej karty kredytowej jest prawidłowy i spróbuj ponownie.", + "billing_payment_method_add_vantiv_recoverable_card_validation_number_error": "Wystąpił błąd podczas dodawania metody płatności. Sprawdź, czy kod weryfikacyjny Twojej karty kredytowej jest prawidłowy i spróbuj ponownie.", + "billing_payment_method_add_status_success": "Twój sposób płatności został dodany.", + "billing_payment_method_add_sepa_success": "Dyspozycja dodania konta bankowego SEPA została przyjęta. Dyspozycja oczekuje na podpis elektroniczny (sprawdź swoją skrzynkę e-mail) lub jest w trakcie przetwarzania w naszych systemach.", + "billing_payment_method_add_error": "Wystąpił błąd podczas dodawania Twojego sposobu płatności: {{errorMessage}}.", + "billing_payment_method_add_alert_add_method": "Jeśli masz problem z dodaniem nowego sposobu płatności, dodaj wyjątek do blokady reklam dla {{hostname}} lub zaloguj się w trybie incognito przeglądarki i spróbuj ponownie. Nigdy nie wyświetlamy reklam w Panelu klienta. Twój program do blokowania reklam może wchodzić w konflikt z naszym systemem płatności.", + "billing_payment_method_add_alert_first_payment_failure": "Ponadto, jeśli Twoja pierwsza płatność nie zostanie przetworzona, spróbuj utworzyć nowy sposób płatności przy użyciu tej samej karty, której właśnie użyłeś. Nasz system automatycznie pobierze płatność z nowej karty.", + "billing_payment_method_add_sepa_direct_debit_info": "Podpisując polecenie zapłaty, zezwalasz OVH S.A.S na zarejestrowanie tego sposobu płatności jako domyślnego w celu ułatwienia regulowania należności za przyszłe zamówienia. Domyślny sposób płatności zostanie automatycznie użyty w każdym kolejnym terminie płatności do opłacenia usług z opcją automatycznego odnowienia oraz płatności za wykorzystane zasoby („pay as you go”). W każdej chwili możesz dodawać, usuwać lub modyfikować sposoby płatności w Panelu klienta.", + "billing_payment_method_add_sepa_direct_debit_warning_redirection": "Zostaniesz przekierowany do sekcji, w której zarejestrujesz swój rachunek bankowy i podpiszesz elektronicznie polecenie zapłaty.", + "billing_payment_method_add_sepa_direct_debit_warning_order": "Następnie będziesz mógł użyć tego sposobu płatności, aby sfinalizować zamówienie.", + "billing_payment_method_add_sepa_direct_debit_warning_owner_identity": "Uwaga: właściciel konta bankowego oraz właściciel konta OVHcloud muszą być identyczni.", + "billing_payment_method_add_sepa_direct_debit_data_processing_info": "Gromadzone dane są przetwarzane przez firmę OVHcloud występującą w charakterze administratora danych w celu realizacji polecenia zapłaty SEPA.", + "billing_payment_method_add_sepa_direct_debit_digital_signature_info": "Ustanowienie polecenia zapłaty SEPA wymaga Twojego pełnomocnictwa opatrzonego podpisem elektronicznym wygenerowanym za pomocą rozwiązania dostarczonego przez Worldline - dostawcę zaufanych usług określonych w rozporządzeniu eDIAS nr 910/2014 z dnia 23 lipca 2014 r. Dane przekazywane są Worldline wyłącznie do wskazanego wyżej celu.", + "billing_payment_method_add_credit_card_selected_explain_ovh_transaction": "Transakcja mająca na celu rejestrację Twojej karty zostanie przetworzona przez OVH S.A.S.", + "billing_payment_method_add_credit_card_registration_charges_info": "W celu sprawdzenia prawidłowego działania Twojej karty pobierzemy płatność w maksymalnej kwocie {{RegistrationCharges}}. Całość kwoty zwrócimy Ci w ciągu 48 godzin." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..ebf8f53480c2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/translations/Messages_pt_PT.json @@ -0,0 +1,41 @@ +{ + "billing_payment_method_add_title": "Adicionar um método de pagamento", + "billing_payment_method_add_back_btn_title": "Voltar aos meus meios de pagamento", + "billing_payment_method_add_choose_type": "Escolha do método de pagamento", + "billing_payment_method_add_selected_common_redirect": "Será redirecionado para a interface segura do nosso fornecedor para registar um novo cartão de pagamento.", + "billing_payment_method_add_selected_paypal_redirect": "Ao clicar no botão \"Paypal\", será redirecionado para uma janela para finalizar a adição do método de pagamento.", + "billing_payment_method_add_selected_paypal_redirect_US": "Para completar a adição da sua conta PayPal e do seu método de pagamento, clique no botão PayPal abaixo. Aparecerá uma janela pop-up, que o reencaminhará para o servidor seguro PayPal, na qual será possível inserir as informações necessárias.", + "billing_payment_method_add_selected_original_credit_card_redirect": "Ao clicar no botão \"Adicionar\", um documento será descarregado. Siga o procedimento descrito no documento para validar o método de pagamento.", + "billing_payment_method_add_credit_card_selected": "O seu cartão de pagamento será ativado imediatamente.", + "billing_payment_method_add_credit_card_selected_explain_generic": "Para registar um novo cartão de pagamento, é efetuada uma tentativa de débito junto do seu banco para validar o número e a validade do cartão. Não será debitado qualquer montante.", + "billing_payment_method_add_default_payment": "Este método de pagamento será utilizado para o pagamento automático do seu produto. Pode alterá-lo a qualquer momento na sua secção de métodos de pagamento. Receberá uma notificação por e-mail antes de cada prazo de pagamento.", + "billing_payment_method_add_set_as_default_payment": "Pretendo selecionar este método de pagamento predefinido após a sua validação.", + "billing_payment_method_add_bank_account_informations": "Informações bancárias", + "billing_payment_method_add_bank_account_address": "Titular da conta", + "billing_payment_method_add_billing_address": "Morada de faturação", + "billing_payment_method_add_billing_address_existing": "Selecionar uma morada existente", + "billing_payment_method_add_billing_address_create": "Adicionar uma nova morada", + "billing_payment_method_add_payment_method": "Informações sobre o método de pagamento", + "billing_payment_method_add_info": "Um novo separador foi aberto para uma página segura para finalizar a adição de seu método de pagamento. Se nenhum novo separador aparecer, clique nesta ligação.", + "billing_payment_method_add_bank_account_success": "A conta bancária foi adicionada e estará ativa assim que for validada. Siga o procedimento descrito neste documento para validar o método de pagamento a enviar por correio. A sua conta bancária será válida após 24-48h úteis a contar a partir da receção da sua autorização de débito.", + "billing_payment_method_add_load_error": "Ocorreu um erro ao carregar a página.", + "billing_payment_method_add_status_cancel": "O pedido de adição do método de pagamento foi cancelado. O seu método de pagamento não está associado à sua conta OVHcloud.", + "billing_payment_method_add_status_error": "Ocorreu um erro ao adicionar o método de pagamento.", + "billing_payment_method_add_status_failure": "Ocorreu um erro ao adicionar o método de pagamento.", + "billing_payment_method_add_status_pending": "A adição do seu método de pagamento está em espera.", + "billing_payment_method_add_vantiv_recoverable_credit_card_error": "Ocorreu um erro ao adicionar o seu método de pagamento. Verifique o número do seu cartão de pagamento e insira-o novamente.", + "billing_payment_method_add_vantiv_recoverable_card_validation_number_error": "Ocorreu um erro ao adicionar o seu método de pagamento. Verifique o código de segurança do seu cartão de pagamento e insira-o novamente.", + "billing_payment_method_add_status_success": "O seu método de pagamento foi adicionado com êxito.", + "billing_payment_method_add_sepa_success": "O seu pedido de adição de uma conta bancária SEPA foi registado. O pedido está aguardar uma assinatura eletrónica (verifique a sua caixa de e-mail) ou está a ser tratado pelos nossos serviços.", + "billing_payment_method_add_error": "Ocorreu um erro ao adicionar o seu método de pagamento: {{ errorMessage }}", + "billing_payment_method_add_alert_add_method": "Se tiver dificuldades em adicionar um novo método de pagamento, adicione uma exceção ao seu bloqueador de publicidades para {{ hostname }} ou ligue-se em modo privado do seu browser e tente novamente. Não voltaremos a apresentar publicidades na Área de Cliente. Tenha em conta que o seu bloqueador de publicidades pode interferir com o nosso sistema de pagamento.", + "billing_payment_method_add_alert_first_payment_failure": "Além disso, se não foi possível realizar o primeiro pagamento, tente criar um novo método de pagamento com o mesmo cartão de pagamento que acabou de utilizar. O nosso sistema cobrará automaticamente o montante no novo cartão de pagamento.", + "billing_payment_method_add_sepa_direct_debit_info": "Ao assinar uma autorização de débito direto, autoriza a OVH S.A.S a registar este método de pagamento como método de pagamento predefinido, de forma a facilitar o pagamento das suas próximas encomendas. A cada nova data de vencimento, será automaticamente utilizado para o pagamento dos seus serviços em renovação automática e em pagamento conforme a sua utilização (\"Pay as you go\"). Pode adicionar, eliminar ou alterar métodos de pagamento a qualquer momento na sua Área de Cliente.", + "billing_payment_method_add_sepa_direct_debit_warning_redirection": "Será reencaminhado para um espaço que permite o registo da sua conta bancária e a assinatura eletrónica do débito direto.", + "billing_payment_method_add_sepa_direct_debit_warning_order": "Poderá utilizar este método de pagamento para finalizar a sua encomenda.", + "billing_payment_method_add_sepa_direct_debit_warning_owner_identity": "Atenção: o proprietário da conta bancária deve ser idêntico ao proprietário da conta OVHcloud.", + "billing_payment_method_add_sepa_direct_debit_data_processing_info": "Os dados recolhidos são tratados pela OVHcloud enquanto responsável pelo tratamento, de forma a implementar o débito direto SEPA.", + "billing_payment_method_add_sepa_direct_debit_digital_signature_info": "A criação de um débito direto SEPA requer uma autorização que deverá assinar eletronicamente utilizando uma solução fornecida por Worldline, um prestador autorizado a prestar serviços de confiança, tal como estabelecido no regulamento \"eDIAS\" n.º 910/2014, de 23 de julho de 2014. Neste contexto, esses dados ser-lhe-ão comunicados.", + "billing_payment_method_add_credit_card_selected_explain_ovh_transaction": "A transação para registar o seu cartão será tratada pela OVH S.A.S.", + "billing_payment_method_add_credit_card_registration_charges_info": "Será efetuado um pagamento máximo de {{ registrationCharges }} para validar o bom funcionamento do seu cartão. Será integralmente reembolsado num prazo de 48 horas." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/component.js b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/component.js new file mode 100644 index 000000000000..56b72004ff22 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/component.js @@ -0,0 +1,11 @@ +import controller from './controller'; +import template from './index.html'; + +export default { + name: 'paymentMethodAddBankAccountView', + bindings: { + model: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/controller.js b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/controller.js new file mode 100644 index 000000000000..f1b066f38369 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/controller.js @@ -0,0 +1,15 @@ +export default class PaymentMethodAddBankAccountCtrl { + /* @ngInject */ + constructor(ovhPaymentMethodHelper) { + // other attributes + this.isValidIban = ovhPaymentMethodHelper.isValidIban; + this.isValidBic = ovhPaymentMethodHelper.isValidBic; + } + + $onInit() { + this.model.bankAccount = { + iban: null, + bic: null, + }; + } +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/index.html b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/index.html new file mode 100644 index 000000000000..e3167c887430 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/index.html @@ -0,0 +1,35 @@ + diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/index.js b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/index.js new file mode 100644 index 000000000000..eeb33e85f380 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/index.js @@ -0,0 +1,16 @@ +import angular from 'angular'; + +import angularTranslate from 'angular-translate'; +import '@ovh-ux/ui-kit'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; + +import component from './component'; + +const moduleName = 'ovhBillingPaymentMethodAddBankAccountView'; + +angular + .module(moduleName, [angularTranslate, 'oui', ngTranslateAsyncLoader]) + .run(/* @ngTranslationsInject:json ./translations */) + .component(component.name, component); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_de_DE.json new file mode 100644 index 000000000000..20769502b70c --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_de_DE.json @@ -0,0 +1,6 @@ +{ + "billing_payment_method_add_bank_account_informations_iban": "IBAN", + "billing_payment_method_add_bank_account_informations_bic": "BIC", + "billing_payment_method_add_bank_account_informations_iban_format": "Das Format Ihrer IBAN ist nicht korrekt.", + "billing_payment_method_add_bank_account_informations_bic_format": "Das Format Ihres BIC-Codes ist nicht korrekt." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_en_GB.json new file mode 100644 index 000000000000..61278438d6d2 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_en_GB.json @@ -0,0 +1,6 @@ +{ + "billing_payment_method_add_bank_account_informations_iban": "IBAN", + "billing_payment_method_add_bank_account_informations_bic": "BIC", + "billing_payment_method_add_bank_account_informations_iban_format": "The format for your IBAN number is not correct.", + "billing_payment_method_add_bank_account_informations_bic_format": "The format for your BIC code is not correct." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_es_ES.json new file mode 100644 index 000000000000..67fd5de829b6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_es_ES.json @@ -0,0 +1,6 @@ +{ + "billing_payment_method_add_bank_account_informations_iban": "IBAN", + "billing_payment_method_add_bank_account_informations_bic": "BIC", + "billing_payment_method_add_bank_account_informations_iban_format": "El formato del código IBAN no es correcto.", + "billing_payment_method_add_bank_account_informations_bic_format": "El formato del código BIC no es correcto." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..1ec844b4da04 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_fr_CA.json @@ -0,0 +1,6 @@ +{ + "billing_payment_method_add_bank_account_informations_iban": "IBAN", + "billing_payment_method_add_bank_account_informations_bic": "BIC", + "billing_payment_method_add_bank_account_informations_iban_format": "Le format de votre IBAN n'est pas correct.", + "billing_payment_method_add_bank_account_informations_bic_format": "Le format de votre code BIC n'est pas correct." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..1ec844b4da04 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_fr_FR.json @@ -0,0 +1,6 @@ +{ + "billing_payment_method_add_bank_account_informations_iban": "IBAN", + "billing_payment_method_add_bank_account_informations_bic": "BIC", + "billing_payment_method_add_bank_account_informations_iban_format": "Le format de votre IBAN n'est pas correct.", + "billing_payment_method_add_bank_account_informations_bic_format": "Le format de votre code BIC n'est pas correct." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_it_IT.json new file mode 100644 index 000000000000..195aa0dd09e3 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_it_IT.json @@ -0,0 +1,6 @@ +{ + "billing_payment_method_add_bank_account_informations_iban": "IBAN", + "billing_payment_method_add_bank_account_informations_bic": "BIC", + "billing_payment_method_add_bank_account_informations_iban_format": "Il formato dell'IBAN non è corretto.", + "billing_payment_method_add_bank_account_informations_bic_format": "Il formato del codice BIC non è corretto." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..9e0d1496bc41 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_pl_PL.json @@ -0,0 +1,6 @@ +{ + "billing_payment_method_add_bank_account_informations_iban": "IBAN", + "billing_payment_method_add_bank_account_informations_bic": "BIC", + "billing_payment_method_add_bank_account_informations_iban_format": "Format IBAN jest nieprawidłowy.", + "billing_payment_method_add_bank_account_informations_bic_format": "Format BIC jest nieprawidłowy." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..720cb9ea5386 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/bankAccount/translations/Messages_pt_PT.json @@ -0,0 +1,6 @@ +{ + "billing_payment_method_add_bank_account_informations_iban": "IBAN", + "billing_payment_method_add_bank_account_informations_bic": "BIC", + "billing_payment_method_add_bank_account_informations_iban_format": "O formato do IBAN não está correto.", + "billing_payment_method_add_bank_account_informations_bic_format": "O formato do BIC não está correto." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/component.js b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/component.js new file mode 100644 index 000000000000..44f7e9307636 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/component.js @@ -0,0 +1,12 @@ +import controller from './controller'; +import template from './index.html'; + +export default { + name: 'paymentMethodAddBillingContactView', + bindings: { + addSteps: '<', + model: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/controller.js b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/controller.js new file mode 100644 index 000000000000..2fd8a9c57fa6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/controller.js @@ -0,0 +1,75 @@ +import sortBy from 'lodash/sortBy'; + +export default class BillingPaymentMethodAddBillingContactViewCtrl { + /* @ngInject */ + constructor(ovhContacts) { + this.ovhContacts = ovhContacts; + + // attributes used in view + this.activeTab = null; + this.contactList = null; + this.defaultContact = null; + } + + static sortContacts(contacts) { + return sortBy(contacts, 'lastName'); + } + + addContact(contact) { + this.contactList.push(contact); + this.contactList = BillingPaymentMethodAddBillingContactViewCtrl.sortContacts( + this.contactList, + ); + return this.contactList; + } + + /* ============================= + = Events = + ============================== */ + + onExistingContactTabActive() { + this.activeTab = 'existing'; + this.model.billingContact = this.defaultContact; + } + + onNewContactTabActive() { + this.activeTab = 'new'; + this.model.billingContact = { + address: {}, + }; + } + + /* ----- End of Events ------ */ + + /* ============================ + = Hooks = + ============================= */ + + $onInit() { + this.addSteps.billingContact.loading = true; + this.activeTab = 'existing'; + + this.ovhContacts + .getContacts() + .then((contacts) => { + this.contactList = BillingPaymentMethodAddBillingContactViewCtrl.sortContacts( + contacts, + ); + return this.ovhContacts.findMatchingContactFromNic(null, contacts); + }) + .then((contact) => { + this.defaultContact = contact; + if (!contact.id) { + this.addContact(contact); + } + + // set model + this.model.billingContact = this.defaultContact; + }) + .finally(() => { + this.addSteps.billingContact.loading = false; + }); + } + + /* ----- End of Hooks ------ */ +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/index.html b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/index.html new file mode 100644 index 000000000000..33d93b56222e --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/index.html @@ -0,0 +1,98 @@ +
+
+ +
+ + + +
+
+
+
+
+ + + + + + + + + + + + +
+ +
+
+ + + + +
+ +
+
+ +
+
+
+
+
+
+ + + + +
+
diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/index.js b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/index.js new file mode 100644 index 000000000000..016b6421608b --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/index.js @@ -0,0 +1,23 @@ +import angular from 'angular'; + +import angularTranslate from 'angular-translate'; +import '@ovh-ux/ui-kit'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import ngOvhContacts from '@ovh-ux/ng-ovh-contacts'; + +import component from './component'; +import './index.scss'; + +const moduleName = 'ovhBillingPaymentMethodAddBillingContactView'; + +angular + .module(moduleName, [ + angularTranslate, + 'oui', + ngTranslateAsyncLoader, + ngOvhContacts, + ]) + .run(/* @ngTranslationsInject:json ./translations */) + .component(component.name, component); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/index.scss b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/index.scss new file mode 100644 index 000000000000..5a7fa12d58bb --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/index.scss @@ -0,0 +1,9 @@ +.billing-payment-method-add-billing-contact { + .oui-ui-select { + margin-bottom: 0; + + .ui-select-choices-row-inner { + width: 100%; + } + } +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_de_DE.json new file mode 100644 index 000000000000..15e25fc9a973 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_de_DE.json @@ -0,0 +1,15 @@ +{ + "billing_payment_method_add_billing_contact_existing": "Vorhandene Adresse auswählen", + "billing_payment_method_add_billing_contact_create": "Neue Adresse hinzufügen", + "billing_payment_method_add_billing_contact_existing_name": "Name und Vorname", + "billing_payment_method_add_billing_contact_existing_address": "Adresse", + "billing_payment_method_add_billing_contact_existing_phone": "Telefon", + "billing_payment_method_add_billing_contact_existing_email": "E-Mail", + "billing_payment_method_add_billing_contact_existing_firstName": "Vorname", + "billing_payment_method_add_billing_contact_existing_lastName": "Name", + "billing_payment_method_add_billing_contact_existing_country": "Land", + "billing_payment_method_add_billing_contact_existing_zip": "Postleitzahl", + "billing_payment_method_add_billing_contact_existing_city": "Stadt", + "billing_payment_method_add_billing_contact_create_general_infos": "Allgemeine Informationen", + "billing_payment_method_add_billing_contact_create_profile": "Profil" +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_en_GB.json new file mode 100644 index 000000000000..7073e73107c1 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_en_GB.json @@ -0,0 +1,15 @@ +{ + "billing_payment_method_add_billing_contact_existing": "Choose an existing address", + "billing_payment_method_add_billing_contact_create": "Add a new address", + "billing_payment_method_add_billing_contact_existing_name": "Name and surname", + "billing_payment_method_add_billing_contact_existing_address": "Address", + "billing_payment_method_add_billing_contact_existing_phone": "Phone", + "billing_payment_method_add_billing_contact_existing_email": "Email address", + "billing_payment_method_add_billing_contact_existing_firstName": "First name", + "billing_payment_method_add_billing_contact_existing_lastName": "Name", + "billing_payment_method_add_billing_contact_existing_country": "Country", + "billing_payment_method_add_billing_contact_existing_zip": "Postcode", + "billing_payment_method_add_billing_contact_existing_city": "City", + "billing_payment_method_add_billing_contact_create_general_infos": "General information", + "billing_payment_method_add_billing_contact_create_profile": "Profile" +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_es_ES.json new file mode 100644 index 000000000000..bb05147b28e5 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_es_ES.json @@ -0,0 +1,15 @@ +{ + "billing_payment_method_add_billing_contact_existing": "Seleccionar una dirección existente", + "billing_payment_method_add_billing_contact_create": "Añadir una nueva dirección", + "billing_payment_method_add_billing_contact_existing_name": "Nombre y apellido", + "billing_payment_method_add_billing_contact_existing_address": "Dirección", + "billing_payment_method_add_billing_contact_existing_phone": "Teléfono", + "billing_payment_method_add_billing_contact_existing_email": "Correo electrónico", + "billing_payment_method_add_billing_contact_existing_firstName": "Nombre", + "billing_payment_method_add_billing_contact_existing_lastName": "Apellidos", + "billing_payment_method_add_billing_contact_existing_country": "País", + "billing_payment_method_add_billing_contact_existing_zip": "Código postal", + "billing_payment_method_add_billing_contact_existing_city": "Localidad", + "billing_payment_method_add_billing_contact_create_general_infos": "Información general", + "billing_payment_method_add_billing_contact_create_profile": "Perfil" +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..5ed57c092313 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_fr_CA.json @@ -0,0 +1,15 @@ +{ + "billing_payment_method_add_billing_contact_existing": "Choisir une adresse existante", + "billing_payment_method_add_billing_contact_create": "Ajouter une nouvelle adresse", + "billing_payment_method_add_billing_contact_existing_name": "Nom et prénom", + "billing_payment_method_add_billing_contact_existing_address": "Adresse", + "billing_payment_method_add_billing_contact_existing_phone": "Téléphone", + "billing_payment_method_add_billing_contact_existing_email": "E-mail", + "billing_payment_method_add_billing_contact_existing_firstName": "Prénom", + "billing_payment_method_add_billing_contact_existing_lastName": "Nom", + "billing_payment_method_add_billing_contact_existing_country": "Pays", + "billing_payment_method_add_billing_contact_existing_zip": "Code postal", + "billing_payment_method_add_billing_contact_existing_city": "Ville", + "billing_payment_method_add_billing_contact_create_general_infos": "Informations générales", + "billing_payment_method_add_billing_contact_create_profile": "Profil" +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..5ed57c092313 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_fr_FR.json @@ -0,0 +1,15 @@ +{ + "billing_payment_method_add_billing_contact_existing": "Choisir une adresse existante", + "billing_payment_method_add_billing_contact_create": "Ajouter une nouvelle adresse", + "billing_payment_method_add_billing_contact_existing_name": "Nom et prénom", + "billing_payment_method_add_billing_contact_existing_address": "Adresse", + "billing_payment_method_add_billing_contact_existing_phone": "Téléphone", + "billing_payment_method_add_billing_contact_existing_email": "E-mail", + "billing_payment_method_add_billing_contact_existing_firstName": "Prénom", + "billing_payment_method_add_billing_contact_existing_lastName": "Nom", + "billing_payment_method_add_billing_contact_existing_country": "Pays", + "billing_payment_method_add_billing_contact_existing_zip": "Code postal", + "billing_payment_method_add_billing_contact_existing_city": "Ville", + "billing_payment_method_add_billing_contact_create_general_infos": "Informations générales", + "billing_payment_method_add_billing_contact_create_profile": "Profil" +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_it_IT.json new file mode 100644 index 000000000000..02932a34b8a8 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_it_IT.json @@ -0,0 +1,15 @@ +{ + "billing_payment_method_add_billing_contact_existing": "Scegli un indirizzo esistente", + "billing_payment_method_add_billing_contact_create": "Aggiungi un nuovo indirizzo", + "billing_payment_method_add_billing_contact_existing_name": "Nome e Cognome", + "billing_payment_method_add_billing_contact_existing_address": "Indirizzo", + "billing_payment_method_add_billing_contact_existing_phone": "Telefono", + "billing_payment_method_add_billing_contact_existing_email": "Email", + "billing_payment_method_add_billing_contact_existing_firstName": "Nome", + "billing_payment_method_add_billing_contact_existing_lastName": "Nome", + "billing_payment_method_add_billing_contact_existing_country": "Paese", + "billing_payment_method_add_billing_contact_existing_zip": "Codice postale", + "billing_payment_method_add_billing_contact_existing_city": "Città", + "billing_payment_method_add_billing_contact_create_general_infos": "Informazioni generali", + "billing_payment_method_add_billing_contact_create_profile": "Profilo" +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..6dfd6300fd8b --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_pl_PL.json @@ -0,0 +1,15 @@ +{ + "billing_payment_method_add_billing_contact_existing": "Wybierz istniejący adres", + "billing_payment_method_add_billing_contact_create": "Dodaj nowy adres", + "billing_payment_method_add_billing_contact_existing_name": "Nom et prénom", + "billing_payment_method_add_billing_contact_existing_address": "Adres", + "billing_payment_method_add_billing_contact_existing_phone": "Telefon", + "billing_payment_method_add_billing_contact_existing_email": "Adres e-mail", + "billing_payment_method_add_billing_contact_existing_firstName": "Imię", + "billing_payment_method_add_billing_contact_existing_lastName": "Nazwisko", + "billing_payment_method_add_billing_contact_existing_country": "Kraj", + "billing_payment_method_add_billing_contact_existing_zip": "Kod pocztowy", + "billing_payment_method_add_billing_contact_existing_city": "Miasto", + "billing_payment_method_add_billing_contact_create_general_infos": "Informacje ogólne", + "billing_payment_method_add_billing_contact_create_profile": "#profil" +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..e86ad2a19381 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/billingContact/translations/Messages_pt_PT.json @@ -0,0 +1,15 @@ +{ + "billing_payment_method_add_billing_contact_existing": "Selecionar uma morada existente", + "billing_payment_method_add_billing_contact_create": "Adicionar uma nova morada", + "billing_payment_method_add_billing_contact_existing_name": "Sobrenome e nome", + "billing_payment_method_add_billing_contact_existing_address": "Morada", + "billing_payment_method_add_billing_contact_existing_phone": "Telefone", + "billing_payment_method_add_billing_contact_existing_email": "E-mail", + "billing_payment_method_add_billing_contact_existing_firstName": "Nome", + "billing_payment_method_add_billing_contact_existing_lastName": "Sobrenome", + "billing_payment_method_add_billing_contact_existing_country": "País", + "billing_payment_method_add_billing_contact_existing_zip": "Código postal", + "billing_payment_method_add_billing_contact_existing_city": "Cidade", + "billing_payment_method_add_billing_contact_create_general_infos": "Informações gerais", + "billing_payment_method_add_billing_contact_create_profile": "Perfil" +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/component.js b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/component.js new file mode 100644 index 000000000000..48647797aae7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/component.js @@ -0,0 +1,12 @@ +import controller from './controller'; +import template from './index.html'; + +export default { + name: 'paymentMethodAddLegacyBillingAddressView', + bindings: { + currentUser: '<', + model: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/constants.js b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/constants.js new file mode 100644 index 000000000000..f804c36d43e5 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/constants.js @@ -0,0 +1,19 @@ +export const PERSONAL_DATA_PROTECTION_BY_OVH_LINK = { + FR: + 'https://www.ovh.com/fr/protection-donnees-personnelles/privacy_policy.xml', + DEFAULT: 'https://www.ovh.ie/personal-data-protection/privacy_policy.xml', + DE: 'https://www.ovh.de/schutz-personenbezogener-daten/privacy_policy.xml', +}; + +export const PERSONAL_DATA_PROTECTION_BY_YOUSIGN_LINK = { + FR: + 'https://yousign.com/fr-fr/conditions-generales#souscription-aux-services-et-acceptation-des-conditions-generales', + DEFAULT: 'https://yousign.com/terms', + DE: + 'https://yousign.com/de-de/nutzungsbedingungen#serviceabonnement-und-akzeptanz-der-allgemeinen-geschaftsbedingungen', +}; + +export default { + PERSONAL_DATA_PROTECTION_BY_OVH_LINK, + PERSONAL_DATA_PROTECTION_BY_YOUSIGN_LINK, +}; diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/controller.js b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/controller.js new file mode 100644 index 000000000000..ebc5eeb87a6d --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/controller.js @@ -0,0 +1,59 @@ +/* eslint-disable max-classes-per-file */ + +import { + PERSONAL_DATA_PROTECTION_BY_OVH_LINK, + PERSONAL_DATA_PROTECTION_BY_YOUSIGN_LINK, +} from './constants'; + +class BankAccountModel { + constructor(country) { + this.country = country; + + this.ownerName = null; + this.addressNumber = null; + this.addressStreet = null; + this.addressZip = null; + this.addressCity = null; + this.fullAddress = null; + } + + get ownerAddress() { + if (this.country !== 'FR') { + return this.fullAddress; + } + + return [ + this.addressNumber || '', + this.addressStreet || '', + this.addressZip || '', + this.addressCity || '', + ] + .join(' ') + .trim(); + } +} + +export default class PaymentMethodAddLegacyBillingAddressCtrl { + /* @ngInject */ + constructor(coreConfig) { + this.coreConfig = coreConfig; + } + + $onInit() { + this.model.billingAddress = new BankAccountModel( + this.currentUser.billingCountry, + ); + this.setDataProtectionLinks(); + } + + setDataProtectionLinks() { + const { ovhSubsidiary } = this.coreConfig.getUser(); + this.dataProtectionOvhLink = + PERSONAL_DATA_PROTECTION_BY_OVH_LINK[ovhSubsidiary] || + PERSONAL_DATA_PROTECTION_BY_OVH_LINK.DEFAULT; + this.dataProtectionYouSignLink = + PERSONAL_DATA_PROTECTION_BY_YOUSIGN_LINK[ovhSubsidiary] || + PERSONAL_DATA_PROTECTION_BY_YOUSIGN_LINK.DEFAULT; + } +} +/* eslint-enable max-classes-per-file */ diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/index.html b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/index.html new file mode 100644 index 000000000000..c88b9c14cf27 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/index.html @@ -0,0 +1,126 @@ + diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/index.js b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/index.js new file mode 100644 index 000000000000..03f8121e702d --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/index.js @@ -0,0 +1,16 @@ +import angular from 'angular'; + +import angularTranslate from 'angular-translate'; +import '@ovh-ux/ui-kit'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; + +import component from './component'; + +const moduleName = 'ovhBillingPaymentMethodAddLegacyBillingAddressView'; + +angular + .module(moduleName, [angularTranslate, 'oui', ngTranslateAsyncLoader]) + .run(/* @ngTranslationsInject:json ./translations */) + .component(component.name, component); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_de_DE.json new file mode 100644 index 000000000000..c0201fa09a1c --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_de_DE.json @@ -0,0 +1,13 @@ +{ + "billing_payment_method_add_bank_account_address_number": "Nummer", + "billing_payment_method_add_bank_account_address_street": "Straße", + "billing_payment_method_add_bank_account_address_zip": "Postleitzahl", + "billing_payment_method_add_bank_account_address_city": "Stadt", + "billing_payment_method_add_bank_account_owner_name": "Name und Vorname des Inhabers oder Name der Inhaber-Organisation", + "billing_payment_method_add_bank_account_owner_address": "Adresse des Kontoinhabers", + "billing_payment_method_add_bank_account_owner_notification_info": "Sie erhalten in den nächsten 24 bis 48 Stunden einen elektronischen Signaturlink für Ihr Lastschriftmandat per Nachricht an die E-Mail-Adresse Ihres OVHcloud Accounts.", + "billing_payment_method_add_bank_account_owner_info": "Bitte beachten Sie: Der Inhaber des Bankkontos muss mit dem Inhaber des OVHcloud Accounts identisch sein.", + "billing_payment_method_add_bank_account_owner_confirmation_info": "Diese neue Zahlungsmittel steht Ihnen zur Verfügung, sobald unsere Mitarbeiter das unterzeichnete Lastschriftmandat erhalten und bestätigt haben.", + "billing_payment_method_add_bank_account_data_process_by_ovh_info": "OVHcloud verarbeitet die über dieses Formular erhobenen Daten als für die Verarbeitung Verantwortlicher, um Ihre SEPA-Lastschrift einzurichten. Hier erfahren Sie mehr darüber, wie OVHcloud Ihre Daten verarbeitet, und wie Sie Ihre Rechte ausüben können.", + "billing_payment_method_add_bank_account_data_process_by_yousign_info": "Das Einrichten einer SEPA-Lastschrift erfordert ein Mandat. Wir bitten Sie, dieses elektronisch zu unterzeichnen. Dies erfolgt mit der IT-Lösung von Yousign, einem Anbieter von zuverlässigen vertrauenswürdigen Dienstleistungen gemäß der EU-Verordnung Nr. 910/2014 vom 23. Juli 2014 über elektronische Identifizierung und Vertrauensdienste für elektronische Transaktionen (Electronic IDentification Authentication and trust Services, eIDAS). In diesem Zusammenhang werden ihm diese Daten übermittelt. Erfahren Sie mehr zur Verwaltung Ihrer Daten durch Yousign." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_en_GB.json new file mode 100644 index 000000000000..cef60b5f62dc --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_en_GB.json @@ -0,0 +1,13 @@ +{ + "billing_payment_method_add_bank_account_address_number": "Number", + "billing_payment_method_add_bank_account_address_street": "Street name", + "billing_payment_method_add_bank_account_address_zip": "Postcode", + "billing_payment_method_add_bank_account_address_city": "City", + "billing_payment_method_add_bank_account_owner_name": "Surname and first name of owner or organisation owner", + "billing_payment_method_add_bank_account_owner_address": "Address of account owner", + "billing_payment_method_add_bank_account_owner_notification_info": "Within 24 to 48 hours, you will receive an email via the email address linked to your OVHcloud account. This email will contain a link for the electronic signature of your direct debit mandate.", + "billing_payment_method_add_bank_account_owner_info": "Warning: the bank account owner must also be the OVHcloud account owner.", + "billing_payment_method_add_bank_account_owner_confirmation_info": "Once your direct debit mandate has been received by our services, if it gets approved, you can then use this new payment method.", + "billing_payment_method_add_bank_account_data_process_by_ovh_info": "The data collected via this form is processed by OVHcloud as a data controller in order to set up your SEPA direct debit. Find out more about how OVHcloud processes your data, and how you exercise your rights.", + "billing_payment_method_add_bank_account_data_process_by_yousign_info": "To set up a SEPA direct debit, you will need to sign a mandate electronically using a solution provided by Yousign, a service provider authorised to deliver the trusted services defined by the “eIDAS” Regulation No. 910/2014 of 23 July 2014. In this context, the data is sent to Yousign. Find out more about how Yousign manages your data." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_es_ES.json new file mode 100644 index 000000000000..c54d4bb04193 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_es_ES.json @@ -0,0 +1,13 @@ +{ + "billing_payment_method_add_bank_account_address_number": "Número", + "billing_payment_method_add_bank_account_address_street": "Nombre de la vía", + "billing_payment_method_add_bank_account_address_zip": "Código postal", + "billing_payment_method_add_bank_account_address_city": "Localidad", + "billing_payment_method_add_bank_account_owner_name": "Nombre y apellidos del propietario o nombre de la organización propietaria", + "billing_payment_method_add_bank_account_owner_address": "Dirección del titular de la cuenta", + "billing_payment_method_add_bank_account_owner_notification_info": "En las próximas 24-48 horas, recibirá un mensaje en la dirección de correo electrónico de su cuenta de OVHcloud con un enlace para la firma electrónica de su mandato de adeudo.", + "billing_payment_method_add_bank_account_owner_info": "Atención: El propietario de la cuenta bancaria debe ser el mismo que el propietario de la cuenta de OVHcloud.", + "billing_payment_method_add_bank_account_owner_confirmation_info": "Una vez que nuestro equipo haya validado su mandato, ya podrá utilizar esta nueva forma de pago.", + "billing_payment_method_add_bank_account_data_process_by_ovh_info": "Los datos recogidos a través de este formulario serán tratados por OVHcloud como responsable del tratamiento para poder crear y gestionar su adeudo directo SEPA. Más información sobre el tratamiento de sus datos por parte de OVHcloud y cómo ejercer sus derechos.", + "billing_payment_method_add_bank_account_data_process_by_yousign_info": "Para poder crear un adeudo directo SEPA, deberá firmar electrónicamente un mandato utilizando una solución proporcionada por Yousign, un proveedor autorizado para prestar servicios de confianza, tal como se establece en el Reglamento (UE) n.º 910/2014 de 23 de julio de 2014, también conocido como «eIDAS». Los datos serán comunicados a Yousign en el marco de esta operación de firma. Más información sobre la gestión de sus datos por parte de Yousign." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..cace9a96a969 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_fr_CA.json @@ -0,0 +1,13 @@ +{ + "billing_payment_method_add_bank_account_address_number": "Numéro", + "billing_payment_method_add_bank_account_address_street": "Nom de la voie", + "billing_payment_method_add_bank_account_address_zip": "Code postal", + "billing_payment_method_add_bank_account_address_city": "Ville", + "billing_payment_method_add_bank_account_owner_name": "Nom et prénom du propriétaire ou nom de l'organisation propriétaire", + "billing_payment_method_add_bank_account_owner_address": "Adresse du propriétaire du compte", + "billing_payment_method_add_bank_account_owner_notification_info": "Vous allez recevoir dans les 24 à 48h sur l’adresse mail de votre compte OVHcloud, un e-mail comportant un lien de signature électronique de votre mandat de prélèvement.", + "billing_payment_method_add_bank_account_owner_info": "Attention, le propriétaire du compte bancaire doit être identique au propriétaire du compte OVHcloud.", + "billing_payment_method_add_bank_account_owner_confirmation_info": "Une fois réceptionné par nos services, si votre mandat est approuvé, vous pourrez alors utiliser ce nouveau moyen de paiement.", + "billing_payment_method_add_bank_account_data_process_by_ovh_info": "Les données collectées via ce formulaire sont traitées par OVHcloud en qualité de responsable de traitement afin de mettre en place votre prélèvement SEPA. En savoir plus sur le traitement de vos données par OVHcloud et l’exercice de vos droits.", + "billing_payment_method_add_bank_account_data_process_by_yousign_info": "La mise en place d’un prélèvement SEPA nécessite un mandat qu’il vous sera demandé de signer électroniquement en utilisant une solution fournie par Yousign, un prestataire habilité à délivrer les services de confiance définis par le Règlement « eIDAS » n° 910/2014 du 23 juillet 2014. Dans ce cadre, ces données lui sont communiquées. En savoir plus sur la gestion de vos données par Yousign." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..cace9a96a969 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_fr_FR.json @@ -0,0 +1,13 @@ +{ + "billing_payment_method_add_bank_account_address_number": "Numéro", + "billing_payment_method_add_bank_account_address_street": "Nom de la voie", + "billing_payment_method_add_bank_account_address_zip": "Code postal", + "billing_payment_method_add_bank_account_address_city": "Ville", + "billing_payment_method_add_bank_account_owner_name": "Nom et prénom du propriétaire ou nom de l'organisation propriétaire", + "billing_payment_method_add_bank_account_owner_address": "Adresse du propriétaire du compte", + "billing_payment_method_add_bank_account_owner_notification_info": "Vous allez recevoir dans les 24 à 48h sur l’adresse mail de votre compte OVHcloud, un e-mail comportant un lien de signature électronique de votre mandat de prélèvement.", + "billing_payment_method_add_bank_account_owner_info": "Attention, le propriétaire du compte bancaire doit être identique au propriétaire du compte OVHcloud.", + "billing_payment_method_add_bank_account_owner_confirmation_info": "Une fois réceptionné par nos services, si votre mandat est approuvé, vous pourrez alors utiliser ce nouveau moyen de paiement.", + "billing_payment_method_add_bank_account_data_process_by_ovh_info": "Les données collectées via ce formulaire sont traitées par OVHcloud en qualité de responsable de traitement afin de mettre en place votre prélèvement SEPA. En savoir plus sur le traitement de vos données par OVHcloud et l’exercice de vos droits.", + "billing_payment_method_add_bank_account_data_process_by_yousign_info": "La mise en place d’un prélèvement SEPA nécessite un mandat qu’il vous sera demandé de signer électroniquement en utilisant une solution fournie par Yousign, un prestataire habilité à délivrer les services de confiance définis par le Règlement « eIDAS » n° 910/2014 du 23 juillet 2014. Dans ce cadre, ces données lui sont communiquées. En savoir plus sur la gestion de vos données par Yousign." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_it_IT.json new file mode 100644 index 000000000000..8acbfcf855b4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_it_IT.json @@ -0,0 +1,13 @@ +{ + "billing_payment_method_add_bank_account_address_number": "Numero", + "billing_payment_method_add_bank_account_address_street": "Nome della via", + "billing_payment_method_add_bank_account_address_zip": "Codice postale", + "billing_payment_method_add_bank_account_address_city": "Città", + "billing_payment_method_add_bank_account_owner_name": "Nome e cognome del proprietario o nome della società proprietaria", + "billing_payment_method_add_bank_account_owner_address": "Indirizzo del proprietario dell'account", + "billing_payment_method_add_bank_account_owner_notification_info": "Entro 24-48 ore riceverai sull'indirizzo di posta associato al tuo account OVHcloud un'email contenente il link per apporre la firma elettronica del mandato di prelievo.", + "billing_payment_method_add_bank_account_owner_info": "Attenzione: il proprietario del conto bancario deve essere identico al proprietario dell'account OVHcloud.", + "billing_payment_method_add_bank_account_owner_confirmation_info": "Se approvato, una volta che il mandato viene ricevuto dai nostri servizi è possibile utilizzare questo nuovo metodo di pagamento.", + "billing_payment_method_add_bank_account_data_process_by_ovh_info": "I dati raccolti tramite questo modulo sono trattati da OVHcloud in qualità di responsabile del trattamento per l’esecuzione degli addebiti SEPA. Maggiori informazioni sul trattamento dei dati da parte di OVHcloud e sull'esercizio dei propri diritti.", + "billing_payment_method_add_bank_account_data_process_by_yousign_info": "L’attivazione di un addebito SEPA richiede la sottoscrizione di un mandato che dovrà essere firmato elettronicamente utilizzando una soluzione fornita da Yousign, un provider abilitato a fornire i servizi fiduciari definiti dal regolamento (UE) “eIDAS” n. 910/2014 del 23 luglio 2014. In tale contesto, I dati saranno comunicati a Yousign. Maggiori informazioni sulla gestione dei dati da parte di Yousign." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..fde9b5782e9b --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_pl_PL.json @@ -0,0 +1,13 @@ +{ + "billing_payment_method_add_bank_account_address_number": "Numer", + "billing_payment_method_add_bank_account_address_street": "Ulica", + "billing_payment_method_add_bank_account_address_zip": "Kod pocztowy", + "billing_payment_method_add_bank_account_address_city": "Miasto", + "billing_payment_method_add_bank_account_owner_name": "Imię i nazwisko właściciela lub nazwa organizacji", + "billing_payment_method_add_bank_account_owner_address": "Adres siedziby/zamieszkania i pobytu właściciela konta", + "billing_payment_method_add_bank_account_owner_notification_info": "W ciągu 24-48 godzin na adres e-mail przypisany do Twojego konta OVHcloud prześlemy wiadomość z linkiem do podpisu elektronicznego i autoryzacji obciążenia.", + "billing_payment_method_add_bank_account_owner_info": "Uwaga: właściciel konta bankowego oraz właściciel konta OVHcloud muszą być identyczni.", + "billing_payment_method_add_bank_account_owner_confirmation_info": "Jeśli Twoja autoryzacja zostanie zatwierdzona, możesz skorzystać z nowego sposobu płatności. ", + "billing_payment_method_add_bank_account_data_process_by_ovh_info": "Dane gromadzone za pomocą tego formularza są przetwarzane przez firmę OVHcloud występującą w charakterze administratora danych w celu realizacji polecenia zapłaty SEPA. Dowiedz się więcej o przetwarzaniu danych przez OVHcloud i korzystaniu z przysługujących Ci praw.", + "billing_payment_method_add_bank_account_data_process_by_yousign_info": "Ustanowienie polecenia zapłaty SEPA wymaga Twojego pełnomocnictwa opatrzonego podpisem elektronicznym wygenerowanym za pomocą rozwiązania dostarczonego przez Yousign - dostawcę zaufanych usług określonych w rozporządzeniu eIDAS nr 910/2014 z dnia 23 lipca 2014 r. Dane przekazywane są Yousign wyłącznie do wskazanego wyżej celu. Dowiedz się więcej na temat zarządzania danymi przez Yousign." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..b46459d19f46 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/add/views/legacyBillingAddress/translations/Messages_pt_PT.json @@ -0,0 +1,13 @@ +{ + "billing_payment_method_add_bank_account_address_number": "Número", + "billing_payment_method_add_bank_account_address_street": "Nome da rua", + "billing_payment_method_add_bank_account_address_zip": "Código postal", + "billing_payment_method_add_bank_account_address_city": "Cidade", + "billing_payment_method_add_bank_account_owner_name": "Nome e sobrenome do proprietário ou nome da organização proprietária", + "billing_payment_method_add_bank_account_owner_address": "Endereço do proprietário da conta", + "billing_payment_method_add_bank_account_owner_notification_info": "Nas próximas 24 a 48h, receberá um e-mail para o endereço de e-mail da sua conta OVHcloud com uma ligação de assinatura eletrónica da sua autorização de débito direto.", + "billing_payment_method_add_bank_account_owner_info": "Atenção: o proprietário da conta bancária deve ser idêntico ao proprietário da conta OVHcloud.", + "billing_payment_method_add_bank_account_owner_confirmation_info": "Depois de a autorização ser recebida pelos nossos serviços e aprovada, poderá utilizar este novo método de pagamento.", + "billing_payment_method_add_bank_account_data_process_by_ovh_info": "Os dados recolhidos através deste formulário serão tratados pela OVHcloud na qualidade de responsável pelo tratamento, de forma a poder criar e gerir os seus débitos diretos SEPA. Saber mais sobre o tratamento dos seus dados pela OVHcloud e o exercício dos seus direitos.", + "billing_payment_method_add_bank_account_data_process_by_yousign_info": "A criação de um débito direto SEPA requer uma autorização que deverá assinar eletronicamente utilizando uma solução fornecida por Yousign, um prestador autorizado a prestar serviços de confiança, tal como estabelecido no Regulamento \"eIDAS\" n.º 910/2014, de 23 de julho de 2014. Neste contexto, esses dados serão comunicados à Yousign. Saber mais sobre a gestão dos seus dados por Yousign." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/component.js b/packages/manager/modules/new-billing/src/payment/method/component.js new file mode 100644 index 000000000000..61bae7fbe294 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/component.js @@ -0,0 +1,20 @@ +import controller from './controller'; +import template from './index.html'; + +export default { + name: 'billingPaymentMethod', + controller, + template, + bindings: { + getActionHref: '<', + goToSplitPaymentAction: '<', + hasAllowDefaultChoiceForFirstPaymentMethod: '<', + paymentMethods: '<', + currentUser: '<', + isSplitPaymentAvailable: '<', + splitPayment: '<', + splitPaymentInformationHref: '@?', + tagStatusEnum: '<', + errors: '<', + }, +}; diff --git a/packages/manager/modules/new-billing/src/payment/method/constants.js b/packages/manager/modules/new-billing/src/payment/method/constants.js new file mode 100644 index 000000000000..afd9d8c8f38a --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/constants.js @@ -0,0 +1,5 @@ +export const ALERTER_ID = 'billing_payment_method_alert'; + +export default { + ALERTER_ID, +}; diff --git a/packages/manager/modules/new-billing/src/payment/method/controller.js b/packages/manager/modules/new-billing/src/payment/method/controller.js new file mode 100644 index 000000000000..2376627fa70a --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/controller.js @@ -0,0 +1,75 @@ +import set from 'lodash/set'; +import some from 'lodash/some'; +import uniq from 'lodash/uniq'; + +import { ALERTER_ID } from './constants'; +import { AUTORENEW_GUIDES } from './guides'; + +export default class BillingPaymentMethodCtrl { + /* @ngInject */ + constructor( + OVH_PAYMENT_MEAN_STATUS, + OVH_PAYMENT_METHOD_TYPE, + coreConfig, + ovhPaymentMethodHelper, + ) { + this.OVH_PAYMENT_MEAN_STATUS = OVH_PAYMENT_MEAN_STATUS; + this.OVH_PAYMENT_METHOD_TYPE = OVH_PAYMENT_METHOD_TYPE; + this.ovhPaymentMethodHelper = ovhPaymentMethodHelper; + + // other attributes used in views + this.ALERTER_ID = ALERTER_ID; + this.tableFilterOptions = null; + this.guide = null; + this.hasPendingValidationBankAccount = false; + + const { ovhSubsidiary } = coreConfig.getUser(); + this.guide = AUTORENEW_GUIDES[ovhSubsidiary]; + } + + /* ===================================== + = INITIALIZATION = + ====================================== */ + + $onInit() { + // set options for status filter + this.tableFilterOptions = { + status: { + values: {}, + }, + type: { + values: {}, + }, + }; + + uniq(this.paymentMethods, 'status').forEach((paymentMethod) => { + set( + this.tableFilterOptions.status.values, + paymentMethod.status, + this.ovhPaymentMethodHelper.getPaymentMethodStatusText( + paymentMethod.status, + ), + ); + }); + + uniq(this.paymentMethods, 'paymentType').forEach((paymentMethod) => { + set( + this.tableFilterOptions.type.values, + paymentMethod.paymentType, + this.ovhPaymentMethodHelper.getPaymentMethodTypeText( + paymentMethod.paymentType, + ), + ); + }); + + // set a warn message if a bankAccount is in pendingValidation state + this.hasPendingValidationBankAccount = some( + this.paymentMethods, + (method) => + method.paymentType === this.OVH_PAYMENT_METHOD_TYPE.BANK_ACCOUNT && + method.status === this.OVH_PAYMENT_MEAN_STATUS.PENDING_VALIDATION, + ); + } + + /* ----- End of INITIALIZATION ------ */ +} diff --git a/packages/manager/modules/new-billing/src/payment/method/default/component.js b/packages/manager/modules/new-billing/src/payment/method/default/component.js new file mode 100644 index 000000000000..122f6a0a328f --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/default/component.js @@ -0,0 +1,9 @@ +import template from './index.html'; + +export default { + name: 'billingPaymentMethodDefault', + template, + bindings: { + resolve: '<', + }, +}; diff --git a/packages/manager/modules/new-billing/src/payment/method/default/index.html b/packages/manager/modules/new-billing/src/payment/method/default/index.html new file mode 100644 index 000000000000..7983f14aeb73 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/default/index.html @@ -0,0 +1,7 @@ +
+

+

+
diff --git a/packages/manager/modules/new-billing/src/payment/method/default/index.js b/packages/manager/modules/new-billing/src/payment/method/default/index.js new file mode 100644 index 000000000000..bc29b38a2fef --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/default/index.js @@ -0,0 +1,26 @@ +import angular from 'angular'; + +import angularTranslate from 'angular-translate'; +import '@ovh-ux/ui-kit'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import ngOvhPaymentMethod from '@ovh-ux/ng-ovh-payment-method'; +import ngUiRouterLayout from '@ovh-ux/ng-ui-router-layout'; + +import routing from './routing'; +import component from './component'; + +const moduleName = 'ovhBillingPaymentMethodDefault'; + +angular + .module(moduleName, [ + angularTranslate, + 'oui', + ngTranslateAsyncLoader, + ngOvhPaymentMethod, + ngUiRouterLayout, + ]) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */) + .component(component.name, component); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/payment/method/default/routing.js b/packages/manager/modules/new-billing/src/payment/method/default/routing.js new file mode 100644 index 000000000000..3d99bccb5561 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/default/routing.js @@ -0,0 +1,66 @@ +import get from 'lodash/get'; +import set from 'lodash/set'; + +import component from './component'; + +export default /* @ngInject */ ($stateProvider) => { + const name = 'billing.payment.method.action.default'; + + $stateProvider.state(name, { + url: '/default', + component: component.name, + layout: 'ouiModal', + resolve: { + redirectTo: () => 'billing.payment.method', + + loaders: () => ({ + save: false, + }), + + /* ---------- ouiModal layout resolves ---------- */ + + heading: /* @ngInject */ ($translate) => + $translate.instant('billing_payment_method_default_title'), + + primaryLabel: /* @ngInject */ ($translate) => + $translate.instant('common_confirm'), + + primaryAction: /* @ngInject */ ( + $translate, + goPaymentList, + loaders, + ovhPaymentMethod, + paymentMethod, + ) => () => { + set(loaders, 'save', true); + + return ovhPaymentMethod + .setPaymentMethodAsDefault(paymentMethod) + .then(() => + goPaymentList({ + type: 'success', + text: $translate.instant( + 'billing_payment_method_default_success', + ), + }), + ) + .catch((error) => + goPaymentList({ + type: 'error', + text: $translate.instant('billing_payment_method_default_error', { + errorMessage: get(error, 'data.message'), + }), + }), + ); + }, + + secondaryLabel: /* @ngInject */ ($translate) => + $translate.instant('common_cancel'), + + secondaryAction: /* @ngInject */ (goPaymentList) => goPaymentList, + + loading: /* @ngInject */ (loaders) => () => loaders.save, + breadcrumb: () => null, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_de_DE.json new file mode 100644 index 000000000000..3d8f7a1131f7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_de_DE.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_default_title": "Standardzahlungsmittel festlegen", + "billing_payment_method_default_explain": "Sie sind dabei, das Zahlungsmittel {{ label }} als Standardzahlungsmittel festzulegen.", + "billing_payment_method_default_question": "Sind Sie sicher, dass Sie fortfahren möchten?", + "billing_payment_method_default_error": "Bei der Änderung Ihres Standardzahlungsmittels ist ein Fehler aufgetreten: {{ errorMessage }}", + "billing_payment_method_default_success": "Ihr Standardzahlungsmittel wurde erfolgreich geändert." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_en_GB.json new file mode 100644 index 000000000000..d4f0ec4e595e --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_en_GB.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_default_title": "Enter a default payment method", + "billing_payment_method_default_explain": "You are about to enter the payment method {{ label }} as a default payment method.", + "billing_payment_method_default_question": "Are you sure you want to continue?", + "billing_payment_method_default_error": "An error has occurred modifying your default payment method: {{ errorMessage }}", + "billing_payment_method_default_success": "Your payment method has been modified." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_es_ES.json new file mode 100644 index 000000000000..35452659d551 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_es_ES.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_default_title": "Establecer una forma de pago por defecto", + "billing_payment_method_default_explain": "Está a punto de establecer la forma de pago {{ label }} como forma de pago por defecto.", + "billing_payment_method_default_question": "¿Seguro que quiere continuar?", + "billing_payment_method_default_error": "Se ha producido un error al modificar la forma de pago por defecto: {{ errorMessage }}.", + "billing_payment_method_default_success": "La forma de pago por defecto se ha modificado correctamente." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..bfff03c6274e --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_fr_CA.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_default_title": "Définir un moyen de paiement par défaut", + "billing_payment_method_default_explain": "Vous êtes sur le point de définir le moyen de paiement {{ label }} en tant que moyen de paiement par défaut.", + "billing_payment_method_default_question": "Êtes-vous certain de vouloir continuer ?", + "billing_payment_method_default_error": "Une erreur est survenue lors de la modification de votre moyen de paiement par défaut : {{ errorMessage }}", + "billing_payment_method_default_success": "Votre moyen de paiement par défaut a bien été modifié." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..bfff03c6274e --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_fr_FR.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_default_title": "Définir un moyen de paiement par défaut", + "billing_payment_method_default_explain": "Vous êtes sur le point de définir le moyen de paiement {{ label }} en tant que moyen de paiement par défaut.", + "billing_payment_method_default_question": "Êtes-vous certain de vouloir continuer ?", + "billing_payment_method_default_error": "Une erreur est survenue lors de la modification de votre moyen de paiement par défaut : {{ errorMessage }}", + "billing_payment_method_default_success": "Votre moyen de paiement par défaut a bien été modifié." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_it_IT.json new file mode 100644 index 000000000000..9c21fd5a2e79 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_it_IT.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_default_title": "Imposta un metodo di pagamento predefinito", + "billing_payment_method_default_explain": "Stai per impostare {{ label }} come metodo di pagamento predefinito.", + "billing_payment_method_default_question": "Vuoi continuare?", + "billing_payment_method_default_error": "Si è verificato un errore durante la modifica del metodo di pagamento predefinito: {{ errorMessage }}", + "billing_payment_method_default_success": "Il metodo di pagamento predefinito è stato modificato correttamente." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..350a548b1f7c --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_pl_PL.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_default_title": "Ustaw domyślną metodę płatności", + "billing_payment_method_default_explain": "Ustawiasz domyślną metodę płatności {{ label }}.", + "billing_payment_method_default_question": "Czy na pewno chcesz kontynuować?", + "billing_payment_method_default_error": "Wystąpił błąd podczas zmiany Twojego domyślnego sposobu płatności: {{errorMessage}}.", + "billing_payment_method_default_success": "Twoja domyślna metoda płatności została zmieniona." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..9298e820c365 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/default/translations/Messages_pt_PT.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_default_title": "Definir um método de pagamento predefinido", + "billing_payment_method_default_explain": "Está prestes a definir o método de pagamento {{ label }} enquanto método de pagamento predefinido.", + "billing_payment_method_default_question": "Tem a certeza de que quer continuar?", + "billing_payment_method_default_error": "Ocorreu um erro ao modificar o seu método de pagamento predefinido: {{ errorMessage }}", + "billing_payment_method_default_success": "O seu método de pagamento predefinido foi modificado com êxito." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/delete/component.js b/packages/manager/modules/new-billing/src/payment/method/delete/component.js new file mode 100644 index 000000000000..9abd1d2526b4 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/delete/component.js @@ -0,0 +1,10 @@ +import template from './index.html'; + +export default { + name: 'billingPaymentMethodDelete', + template, + bindings: { + modalInstance: '<', + resolve: '<', + }, +}; diff --git a/packages/manager/modules/new-billing/src/payment/method/delete/index.html b/packages/manager/modules/new-billing/src/payment/method/delete/index.html new file mode 100644 index 000000000000..f5ee6c16ac75 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/delete/index.html @@ -0,0 +1,7 @@ +
+

+

+
diff --git a/packages/manager/modules/new-billing/src/payment/method/delete/index.js b/packages/manager/modules/new-billing/src/payment/method/delete/index.js new file mode 100644 index 000000000000..debbd5285538 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/delete/index.js @@ -0,0 +1,26 @@ +import angular from 'angular'; + +import angularTranslate from 'angular-translate'; +import '@ovh-ux/ui-kit'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import ngOvhPaymentMethod from '@ovh-ux/ng-ovh-payment-method'; +import ngUiRouterLayout from '@ovh-ux/ng-ui-router-layout'; + +import routing from './routing'; +import component from './component'; + +const moduleName = 'ovhBillingPaymentMethodDelete'; + +angular + .module(moduleName, [ + angularTranslate, + 'oui', + ngTranslateAsyncLoader, + ngOvhPaymentMethod, + ngUiRouterLayout, + ]) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */) + .component(component.name, component); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/payment/method/delete/routing.js b/packages/manager/modules/new-billing/src/payment/method/delete/routing.js new file mode 100644 index 000000000000..0cbcdc7be6a6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/delete/routing.js @@ -0,0 +1,64 @@ +import get from 'lodash/get'; +import set from 'lodash/set'; + +import component from './component'; + +export default /* @ngInject */ ($stateProvider) => { + const name = 'billing.payment.method.action.delete'; + + $stateProvider.state(name, { + url: '/delete', + component: component.name, + layout: 'ouiModal', + resolve: { + redirectTo: () => 'billing.payment.method', + + loaders: () => ({ + deleting: false, + }), + + /* ---------- ouiModal layout resolves ---------- */ + + heading: /* @ngInject */ ($translate) => + $translate.instant('billing_payment_method_delete_title'), + + primaryLabel: /* @ngInject */ ($translate) => + $translate.instant('common_confirm'), + + primaryAction: /* @ngInject */ ( + $translate, + goPaymentList, + loaders, + ovhPaymentMethod, + paymentMethod, + ) => () => { + set(loaders, 'deleting', true); + + return ovhPaymentMethod + .deletePaymentMethod(paymentMethod) + .then(() => + goPaymentList({ + type: 'success', + text: $translate.instant('billing_payment_method_delete_success'), + }), + ) + .catch((error) => + goPaymentList({ + type: 'error', + text: $translate.instant('billing_payment_method_delete_error', { + errorMessage: get(error, 'data.message'), + }), + }), + ); + }, + + secondaryLabel: /* @ngInject */ ($translate) => + $translate.instant('common_cancel'), + + secondaryAction: /* @ngInject */ (goPaymentList) => goPaymentList, + + loading: /* @ngInject */ (loaders) => () => loaders.deleting, + breadcrumb: () => null, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_de_DE.json new file mode 100644 index 000000000000..6db78390b6ab --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_de_DE.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_delete_title": "Zahlungsmittel löschen", + "billing_payment_method_delete_explain": "Sie sind dabei, das Zahlungsmittel {{ label }} zu löschen.", + "billing_payment_method_delete_question": "Sind Sie sicher, dass Sie fortfahren möchten?", + "billing_payment_method_delete_error": "Beim Löschen des Zahlungsmittels ist ein Fehler aufgetreten: {{ errorMessage }}", + "billing_payment_method_delete_success": "Ihr Zahlungsmittel wurde erfolgreich gelöscht." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_en_GB.json new file mode 100644 index 000000000000..5e3ee4f10bd1 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_en_GB.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_delete_title": "Delete a payment method", + "billing_payment_method_delete_explain": "You are about to delete the payment method {{ label }}.", + "billing_payment_method_delete_question": "Are you sure you want to continue?", + "billing_payment_method_delete_error": "An error has occurred deleting your payment method: {{ errorMessage }}", + "billing_payment_method_delete_success": "Your payment method has been deleted." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_es_ES.json new file mode 100644 index 000000000000..656a71dfb10a --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_es_ES.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_delete_title": "Eliminación de la forma de pago", + "billing_payment_method_delete_explain": "Está a punto de eliminar la forma de pago {{ label }}.", + "billing_payment_method_delete_question": "¿Seguro que quiere continuar?", + "billing_payment_method_delete_error": "Se ha producido un error al eliminar la forma de pago: {{ errorMessage }}.", + "billing_payment_method_delete_success": "La forma de pago se ha eliminado correctamente." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..39a03265c5a7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_fr_CA.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_delete_title": "Suppression du moyen de paiement", + "billing_payment_method_delete_explain": "Vous êtes sur le point de supprimer le moyen de paiement {{ label }}.", + "billing_payment_method_delete_question": "Êtes-vous certain de vouloir continuer ?", + "billing_payment_method_delete_error": "Une erreur est survenue lors de la suppression du moyen de paiement : {{ errorMessage }}", + "billing_payment_method_delete_success": "Votre moyen de paiement a bien été supprimé." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..39a03265c5a7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_fr_FR.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_delete_title": "Suppression du moyen de paiement", + "billing_payment_method_delete_explain": "Vous êtes sur le point de supprimer le moyen de paiement {{ label }}.", + "billing_payment_method_delete_question": "Êtes-vous certain de vouloir continuer ?", + "billing_payment_method_delete_error": "Une erreur est survenue lors de la suppression du moyen de paiement : {{ errorMessage }}", + "billing_payment_method_delete_success": "Votre moyen de paiement a bien été supprimé." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_it_IT.json new file mode 100644 index 000000000000..1ce070655f14 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_it_IT.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_delete_title": "Elimina un metodo di pagamento", + "billing_payment_method_delete_explain": "Stai per eliminare il metodo di pagamento {{ label }}.", + "billing_payment_method_delete_question": "Vuoi continuare?", + "billing_payment_method_delete_error": "Si è verificato un errore durante l'eliminazione del metodo di pagamento: {{ errorMessage }}", + "billing_payment_method_delete_success": "Il tuo metodo di pagamento è stato eliminato correttamente." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..dc87fbc1fce3 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_pl_PL.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_delete_title": "Usunięcie metody płatności", + "billing_payment_method_delete_explain": "Usuwasz metodę płatności {{ label }}.", + "billing_payment_method_delete_question": "Czy na pewno chcesz kontynuować?", + "billing_payment_method_delete_error": "Wystąpił błąd podczas usuwania sposobu płatności: {{errorMessage}}.", + "billing_payment_method_delete_success": "Twoja metoda płatności została usunięta." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..5203c14ec0c1 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/delete/translations/Messages_pt_PT.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_delete_title": "Eliminação do método de pagamento", + "billing_payment_method_delete_explain": "Está prestes a eliminar o método de pagamento {{ label }}.", + "billing_payment_method_delete_question": "Tem a certeza de que quer continuar?", + "billing_payment_method_delete_error": "Ocorreu um erro ao eliminar o seu método de pagamento: {{ errorMessage }}", + "billing_payment_method_delete_success": "O seu método de pagamento foi eliminado com êxito." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/edit/component.js b/packages/manager/modules/new-billing/src/payment/method/edit/component.js new file mode 100644 index 000000000000..3bf10f16a843 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/edit/component.js @@ -0,0 +1,9 @@ +import template from './index.html'; + +export default { + name: 'billingPaymentMethodEdit', + template, + bindings: { + resolve: '<', + }, +}; diff --git a/packages/manager/modules/new-billing/src/payment/method/edit/index.html b/packages/manager/modules/new-billing/src/payment/method/edit/index.html new file mode 100644 index 000000000000..bff7dde26f15 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/edit/index.html @@ -0,0 +1,13 @@ +
+ + + +
diff --git a/packages/manager/modules/new-billing/src/payment/method/edit/index.js b/packages/manager/modules/new-billing/src/payment/method/edit/index.js new file mode 100644 index 000000000000..f0ba8e9ee140 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/edit/index.js @@ -0,0 +1,26 @@ +import angular from 'angular'; + +import angularTranslate from 'angular-translate'; +import '@ovh-ux/ui-kit'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import ngOvhPaymentMethod from '@ovh-ux/ng-ovh-payment-method'; +import ngUiRouterLayout from '@ovh-ux/ng-ui-router-layout'; + +import routing from './routing'; +import component from './component'; + +const moduleName = 'ovhBillingPaymentMethodEdit'; + +angular + .module(moduleName, [ + angularTranslate, + 'oui', + ngTranslateAsyncLoader, + ngOvhPaymentMethod, + ngUiRouterLayout, + ]) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */) + .component(component.name, component); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/payment/method/edit/routing.js b/packages/manager/modules/new-billing/src/payment/method/edit/routing.js new file mode 100644 index 000000000000..37276518bf0f --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/edit/routing.js @@ -0,0 +1,71 @@ +import get from 'lodash/get'; +import set from 'lodash/set'; + +import component from './component'; + +export default /* @ngInject */ ($stateProvider) => { + const name = 'billing.payment.method.action.edit'; + + $stateProvider.state(name, { + url: '/edit', + component: component.name, + layout: 'ouiModal', + resolve: { + redirectTo: () => 'billing.payment.method', + + model: /* @ngInject */ (paymentMethod) => ({ + description: paymentMethod.description, + }), + + loaders: () => ({ + save: false, + }), + + /* ---------- ouiModal layout resolves ---------- */ + + heading: /* @ngInject */ ($translate) => + $translate.instant('billing_payment_method_edit_title'), + + primaryLabel: /* @ngInject */ ($translate) => + $translate.instant('billing_payment_method_edit_action_save'), + + primaryAction: /* @ngInject */ ( + $translate, + goPaymentList, + loaders, + model, + ovhPaymentMethod, + paymentMethod, + ) => () => { + set(loaders, 'save', true); + + return ovhPaymentMethod + .editPaymentMethod(paymentMethod, { + description: model.description, + }) + .then(() => + goPaymentList({ + type: 'success', + text: $translate.instant('billing_payment_method_edit_success'), + }), + ) + .catch((error) => + goPaymentList({ + type: 'error', + text: $translate.instant('billing_payment_method_edit_error', { + errorMessage: get(error, 'data.message'), + }), + }), + ); + }, + + secondaryLabel: /* @ngInject */ ($translate) => + $translate.instant('common_cancel'), + + secondaryAction: /* @ngInject */ (goPaymentList) => goPaymentList, + + loading: /* @ngInject */ (loaders) => () => loaders.save, + breadcrumb: () => null, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_de_DE.json new file mode 100644 index 000000000000..753af3ad51f6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_de_DE.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_edit_title": "Beschreibung bearbeiten", + "billing_payment_method_edit_action_save": "Beschreibung speichern", + "billing_payment_method_edit_description": "Neue Beschreibung eingeben", + "billing_payment_method_edit_error": "Bei der Änderung der Beschreibung ist ein Fehler aufgetreten: {{ errorMessage }}", + "billing_payment_method_edit_success": "Die Beschreibung Ihres Zahlungsmittels wurde erfolgreich bearbeitet." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_en_GB.json new file mode 100644 index 000000000000..8416f2257358 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_en_GB.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_edit_title": "Modify the description", + "billing_payment_method_edit_action_save": "Save the description ", + "billing_payment_method_edit_description": "Enter a new description", + "billing_payment_method_edit_error": "An error has occurred changing the description: {{ errorMessage }}", + "billing_payment_method_edit_success": "The change to your payment method description has been saved." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_es_ES.json new file mode 100644 index 000000000000..8998aa901b88 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_es_ES.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_edit_title": "Modificación de la descripción", + "billing_payment_method_edit_action_save": "Guardar la descripción", + "billing_payment_method_edit_description": "Introduzca una nueva descripción.", + "billing_payment_method_edit_error": "Se ha producido un error al editar la descripción : {{ errorMessage }}.", + "billing_payment_method_edit_success": "La descripción de la forma de pago se ha modificado correctamente." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..b32b63d7ff9b --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_fr_CA.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_edit_title": "Modification de la description", + "billing_payment_method_edit_action_save": "Enregistrer la description", + "billing_payment_method_edit_description": "Entrez une nouvelle description", + "billing_payment_method_edit_error": "Une erreur est survenue lors de la modification de la description : {{ errorMessage }}", + "billing_payment_method_edit_success": "La modification de la description de votre moyen de paiement a bien été effectuée." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..b32b63d7ff9b --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_fr_FR.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_edit_title": "Modification de la description", + "billing_payment_method_edit_action_save": "Enregistrer la description", + "billing_payment_method_edit_description": "Entrez une nouvelle description", + "billing_payment_method_edit_error": "Une erreur est survenue lors de la modification de la description : {{ errorMessage }}", + "billing_payment_method_edit_success": "La modification de la description de votre moyen de paiement a bien été effectuée." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_it_IT.json new file mode 100644 index 000000000000..ccd5720275d0 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_it_IT.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_edit_title": "Modifica la descrizione", + "billing_payment_method_edit_action_save": "Salva la descrizione", + "billing_payment_method_edit_description": "Inserisci una nuova descrizione", + "billing_payment_method_edit_error": "Si è verificato un errore durante la modifica della descrizione: {{ errorMessage }}", + "billing_payment_method_edit_success": "La modifica della descrizione del metodo di pagamento è stata effettuata correttamente." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..2b96215f1d1f --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_pl_PL.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_edit_title": "Zmiana opisu", + "billing_payment_method_edit_action_save": "Zapisz opis", + "billing_payment_method_edit_description": "Wprowadź nowy opis", + "billing_payment_method_edit_error": "Wystąpił błąd podczas zmiany opisu: {{errorMessage}}.", + "billing_payment_method_edit_success": "Nastąpiła zmiana opisu Twojej metody płatności." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..94441a99aa3a --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/edit/translations/Messages_pt_PT.json @@ -0,0 +1,7 @@ +{ + "billing_payment_method_edit_title": "Modificação da descrição", + "billing_payment_method_edit_action_save": "Guardar a descrição", + "billing_payment_method_edit_description": "Insira uma nova descrição", + "billing_payment_method_edit_error": "Ocorreu um erro durante a alteração da descrição: {{ errorMessage }}", + "billing_payment_method_edit_success": "A modificação da descrição do seu método de pagamento foi efetuada com êxito." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/guides.js b/packages/manager/modules/new-billing/src/payment/method/guides.js new file mode 100644 index 000000000000..6114fd074184 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/guides.js @@ -0,0 +1,21 @@ +export const AUTORENEW_GUIDES = { + DE: + 'https://www.ovh.de/g1271.anleitung_zur_nutzung_der_automatischen_verlangerung_bei_ovh', + ES: 'https://www.ovh.es/g1271.renovacion_automatica_en_ovh', + FI: 'https://www.ovh-hosting.fi/g1271.automaattinen-uusinta', + FR: + 'https://www.ovh.com/fr/g1271.guide_dutilisation_du_renouvellement_automatique_ovh', + GB: 'https://www.ovh.co.uk/g1271.how_to_use_automatic_renewal_at_ovh', + IT: + 'https://www.ovh.it/g1271.imposta_il_rinnovo_automatico_dei_tuoi_servizi_ovh', + LT: 'https://www.ovh.lt/g1271.automatinis_ovh_paslaugu_galiojimo_pratesimas', + NL: + 'https://www.ovh.nl/g1271.ovh_handleiding_voor_het_gebruik_van_de_automatische_verlenging', + PL: + 'https://www.ovh.pl/g1271.przewodnik_dotyczacy_opcji_automatycznego_odnawiania_uslug_w_ovh', + PT: + 'https://www.ovh.pt/g1271.guia_de_utilizacao_da_renovacao_automatica_da_ovh', + IE: 'https://www.ovh.ie/g1271.how_to_use_automatic_renewal_at_ovh', +}; + +export default { AUTORENEW_GUIDES }; diff --git a/packages/manager/modules/new-billing/src/payment/method/index.html b/packages/manager/modules/new-billing/src/payment/method/index.html new file mode 100644 index 000000000000..abfc52c44ab9 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/index.html @@ -0,0 +1,199 @@ +
+
+ + + + + + + + + + + + + + + + + + +
+ +
+ +

+ +

+ + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
diff --git a/packages/manager/modules/new-billing/src/payment/method/index.js b/packages/manager/modules/new-billing/src/payment/method/index.js new file mode 100644 index 000000000000..e7328fff608e --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/index.js @@ -0,0 +1,40 @@ +import angular from 'angular'; + +import angularTranslate from 'angular-translate'; +import '@ovh-ux/ui-kit'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import ngOvhPaymentMethod from '@ovh-ux/ng-ovh-payment-method'; +import managerBillingComponents from '@ovh-ux/manager-billing-components'; + +import addModule from './add'; +import defaultModule from './default'; +import deleteModule from './delete'; +import editModule from './edit'; + +import activateSplitPayment from './splitPayment/activate'; +import deactivateSplitPayment from './splitPayment/deactivate'; + +import routing from './routing'; +import component from './component'; + +const moduleName = 'ovhBillingPaymentMethod'; + +angular + .module(moduleName, [ + angularTranslate, + 'oui', + ngTranslateAsyncLoader, + ngOvhPaymentMethod, + activateSplitPayment, + addModule, + deactivateSplitPayment, + defaultModule, + deleteModule, + editModule, + managerBillingComponents, + ]) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */) + .component(component.name, component); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/payment/method/routing.js b/packages/manager/modules/new-billing/src/payment/method/routing.js new file mode 100644 index 000000000000..5b0d571e2bad --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/routing.js @@ -0,0 +1,177 @@ +import filter from 'lodash/filter'; +import find from 'lodash/find'; + +import { + SPLIT_PAYMENT, + SPLIT_PAYMENT_FEATURE_NAME, +} from '@ovh-ux/manager-billing-components'; + +import component from './component'; + +export default /* @ngInject */ ($stateProvider) => { + const name = 'billing.payment.method'; + const allowDefaultChoiceForFirstPaymentMethodFeatureName = + 'billing:allowDefaultChoiceForFirstPaymentMethod'; + + $stateProvider.state(name, { + url: '/method', + component: component.name, + resolve: { + getActionHref: /* @ngInject */ ($state) => (action, params = {}) => { + if (action !== 'add') { + return $state.href(`${name}.action.${action}`, params); + } + return $state.href(`${name}.${action}`, params); + }, + + errors: () => ({ + load: false, + }), + + goToSplitPaymentAction: /* @ngInject */ ($state, splitPayment) => () => + splitPayment.canBeDeactivated + ? $state.go('billing.payment.method.deactivateSplitPayment') + : $state.go('billing.payment.method.activateSplitPayment'), + + paymentMethods: /* @ngInject */ ( + OVH_PAYMENT_MEAN_STATUS, + OVH_PAYMENT_METHOD_TYPE, + ovhPaymentMethod, + errors, + ) => + ovhPaymentMethod + .getPaymentMethods({ + transform: true, + }) + .then((paymentMethods) => + filter(paymentMethods, ({ paymentType, status }) => { + if (paymentType !== OVH_PAYMENT_METHOD_TYPE.BANK_ACCOUNT) { + return true; + } + return status !== OVH_PAYMENT_MEAN_STATUS.BLOCKED_FOR_INCIDENTS; + }), + ) + .catch(() => { + Object.assign(errors, { + load: true, + }); + return []; + }), + + goPaymentList: /* @ngInject */ ($timeout, Alerter, $state) => ( + message = null, + altState = null, + ) => { + const reload = message && message.type === 'success'; + + const stateGoPromise = $state.go( + altState || name, + {}, + { + reload, + }, + ); + + if (message) { + stateGoPromise.then(() => { + $timeout(() => + Alerter.set( + `alert-${message.type === 'error' ? 'danger' : message.type}`, + message.text, + null, + 'billing_payment_method_alert', + ), + ); + }); + } + }, + hasAllowDefaultChoiceForFirstPaymentMethod: /* @ngInject */ ( + ovhFeatureFlipping, + ) => + ovhFeatureFlipping + .checkFeatureAvailability( + allowDefaultChoiceForFirstPaymentMethodFeatureName, + ) + .then((feature) => + feature.isFeatureAvailable( + allowDefaultChoiceForFirstPaymentMethodFeatureName, + ), + ), + isSplitPaymentAvailable: /* @ngInject */ ( + $http, + currentUser, + ovhFeatureFlipping, + splitPaymentTag, + ) => + ovhFeatureFlipping + .checkFeatureAvailability(SPLIT_PAYMENT_FEATURE_NAME) + .then((feature) => + feature.isFeatureAvailable(SPLIT_PAYMENT_FEATURE_NAME), + ) + .then((isFeatureAvailable) => + isFeatureAvailable + ? $http + .get('/me/tag/available') + .then(({ data: tags }) => + tags.some( + ({ name: tagName }) => tagName === splitPaymentTag, + ), + ) + : false, + ), + splitPayment: /* @ngInject */ ( + $http, + isSplitPaymentAvailable, + splitPaymentTag, + tagStatusEnum, + ) => + isSplitPaymentAvailable + ? $http + .get(`/me/tag/${splitPaymentTag}`) + .then(({ data: tagInfo }) => ({ + canBeActivated: [ + tagStatusEnum.DELETED, + tagStatusEnum.REFUSED, + ].includes(tagInfo?.status), + canBeDeactivated: tagStatusEnum.CREATED === tagInfo.status, + ...tagInfo, + })) + .catch(() => ({ + canBeActivated: true, + canBeDeactivated: false, + })) + : null, + splitPaymentTag: /* @ngInject */ (currentUser) => + SPLIT_PAYMENT[currentUser.ovhSubsidiary], + tagStatusEnum: /* @ngInject */ ($http, isSplitPaymentAvailable) => + isSplitPaymentAvailable + ? $http.get('/me.json').then(({ data: schema }) => + schema.models['me.tag.StatusEnum'].enum.reduce( + (list, status) => ({ + ...list, + [status]: status, + }), + {}, + ), + ) + : [], + splitPaymentInformationHref: /* @ngInject */ (currentUser, CORE_URLS) => + CORE_URLS.splitPaymentInformation[currentUser.ovhSubsidiary], + breadcrumb: /* @ngInject */ () => null, + hideBreadcrumb: () => true, + }, + }); + + // add an abstract state that will handle actions on payment method + $stateProvider.state(`${name}.action`, { + url: '/{paymentMethodId:int}', + redirectTo: 'billing.payment.method', + resolve: { + paymentMethod: /* @ngInject */ ($transition$, paymentMethods) => + find(paymentMethods, { + paymentMethodId: $transition$.params().paymentMethodId, + }), + breadcrumb: /* @ngInject */ (paymentMethod) => paymentMethod.name, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/payment/method/splitPayment/activate/index.js b/packages/manager/modules/new-billing/src/payment/method/splitPayment/activate/index.js new file mode 100644 index 000000000000..a40e8c67b089 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/splitPayment/activate/index.js @@ -0,0 +1,20 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import '@ovh-ux/ui-kit'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@uirouter/angularjs'; + +import routing from './routing'; + +const moduleName = 'ovhBillingPaymentMethodSplitPaymentActivate'; + +angular + .module(moduleName, [ + angularTranslate, + ngTranslateAsyncLoader, + 'oui', + 'ui.router', + ]) + .config(routing); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/payment/method/splitPayment/activate/routing.js b/packages/manager/modules/new-billing/src/payment/method/splitPayment/activate/routing.js new file mode 100644 index 000000000000..21c4fd0140de --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/splitPayment/activate/routing.js @@ -0,0 +1,51 @@ +export default /* @ngInject */ ($stateProvider) => { + const hitName = + 'dedicated::account::billing::payment::method::split_payment_activate'; + + $stateProvider.state('billing.payment.method.activateSplitPayment', { + url: '/activateSplitPayment', + views: { + modal: { + component: 'ovhManagerBillingSplitPaymentAction', + }, + }, + layout: 'modal', + resolve: { + action: /* @ngInject */ ($http, splitPaymentTag) => () => + $http.post('/me/tag', { + tagName: splitPaymentTag, + }), + actionLabelKey: () => 'billing_payment_method_split_payment_activate', + actionWarningText: () => + 'billing_payment_method_split_payment_warning_activate', + displayDecreeHref: () => true, + errorMessageKey: () => + 'billing_payment_method_split_payment_activate_error', + goBack: /* @ngInject */ (goPaymentList) => goPaymentList, + successMessageKey: () => + 'billing_payment_method_split_payment_activate_success', + + trackClick: /* @ngInject */ (atInternet) => () => + atInternet.trackClick({ + name: `${hitName}::confirm`, + type: 'action', + chapter1: 'dedicated', + chapter2: 'account', + chapter3: 'billing', + }), + + trackPage: /* @ngInject */ (atInternet) => (hitSuffix) => + atInternet.trackPage({ + name: `${hitName}_${hitSuffix}`, + chapter1: 'dedicated', + chapter2: 'account', + chapter3: 'billing', + }), + + breadcrumb: () => null, + }, + atInternet: { + rename: hitName, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/payment/method/splitPayment/deactivate/index.js b/packages/manager/modules/new-billing/src/payment/method/splitPayment/deactivate/index.js new file mode 100644 index 000000000000..e46192d24d80 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/splitPayment/deactivate/index.js @@ -0,0 +1,20 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import '@ovh-ux/ui-kit'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@uirouter/angularjs'; + +import routing from './routing'; + +const moduleName = 'ovhBillingPaymentMethodSplitPaymentDeactivate'; + +angular + .module(moduleName, [ + angularTranslate, + ngTranslateAsyncLoader, + 'oui', + 'ui.router', + ]) + .config(routing); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/payment/method/splitPayment/deactivate/routing.js b/packages/manager/modules/new-billing/src/payment/method/splitPayment/deactivate/routing.js new file mode 100644 index 000000000000..1aab9e79fa9b --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/splitPayment/deactivate/routing.js @@ -0,0 +1,49 @@ +export default /* @ngInject */ ($stateProvider) => { + const hitName = + 'dedicated::account::billing::payment::method::split_payment_deactivate'; + + $stateProvider.state('billing.payment.method.deactivateSplitPayment', { + url: '/deactivateSplitPayment', + views: { + modal: { + component: 'ovhManagerBillingSplitPaymentAction', + }, + }, + layout: 'modal', + resolve: { + action: /* @ngInject */ ($http, splitPaymentTag) => () => + $http.delete(`/me/tag/${splitPaymentTag}`), + actionLabelKey: () => 'billing_payment_method_split_payment_deactivate', + actionWarningText: () => + 'billing_payment_method_split_payment_warning_deactivate', + displayDecreeHref: () => false, + errorMessageKey: () => + 'billing_payment_method_split_payment_deactivate_error', + goBack: /* @ngInject */ (goPaymentList) => goPaymentList, + successMessageKey: () => + 'billing_payment_method_split_payment_deactivate_success', + + trackClick: /* @ngInject */ (atInternet) => () => + atInternet.trackClick({ + name: `${hitName}::confirm`, + type: 'action', + chapter1: 'dedicated', + chapter2: 'account', + chapter3: 'billing', + }), + + trackPage: /* @ngInject */ (atInternet) => (hitSuffix) => + atInternet.trackPage({ + name: `${hitName}_${hitSuffix}`, + chapter1: 'dedicated', + chapter2: 'account', + chapter3: 'billing', + }), + + breadcrumb: () => null, + }, + atInternet: { + rename: hitName, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/payment/method/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/payment/method/translations/Messages_de_DE.json new file mode 100644 index 000000000000..e6678d8a31c8 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/translations/Messages_de_DE.json @@ -0,0 +1,22 @@ +{ + "billing_payment_method_title": "Meine Zahlungsarten", + "billing_payment_method_load_error": "Beim Laden Ihrer Zahlungsmittel ist ein Fehler aufgetreten.", + "billing_payment_method_table_type": "Zahlungsart", + "billing_payment_method_table_label": "Account", + "billing_payment_method_table_expiration_date": "Ablaufdatum", + "billing_payment_method_table_description": "Beschreibung", + "billing_payment_method_table_default": "Standardzahlungsmittel", + "billing_payment_method_table_state": "Status", + "billing_payment_method_table_3d_secure": "3D Secure", + "billing_payment_method_table_top_add_method": "Zahlungsart hinzufügen", + "billing_payment_method_autorenew_guide_help": "Sie benötigen Hilfe bei der Konfiguration Ihrer Verlängerungen?", + "billing_payment_method_autorenew_guide_help_link": "Mehr erfahren", + "billing_payment_method_bank_account_pending_validation": "Vielen Dank für die Angabe Ihrer Bankdaten. Sie werden nun zügig eine E-Mail unseres Partners Yousign erhalten. Sie erfahren darin, wie Sie Ihr Lastschriftmandat elektronisch unterschreiben können. Ihr Bankkonto wird dadurch validiert.", + "billing_payment_method_bank_account_processing_delay": "Ihr Bankkonto wird 24 bis 48 Stunden nach Eingang Ihrer Einzugsermächtigung freigeschaltet.", + "billing_payment_method_table_action_download_procedure": "Dokument herunterladen, das per Post zurückzusenden ist", + "billing_payment_method_table_action_description_edit": "Beschreibung ändern", + "billing_payment_method_table_action_set_default": "Dieses Zahlungsmittel als Standardzahlungsmittel festlegen", + "billing_payment_method_table_action_delete": "Dieses Zahlungsmittel löschen", + "billing_payment_method_information_add_ovh_sas": "Mit der Registrierung eines Zahlungsmittels ermächtigen Sie OVH S.A.S., dieses zu speichern, um die Abwicklung zukünftiger Bestellungen zu erleichtern.", + "billing_payment_method_information_add_default": "Das hinterlegte und als „Standard“ gekennzeichnete Zahlungsmittel wird automatisch verwendet, um bei jedem Fälligkeitstermin die automatische Verlängerung Ihrer Dienste und die nutzungsbasierte Abrechnung („Pay as you go“) zu gewährleisten. Vor jedem Fälligkeitstermin werden Sie benachrichtigt. Über das unten stehende Interface können Sie jederzeit Zahlungsmittel ändern, löschen oder hinzufügen. Mindestens ein gültiges Zahlungsmittel muss hinterlegt sein, um Dienste mit automatischer Verlängerung oder nutzungsbasierter Abrechnung nutzen zu können." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/payment/method/translations/Messages_en_GB.json new file mode 100644 index 000000000000..795dbe784d5f --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/translations/Messages_en_GB.json @@ -0,0 +1,22 @@ +{ + "billing_payment_method_title": "My payment methods", + "billing_payment_method_load_error": "An error has occurred loading your payment methods.", + "billing_payment_method_table_type": "Payment type:", + "billing_payment_method_table_label": "Account", + "billing_payment_method_table_expiration_date": "Expiry date", + "billing_payment_method_table_description": "Description", + "billing_payment_method_table_default": "Default payment method", + "billing_payment_method_table_state": "Status", + "billing_payment_method_table_3d_secure": "3D Secure", + "billing_payment_method_table_top_add_method": "Add a payment method ", + "billing_payment_method_autorenew_guide_help": "Do you need help renewing your services? ", + "billing_payment_method_autorenew_guide_help_link": "Find out more", + "billing_payment_method_bank_account_pending_validation": "Thank you for providing your banking details. You will soon receive an email from our partner Yousign, where you can electronically sign your debit mandate. Once you have done this, your bank account will be validated and active.", + "billing_payment_method_bank_account_processing_delay": "Your bank account will be validated within 24 to 48 hours from the moment we receive your authorisation for direct debit.", + "billing_payment_method_table_action_download_procedure": "Download the procedure to return by post", + "billing_payment_method_table_action_description_edit": "Edit description", + "billing_payment_method_table_action_set_default": "Make this the default payment method", + "billing_payment_method_table_action_delete": "Delete this payment method", + "billing_payment_method_information_add_ovh_sas": "When you register a payment method, you authorise OVH S.A.S to keep it in order to facilitate payment for your future orders.", + "billing_payment_method_information_add_default": "The means of payment registered as the “default” payment method is used automatically at each expiry date to pay for your services with automatic renewal and pay-as-you-go. You will be notified before each new payment date. You can change, delete or add payment methods at any time using the interface below. To use services with automatic renewal or pay-as-you-go, you need to have at least one valid payment method registered." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/payment/method/translations/Messages_es_ES.json new file mode 100644 index 000000000000..c9805704c478 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/translations/Messages_es_ES.json @@ -0,0 +1,22 @@ +{ + "billing_payment_method_title": "Mis formas de pago", + "billing_payment_method_load_error": "Se ha producido un error al cargar las formas de pago.", + "billing_payment_method_table_type": "Modo de pago", + "billing_payment_method_table_label": "Cuenta", + "billing_payment_method_table_expiration_date": "Fecha de expiración", + "billing_payment_method_table_description": "Descripción", + "billing_payment_method_table_default": "Forma de pago por defecto", + "billing_payment_method_table_state": "Estado", + "billing_payment_method_table_3d_secure": "3D Secure", + "billing_payment_method_table_top_add_method": "Añadir una forma de pago", + "billing_payment_method_autorenew_guide_help": "¿Necesita ayuda para renovar sus servicios?", + "billing_payment_method_autorenew_guide_help_link": "Más información", + "billing_payment_method_bank_account_pending_validation": "Gracias por haber introducido sus datos bancarios. Pronto recibirá un mensaje de correo electrónico de nuestro partner Yousign y podrá firmar electrónicamente su autorización de cargo. De este modo su cuenta bancaria se validará y estará activa.", + "billing_payment_method_bank_account_processing_delay": "Su cuenta bancaria se validará en las 24-48 horas posteriores a la recepción de su autorización de domiciliación.", + "billing_payment_method_table_action_download_procedure": "Descargar el documento que deberá enviar por correo postal", + "billing_payment_method_table_action_description_edit": "Modificar la descripción", + "billing_payment_method_table_action_set_default": "Establecer como forma de pago por defecto", + "billing_payment_method_table_action_delete": "Eliminar esta forma de pago", + "billing_payment_method_information_add_ovh_sas": "Al registrar una forma de pago, autoriza a OVH SAS a conservarla para facilitar el pago de futuros pedidos.", + "billing_payment_method_information_add_default": "La forma de pago registrada como forma de pago por defecto se utilizará automáticamente en cada vencimiento para abonar el pago de sus servicios con renovación automática y pago por uso («pay-as-you-go»). Antes de cada vencimiento de pago, recibirá una notificación. Puede modificar, eliminar o añadir formas de pago utilizando la siguiente interfaz. Para poder utilizar servicios con renovación automática o con pago por uso, deberá disponer al menos de una forma de pago válida registrada." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/payment/method/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..6d04f64eeff7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/translations/Messages_fr_CA.json @@ -0,0 +1,22 @@ +{ + "billing_payment_method_title": "Mes moyens de paiement", + "billing_payment_method_load_error": "Une erreur est survenue lors du chargement de vos moyens de paiement.", + "billing_payment_method_table_type": "Type de paiement", + "billing_payment_method_table_label": "Compte", + "billing_payment_method_table_expiration_date": "Date d'expiration", + "billing_payment_method_table_description": "Description", + "billing_payment_method_table_default": "Moyen de paiement par défaut", + "billing_payment_method_table_state": "État", + "billing_payment_method_table_3d_secure": "3D Secure", + "billing_payment_method_table_top_add_method": "Ajouter un moyen de paiement", + "billing_payment_method_autorenew_guide_help": "Besoin d'aide pour vos renouvellements ?", + "billing_payment_method_autorenew_guide_help_link": "En savoir plus", + "billing_payment_method_bank_account_pending_validation": "Merci d’avoir renseigné vos coordonnées bancaires. Vous recevrez rapidement un e-mail de notre partenaire Yousign, vous permettant de signer électroniquement votre mandat de prélèvement. Votre compte bancaire sera ainsi validé et actif.", + "billing_payment_method_bank_account_processing_delay": "Votre compte bancaire sera validé dans les 24h à 48h à compter de la réception de votre autorisation de prélèvement.", + "billing_payment_method_table_action_download_procedure": "Télécharger la procédure à retourner par voie postale", + "billing_payment_method_table_action_description_edit": "Modifier la description", + "billing_payment_method_table_action_set_default": "Définir ce moyen de paiement par défaut", + "billing_payment_method_table_action_delete": "Supprimer ce moyen de paiement", + "billing_payment_method_information_add_ovh_sas": "Lorsque vous enregistrez un moyen de paiement, vous autorisez OVH S.A.S à le conserver afin de faciliter le règlement de vos commandes futures.", + "billing_payment_method_information_add_default": "Le moyen de paiement que vous enregistrez en tant que moyen de paiement « par défaut » est utilisé automatiquement à chaque échéance, pour le paiement de vos services en renouvellement automatique et en paiement à l’usage (« Pay as you go »). Vous serez notifié avant chaque nouvelle échéance de paiement. Vous pouvez à tout moment modifier, supprimer ou ajouter des moyens de paiement en utilisant l’interface ci-dessous. Pour pouvoir utiliser des services en renouvellement automatique ou en paiement à l’usage, vous devez impérativement disposer d’au moins un moyen de paiement valide enregistré." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/payment/method/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..6d04f64eeff7 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/translations/Messages_fr_FR.json @@ -0,0 +1,22 @@ +{ + "billing_payment_method_title": "Mes moyens de paiement", + "billing_payment_method_load_error": "Une erreur est survenue lors du chargement de vos moyens de paiement.", + "billing_payment_method_table_type": "Type de paiement", + "billing_payment_method_table_label": "Compte", + "billing_payment_method_table_expiration_date": "Date d'expiration", + "billing_payment_method_table_description": "Description", + "billing_payment_method_table_default": "Moyen de paiement par défaut", + "billing_payment_method_table_state": "État", + "billing_payment_method_table_3d_secure": "3D Secure", + "billing_payment_method_table_top_add_method": "Ajouter un moyen de paiement", + "billing_payment_method_autorenew_guide_help": "Besoin d'aide pour vos renouvellements ?", + "billing_payment_method_autorenew_guide_help_link": "En savoir plus", + "billing_payment_method_bank_account_pending_validation": "Merci d’avoir renseigné vos coordonnées bancaires. Vous recevrez rapidement un e-mail de notre partenaire Yousign, vous permettant de signer électroniquement votre mandat de prélèvement. Votre compte bancaire sera ainsi validé et actif.", + "billing_payment_method_bank_account_processing_delay": "Votre compte bancaire sera validé dans les 24h à 48h à compter de la réception de votre autorisation de prélèvement.", + "billing_payment_method_table_action_download_procedure": "Télécharger la procédure à retourner par voie postale", + "billing_payment_method_table_action_description_edit": "Modifier la description", + "billing_payment_method_table_action_set_default": "Définir ce moyen de paiement par défaut", + "billing_payment_method_table_action_delete": "Supprimer ce moyen de paiement", + "billing_payment_method_information_add_ovh_sas": "Lorsque vous enregistrez un moyen de paiement, vous autorisez OVH S.A.S à le conserver afin de faciliter le règlement de vos commandes futures.", + "billing_payment_method_information_add_default": "Le moyen de paiement que vous enregistrez en tant que moyen de paiement « par défaut » est utilisé automatiquement à chaque échéance, pour le paiement de vos services en renouvellement automatique et en paiement à l’usage (« Pay as you go »). Vous serez notifié avant chaque nouvelle échéance de paiement. Vous pouvez à tout moment modifier, supprimer ou ajouter des moyens de paiement en utilisant l’interface ci-dessous. Pour pouvoir utiliser des services en renouvellement automatique ou en paiement à l’usage, vous devez impérativement disposer d’au moins un moyen de paiement valide enregistré." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/payment/method/translations/Messages_it_IT.json new file mode 100644 index 000000000000..31b8ef74da31 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/translations/Messages_it_IT.json @@ -0,0 +1,22 @@ +{ + "billing_payment_method_title": "I tuoi metodi di pagamento", + "billing_payment_method_load_error": "Si è verificato un errore durante il caricamento dei metodi di pagamento.", + "billing_payment_method_table_type": "Tipo di pagamento", + "billing_payment_method_table_label": "Account", + "billing_payment_method_table_expiration_date": "Data di scadenza", + "billing_payment_method_table_description": "Descrizione", + "billing_payment_method_table_default": "Metodo di pagamento predefinito ", + "billing_payment_method_table_state": "Stato", + "billing_payment_method_table_3d_secure": "3D Secure", + "billing_payment_method_table_top_add_method": "Aggiungi un metodo di pagamento", + "billing_payment_method_autorenew_guide_help": "Bisogno di aiuto per rinnovare i tuoi servizi?", + "billing_payment_method_autorenew_guide_help_link": "Scopri di più", + "billing_payment_method_bank_account_pending_validation": "Grazie per aver inserito le tue coordinate bancarie. A breve riceverai un’email da parte di Yousign, per firmare elettronicamente l’autorizzazione per l’addebito diretto. Il conto bancario verrà così convalidato e diventerà attivo.", + "billing_payment_method_bank_account_processing_delay": "Il tuo conto bancario verrà convalidato entro 24-48 oredalla tua autorizzazione al prelievo.", + "billing_payment_method_table_action_download_procedure": "Scarica la procedura da compilare e restituire via posta", + "billing_payment_method_table_action_description_edit": "Modifica la descrizione", + "billing_payment_method_table_action_set_default": "Imposta questo metodo di pagamento come predefinito", + "billing_payment_method_table_action_delete": "Elimina questo metodo di pagamento", + "billing_payment_method_information_add_ovh_sas": "Quando registri un metodo di pagamento, autorizzi OVH S.A.S a conservarlo per facilitare il pagamento degli ordini futuri.", + "billing_payment_method_information_add_default": "Il metodo di pagamento registrato come \"predefinito\" viene utilizzato automaticamente a ogni scadenza per il saldo dei servizi con rinnovo automatico e fatturazione a consumo (\"Pay as you go\"). Prima di ogni scadenza di pagamento, verrà inviato un messaggio di notifica. I metodi di pagamento possono essere modificati, eliminati o aggiunti in qualsiasi momento tramite l'interfaccia qui sotto. Per utilizzare servizi con rinnovo automatico o fatturazione a consumo, è necessario disporre di almeno una modalità di pagamento valida registrata." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/payment/method/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..921790bb223a --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/translations/Messages_pl_PL.json @@ -0,0 +1,22 @@ +{ + "billing_payment_method_title": "Moje sposoby płatności", + "billing_payment_method_load_error": "Wystąpił błąd podczas ładowania Twoich metod płatności.", + "billing_payment_method_table_type": "Typ płatności", + "billing_payment_method_table_label": "Konto", + "billing_payment_method_table_expiration_date": "Data wygasania", + "billing_payment_method_table_description": "Opis", + "billing_payment_method_table_default": "Domyślny sposób płatności", + "billing_payment_method_table_state": "Status", + "billing_payment_method_table_3d_secure": "3D Secure", + "billing_payment_method_table_top_add_method": "Dodaj sposób płatności", + "billing_payment_method_autorenew_guide_help": "Potrzebujesz pomocy w zakresie odnawiania usług?", + "billing_payment_method_autorenew_guide_help_link": "Dowiedz się więcej", + "billing_payment_method_bank_account_pending_validation": "Prosimy o wprowadzenie danych bankowych. Otrzymasz e-mail od naszego partnera Yousign, który umożliwi Ci złożenie elektronicznego podpisu na poleceniu zapłaty. Twoje konto bankowe zostanie dzięki temu zatwierdzone i stanie się aktywne.", + "billing_payment_method_bank_account_processing_delay": "Twoje konto bankowe zostanie zatwierdzone w ciągu 24-48 godzin od uzyskania upoważnienia do obciążania rachunku.", + "billing_payment_method_table_action_download_procedure": "Pobierz dokument i prześlij go do nas pocztą.", + "billing_payment_method_table_action_description_edit": "Zmień opis", + "billing_payment_method_table_action_set_default": "Ustaw tę metodę płatności jako domyślną", + "billing_payment_method_table_action_delete": "Usuń tę metodę płatności", + "billing_payment_method_information_add_ovh_sas": "Po zarejestrowaniu sposobu płatności OVH S.A.S może go zachować, aby ułatwić płatności za przyszłe zamówienia.", + "billing_payment_method_information_add_default": "Sposób płatności zarejestrowany jako domyślny zostanie automatycznie użyty w każdym kolejnym terminie płatności do opłacenia usług z opcją automatycznego odnowienia oraz płatności za wykorzystane zasoby („pay as you go”). Otrzymasz powiadomienie przed każdym nowym terminem płatności. W każdej chwili możesz zmienić, usunąć lub dodać sposoby płatności, używając poniższego interfejsu. Aby móc korzystać z usług z opcją automatycznego odnawiania lub z płatnością za wykorzystane zasoby, musisz mieć zarejestrowany co najmniej jeden ważny sposób płatności." +} diff --git a/packages/manager/modules/new-billing/src/payment/method/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/payment/method/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..455408ba68ee --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/method/translations/Messages_pt_PT.json @@ -0,0 +1,22 @@ +{ + "billing_payment_method_title": "Os meus métodos de pagamento", + "billing_payment_method_load_error": "Ocorreu um erro ao carregar os seus métodos de pagamento.", + "billing_payment_method_table_type": "Tipo de pagamento", + "billing_payment_method_table_label": "Conta", + "billing_payment_method_table_expiration_date": "Data de expiração", + "billing_payment_method_table_description": "Descrição ", + "billing_payment_method_table_default": "Método de pagamento predefinido", + "billing_payment_method_table_state": "Estado", + "billing_payment_method_table_3d_secure": "3D Secure", + "billing_payment_method_table_top_add_method": "Adicionar um método de pagamento", + "billing_payment_method_autorenew_guide_help": "Precisa de ajuda para configurar as suas renovações?", + "billing_payment_method_autorenew_guide_help_link": "Mais informações", + "billing_payment_method_bank_account_pending_validation": "Obrigado por ter inserido os seus dados bancários. Irá receber em breve um e-mail do nosso parceiro Yousign, que lhe permitirá assinar eletronicamente a sua autorização de débito direto. Assim, a sua conta bancária será validada e ativada.", + "billing_payment_method_bank_account_processing_delay": "A sua conta bancária será válida após 24-48h úteis a contar a partir da receção da sua autorização de débito.", + "billing_payment_method_table_action_download_procedure": "Descarregar o documento que deverá enviar por correio", + "billing_payment_method_table_action_description_edit": "Alterar a descrição", + "billing_payment_method_table_action_set_default": "Definir este método de pagamento por predefinição", + "billing_payment_method_table_action_delete": "Eliminar este método de pagamento", + "billing_payment_method_information_add_ovh_sas": "Ao registar um método de pagamento, autoriza a OVH S.A.S a conservá-lo para facilitar o pagamento das suas futuras encomendas.", + "billing_payment_method_information_add_default": "O método de pagamento que regista enquanto método de pagamento \"predefinido\" é utilizado automaticamente em cada data de vencimento para o pagamento dos seus serviços em renovação automática e em pagamento conforme a sua utilização (\"Pay as you go\"). Receberá uma notificação antes de cada prazo de pagamento. Pode alterar, eliminar ou adicionar métodos de pagamento a qualquer momento, utilizando a interface abaixo. Para poder utilizar serviços com renovação automática ou pagamento conforme a sua utilização, deve dispor de pelo menos um método de pagamento válido registado." +} diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/billing-ovhAccount.controller.js b/packages/manager/modules/new-billing/src/payment/ovhAccount/billing-ovhAccount.controller.js new file mode 100644 index 000000000000..9c764c658658 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/billing-ovhAccount.controller.js @@ -0,0 +1,210 @@ +import find from 'lodash/find'; +import head from 'lodash/head'; + +import { BILLING_BASE_URL } from '../../constants/billing.constants'; + +export default /* @ngInject */ ( + $filter, + $scope, + $state, + $timeout, + $translate, + atInternet, + BillingmessageParser, + BillingOvhAccount, + BillingdateRangeSelection, + ouiDatagridService, +) => { + $scope.ovhAccountLoading = false; + $scope.ovhAccountsLoading = false; + $scope.ovhAccount = { + model: null, + refresh: false, + choice: null, + list: [], + }; + + function init() { + $scope.ovhAccountsLoading = true; + + return BillingOvhAccount.getOvhAccount() + .then((ovhAccountList) => { + $scope.ovhAccount.list = ovhAccountList; + + if (ovhAccountList.length) { + const canBeCredited = find(ovhAccountList, { + canBeCredited: true, + }); + if (canBeCredited) { + $scope.ovhAccount.choice = canBeCredited; + } else { + $scope.ovhAccount.choice = head(ovhAccountList); + } + $scope.ovhAccount.model = { + hasOvhAccount: true, + }; + } else { + $scope.ovhAccount.model = { + hasOvhAccount: false, + }; + } + }) + .catch((err) => { + $scope.setMessage( + $translate.instant('ovhAccount_get_accounts_error'), + err.data, + ); + }) + .finally(() => { + $scope.ovhAccountsLoading = false; + }); + } + + $scope.changeOvhAccount = function changeOvhAccount() { + $scope.ovhAccount.model = null; + $scope.loadOvhAccount({ + offset: 1, + }); + }; + + $scope.loadOvhAccount = function loadOvhAccount({ offset, pageSize }) { + $scope.ovhAccountLoading = true; + + const date = BillingdateRangeSelection.dateFrom; + const { dateTo } = BillingdateRangeSelection; + const ovhAccount = $scope.ovhAccount.choice.ovhAccountId; + + const data = { + count: pageSize, + offset: offset - 1, + date, + dateTo, + ovhAccount, + }; + + return BillingOvhAccount.getBillingOvhAccount(data) + .then((account) => { + $scope.ovhAccount.model = account; + return { + data: account.list.results, + meta: { + totalCount: account.count, + }, + }; + }) + .catch((err) => { + $scope.setMessage( + $translate.instant('ovhAccount_renew_step2_error'), + err.data, + ); + }) + .finally(() => { + $scope.ovhAccountLoading = false; + }); + }; + + $scope.onDateRangeChanged = function onDateRangeChanged() { + ouiDatagridService.refresh('ovhAccountMovements', true); + }; + + $scope.getPriceClasses = function getPriceClasses(price) { + if (price >= 0) { + return 'bold'; + } + return 'red bold'; + }; + + $scope.$on('module.billing.credit.reload', () => { + $scope.ovhAccount.refresh = true; + }); + + $scope.refreshCredit = function refreshCredit() { + $scope.ovhAccount.refresh = false; + $scope.ovhAccount.model = null; + $scope.loadOvhAccount(); + }; + + $scope.setAction = function setAction(action, data) { + if (action) { + $scope.currentAction = action; + $scope.currentActionData = data; + + $scope.stepPath = `${BILLING_BASE_URL}payment/ovhAccount/${$scope.currentAction}/billing-ovhAccount-${$scope.currentAction}.html`; + + $('#currentAction').modal({ + keyboard: true, + backdrop: 'static', + }); + } else { + $('#currentAction').modal('hide'); + $scope.currentActionData = null; + $timeout(() => { + $scope.stepPath = ''; + }, 300); + } + }; + + $scope.resetAction = function resetAction() { + $scope.setAction(false); + }; + + $scope.setMessage = function setMessage(message, data) { + const msg = BillingmessageParser(message, data); + $scope.message = msg.message; + $scope.alertType = msg.alertType; + }; + + $scope.getDatasToExport = function getDatasToExport() { + const datasToReturn = [ + [ + $translate.instant('ovhAccount_table_head_id'), + $translate.instant('ovhAccount_table_head_date'), + $translate.instant('ovhAccount_table_head_debit'), + $translate.instant('ovhAccount_table_head_credit'), + ], + ]; + $scope.csvLoading = true; + return BillingOvhAccount.getBillingOvhAccount({ + count: 0, + offset: 0, + date: BillingdateRangeSelection.dateFrom, + dateTo: BillingdateRangeSelection.dateTo, + ovhAccount: $scope.ovhAccount.choice.ovhAccountId, + }) + .then( + (ovhAccount) => { + angular.forEach(ovhAccount.list.results, (bill) => { + datasToReturn.push([ + bill.factureNumber, + $filter('date')(bill.date, 'mediumDate'), + bill.debit, + bill.credit, + ]); + }); + return datasToReturn; + }, + () => '', + ) + .finally(() => { + $scope.csvLoading = false; + }); + }; + + $scope.trackCSVExport = function trackCSVExport() { + atInternet.trackClick({ + name: 'export_csv', + type: 'action', + chapter1: 'payment_types', + chapter2: 'prepaid_account', + }); + }; + + // TODO: Pass this through resolve when controller is refactored + $scope.askForRefund = (accountId, movementId) => + $state.go('billing.payment.ovhaccount.refund', { + accountId, + movementId, + }); + + init(); +}; diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/billing-ovhAccount.html b/packages/manager/modules/new-billing/src/payment/ovhAccount/billing-ovhAccount.html new file mode 100644 index 000000000000..fda0a568dda1 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/billing-ovhAccount.html @@ -0,0 +1,192 @@ +
+ + +
+ +

+ +
+ +
+ +

+ + + + + + +

+ +

+ + + + - +

+ +

+ + +

+ +
+ + +
+ + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/billing-ovhAccount.module.js b/packages/manager/modules/new-billing/src/payment/ovhAccount/billing-ovhAccount.module.js new file mode 100644 index 000000000000..5a0bc3057c8b --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/billing-ovhAccount.module.js @@ -0,0 +1,41 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import routing from './billing-payment-ovhAccount.routes'; +import service from './billing-ovhAccount.service'; +import createAlertCtrl from './createAlert/billing-ovhAccount-createAlert.controller'; +import createAlertTpl from './createAlert/billing-ovhAccount-createAlert.html'; +import renewCtrl from './renew/billing-ovhAccount-renew.controller'; +import renewTpl from './renew/billing-ovhAccount-renew.html'; + +const moduleName = 'ovhManagerBillingPaymentOvhAccount'; + +angular + .module(moduleName, [ + angularTranslate, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .config(routing) + .service('BillingOvhAccount', service) + .controller('Billing.controllers.OvhAccountCreateAlert', createAlertCtrl) + .controller('Billing.controllers.OvhAccountRenew', renewCtrl) + .run( + /* @ngInject */ ($templateCache) => { + $templateCache.put( + 'billing/payment/ovhAccount/createAlert/billing-ovhAccount-createAlert.html', + createAlertTpl, + ); + $templateCache.put( + 'billing/payment/ovhAccount/renew/billing-ovhAccount-renew.html', + renewTpl, + ); + }, + ) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/billing-ovhAccount.service.js b/packages/manager/modules/new-billing/src/payment/ovhAccount/billing-ovhAccount.service.js new file mode 100644 index 000000000000..8fc78e27929a --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/billing-ovhAccount.service.js @@ -0,0 +1,98 @@ +export default /* @ngInject */ function BillingOvhAccount( + $http, + $q, + $cacheFactory, +) { + const billingAccountCache = $cacheFactory('UNIVERS_BILLING_OVHACCOUNT_LIST'); + const self = this; + + this.getBillingOvhAccount = function getBillingOvhAccount({ + ovhAccount, + count, + offset, + date, + dateTo, + }) { + const data = {}; + + if (count != null) { + data.count = count; + } + if (offset != null) { + data.offset = offset; + } + if (date) { + data.date = moment(date) + .startOf('day') + .toISOString(); + } + if (dateTo) { + data.dateTo = moment(dateTo) + .endOf('day') + .toISOString(); + } + data.ovhAccount = ovhAccount; + + return $http + .get('/sws/billing/ovhaccount', { + params: data, + serviceType: 'aapi', + }) + .then((response) => response.data); + }; + + this.getOvhAccount = function getOvhAccount() { + return $http + .get('apiv6/me/ovhAccount', { + cache: billingAccountCache, + }) + .then((response) => { + if (angular.isArray(response.data)) { + return $q.all( + response.data.map((ovhAccountId) => + self.getOvhAccountDetails(ovhAccountId), + ), + ); + } + return response.data; + }); + }; + + this.getOvhAccountDetails = function getOvhAccountDetails(ovhAccountId) { + return $http + .get(['apiv6/me/ovhAccount', ovhAccountId].join('/'), { + cache: billingAccountCache, + }) + .then((response) => response.data); + }; + + this.putOvhAccountDetails = function putOvhAccountDetails( + ovhAccountId, + ovhAccountInfos, + ) { + return $http + .put(['apiv6/me/ovhAccount', ovhAccountId].join('/'), ovhAccountInfos) + .then((response) => response.data); + }; + + this.creditOvhAccount = function creditOvhAccount(ovhAccountId, amount) { + return $http + .post(['apiv6/me/ovhAccount', ovhAccountId, 'creditOrder'].join('/'), { + amount: Math.round(amount * 100), + }) + .then((response) => { + if (response.status < 300) { + return response; + } + return $q.reject(response); + }); + }; + + this.retrieveMoney = (ovhAccountId, amount, bankAccountId) => + $http + .post(['apiv6/me/ovhAccount', ovhAccountId, 'retrieveMoney'].join('/'), { + amount, + bankAccountId, + }) + .then((resp) => resp.data); +} diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/billing-payment-ovhAccount.routes.js b/packages/manager/modules/new-billing/src/payment/ovhAccount/billing-payment-ovhAccount.routes.js new file mode 100644 index 000000000000..0b4501a17b99 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/billing-payment-ovhAccount.routes.js @@ -0,0 +1,44 @@ +import controller from './billing-ovhAccount.controller'; +import template from './billing-ovhAccount.html'; + +export default /* @ngInject */ ( + $stateProvider, + $urlRouterProvider, + coreConfigProvider, +) => { + if (coreConfigProvider.isRegion(['EU', 'CA'])) { + const name = 'billing.payment.ovhaccount'; + + $stateProvider.state(name, { + url: '/ovhaccount', + template, + controller, + resolve: { + goToOvhAccount: /* @ngInject */ ($state, $timeout, Alerter) => ( + message = false, + type = 'success', + ) => { + const reload = message && type === 'success'; + + const promise = $state.go( + 'billing.payment.ovhaccount', + {}, + { + reload, + }, + ); + + if (message) { + promise.then(() => + $timeout(() => Alerter.set(`alert-${type}`, message)), + ); + } + + return promise; + }, + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('billing_payment_ovhaccount'), + }, + }); + } +}; diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/createAlert/billing-ovhAccount-createAlert.controller.js b/packages/manager/modules/new-billing/src/payment/ovhAccount/createAlert/billing-ovhAccount-createAlert.controller.js new file mode 100644 index 000000000000..1c100b104d6b --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/createAlert/billing-ovhAccount-createAlert.controller.js @@ -0,0 +1,35 @@ +import { ALERT } from '../../../constants/ovhAccountEvent.constants'; + +export default /* @ngInject */ function BillingOvhAccountCreateAlertController( + $scope, + $translate, + BillingOvhAccount, + Alerter, +) { + const self = this; + + self.amount = $scope.currentActionData + ? String($scope.currentActionData / 100) + : '0'; + + $scope.createAlert = () => { + self.loading = true; + BillingOvhAccount.putOvhAccountDetails($scope.ovhAccount.model.accountId, { + alertThreshold: parseInt(self.disableAlert ? 0 : self.amount, 10) * 100, + }) + .then(() => { + $scope.$emit(ALERT); + $scope.loadOvhAccount({ offset: 1 }); + Alerter.success($translate.instant('ovhAccount_create_alert_success')); + }) + .catch((err) => + Alerter.alertFromSWS( + $translate.instant('ovhAccount_create_alert_error'), + err, + ), + ) + .finally(() => $scope.resetAction()); + }; + + $scope.checkAmount = () => !self.amount.match(/,|\./) && self.amount >= 0; +} diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/createAlert/billing-ovhAccount-createAlert.html b/packages/manager/modules/new-billing/src/payment/ovhAccount/createAlert/billing-ovhAccount-createAlert.html new file mode 100644 index 000000000000..ba3116b2256a --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/createAlert/billing-ovhAccount-createAlert.html @@ -0,0 +1,64 @@ +
+
+
+
+ +
+ +
+

+ +
+ +
+ + + +
+
+ + + +
+ +
+
+
+
+
diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/index.js b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/index.js new file mode 100644 index 000000000000..638cad9e4240 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/index.js @@ -0,0 +1,21 @@ +import angular from 'angular'; +import '@uirouter/angularjs'; +import 'oclazyload'; + +const moduleName = 'ovhManagerBillingPaymentOvhaccountRefundLazyloading'; + +angular.module(moduleName, ['ui.router', 'oc.lazyLoad']).config( + /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.payment.ovhaccount.refund.**', { + url: '/refund', + lazyLoad: ($transition$) => { + const $ocLazyLoad = $transition$.injector().get('$ocLazyLoad'); + + return import('./refund.module').then((mod) => + $ocLazyLoad.inject(mod.default || mod), + ); + }, + }); + }, +); +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/refund.component.js b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/refund.component.js new file mode 100644 index 000000000000..fc6e3451b37c --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/refund.component.js @@ -0,0 +1,12 @@ +import controller from './refund.controller'; +import template from './template.html'; + +export default { + bindings: { + goBack: '<', + movement: '<', + requestRefund: '<', + }, + controller, + template, +}; diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/refund.controller.js b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/refund.controller.js new file mode 100644 index 000000000000..d0c334e7b29d --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/refund.controller.js @@ -0,0 +1,26 @@ +export default class { + /* @ngInject */ + constructor($translate) { + this.$translate = $translate; + } + + confirm() { + this.isLoading = true; + return this.requestRefund() + .then(() => + this.goBack( + this.$translate.instant('billing_ovhaccount_refund_success', { + amount: this.movement.retrievableAmount?.text, + }), + ), + ) + .catch((error) => + this.goBack( + `${this.$translate.instant('billing_ovhaccount_refund_error')} ${ + error.data?.message + }`, + 'danger', + ), + ); + } +} diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/refund.module.js b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/refund.module.js new file mode 100644 index 000000000000..85d9bd107f88 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/refund.module.js @@ -0,0 +1,25 @@ +import angular from 'angular'; +import 'angular-translate'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; +import ngOvhTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import ngUiRouterLayout from '@ovh-ux/ng-ui-router-layout'; + +import component from './refund.component'; +import routing from './routing'; + +const moduleName = 'ovhManagerHubIncidentMigrationConfirm'; + +angular + .module(moduleName, [ + ngOvhTranslateAsyncLoader, + 'oui', + ngUiRouterLayout, + 'pascalprecht.translate', + uiRouter, + ]) + .component('billingOvhaccountRefund', component) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/routing.js b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/routing.js new file mode 100644 index 000000000000..0d42cedacf7e --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/routing.js @@ -0,0 +1,31 @@ +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.payment.ovhaccount.refund', { + url: '/refund?accountId&movementId', + views: { + modal: { + component: 'billingOvhaccountRefund', + }, + }, + layout: 'modal', + resolve: { + accountId: /* @ngInject */ ($transition$) => + $transition$.params().accountId, + movementId: /* @ngInject */ ($transition$) => + $transition$.params().movementId, + movement: /* @ngInject */ ($http, accountId, movementId) => + $http + .get(`/me/ovhAccount/${accountId}/movements/${movementId}`) + .then(({ data }) => data), + requestRefund: /* @ngInject */ ($http, accountId, movement) => () => + $http.post( + `/me/ovhAccount/${accountId}/movements/${movement.movementId}/requestRefund`, + { + // We use Math.round to avoid floating point error + amount: Math.round(movement.retrievableAmount.value * 100), + }, + ), + goBack: /* @ngInject */ (goToOvhAccount) => goToOvhAccount, + breadcrumb: () => null, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/template.html b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/template.html new file mode 100644 index 000000000000..ef07f6fcdd86 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/template.html @@ -0,0 +1,17 @@ + +

+

+
diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_de_DE.json new file mode 100644 index 000000000000..6f3846736c86 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_de_DE.json @@ -0,0 +1,9 @@ +{ + "billing_ovhaccount_refund": "Erstattung fordern", + "billing_ovhaccount_refund_cancel": "Abbrechen", + "billing_ovhaccount_refund_confirm": "Anfrage bestätigen", + "billing_ovhaccount_refund_description": "Sie sind im Begriff, die Erstattung in Höhe von {{ amount }} einzuleiten. Die Erstattung erfolgt auf das ursprüngliche Zahlungsmittel.", + "billing_ovhaccount_refund_description_confirm": "Möchten Sie die Erstattung vornehmen?", + "billing_ovhaccount_refund_success": "Ihre Forderung einer Erstattung in Höhe von {{amount}} ist eingegangen und wird so schnell wie möglich bearbeitet.", + "billing_ovhaccount_refund_error": "Bei der Forderung einer Erstattung ist ein Fehler aufgetreten." +} diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_en_GB.json new file mode 100644 index 000000000000..a01f31e1662b --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_en_GB.json @@ -0,0 +1,9 @@ +{ + "billing_ovhaccount_refund": "Request a refund", + "billing_ovhaccount_refund_cancel": "Cancel", + "billing_ovhaccount_refund_confirm": "Confirm request", + "billing_ovhaccount_refund_description": "You are about to request a refund of {{ amount }}. You will be refunded via the original payment method.", + "billing_ovhaccount_refund_description_confirm": "Do you want to proceed with the refund?", + "billing_ovhaccount_refund_success": "Your {{amount}} refund request has been processed, and will be sent to you as soon as possible.", + "billing_ovhaccount_refund_error": "An error has occurred submitting the refund request." +} diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_es_ES.json new file mode 100644 index 000000000000..36dcf7ebfac6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_es_ES.json @@ -0,0 +1,9 @@ +{ + "billing_ovhaccount_refund": "Solicitar un reembolso", + "billing_ovhaccount_refund_cancel": "Cancelar", + "billing_ovhaccount_refund_confirm": "Confirmar la solicitud", + "billing_ovhaccount_refund_description": "Va a solicitar el reembolso de {{ amount }}. Será reembolsado en la forma de pago original.", + "billing_ovhaccount_refund_description_confirm": "¿Quiere solicitar el reembolso?", + "billing_ovhaccount_refund_success": "La solicitud de reembolso de {{amount}} se ha enviado y será tratada lo antes posible.", + "billing_ovhaccount_refund_error": "Se ha producido un error al solicitar el reembolso." +} diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..77ae42f1c119 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_fr_CA.json @@ -0,0 +1,9 @@ +{ + "billing_ovhaccount_refund": "Demander un remboursement", + "billing_ovhaccount_refund_cancel": "Annuler", + "billing_ovhaccount_refund_confirm": "Valider la demande", + "billing_ovhaccount_refund_description": "Vous êtes sur le point de procéder au remboursement de {{ amount }}. Vous serez remboursé sur le moyen de paiement d'origine.", + "billing_ovhaccount_refund_description_confirm": "Souhaitez-vous procéder au remboursement ?", + "billing_ovhaccount_refund_success": "Votre demande de remboursement de {{amount}} a bien été prise en compte et sera traitée dans les plus brefs délais.", + "billing_ovhaccount_refund_error": "Une erreur est survenue lors de la demande de remboursement." +} diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..77ae42f1c119 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_fr_FR.json @@ -0,0 +1,9 @@ +{ + "billing_ovhaccount_refund": "Demander un remboursement", + "billing_ovhaccount_refund_cancel": "Annuler", + "billing_ovhaccount_refund_confirm": "Valider la demande", + "billing_ovhaccount_refund_description": "Vous êtes sur le point de procéder au remboursement de {{ amount }}. Vous serez remboursé sur le moyen de paiement d'origine.", + "billing_ovhaccount_refund_description_confirm": "Souhaitez-vous procéder au remboursement ?", + "billing_ovhaccount_refund_success": "Votre demande de remboursement de {{amount}} a bien été prise en compte et sera traitée dans les plus brefs délais.", + "billing_ovhaccount_refund_error": "Une erreur est survenue lors de la demande de remboursement." +} diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_it_IT.json new file mode 100644 index 000000000000..5a4281d5907a --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_it_IT.json @@ -0,0 +1,9 @@ +{ + "billing_ovhaccount_refund": "Richiedi un rimborso", + "billing_ovhaccount_refund_cancel": "Annulla", + "billing_ovhaccount_refund_confirm": "Conferma la richiesta", + "billing_ovhaccount_refund_description": "Stai per procedere al rimborso di {{ amount }}. Verrai rimborsato sul metodo di pagamento originale.", + "billing_ovhaccount_refund_description_confirm": "Vuoi procedere al rimborso?", + "billing_ovhaccount_refund_success": "La tua richiesta di rimborso di {{amount}} è stata presa in carico e verrà gestita nel minor tempo possibile.", + "billing_ovhaccount_refund_error": "Si è verificato un errore durante la richiesta di rimborso." +} diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..8e78ceee2e81 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_pl_PL.json @@ -0,0 +1,9 @@ +{ + "billing_ovhaccount_refund": "Wniosek o zwrot", + "billing_ovhaccount_refund_cancel": "Anuluj", + "billing_ovhaccount_refund_confirm": "Zatwierdź wniosek", + "billing_ovhaccount_refund_description": "Składasz wniosek o zwrot środków w wysokości {{amount}}. Zwrot zostanie przekazany na zarejestrowany sposób płatności.", + "billing_ovhaccount_refund_description_confirm": "Czy chcesz złożyć wniosek o zwrot?", + "billing_ovhaccount_refund_success": "Wniosek o zwrot środków w wysokości {{amount}} został zarejestrowany. Rozpatrzymy go w najbliższym możliwym terminie.", + "billing_ovhaccount_refund_error": "Wystąpił błąd podczas składania wniosku o zwrot." +} diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..20866c1efd3b --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/refund/translations/Messages_pt_PT.json @@ -0,0 +1,9 @@ +{ + "billing_ovhaccount_refund": "Solicitar um reembolso", + "billing_ovhaccount_refund_cancel": "Cancelar", + "billing_ovhaccount_refund_confirm": "Validar o pedido", + "billing_ovhaccount_refund_description": "Está prestes a proceder ao reembolso de {{ amount }}. Receberá o reembolso através do método de pagamento original.", + "billing_ovhaccount_refund_description_confirm": "Deseja proceder ao reembolso?", + "billing_ovhaccount_refund_success": "O seu pedido de reembolso de {{amount}} foi corretamente tomado em conta e será tratado o mais rapidamente possível.", + "billing_ovhaccount_refund_error": "Ocorreu um erro aquando do pedido de reembolso." +} diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/renew/billing-ovhAccount-renew.controller.js b/packages/manager/modules/new-billing/src/payment/ovhAccount/renew/billing-ovhAccount-renew.controller.js new file mode 100644 index 000000000000..ee1e0559c332 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/renew/billing-ovhAccount-renew.controller.js @@ -0,0 +1,117 @@ +import { CREDIT } from '../../../constants/ovhAccountEvent.constants'; + +export default /* @ngInject */ ($scope, $translate, BillingOvhAccount) => { + $scope.accountRenew = { + amount: null, + account: null, + BC: null, + loading: false, + erreurMin: false, + erreurFormat: false, + }; + + $scope.loadAmount = function loadAmount() { + $scope.accountRenew.account = $scope.currentActionData; + $scope.accountRenew.amount = + ($scope.accountRenew.account.balance.value < 0 && + $scope.accountRenew.account.balance.value * -1) || + 10; + }; + + function isAmount(val) { + return val && /^[0-9]+((\.|,)[0-9]?[0-9]?)?$/.test(val); + } + + function parseAmount(val) { + if (isAmount(val)) { + return parseFloat(val.toString().replace(/,/, '.')); + } + + return null; + } + + $scope.getBC = function getBC() { + $scope.accountRenew.loading = true; + + /* avoid display old value, even few milliseconds */ + $scope.accountRenew.BC = null; + + const amount = parseAmount($scope.accountRenew.amount); + BillingOvhAccount.creditOvhAccount( + $scope.accountRenew.account.accountId, + amount, + ).then( + (data) => { + $scope.$emit(CREDIT); + $scope.accountRenew.BC = data.data; + $scope.accountRenew.loading = false; + }, + (data) => { + $scope.accountRenew.loading = false; + $scope.resetAction(); + $scope.setMessage( + $translate.instant('ovhAccount_renew_step2_error'), + data.data, + ); + }, + ); + }; + + $scope.displayBC = function displayBC() { + $scope.resetAction(); + $scope.setMessage( + $translate.instant('ovhAccount_renew_step2_success', { + t0: $scope.accountRenew.BC.url, + t1: $scope.accountRenew.BC.orderId, + }), + ); + window.open($scope.accountRenew.BC.url, '_blank'); + }; + + $scope.checkAmount = function checkAmount() { + let oldBalance; + let balance; + + if ($scope.accountRenew.amount === '') { + $scope.accountRenew.erreurMin = false; + $scope.accountRenew.erreurFormat = false; + return; + } + + const amount = parseAmount($scope.accountRenew.amount); + if (amount) { + $scope.accountRenew.erreurFormat = false; + + oldBalance = $scope.accountRenew.account.balance.value; + balance = $scope.accountRenew.account.balance.value + amount; + + if (oldBalance >= 0 && amount < 10) { + $scope.accountRenew.erreurMin = true; + } else if (oldBalance < 0 && (balance < 0 || amount < 10)) { + $scope.accountRenew.erreurMin = true; + } else { + $scope.accountRenew.erreurMin = false; + } + } else { + $scope.accountRenew.erreurFormat = true; + $scope.accountRenew.erreurMin = false; + } + }; + + $scope.currency = function currency(cur) { + const currencies = { EUR: '€', USD: '$' }; + const value = currencies[cur]; + if (value) { + return value; + } + return cur; + }; + + $scope.renewStepValidator = function renewStepValidator() { + return !( + $scope.accountRenew.erreurMin || + $scope.accountRenew.erreurFormat || + !$scope.accountRenew.amount + ); + }; +}; diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/renew/billing-ovhAccount-renew.html b/packages/manager/modules/new-billing/src/payment/ovhAccount/renew/billing-ovhAccount-renew.html new file mode 100644 index 000000000000..b8151ef566a3 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/renew/billing-ovhAccount-renew.html @@ -0,0 +1,74 @@ +
+
+
+

+
+ + + + + + +
+
+ +
+
+

+

+ + +

+
+
+ + +
+ +
+
+
diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_de_DE.json new file mode 100644 index 000000000000..9198674961dd --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_de_DE.json @@ -0,0 +1,4 @@ +{ + "billing_payment_ovhaccount": "Prepaid-Account", + "billing_payment_ovhaccount_refund": "Erstattung fordern" +} diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_en_GB.json new file mode 100644 index 000000000000..e6ad953ef808 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_en_GB.json @@ -0,0 +1,4 @@ +{ + "billing_payment_ovhaccount": "Prepaid account", + "billing_payment_ovhaccount_refund": "Request a refund" +} diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_es_ES.json new file mode 100644 index 000000000000..95313193dcfe --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_es_ES.json @@ -0,0 +1,4 @@ +{ + "billing_payment_ovhaccount": "Cuenta de prepago", + "billing_payment_ovhaccount_refund": "Solicitar un reembolso" +} diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..61d29f94ba2b --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_fr_CA.json @@ -0,0 +1,4 @@ +{ + "billing_payment_ovhaccount": "Compte prépayé", + "billing_payment_ovhaccount_refund": "Demander un remboursement" +} diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..61d29f94ba2b --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_fr_FR.json @@ -0,0 +1,4 @@ +{ + "billing_payment_ovhaccount": "Compte prépayé", + "billing_payment_ovhaccount_refund": "Demander un remboursement" +} diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_it_IT.json new file mode 100644 index 000000000000..358683899bd9 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_it_IT.json @@ -0,0 +1,4 @@ +{ + "billing_payment_ovhaccount": "Conto prepagato", + "billing_payment_ovhaccount_refund": "Richiedi un rimborso" +} diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..e2c993eb7542 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_pl_PL.json @@ -0,0 +1,4 @@ +{ + "billing_payment_ovhaccount": "Konto prepaid", + "billing_payment_ovhaccount_refund": "Wniosek o zwrot" +} diff --git a/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..3971ec89ecee --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/ovhAccount/translations/Messages_pt_PT.json @@ -0,0 +1,4 @@ +{ + "billing_payment_ovhaccount": "Conta pré-paga", + "billing_payment_ovhaccount_refund": "Solicitar um reembolso" +} diff --git a/packages/manager/modules/new-billing/src/payment/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/payment/translations/Messages_de_DE.json new file mode 100644 index 000000000000..c42e9234e242 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/translations/Messages_de_DE.json @@ -0,0 +1,8 @@ +{ + "billing_payment_title": "Zahlungsarten", + "billing_payment_method_title": "Meine Zahlungsarten", + "billing_payment_ovhaccount_title": "Mein Prepaid-Account", + "billing_payment_vouchers_title": "Meine Startup Program Gutscheine", + "billing_payment_fidelity_title": "Meine Punkte", + "billing_payment_credits_title": "Meine Gutscheine" +} diff --git a/packages/manager/modules/new-billing/src/payment/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/payment/translations/Messages_en_GB.json new file mode 100644 index 000000000000..0c393455b667 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/translations/Messages_en_GB.json @@ -0,0 +1,8 @@ +{ + "billing_payment_title": "Payment method", + "billing_payment_method_title": "My payment methods", + "billing_payment_ovhaccount_title": "My prepaid account ", + "billing_payment_vouchers_title": "My Startup Program vouchers", + "billing_payment_fidelity_title": "My points", + "billing_payment_credits_title": "My vouchers" +} diff --git a/packages/manager/modules/new-billing/src/payment/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/payment/translations/Messages_es_ES.json new file mode 100644 index 000000000000..ea4fb59c6529 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/translations/Messages_es_ES.json @@ -0,0 +1,8 @@ +{ + "billing_payment_title": "Formas de pago", + "billing_payment_method_title": "Mis formas de pago", + "billing_payment_ovhaccount_title": "Mi cuenta de prepago", + "billing_payment_vouchers_title": "Mis vouchers Startup Program", + "billing_payment_fidelity_title": "Mis puntos", + "billing_payment_credits_title": "Mis vouchers" +} diff --git a/packages/manager/modules/new-billing/src/payment/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/payment/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..c9878b6d8a31 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/translations/Messages_fr_CA.json @@ -0,0 +1,8 @@ +{ + "billing_payment_title": "Moyens de paiement", + "billing_payment_method_title": "Mes moyens de paiement", + "billing_payment_ovhaccount_title": "Mon compte prépayé", + "billing_payment_vouchers_title": "Mes vouchers Startup Program", + "billing_payment_fidelity_title": "Mes points", + "billing_payment_credits_title": "Mes bons d'achat" +} diff --git a/packages/manager/modules/new-billing/src/payment/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/payment/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..c9878b6d8a31 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/translations/Messages_fr_FR.json @@ -0,0 +1,8 @@ +{ + "billing_payment_title": "Moyens de paiement", + "billing_payment_method_title": "Mes moyens de paiement", + "billing_payment_ovhaccount_title": "Mon compte prépayé", + "billing_payment_vouchers_title": "Mes vouchers Startup Program", + "billing_payment_fidelity_title": "Mes points", + "billing_payment_credits_title": "Mes bons d'achat" +} diff --git a/packages/manager/modules/new-billing/src/payment/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/payment/translations/Messages_it_IT.json new file mode 100644 index 000000000000..de28046fed5f --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/translations/Messages_it_IT.json @@ -0,0 +1,8 @@ +{ + "billing_payment_title": "Modalità di pagamento", + "billing_payment_method_title": "I tuoi metodi di pagamento", + "billing_payment_ovhaccount_title": "Il tuo conto prepagato", + "billing_payment_vouchers_title": "I tuoi voucher Startup Program", + "billing_payment_fidelity_title": "I miei punti", + "billing_payment_credits_title": "I tuoi voucher" +} diff --git a/packages/manager/modules/new-billing/src/payment/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/payment/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..d1c330804d9e --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/translations/Messages_pl_PL.json @@ -0,0 +1,8 @@ +{ + "billing_payment_title": "Sposoby płatności", + "billing_payment_method_title": "Moje sposoby płatności", + "billing_payment_ovhaccount_title": "Moje konto przedpłacone", + "billing_payment_vouchers_title": "Moje vouchery Startup Program", + "billing_payment_fidelity_title": "Moje punkty", + "billing_payment_credits_title": "Moje vouchery" +} diff --git a/packages/manager/modules/new-billing/src/payment/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/payment/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..db57ba015fab --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/translations/Messages_pt_PT.json @@ -0,0 +1,8 @@ +{ + "billing_payment_title": "Métodos de pagamento", + "billing_payment_method_title": "Métodos de pagamento", + "billing_payment_ovhaccount_title": "Conta pré-paga", + "billing_payment_vouchers_title": "Os meus vouchers Startup Program", + "billing_payment_fidelity_title": "Os meus pontos", + "billing_payment_credits_title": "Os meus vouchers" +} diff --git a/packages/manager/modules/new-billing/src/payment/vouchers/billing-payment-voucher.module.js b/packages/manager/modules/new-billing/src/payment/vouchers/billing-payment-voucher.module.js new file mode 100644 index 000000000000..6c15d565861a --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/vouchers/billing-payment-voucher.module.js @@ -0,0 +1,25 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import movements from './movements/billing-payment-vouchers-movements.module'; +import routing from './billing-payment-voucher.routes'; +import service from './billing-vouchers.service'; + +const moduleName = 'ovhManagerBillingPaymentVouchers'; + +angular + .module(moduleName, [ + angularTranslate, + movements, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .config(routing) + .service('BillingVouchers', service) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/payment/vouchers/billing-payment-voucher.routes.js b/packages/manager/modules/new-billing/src/payment/vouchers/billing-payment-voucher.routes.js new file mode 100644 index 000000000000..28f04d2e674b --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/vouchers/billing-payment-voucher.routes.js @@ -0,0 +1,16 @@ +import controller from './billing-vouchers.controller'; +import template from './billing-vouchers.html'; + +export default /* @ngInject */ ($stateProvider) => { + const name = 'billing.payment.vouchers'; + + $stateProvider.state(name, { + url: '/vouchers', + template, + controller, + resolve: { + breadcrumb: /* @ngInject */ ($translate) => + $translate.instant('billing_payment_vouchers'), + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/payment/vouchers/billing-vouchers.controller.js b/packages/manager/modules/new-billing/src/payment/vouchers/billing-vouchers.controller.js new file mode 100644 index 000000000000..55ca30dd6086 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/vouchers/billing-vouchers.controller.js @@ -0,0 +1,49 @@ +export default /* @ngInject */ ( + $scope, + $translate, + BillingVouchers, + Alerter, +) => { + $scope.voucherIds = []; + + $scope.loaders = { + vouchers: false, + creditCode: false, + }; + + $scope.creditCode = null; + + function init() { + $scope.getVouchers(); + } + + $scope.getVouchers = function getVouchers(forceRefresh) { + $scope.voucherIds = []; + $scope.loaders.vouchers = true; + return BillingVouchers.getVouchers({ forceRefresh }).then( + (ids) => { + $scope.voucherIds = ids; + if (ids.length === 0) { + $scope.loaders.vouchers = false; + } + }, + (err) => { + Alerter.alertFromSWS( + $translate.instant('voucher_informations_error'), + err, + ); + }, + ); + }; + + $scope.transformItem = function transformItem(item) { + $scope.loaders.vouchers = true; + return BillingVouchers.getVoucher({ id: item }); + }; + + $scope.onTransformItemDone = function onTransformItemDone() { + $scope.loaders.vouchers = false; + }; + + init(); +}; diff --git a/packages/manager/modules/new-billing/src/payment/vouchers/billing-vouchers.html b/packages/manager/modules/new-billing/src/payment/vouchers/billing-vouchers.html new file mode 100644 index 000000000000..05a2b69cdb4e --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/vouchers/billing-vouchers.html @@ -0,0 +1,102 @@ +
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ + + +
+ +
+
diff --git a/packages/manager/modules/new-billing/src/payment/vouchers/billing-vouchers.service.js b/packages/manager/modules/new-billing/src/payment/vouchers/billing-vouchers.service.js new file mode 100644 index 000000000000..0cec99144c34 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/vouchers/billing-vouchers.service.js @@ -0,0 +1,48 @@ +export default /* @ngInject */ function BillingVouchers(OvhHttp) { + const cache = { + vouchers: 'UNIVERS_BILLING_VOUCHERS', + voucher: 'UNIVERS_BILLING_VOUCHER', + movements: 'UNIVERS_BILLING_VOUCHER_MOVEMENTS', + movement: 'UNIVERS_BILLING_VOUCHER_MOVEMENT', + }; + + this.getVouchers = function getVouchers(opts) { + return OvhHttp.get('/me/voucherAccount', { + rootPath: 'apiv6', + cache: cache.vouchers, + clearAllCache: opts.forceRefresh, + }); + }; + + this.getVoucher = function getVoucher(opts) { + return OvhHttp.get('/me/voucherAccount/{id}', { + rootPath: 'apiv6', + urlParams: { + id: opts.id, + }, + cache: cache.voucher, + }); + }; + + this.getMovements = function getMovements(opts) { + return OvhHttp.get('/me/voucherAccount/{id}/movements', { + rootPath: 'apiv6', + urlParams: { + id: opts.id, + }, + cache: cache.movements, + clearAllCache: opts.forceRefresh, + }); + }; + + this.getMovement = function getMovement(opts) { + return OvhHttp.get('/me/voucherAccount/{id}/movements/{movementId}', { + rootPath: 'apiv6', + urlParams: { + id: opts.id, + movementId: opts.movementId, + }, + cache: cache.movement, + }); + }; +} diff --git a/packages/manager/modules/new-billing/src/payment/vouchers/movements/billing-payment-vouchers-movements.module.js b/packages/manager/modules/new-billing/src/payment/vouchers/movements/billing-payment-vouchers-movements.module.js new file mode 100644 index 000000000000..2ff6f26b309f --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/vouchers/movements/billing-payment-vouchers-movements.module.js @@ -0,0 +1,15 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import routing from './billing-payment-vouchers-movements.routes'; + +const moduleName = 'ovhManagerBillingPaymentVouchersMovements'; + +angular + .module(moduleName, [angularTranslate, 'oui', uiRouter]) + .config(routing) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/payment/vouchers/movements/billing-payment-vouchers-movements.routes.js b/packages/manager/modules/new-billing/src/payment/vouchers/movements/billing-payment-vouchers-movements.routes.js new file mode 100644 index 000000000000..26305f8377c6 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/vouchers/movements/billing-payment-vouchers-movements.routes.js @@ -0,0 +1,22 @@ +import controller from './billing-vouchers-movements.controller'; +import template from './billing-vouchers-movements.html'; + +export default /* @ngInject */ ($stateProvider, $urlServiceProvider) => { + const name = 'billing.payment.vouchers.movement'; + + $stateProvider.state(name, { + url: '/:voucherAccountId', + template, + controller, + resolve: { + voucherAccountId: /* @ngInject */ ($transition$) => + $transition$.params().voucherAccountId, + breadcrumb: /* @ngInject */ (voucherAccountId) => voucherAccountId, + }, + }); + + $urlServiceProvider.rules.when( + '/billing/payment/vouchers/movements/:name', + '/billing/payment/vouchers/:name', + ); +}; diff --git a/packages/manager/modules/new-billing/src/payment/vouchers/movements/billing-vouchers-movements.controller.js b/packages/manager/modules/new-billing/src/payment/vouchers/movements/billing-vouchers-movements.controller.js new file mode 100644 index 000000000000..e2d5dc2c93ee --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/vouchers/movements/billing-vouchers-movements.controller.js @@ -0,0 +1,55 @@ +export default /* @ngInject */ ( + $scope, + $translate, + BillingVouchers, + $stateParams, + Alerter, +) => { + $scope.movementIds = []; + $scope.voucherAccountId = $stateParams.voucherAccountId; + + $scope.loaders = { + movements: false, + }; + + function init() { + $scope.getMovements(); + } + + $scope.getMovements = function getMovements(forceRefresh) { + $scope.movementIds = []; + $scope.loaders.movements = true; + return BillingVouchers.getMovements({ + id: $scope.voucherAccountId, + forceRefresh, + }).then( + (ids) => { + $scope.movementIds = ids; + if (ids.length === 0) { + $scope.loaders.movements = false; + } + }, + (err) => { + $scope.loaders.movements = false; + Alerter.alertFromSWS( + $translate.instant('voucher_informations_error'), + err, + ); + }, + ); + }; + + $scope.transformItem = function transformItem(item) { + $scope.loaders.movements = true; + return BillingVouchers.getMovement({ + id: $scope.voucherAccountId, + movementId: item, + }); + }; + + $scope.onTransformItemDone = function onTransformItemDone() { + $scope.loaders.movements = false; + }; + + init(); +}; diff --git a/packages/manager/modules/new-billing/src/payment/vouchers/movements/billing-vouchers-movements.html b/packages/manager/modules/new-billing/src/payment/vouchers/movements/billing-vouchers-movements.html new file mode 100644 index 000000000000..6f7ccdab4691 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/vouchers/movements/billing-vouchers-movements.html @@ -0,0 +1,115 @@ +
+
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
diff --git a/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_de_DE.json new file mode 100644 index 000000000000..1cb122d37a92 --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_de_DE.json @@ -0,0 +1,3 @@ +{ + "billing_payment_vouchers": "Gutscheine" +} diff --git a/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_en_GB.json new file mode 100644 index 000000000000..ef9471f5147d --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_en_GB.json @@ -0,0 +1,3 @@ +{ + "billing_payment_vouchers": "Vouchers" +} diff --git a/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_es_ES.json new file mode 100644 index 000000000000..65250edc8a2c --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_es_ES.json @@ -0,0 +1,3 @@ +{ + "billing_payment_vouchers": "Códigos promocionales" +} diff --git a/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..ef9471f5147d --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_fr_CA.json @@ -0,0 +1,3 @@ +{ + "billing_payment_vouchers": "Vouchers" +} diff --git a/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..ef9471f5147d --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_fr_FR.json @@ -0,0 +1,3 @@ +{ + "billing_payment_vouchers": "Vouchers" +} diff --git a/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_it_IT.json new file mode 100644 index 000000000000..c4d939eca43b --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_it_IT.json @@ -0,0 +1,3 @@ +{ + "billing_payment_vouchers": "Voucher" +} diff --git a/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..e1d3bf37ea7d --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_pl_PL.json @@ -0,0 +1,3 @@ +{ + "billing_payment_vouchers": "Vouchery " +} diff --git a/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..ef9471f5147d --- /dev/null +++ b/packages/manager/modules/new-billing/src/payment/vouchers/translations/Messages_pt_PT.json @@ -0,0 +1,3 @@ +{ + "billing_payment_vouchers": "Vouchers" +} diff --git a/packages/manager/modules/new-billing/src/sla/billing-sla.controller.js b/packages/manager/modules/new-billing/src/sla/billing-sla.controller.js new file mode 100644 index 000000000000..0628670e145b --- /dev/null +++ b/packages/manager/modules/new-billing/src/sla/billing-sla.controller.js @@ -0,0 +1,100 @@ +import every from 'lodash/every'; + +export default /* @ngInject */ ( + $scope, + $translate, + BillingSla, + Alerter, + $q, + atInternet, +) => { + $scope.slaIds = []; + + $scope.loaders = { + slas: true, + services: false, + }; + + $scope.currentSlaOpen = { value: null }; + + function init() { + $scope.currentSlaOpen = { value: null }; + $scope.slaIds = []; + $scope.slaIds = []; + $scope.getSlas(true); + } + + $scope.getSlas = function getSlas(forceRefresh) { + $scope.slaIds = []; + $scope.loaders.slas = true; + return BillingSla.getSlas({ forceRefresh }).then( + (ids) => { + $scope.slaIds = ids; + if (ids.length === 0) { + $scope.loaders.slas = false; + } + }, + (err) => { + Alerter.alertFromSWS($translate.instant('sla_informations_error'), err); + }, + ); + }; + + $scope.transformItem = function transformItem(item) { + $scope.loaders.slas = true; + return $q + .all({ + sla: BillingSla.getSla({ id: item }), + canBeApplied: BillingSla.canBeApplied({ id: item }), + services: BillingSla.getServices({ id: item }), + status: BillingSla.getStatus({ id: item }), + }) + .then(({ sla, canBeApplied, services, status }) => { + const detail = sla; + detail.canBeApplied = canBeApplied; + detail.services = services; + detail.status = status; + return detail; + }); + }; + + $scope.onTransformItemDone = function onTransformItemDone() { + $scope.loaders.slas = false; + }; + + $scope.applySla = function applySla(sla) { + $scope.loaders.applySla = true; + atInternet.trackClick({ + type: 'action', + name: `SLA-Btn-${sla.id}`, + }); + + BillingSla.applySla({ id: sla.id }) + .then( + () => { + Alerter.success($translate.instant('sla_apply_success')); + }, + (err) => { + Alerter.alertFromSWS($translate.instant('sla_apply_error'), err); + }, + ) + .finally(() => { + $scope.loaders.applySla = false; + init(); + }); + }; + + $scope.allNotApplicable = function allNotApplicable() { + return every($scope.slas, { status: 'notApplicable' }); + }; + + $scope.allRequested = function allRequested() { + return every($scope.slas, { status: 'requested' }); + }; + + $scope.allCompleted = function allCompleted() { + return every($scope.slas, { status: 'completed' }); + }; + + init(); +}; diff --git a/packages/manager/modules/new-billing/src/sla/billing-sla.html b/packages/manager/modules/new-billing/src/sla/billing-sla.html new file mode 100644 index 000000000000..91f8b874a463 --- /dev/null +++ b/packages/manager/modules/new-billing/src/sla/billing-sla.html @@ -0,0 +1,183 @@ +
+
+ + + +
+
+ +
+ +

+ +
+

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+
+
+
+
diff --git a/packages/manager/modules/new-billing/src/sla/billing-sla.service.js b/packages/manager/modules/new-billing/src/sla/billing-sla.service.js new file mode 100644 index 000000000000..b0db65a0ec97 --- /dev/null +++ b/packages/manager/modules/new-billing/src/sla/billing-sla.service.js @@ -0,0 +1,61 @@ +export default /* @ngInject */ function BillingSla(OvhHttp) { + const cache = { + slas: 'UNIVERS_BILLING_SLAS', + sla: 'UNIVERS_BILLING_SLA', + }; + + this.getSlas = function getSlas(opts) { + return OvhHttp.get('/me/sla', { + rootPath: 'apiv6', + cache: cache.slas, + clearAllCache: opts.forceRefresh, + }); + }; + + this.getSla = function getSla(opts) { + return OvhHttp.get('/me/sla/{id}', { + rootPath: 'apiv6', + urlParams: { + id: opts.id, + }, + cache: cache.sla, + }); + }; + + this.applySla = function applySla(opts) { + return OvhHttp.post('/me/sla/{id}/apply', { + rootPath: 'apiv6', + urlParams: { + id: opts.id, + }, + clearAllCache: cache.sla, + }); + }; + + this.canBeApplied = function canBeApplied(opts) { + return OvhHttp.get('/me/sla/{id}/canBeApplied', { + rootPath: 'apiv6', + urlParams: { + id: opts.id, + }, + }); + }; + + this.getServices = function getServices(opts) { + return OvhHttp.get('/me/sla/{id}/services', { + rootPath: 'apiv6', + urlParams: { + id: opts.id, + }, + }); + }; + + this.getStatus = function getStatus(opts) { + return OvhHttp.get('/me/sla/{id}/status', { + rootPath: 'apiv6', + urlParams: { + id: opts.id, + }, + }); + }; +} diff --git a/packages/manager/modules/new-billing/src/sla/sla.module.js b/packages/manager/modules/new-billing/src/sla/sla.module.js new file mode 100644 index 000000000000..9b576fc122dc --- /dev/null +++ b/packages/manager/modules/new-billing/src/sla/sla.module.js @@ -0,0 +1,26 @@ +import angular from 'angular'; +import angularTranslate from 'angular-translate'; +import ngAtInternet from '@ovh-ux/ng-at-internet'; +import ngOvhUtils from '@ovh-ux/ng-ovh-utils'; +import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader'; +import '@ovh-ux/ui-kit'; +import uiRouter from '@uirouter/angularjs'; + +import routing from './sla.routing'; +import service from './billing-sla.service'; + +const moduleName = 'ovhManagerBillingSla'; + +angular + .module(moduleName, [ + angularTranslate, + ngAtInternet, + ngOvhUtils, + ngTranslateAsyncLoader, + 'oui', + uiRouter, + ]) + .service('BillingSla', service) + .config(routing); + +export default moduleName; diff --git a/packages/manager/modules/new-billing/src/sla/sla.routing.js b/packages/manager/modules/new-billing/src/sla/sla.routing.js new file mode 100644 index 000000000000..fd6451f3e72e --- /dev/null +++ b/packages/manager/modules/new-billing/src/sla/sla.routing.js @@ -0,0 +1,14 @@ +import controller from './billing-sla.controller'; +import template from './billing-sla.html'; + +export default /* @ngInject */ ($stateProvider) => { + $stateProvider.state('billing.sla', { + url: '/sla', + template, + controller, + translations: { value: ['..'], format: 'json' }, + resolve: { + hideBreadcrumb: () => true, + }, + }); +}; diff --git a/packages/manager/modules/new-billing/src/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/translations/Messages_de_DE.json new file mode 100644 index 000000000000..1a791c14f7d9 --- /dev/null +++ b/packages/manager/modules/new-billing/src/translations/Messages_de_DE.json @@ -0,0 +1,920 @@ +{ + "billingError": "Beim Laden der Informationen ist ein Fehler aufgetreten", + "title_from": "von", + "title_to": "bis", + "period_tooltip_from": "Wählen Sie ein Startdatum aus", + "period_tooltip_to": "Wählen Sie ein Enddatum aus", + "table_download_html": "Die HTML Version anzeigen", + "table_download_pdf": "Die PDF Version anzeigen", + "table_download_html_order": "Bestellung im HTML-Format abrufen", + "table_download_pdf_order": "Bestellung im PDF-Format abrufen", + "table_download_html_invoice": "Rechnung im HTML-Format abrufen", + "table_download_pdf_invoice": "Rechnung im PDF-Format abrufen", + "table_download_pdf_beta": "PDF-Version ansehen (Beta)", + "todo": "In Kürze", + "wizard_order": "Bestellen", + "wizard_cancel": "Abbrechen", + "wizard_confirm": "Bestätigen", + "wizard_pay": "Bezahlen", + "wizard_renew": "Verlängern", + "wizard_next": "Weiter", + "wizard_previous": "Zurück", + "common_order_ascending": "in aufsteigender Reihenfolge ", + "common_order_descending": "in absteigender Reihenfolge ", + "common_payment_type_cash": "Barzahlung", + "common_payment_type_chargeback": "Zahlung abgelehnt", + "common_payment_type_cheque": "Scheck", + "common_payment_type_creditCard": "Kreditkarte", + "common_payment_type_CREDIT_CARD": "Kreditkarte", + "common_payment_type_debtAccount": "SEPA-Lastschrift", + "common_payment_type_DEBT_ACCOUNT": "SEPA-Lastschrift", + "common_payment_type_deferredPaymentAccount": "Stundungskonto", + "common_payment_type_DEFERRED_PAYMENT_ACCOUNT": "Stundungskonto", + "common_payment_type_deposit": "Einzahlung", + "common_payment_type_edinar": "e-DINAR", + "common_payment_type_fidelityPoints": "Meine Punkte", + "common_payment_type_FIDELITY_POINTS": "Meine Punkte", + "common_payment_type_free": "Kostenlos", + "common_payment_type_ideal": "iDEAL", + "common_payment_type_mandat": "Bareinzahlung", + "common_payment_type_multibanco": "Multibanco", + "common_payment_type_none": "Keiner", + "common_payment_type_ovhAccount": "Prepaid-Account", + "common_payment_type_OVH_ACCOUNT": "Prepaid-Account", + "common_payment_type_paymentMandate": "Zahlungsanweisung", + "common_payment_type_PAYMENT_MANDATE": "Zahlungsanweisung", + "common_payment_type_paypal": "PayPal", + "common_payment_type_payu": "PayU ", + "common_payment_type_platnosci": "Płatności", + "common_payment_type_refund": "Guthaben", + "common_payment_type_transfer": "Überweisung", + "common_payment_type_withdrawal": "Lastschrift", + "common_payment_type_bankAccount": "Lastschrift", + "common_payment_type_BANK_ACCOUNT": "Lastschrift", + "common_payment_type_digitalLaunchPad": "Digital Launch Pad Dienstleistung", + "common_payment_type_DIGITAL_LAUNCH_PAD": "Digital Launch Pad Dienstleistung", + "common_payment_type_unavailable": "Keine Informationen zur Zahlung verfügbar ", + "common_payment_type_0": "Alle", + "common_see_another_month": "Einen anderen Monat anzeigen", + "common_choose": "Auswählen", + "common_payment_type_creditCard_expiration_date": "Ablaufdatum:", + "common_time_period_in_years": "{{t0}} Jahre ", + "common_time_period_one_year": "1 Jahr", + "common_time_period_in_months": "{{t0}} Monat(e)", + "common_time_period_one_month": "1 Monat", + "pagination_page": "Seite {{ current }} / {{ last }}", + "pagination_display": "Anzeigen", + "pagination_display_all": "Alles", + "pagination_go": "Ok", + "history_title2": "Meine Rechnungen", + "history_table_head_date": "Ausstellungsdatum ", + "history_table_head_id": "Referenz", + "history_table_head_order_id": "Bestellnummer ", + "history_table_head_product": "Produkt", + "history_table_head_payment": "Zahlungsmittel", + "history_table_head_payment_select_filter": "Nach Zahlungsart filtern", + "history_table_head_total_with_VAT": "Betrag inkl. MwSt", + "history_table_head_total": "Betrag", + "history_table_head_balance_due": "Rechnungsbetrag ", + "history_table_head_due_date": "Fälligkeitsdatum ", + "history_table_head_actions": "Aktionen", + "history_table_actions_tooltip": "Mehr Details zu dieser Rechnung ", + "history_table_empty": "Sie haben keine Rechnungen für den ausgewählten Monat", + "history_table_information_not_available": "Information nicht verfügbar ", + "history_table_debt_due_immediately": "Sofort ", + "history_table_debt_paid": "Bezahlt", + "payments_error": "Es ist ein Fehler aufgetreten. Bitte entschuldigen Sie die entstandenen Unannehmlichkeiten. ", + "payments_title": "Zahlungsverfolgung", + "payments_description": "Die folgende Liste enthält alle Zahlungen mit ihrem Standardzahlungsmittel. Jede Zahlung kann eine oder mehrere Abrechnungen beinhalten.", + "payments_table_head_date": "Zahlungsdatum", + "payments_table_head_id": "Referenz", + "payments_table_head_type": "Zahlungsmittel", + "payments_table_head_amount": "Gesamtbetrag", + "payments_table_head_actions": "Aktionen", + "payments_table_actions_tooltip": "Mehr Informationen zur Zahlung", + "payments_table_type_not_available": "Information nicht verfügbar ", + "payments_table_empty": "Für den ausgewählten Zeitraum liegen keine Zahlungen vor.", + "payments_request_pending": "Es wird ein Bezahlvorgang durchgeführt. Für weitere Informationen klicken Sie hier.", + "payments_details_link": "Zahlungsdetails ansehen", + "payment_details_payment_id": "Referenz", + "payment_details_payment_date": "Datum", + "payment_details_payment_amount": "Gesamtbetrag", + "payment_details_table_header_id": "Rechnungsreferenz", + "payment_details_table_header_date": "Ausstellungsdatum ", + "payment_details_table_header_payment": "Betrag der Transaktion", + "payment_details_table_header_document": "Dokument ", + "payment_details_title": "Zahlungsdetails", + "payments_details_table_empty": "Keine Informationen verfügbar.", + "payment_details_return_to_payments": "Zurück zur vorherigen Seite ", + "orders_page_title": "Meine Bestellungen", + "orders_table_head_date": "Datum", + "orders_table_head_id": "Bestellnummer ", + "orders_table_head_status": "Status", + "orders_table_head_total_taxes_included": "Betrag inklusive Steuern", + "orders_table_head_total": "Betrag", + "orders_table_empty": "Sie haben keine Bestellungen.", + "orders_table_empty_with_filter": "Keine Ihrer Bestellungen erfüllt folgende Kriterien: ", + "orders_informations_error": "Es ist ein Fehler aufgetreten:", + "orders_order_status_cancelled": "Abgebrochen", + "orders_order_status_cancelling": "Wird storniert", + "orders_order_status_checking": "Validierung", + "orders_order_status_delivered": "Geliefert", + "orders_order_status_delivering": "Wird geliefert", + "orders_order_status_documents_requested": "Warten auf Dokumente", + "orders_order_status_not_paid": "Unbezahlt", + "orders_order_status_unknown": "Unbekannt", + "orders_order_bc_expired": "Bestellung abgelaufen ", + "orders_order_status_filter_progress": "Wird ausgeführt", + "orders_order_status_filter_all": "Alle ", + "orders_order_status_filter_terminated": "Beendet ", + "orders_order_status_filter_expired": "Abgelaufen ", + "orders_order_loading_error": "Fehler beim Abruf dieser Bestellung", + "orders_search_input_title": "Per ID nach meinen Bestellungen suchen.", + "orders_table_actions_tooltip": "Weitere Details zu dieser Bestellung.", + "orders_order_action_retract": "Die Bestellung stornieren", + "orders_retract_return_to_orders": "Zurück zu meinen Bestellungen", + "orders_retract_title": "Widerruf der Dienstleistung/en der Bestellung", + "orders_retract_confirmation": "Sind Sie sicher, dass Sie Ihre Bestellung {{t0}} stornieren möchten?", + "orders_retract_confirmation_text": "Ja, ich möchte diese Bestellung stornieren.", + "orders_retract_description1": "Sie haben das Recht, die Bestellung binnen 14 Tagen zu widerrufen. Bei Widerruf werden Ihnen innerhalb von 30 Tagen nach Widerrufsanfrage die anfänglich gezahlten Beträge abzüglich der Kosten der in Anspruch genommenen Tage der Dienstleistung pro rata temporis erstattet.", + "orders_retract_description2": "Achtung, der Widerruf über dieses Formular gilt für alle Produkte der Bestellung und wird umgehend durchgeführt.", + "orders_retract_alert": "Bei Bestätigung werden sämtliche Daten (inklusive deren Speicherungen und Backups) automatisch, umgehend und unwiderruflich gelöscht. Bevor Sie fortfahren und den Widerruf bestätigen, obliegt es allein Ihnen, die notwendigen Maßnahmen zur Sicherung Ihrer Daten sowie zur Wiederaufnahme Ihrer Aktivitäten zu ergreifen. OVH übernimmt in dieser Hinsicht keinerlei Haftung.", + "orders_retract_success": "Ihre Bestellung {{t0}} wurde storniert.", + "orders_retract_error": "Bei der Stornierung Ihrer Bestellung ist ein Fehler aufgetreten.", + "refunds_title2": "Meine Guthaben", + "refunds_table_head_date": "Datum", + "refunds_table_head_id": "Referenz", + "refunds_table_head_bill": "Gehört zur Rechnung", + "refunds_table_head_account": "Gutgeschrieben auf", + "refunds_table_head_total": "Betrag", + "refunds_table_head_total_with_VAT": "Betrag inkl. MwSt", + "refunds_table_download": "Herunterladen", + "refunds_table_empty": "Sie haben keine Guthaben für den ausgewählten Zeitraum", + "refunds_table_account_no_information": "Keine Informationen verfügbar", + "ovhAccount_partial_error": "Aufgrund eines Fehlers werden einige Bewegungen nicht angezeigt. Der Saldo ist davon jedoch nicht betroffen.", + "ovhAccount_title2": "Transaktionen auf meinem Prepaid-Account", + "ovhAccount_no_account": "Sie haben kein Prepeid-Account eingerichtet.", + "ovhAccount_balance": "Saldo am", + "ovhAccount_table_head_date": "Datum", + "ovhAccount_table_head_id": "Referenz", + "ovhAccount_table_head_product": "Produkt", + "ovhAccount_table_head_remaining": "Stand", + "ovhAccount_table_head_type": "Typ", + "ovhAccount_table_head_debit": "Soll", + "ovhAccount_table_head_credit": "Aufladung", + "ovhAccount_table_head_crediter": "Aufladen", + "ovhAccount_table_head_crediter_none": "Dieser Account kann nicht aufgeladen werden.", + "ovhAccount_table_head_download": "Herunterladen", + "ovhAccount_table_empty": "Für den ausgewählten Monat liegen keine Transaktionen auf Ihrem Prepaid-Account vor.", + "ovhAccount_table_error": "Es ist ein Fehler aufgetreten, die Informationen können nicht angezeigt werden", + "ovhAccount_retrieve_account": "Bankkonto auswählen:", + "ovhAccount_retrieve_amount": "Buchungsbetrag:", + "ovhAccount_retrieve_account_add": "Ein Bankkonto hinzufügen", + "ovhAccount_retrieve_amount_disponible": "Verfügbarer Betrag:", + "ovhAccount_retrieve_error": "Aufgrund eines Fehlers konnte die gewünschte Operation nicht ausgeführt werden.", + "ovhAccount_retrieve_explanation": "Sie können einen selbst gewählten Betrag von Ihrem OVH Kundenkonto auf ein Bankkonto überweisen. Bitte beachten Sie, dass hierfür nur Beträge aus Rückzahlungen und Erstattungen zur Verfügung stehen.", + "ovhAccount_retrieve_success": "Ihre Überweisungsanfrage wurde bearbeitet.", + "ovhAccount_retrieve_resume_1": "Bestätigen Sie die Überweisung von", + "ovhAccount_retrieve_resume_2": "von ihrem Prepaid-Account zu Ihrem Bankkonto", + "ovhAccount_retrieve_tips": "Klicken Sie auf \"Bezahlen\", um den Bestellschein zu öffnen. Ihr Browser muss Pop-ups erlauben.", + "ovhAccount_create_alert": "Alarm einrichten ", + "ovhAccount_create_alert_resume": "Sie werden per E-Mail benachrichtigt, wenn das Guthaben auf Ihrem Konto unter den festgelegten Wert fällt. ", + "ovhAccount_delete_alert": "Deaktivieren der Alarme zum Guthaben auf Ihrem Konto: ", + "ovhAccount_create_alert_amount": "Benachrichtigung bei: ", + "ovhAccount_create_alert_wizard_button": "Festsetzen ", + "ovhAccount_create_alert_success": "Ihr Alarm wurde gespeichert. ", + "ovhAccount_create_alert_error": "Ihr Alarm konnte aufgrund eines Problems nicht gespeichert werden. ", + "ovhAccount_create_alert_amount_resume": "Alarm bei: {{t0}} ", + "ovhAccount_no_alert": "Kein Alarm definiert ", + "ovhAccount_create_alert_input_error": "Nur ganze positive Zahlen zulässig. ", + "payment_mean_title": "Meine Zahlungsarten", + "payment_mean_back": "Zurück zu Meine Zahlungsarten", + "payment_mean_loading_error": "Beim Laden der Seite ist ein Fehler aufgetreten", + "payment_mean_no_register": "Sie haben keine Zahlungsart gespeichert.", + "payment_mean_add": "Hinzufügen", + "payment_mean_add_title": "Zahlungsart hinzufügen", + "payment_mean_action_unavailable_for_our_subsidiary": "Diese Aktion wird für Ihr Land nicht unterstützt.", + "payment_mean_default": "Standard", + "payment_mean_set_default": "Standardzahlungsmittel", + "payment_mean_set_default_after_validation": "Zahlungsart ab Validierung als Standard verwenden.", + "payment_mean_set_as_default": "Dieses Zahlungsmittel wird nach der Bestätigung als Standardzahlungsmittel ausgewählt.", + "payment_mean_contact_presentation_reuse_contact": "und einen vorhandenen Kontakt verwenden ", + "payment_mean_contact_presentation_create_contact": "und einen neuen Kontakt erstellen ", + "payment_mean_contact_presentation_billingContactId_title": "Kreditkartenadresse", + "payment_mean_contact_presentation_new_card_title": "Neue Karte hinzufügen", + "payment_mean_contact_presentation_update_title_billingContactId": "Kreditkartenadresse ändern", + "payment_mean_contact_presentation_update_label": "Ändern", + "payment_mean_contact_presentation_phone_label": "Tel.:", + "payment_mean_contact_presentation_email_label": "E-Mail:", + "payment_mean_contact_creation_main_title": "Kontakt erstellen ", + "payment_mean_contact_creation_mandatory_fields_rules_explained": "Standardmäßig werden nur die Pflichtfelder angezeigt (mit Sternchen gekennzeichnet). Klicken Sie auf den Button am Anfang eines Abschnitts, um alle vorhandenen Felder anzuzeigen. ", + "payment_mean_contact_creation_fieldset_GENERAL_INFORMATIONS": "Allgemeine Informationen", + "payment_mean_contact_creation_fieldset_LEGAL": "Ihre Kundendaten", + "payment_mean_contact_creation_fieldset_PROFILE": "Profil", + "payment_mean_contact_creation_fieldset_CONTACTS": "Kontakte", + "payment_mean_contact_creation_label_gender": "Anrede", + "payment_mean_contact_creation_label_firstName": "Vorname", + "payment_mean_contact_creation_label_lastName": "Nachname ", + "payment_mean_contact_creation_label_nationality": "Nationalität", + "payment_mean_contact_creation_label_country": "Land", + "payment_mean_contact_creation_label_address_country": "Land", + "payment_mean_contact_creation_label_address_province": "Provinz", + "payment_mean_contact_creation_label_address_state": "Status", + "payment_mean_contact_creation_label_address_area": "Region", + "payment_mean_contact_creation_label_legalform": "Rechtsstellung ", + "payment_mean_contact_creation_label_email_confirmation": "Bestätigung E-Mail", + "payment_mean_contact_creation_label_spareEmail": "Alternative E-Mail Adresse", + "payment_mean_contact_creation_label_email": "E-Mail", + "payment_mean_contact_creation_label_address_line1": "Adresse", + "payment_mean_contact_creation_label_address_line2": "Adresse (Zusatz 1)", + "payment_mean_contact_creation_label_address_line3": "Adresse (Zusatz 2)", + "payment_mean_contact_creation_label_address_otherDetails": "Adresse (andere)", + "payment_mean_contact_creation_label_address_zip": "Postleitzahl", + "payment_mean_contact_creation_label_address_city": "Stadt", + "payment_mean_contact_creation_label_birthDay": "Geburtsdatum", + "payment_mean_contact_creation_label_phone": "Telefon", + "payment_mean_contact_creation_label_fax": "Fax", + "payment_mean_contact_creation_label_language": "Sprache", + "payment_mean_contact_creation_label_organisation": "Organisation", + "payment_mean_contact_creation_label_organisationType": "Art der Organisation", + "payment_mean_contact_creation_label_organisationName": "Name der Organisation", + "payment_mean_contact_creation_label_vat": "USt-IdNr", + "payment_mean_contact_creation_label_birthCity": "Geburtsort", + "payment_mean_contact_creation_label_birthZip": "Postleitzahl des Geburtsorts", + "payment_mean_contact_creation_label_birthCountry": "Geburtsland", + "payment_mean_contact_creation_label_cellPhone": "Telefon (mobil)", + "payment_mean_contact_creation_label_nationalIdentificationNumber": "Steuernummer", + "payment_mean_contact_creation_label_companyNationalIdentificationNumber": "Steuernummer", + "payment_mean_contact_creation_label_associationNationalIdentificationNumber": "Nationale Identifikationsnummer", + "payment_mean_contact_creation_label_optional": "(Optional)", + "payment_mean_contact_creation_gender_male": "Männlich", + "payment_mean_contact_creation_gender_female": "Weiblich", + "payment_mean_contact_creation_country_AC": "Ascension Island", + "payment_mean_contact_creation_country_AD": "Andorra", + "payment_mean_contact_creation_country_AE": "Vereinigte Arabische Emirate", + "payment_mean_contact_creation_country_AF": "Afghanistan", + "payment_mean_contact_creation_country_AG": "Antigua und Barbuda", + "payment_mean_contact_creation_country_AI": "Anguilla", + "payment_mean_contact_creation_country_AL": "Albanien", + "payment_mean_contact_creation_country_AM": "Armenien", + "payment_mean_contact_creation_country_AO": "Angola", + "payment_mean_contact_creation_country_AQ": "Antarktis", + "payment_mean_contact_creation_country_AR": "Argentinien", + "payment_mean_contact_creation_country_AS": "Amerikanisch Samoa", + "payment_mean_contact_creation_country_AT": "Österreich", + "payment_mean_contact_creation_country_AU": "Australien", + "payment_mean_contact_creation_country_AW": "Aruba", + "payment_mean_contact_creation_country_AX": "Åland Islands", + "payment_mean_contact_creation_country_AZ": "Aserbaidschan", + "payment_mean_contact_creation_country_BA": "Bosnien und Herzegovina", + "payment_mean_contact_creation_country_BB": "Barbados", + "payment_mean_contact_creation_country_BD": "Bangladesch", + "payment_mean_contact_creation_country_BE": "Belgien", + "payment_mean_contact_creation_country_BF": "Burkina Faso", + "payment_mean_contact_creation_country_BG": "Bulgarien", + "payment_mean_contact_creation_country_BH": "Bahrain", + "payment_mean_contact_creation_country_BI": "Burundi", + "payment_mean_contact_creation_country_BJ": "Benin", + "payment_mean_contact_creation_country_BL": "Saint Barthélemy", + "payment_mean_contact_creation_country_BM": "Bermuda", + "payment_mean_contact_creation_country_BN": "Brunei Darussalam", + "payment_mean_contact_creation_country_BO": "Bolivien", + "payment_mean_contact_creation_country_BQ": "Bonaire, Saint Eustatius und Saba", + "payment_mean_contact_creation_country_BR": "Brasilien", + "payment_mean_contact_creation_country_BS": "Bahamas", + "payment_mean_contact_creation_country_BT": "Bhutan", + "payment_mean_contact_creation_country_BW": "Botswana", + "payment_mean_contact_creation_country_BY": "Weißrussland", + "payment_mean_contact_creation_country_BZ": "Belize", + "payment_mean_contact_creation_country_CA": "Kanada", + "payment_mean_contact_creation_country_CC": "Cocos (Keeling) Islands", + "payment_mean_contact_creation_country_CD": "Demokratische Republik Kongo", + "payment_mean_contact_creation_country_CF": "Zentralafrikanische Republik", + "payment_mean_contact_creation_country_CG": "Republik Kongo", + "payment_mean_contact_creation_country_CH": "Schweiz", + "payment_mean_contact_creation_country_CI": "Elfenbeinküste", + "payment_mean_contact_creation_country_CK": "Cook Islands", + "payment_mean_contact_creation_country_CL": "Chile", + "payment_mean_contact_creation_country_CM": "Kamerun", + "payment_mean_contact_creation_country_CN": "China", + "payment_mean_contact_creation_country_CO": "Kolumbien", + "payment_mean_contact_creation_country_CR": "Costa Rica", + "payment_mean_contact_creation_country_CU": "Kuba", + "payment_mean_contact_creation_country_CV": "Kap Verde", + "payment_mean_contact_creation_country_CW": "Curaçao", + "payment_mean_contact_creation_country_CX": "Christmas Island", + "payment_mean_contact_creation_country_CY": "Zypern", + "payment_mean_contact_creation_country_CZ": "Tschechische Republik", + "payment_mean_contact_creation_country_DE": "Deutschland", + "payment_mean_contact_creation_country_DG": "Diego Garcia", + "payment_mean_contact_creation_country_DJ": "Dschibuti", + "payment_mean_contact_creation_country_DK": "Dänemark", + "payment_mean_contact_creation_country_DM": "Dominica", + "payment_mean_contact_creation_country_DO": "Dominikanische Republik", + "payment_mean_contact_creation_country_DZ": "Algerien", + "payment_mean_contact_creation_country_EA": "Autonome Stadt Ceuta", + "payment_mean_contact_creation_country_EC": "Ecuador", + "payment_mean_contact_creation_country_EE": "Estland", + "payment_mean_contact_creation_country_EG": "Ägypten", + "payment_mean_contact_creation_country_EH": "Westsahara", + "payment_mean_contact_creation_country_ER": "Eritrea", + "payment_mean_contact_creation_country_ES": "Spanien", + "payment_mean_contact_creation_country_ET": "Äthiopien", + "payment_mean_contact_creation_country_FI": "Finnland", + "payment_mean_contact_creation_country_FJ": "Fidji", + "payment_mean_contact_creation_country_FK": "Falkland Inseln", + "payment_mean_contact_creation_country_FM": "Föderierte Staaten von Mikronesien", + "payment_mean_contact_creation_country_FO": "Faröer Inseln", + "payment_mean_contact_creation_country_FR": "Frankreich", + "payment_mean_contact_creation_country_GA": "Gabun", + "payment_mean_contact_creation_country_GB": "Vereinigtes Königreich", + "payment_mean_contact_creation_country_UK": "Vereinigtes Königreich", + "payment_mean_contact_creation_country_GD": "Grenada", + "payment_mean_contact_creation_country_GE": "Georgien", + "payment_mean_contact_creation_country_GF": "Französisch-Guayana", + "payment_mean_contact_creation_country_GG": "Guernsey", + "payment_mean_contact_creation_country_GH": "Ghana", + "payment_mean_contact_creation_country_GI": "Gibraltar", + "payment_mean_contact_creation_country_GL": "Grönland", + "payment_mean_contact_creation_country_GM": "Gambia", + "payment_mean_contact_creation_country_GN": "Guinea", + "payment_mean_contact_creation_country_GP": "Guadeloupe", + "payment_mean_contact_creation_country_GQ": "Äquatorialguinea", + "payment_mean_contact_creation_country_GR": "Griechenland", + "payment_mean_contact_creation_country_GS": "South Georgia and the South Sandwich Islands", + "payment_mean_contact_creation_country_GT": "Guatemala", + "payment_mean_contact_creation_country_GU": "Guam", + "payment_mean_contact_creation_country_GW": "Guinea-Bissau", + "payment_mean_contact_creation_country_GY": "Guyana", + "payment_mean_contact_creation_country_HK": "Hong Kong", + "payment_mean_contact_creation_country_HN": "Honduras", + "payment_mean_contact_creation_country_HR": "Kroatien", + "payment_mean_contact_creation_country_HT": "Haiti", + "payment_mean_contact_creation_country_HU": "Ungarn", + "payment_mean_contact_creation_country_IC": "Kanarische Inseln", + "payment_mean_contact_creation_country_ID": "Indonesien", + "payment_mean_contact_creation_country_IE": "Irland", + "payment_mean_contact_creation_country_IL": "Israel", + "payment_mean_contact_creation_country_IM": "Isle Of Man", + "payment_mean_contact_creation_country_IN": "Indien", + "payment_mean_contact_creation_country_IO": "Britisches Territorium im Indischen Ozean", + "payment_mean_contact_creation_country_IQ": "Irak", + "payment_mean_contact_creation_country_IR": "Islamische Republik Iran", + "payment_mean_contact_creation_country_IS": "Island", + "payment_mean_contact_creation_country_IT": "Italien", + "payment_mean_contact_creation_country_JE": "Jersey", + "payment_mean_contact_creation_country_JM": "Jamaika", + "payment_mean_contact_creation_country_JO": "Jordanien", + "payment_mean_contact_creation_country_JP": "Japan", + "payment_mean_contact_creation_country_KE": "Kenia", + "payment_mean_contact_creation_country_KG": "Kirgisistan", + "payment_mean_contact_creation_country_KH": "Kambodscha", + "payment_mean_contact_creation_country_KI": "Kiribati", + "payment_mean_contact_creation_country_KM": "Komoren", + "payment_mean_contact_creation_country_KN": "Saint Kitts And Nevis", + "payment_mean_contact_creation_country_KP": "Demokratische Volksrepublik Korea", + "payment_mean_contact_creation_country_KR": "Republik Korea", + "payment_mean_contact_creation_country_KW": "Kuwait", + "payment_mean_contact_creation_country_KY": "Cayman Islands", + "payment_mean_contact_creation_country_KZ": "Kasachstan", + "payment_mean_contact_creation_country_LA": "Demokratische Volksrepublik Laos", + "payment_mean_contact_creation_country_LB": "Libanon", + "payment_mean_contact_creation_country_LC": "Saint Lucia", + "payment_mean_contact_creation_country_LI": "Liechtenstein", + "payment_mean_contact_creation_country_LK": "Sri Lanka", + "payment_mean_contact_creation_country_LR": "Liberia", + "payment_mean_contact_creation_country_LS": "Lesotho", + "payment_mean_contact_creation_country_LT": "Litauen", + "payment_mean_contact_creation_country_LU": "Luxemburg", + "payment_mean_contact_creation_country_LV": "Lettland", + "payment_mean_contact_creation_country_LY": "Libyen", + "payment_mean_contact_creation_country_MA": "Marokko", + "payment_mean_contact_creation_country_MC": "Monaco", + "payment_mean_contact_creation_country_MD": "Moldavien", + "payment_mean_contact_creation_country_ME": "Montenegro", + "payment_mean_contact_creation_country_MF": "Saint Martin", + "payment_mean_contact_creation_country_MG": "Madagaskar", + "payment_mean_contact_creation_country_MH": "Marshall Islands", + "payment_mean_contact_creation_country_MK": "Republik Mazedonien", + "payment_mean_contact_creation_country_ML": "Mali", + "payment_mean_contact_creation_country_MM": "Myanmar", + "payment_mean_contact_creation_country_MN": "Mongolei", + "payment_mean_contact_creation_country_MO": "Macao", + "payment_mean_contact_creation_country_MP": "Nördliche Marianen", + "payment_mean_contact_creation_country_MQ": "Martinique", + "payment_mean_contact_creation_country_MR": "Mauretanien", + "payment_mean_contact_creation_country_MS": "Montserrat", + "payment_mean_contact_creation_country_MT": "Malta", + "payment_mean_contact_creation_country_MU": "Mauritius", + "payment_mean_contact_creation_country_MV": "Malediven", + "payment_mean_contact_creation_country_MW": "Malawi", + "payment_mean_contact_creation_country_MX": "Mexiko", + "payment_mean_contact_creation_country_MY": "Malaysia", + "payment_mean_contact_creation_country_MZ": "Mosambik", + "payment_mean_contact_creation_country_NA": "Namibia", + "payment_mean_contact_creation_country_NC": "Neukaledonien", + "payment_mean_contact_creation_country_NE": "Niger", + "payment_mean_contact_creation_country_NF": "Norfolkinsel", + "payment_mean_contact_creation_country_NG": "Nigeria", + "payment_mean_contact_creation_country_NI": "Nicaragua", + "payment_mean_contact_creation_country_NL": "Niederlande", + "payment_mean_contact_creation_country_NO": "Norwegen", + "payment_mean_contact_creation_country_NP": "Nepal", + "payment_mean_contact_creation_country_NR": "Nauru", + "payment_mean_contact_creation_country_NU": "Niue", + "payment_mean_contact_creation_country_NZ": "Neuseeland", + "payment_mean_contact_creation_country_OM": "Oman", + "payment_mean_contact_creation_country_PA": "Panama", + "payment_mean_contact_creation_country_PE": "Peru", + "payment_mean_contact_creation_country_PF": "Französisch-Polynesien", + "payment_mean_contact_creation_country_PG": "Papua-Neuguinea", + "payment_mean_contact_creation_country_PH": "Philippinen", + "payment_mean_contact_creation_country_PK": "Pakistan", + "payment_mean_contact_creation_country_PL": "Polen", + "payment_mean_contact_creation_country_PM": "Saint-Pierre und Miquelon", + "payment_mean_contact_creation_country_PN": "Pitcairn Islands", + "payment_mean_contact_creation_country_PR": "Puerto Rico", + "payment_mean_contact_creation_country_PS": "Palästinensische Autonomiegebiete", + "payment_mean_contact_creation_country_PT": "Portugal", + "payment_mean_contact_creation_country_PW": "Palau", + "payment_mean_contact_creation_country_PY": "Paraguay", + "payment_mean_contact_creation_country_QA": "Katar", + "payment_mean_contact_creation_country_RE": "La Réunion", + "payment_mean_contact_creation_country_RO": "Rumänien", + "payment_mean_contact_creation_country_RS": "Serbien", + "payment_mean_contact_creation_country_RU": "Russische Föderation", + "payment_mean_contact_creation_country_RW": "Ruanda", + "payment_mean_contact_creation_country_SA": "Saudi-Arabien", + "payment_mean_contact_creation_country_SB": "Salomoninseln", + "payment_mean_contact_creation_country_SC": "Seychellen", + "payment_mean_contact_creation_country_SD": "Sudan", + "payment_mean_contact_creation_country_SE": "Schweden", + "payment_mean_contact_creation_country_SG": "Singapur", + "payment_mean_contact_creation_country_SH": "St. Helena, Ascension und Tristan da Cunha", + "payment_mean_contact_creation_country_SI": "Slowenien", + "payment_mean_contact_creation_country_SJ": "Svalbard und Jan Mayen", + "payment_mean_contact_creation_country_SK": "Slowakei", + "payment_mean_contact_creation_country_SL": "Sierra Leone", + "payment_mean_contact_creation_country_SM": "San Marino", + "payment_mean_contact_creation_country_SN": "Senegal", + "payment_mean_contact_creation_country_SO": "Somalia", + "payment_mean_contact_creation_country_SR": "Suriname", + "payment_mean_contact_creation_country_SS": "Südsudan", + "payment_mean_contact_creation_country_ST": "São Tomé und Príncipe", + "payment_mean_contact_creation_country_SV": "El Salvador", + "payment_mean_contact_creation_country_SX": "Sint Maarten", + "payment_mean_contact_creation_country_SY": "Arabische Republik Syrien", + "payment_mean_contact_creation_country_SZ": "Swasiland", + "payment_mean_contact_creation_country_TA": "Tristan dã Cunha", + "payment_mean_contact_creation_country_TC": "Turks- und Caicosinseln", + "payment_mean_contact_creation_country_TD": "Tschad", + "payment_mean_contact_creation_country_TF": "French Southern Territories", + "payment_mean_contact_creation_country_TG": "Togo", + "payment_mean_contact_creation_country_TH": "Thailand", + "payment_mean_contact_creation_country_TJ": "Tadschikistan", + "payment_mean_contact_creation_country_TK": "Tokelau", + "payment_mean_contact_creation_country_TL": "Osttimor", + "payment_mean_contact_creation_country_TM": "Turkmenistan", + "payment_mean_contact_creation_country_TN": "Tunesien", + "payment_mean_contact_creation_country_TO": "Tonga", + "payment_mean_contact_creation_country_TR": "Türkei", + "payment_mean_contact_creation_country_TT": "Trinidad und Tobago", + "payment_mean_contact_creation_country_TV": "Tuvalu", + "payment_mean_contact_creation_country_TW": "Taiwan", + "payment_mean_contact_creation_country_TZ": "Vereinigte Republik Tansania", + "payment_mean_contact_creation_country_UA": "Ukraine", + "payment_mean_contact_creation_country_UG": "Uganda", + "payment_mean_contact_creation_country_UM": "United States Minor Outlying Islands", + "payment_mean_contact_creation_country_US": "USA", + "payment_mean_contact_creation_country_UY": "Uruguay", + "payment_mean_contact_creation_country_UZ": "Usbekistan", + "payment_mean_contact_creation_country_VA": "Staat Vatikanstadt", + "payment_mean_contact_creation_country_VC": "St. Vincent und die Grenadinen", + "payment_mean_contact_creation_country_VE": "Bolivarische Republik Venezuela", + "payment_mean_contact_creation_country_VG": "Virgin Islands (British)", + "payment_mean_contact_creation_country_VI": "Virgin Islands (US)", + "payment_mean_contact_creation_country_VN": "Vietnam", + "payment_mean_contact_creation_country_VU": "Vanuatu", + "payment_mean_contact_creation_country_WF": "Wallis und Futuna", + "payment_mean_contact_creation_country_WS": "Samoa", + "payment_mean_contact_creation_country_XK": "Kosovo", + "payment_mean_contact_creation_country_YE": "Jemen", + "payment_mean_contact_creation_country_YT": "Mayotte", + "payment_mean_contact_creation_country_ZA": "Südafrika", + "payment_mean_contact_creation_country_ZM": "Sambia", + "payment_mean_contact_creation_country_ZW": "Simbabwe", + "payment_mean_contact_creation_country_UNKNOWN": "Mein Land steht nicht auf der Liste", + "payment_mean_contact_creation_legalform_individual": "Individuell", + "payment_mean_contact_creation_legalform_association": "Verein", + "payment_mean_contact_creation_legalform_corporation": "Unternehmen", + "payment_mean_contact_creation_legalform_administration": "Verwaltung", + "payment_mean_contact_creation_legalform_personalcorporation": "Freier Mitarbeiter", + "payment_mean_contact_creation_legalform_other": "Andere", + "payment_mean_contact_creation_language_de_DE": "Deutsch", + "payment_mean_contact_creation_language_en_AU": "Englisch (Australien) ", + "payment_mean_contact_creation_language_en_CA": "Englisch (Kanada)", + "payment_mean_contact_creation_language_en_GB": "Englisch", + "payment_mean_contact_creation_language_en_US": "Englisch (USA) ", + "payment_mean_contact_creation_language_es_ES": "Spanisch", + "payment_mean_contact_creation_language_fr_CA": "Französisch (Kanada)", + "payment_mean_contact_creation_language_fr_FR": "Französisch", + "payment_mean_contact_creation_language_fr_MA": "Französisch (Marokko)", + "payment_mean_contact_creation_language_fr_SN": "Französisch (Senegal)", + "payment_mean_contact_creation_language_fr_TN": "Französisch (Tunesien)", + "payment_mean_contact_creation_language_pl_PL": "Polnisch", + "payment_mean_contact_creation_language_cs_CZ": "Tschechisch", + "payment_mean_contact_creation_language_fi_FI": "Finnisch", + "payment_mean_contact_creation_language_en_IE": "Irisch", + "payment_mean_contact_creation_language_it_IT": "Italienisch", + "payment_mean_contact_creation_language_lt_LT": "Litauisch", + "payment_mean_contact_creation_language_nl_NL": "Niederländisch", + "payment_mean_contact_creation_language_pt_PT": "Portugiesisch", + "payment_mean_contact_contact_creation_submit": "Bestätigen und speichern", + "payment_mean_contact_contact_creation_cancel": "Abbrechen", + "mean_manage_my_services": "Meine Dienste verwalten", + "mean_table_head_creation_date": "Erstellungsdatum", + "mean_table_head_description": "Beschreibung", + "mean_table_head_type": "Zahlungsart", + "mean_table_head_options": "Optionen", + "payment_mean_no_description": "Keine Beschreibung", + "payment_mean_description_error": "Bei der Änderung der Beschreibung ist ein Fehler aufgetreten:", + "payment_mean_default_mean_error": "Es ist ein Fehler aufgetreten. Bitte entschuldigen Sie die entstandenen Unannehmlichkeiten. ", + "add_mean_select_title_choose": "Treffen Sie Ihre Wahl", + "add_mean_select_title_no_choice": "Keine Auswahl möglich", + "add_mean_unable_to_get_payment_means": "Verfügbare Zahlungsarten können nicht abgerufen werden", + "mean_table_head_state": "Status", + "mean_table_head_actions": "Aktionen", + "mean_table_head_3d_secure": "3D Secure", + "mean_table_head_3d_secure_true": "Ja", + "mean_table_head_3d_secure_false": "Nein", + "mean_table_tooltip_more_actions": "Weitere Aktionen für dieses Zahlungsmittel", + "deleteMean_title": "Eine Zahlungsart löschen", + "paymentMean_delete_message_paypal": "Achtung, Sie sind im Begriff, die dem Paypal Account zugewiesene Zahlungsart endgültig zu löschen:", + "paymentMean_delete_message_bankAccount": "Achtung, Sie sind im Begriff, die dem Bankkonto zugewiesene Zahlungsart endgültig zu löschen:", + "paymentMean_delete_message_creditCard": "Achtung, Sie sind im Begriff, die der Kreditkarte zugewiesene Zahlungsart endgültig zu löschen:", + "paymentMean_label_creditcard_owner_name": "Name auf der Bankkarte", + "paymentMean_label_creditcard_number": "Nummer", + "paymentMean_label_creditcard_validation": "Validierung", + "paymentMean_label_creditcard_expiration": "Ablaufdatum", + "paymentMean_label_iban": "IBAN", + "paymentMean_label_bic": "BIC", + "paymentMean_label_addressNumber": "Nummer", + "paymentMean_label_addressStreetName": "Straße", + "paymentMean_label_addressPostalCode": "Postleitzahl", + "paymentMean_label_addressTown": "Stadt", + "paymentMean_label_ownerName": "Name und Vorname des Inhabers oder Name der Inhaber-Organisation", + "paymentMean_label_ownerAddress": "Adresse des Kontoinhabers", + "paymentMean_error_bic_bank": "Die Bankleitzahl ist ungültig.", + "paymentMean_error_bic_valid": "Die BIC ist ungültig.", + "paymentMean_error_required": "Pflichtangabe.", + "paymentMean_error_iban_base": "Die Basis der IBAN ist ungültig.", + "paymentMean_error_iban_country": "Das Land der IBAN ist ungültig.", + "paymentMean_error_iban_key": "Der Schlüssel der IBAN ist ungültig.", + "paymentMean_error_iban_valid": "Die IBAN ist ungültig.", + "paymentMean_error_minlength": "Es sind mindestens 5 Zeichen erforderlich.", + "paymentMean_error_addressPostalCode_required": "Pflichtangabe.", + "paymentMean_error_addressPostalCode_min": "Postleitzahl ist ungültig.", + "paymentMean_error_addressPostalCode_max": "Postleitzahl ist ungültig.", + "paymentMean_error_addressPostalCode_pattern": "Die Postleitzahl muss 5 Ziffern enthalten.", + "paymentMean_error_maxlength": "Der Text muss kürzer als 255 Zeichen sein.", + "paymentType_delete_error": "Fehler bei der Löschung der Zahlungsart", + "paymentType_modify_error": "Bei der Änderung des Zahlungsmittels ist ein Fehler aufgetreten", + "paymentType_delete_success": "Zahlungsart gelöscht", + "paymentMean_add_message_paypal": "Wenn Sie auf \"Hinzufügen\" klicken, können Sie sich in Ihren PayPal Account einloggen. Dort können Sie ein Abo einrichten, dass es OVH gestattet, den Betrag Ihrer zukünftigen Rechnungen von Ihrem Paypal Account einzuziehen.", + "paymentMean_add_message_creditCard": "Um die Registrierung Ihrer Karte zu überprüfen, werden wir versuchen, einen geringen Betrag vorzumerken.
Nach Bestätigung durch Ihre Bank wird der Betrag von 1 Euro nicht abgebucht.
Ihre Karte wird dann sofort als Zahlungsmittel freigeschaltet.", + "paymentMean_add_message_creditCard_CA": "OVH fordert die Einzugsermächtigung an, was als laufende Kontobewegung auf Ihrem Account angezeigt werden kann. OVH finalisiert den Einzug jedoch nicht, der Betrag wird also nicht abgebucht oder von Ihrer Bank bzw. Ihrem Zahlungsdienstleister erstattet.", + "paymentMean_add_message_bankAccount": "Wenn Sie auf \"Hinzufügen\" klicken, wird ein Dokument heruntergeladen.
Folgen Sie den Anweisungen in dem Dokument, um Ihre Zahlungsart zu validieren. Ihr Bankkonto wird innerhalb von 24 bis 48 Stunden nach Eingang Ihrer Einzugsermächtigung freigeschaltet. ", + "paymentType_status_valid": "Validiert", + "paymentType_status_expired": "Abgelaufen", + "paymentType_status_proposedByCustomer": "Warten auf Validierung", + "paymentType_status_tooManyFailures": "Ungültig (zu viele gescheiterte Validierungsversuche)", + "paymentType_status_broken": "Kaputt", + "paymentType_status_canceled": "Abgebrochen", + "paymentType_status_canceling": "Wird storniert", + "paymentType_status_canceledbycustomer": "Storniert vom Benutzer", + "paymentType_status_canceled_by_customer": "Storniert vom Benutzer", + "paymentType_status_created": "Warten auf Validierung", + "paymentType_status_error": "Fehler", + "paymentType_status_validforcredit": "Für Zahlungen validiert", + "paymentType_add_error": "Fehler beim Hinzufügen der Zahlungsart", + "paymentType_status_pendingValidation": "Validierung wird durchgeführt", + "paymentType_status_waiting_for_documents": "Warten auf Eingang", + "payment_mean_add_paypal": "Ein Paypal Abo starten", + "payement_mean_add_creditCard": "Einen Bestellschein erstellen", + "payment_mean_get_validation": "Jetzt SEPA-Einzugsermächtigung erteilen", + "payment_mean_return_by_mail_procedure": "Auf dem Postweg zurücksenden", + "paymentType_add_validation_description": "Bitte bestätigen Sie das Hinzufügen Ihres Zahlungsmittels.", + "paymentType_add_success_url": "Klicken Sie hier, um auf eine gesicherte Seite weitergeleitet zu werden und den Vorgang abzuschließen.", + "paymentType_bankAccount_add_success_with_download": "Das Bankkonto wurde hinzugefügt. Es wird aktiviert, sobald die Validierung durchgeführt wurde. Bitte gehen Sie wie in diesem Dokument beschrieben vor, um die Zahlungsart zu validieren. ", + "paymentType_bankAccount_pending_validation": "Sie haben ein Bankkonto in Ihrem Kundencenter hinzugefügt. Wir warten nun auf den Eingang Ihrer Einzugsermächtigung auf dem Postweg.", + "paymentType_bankAccount_processing_delay": "Ihr Bankkonto wird 24 bis 48 Stunden nach Eingang Ihrer Einzugsermächtigung freigeschaltet.", + "payment_mean_radio_select_default": "Diese automatische Zahlungsmethode als Standard auswählen.", + "payment_mean_select_default": "Als Standardzahlungsmittel festlegen.", + "payment_mean_delete_payment_mean": "Diese Zahlungsmethode löschen", + "payment_mean_description_add": "Beschreibung hinzufügen.", + "payment_mean_description_edit": "Beschreibung ändern.", + "payment_mean_description_input": "Beschreibung der Zahlungsmethode", + "payment_mean_description_save": "Beschreibung speichern", + "payment_mean_description_cancel": "Änderungen der Beschreibung verwerfen", + "ovhAccount_table_type_CANCEL_CREDIT": "Stornierung der Aufladung", + "ovhAccount_table_type_CANCEL_CREDIT_BILL": "Stornierung der Rechnung", + "ovhAccount_table_type_CANCEL_CREDIT_REFUND": "Stornierung der Gutschrift", + "ovhAccount_table_type_CANCEL_CREDIT_STATEMENT_INCOME": "Prepaid-Account löschen", + "ovhAccount_table_type_CANCEL_CREDIT_STATEMENT_OUTCOME": "Stornierung der Überweisung auf das Bankkonto", + "ovhAccount_table_type_CANCEL_CREDIT_DEPOSIT": "Anzahlung stornieren", + "ovhAccount_table_type_CANCEL_DEBIT": "Stornierung der Abbuchung", + "ovhAccount_table_type_CANCEL_DEBIT_BILL": "Stornierung der Rechnung", + "ovhAccount_table_type_CANCEL_DEBIT_REFUND": "Stornierung der Gutschrift", + "ovhAccount_table_type_CANCEL_DEBIT_STATEMENT_INCOME": "Prepaid-Account löschen", + "ovhAccount_table_type_CANCEL_DEBIT_STATEMENT_OUTCOME": "Stornierung der Überweisung auf das Bankkonto", + "ovhAccount_table_type_CANCEL_PRE_DEBIT": "Stornierung der Abbuchung", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_BILL": "Rechnung", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_REFUND": "Guthaben", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_STATEMENT_INCOME": "Prepaid-Account einrichten", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_STATEMENT_OUTCOME": "Überweisung auf Ihr Bankkonto", + "ovhAccount_table_type_CREDIT": "Aufladung", + "ovhAccount_table_type_CREDIT_BILL": "Rechnung", + "ovhAccount_table_type_CREDIT_DEPOSIT": "Anzahlung", + "ovhAccount_table_type_CREDIT_REFUND": "Guthaben", + "ovhAccount_table_type_CREDIT_STATEMENT_INCOME": "Prepaid-Account einrichten", + "ovhAccount_table_type_CREDIT_STATEMENT_OUTCOME": "Überweisung auf Ihr Bankkonto", + "ovhAccount_table_type_DEBIT": "Soll", + "ovhAccount_table_type_DEBIT_BILL": "Rechnung", + "ovhAccount_table_type_DEBIT_REFUND": "Guthaben", + "ovhAccount_table_type_DEBIT_STATEMENT_INCOME": "Prepaid-Account einrichten", + "ovhAccount_table_type_DEBIT_STATEMENT_OUTCOME": "Überweisung auf Ihr Bankkonto", + "ovhAccount_table_type_DEBIT_WITHDRAWAL": "Soll", + "ovhAccount_table_type_PRE_CREDIT": "Aufladung", + "ovhAccount_table_type_PRE_CREDIT_BILL": "Rechnung", + "ovhAccount_table_type_PRE_CREDIT_REFUND": "Guthaben", + "ovhAccount_table_type_PRE_CREDIT_STATEMENT_INCOME": "Prepaid-Account einrichten", + "ovhAccount_table_type_PRE_CREDIT_STATEMENT_OUTCOME": "Überweisung auf Ihr Bankkonto", + "ovhAccount_table_type_PRE_DEBIT": "Soll", + "ovhAccount_table_type_PRE_DEBIT_BILL": "Rechnung", + "ovhAccount_table_type_PRE_DEBIT_REFUND": "Guthaben", + "ovhAccount_table_type_PRE_DEBIT_STATEMENT_INCOME": "Prepaid-Account einrichten", + "ovhAccount_table_type_PRE_DEBIT_STATEMENT_OUTCOME": "Überweisung auf Ihr Bankkonto", + "ovhAccount_table_head_payment_type": "Zahlungsmittel", + "ovhAccount_table_type_payment_CASH": "Barzahlung", + "ovhAccount_table_type_payment_CHARGEBACK": "Stornierung der Zahlung", + "ovhAccount_table_type_payment_CHEQUE": "Scheck", + "ovhAccount_table_type_payment_CREDIT_CARD": "Kreditkarte", + "ovhAccount_table_type_payment_DEPOSIT": "Anzahlung", + "ovhAccount_table_type_payment_DEBT_ACCOUNT": "Konto im Soll", + "ovhAccount_table_type_payment_EDINAR": "e-DINAR", + "ovhAccount_table_type_payment_FIDELITY_POINTS": "Meine Punkte", + "ovhAccount_table_type_payment_FREE": "Kostenlos", + "ovhAccount_table_type_payment_IDEAL": "iDEAL", + "ovhAccount_table_type_payment_MANDAT": "Postanweisung", + "ovhAccount_table_type_payment_MULTIBANCO": "Multibanco", + "ovhAccount_table_type_payment_NONE": "Keiner", + "ovhAccount_table_type_payment_OVH_ACCOUNT": "Prepaid-Account", + "ovhAccount_table_type_payment_PAYMENT_MANDATE": "Postanweisung", + "ovhAccount_table_type_payment_PAYPAL": "PayPal", + "ovhAccount_table_type_payment_PLATNOSCI": "Płatności", + "ovhAccount_table_type_payment_REFUND": "Guthaben", + "ovhAccount_table_type_payment_TRANSFER": "Überweisung", + "ovhAccount_table_type_payment_WITHDRAWAL": "Lastschrift", + "ovhAccount_table_type_payment_CREDIT_ACCOUNT": "Guthabenkonto", + "ovhAccount_table_type_payment_DIGITAL_LAUNCH_PAD": "DLP Gutschein", + "ovhAccount_table_type_payment_INCUBATOR_ACCOUNT": "Incubator Account", + "ovhAccount_table_type_payment_PAYU": "PayU", + "ovhAccount_retrieve_title": "Überweisung auf ein Bankkonto", + "ovhAccount_renew_title": "Laden Sie Ihren Prepaid-Account auf.", + "ovhAccount_renew_step1_msg": "Sie können Ihren Account aufladen, um Ihre Rechnungen damit zu begleichen.", + "ovhAccount_renew_step1_erreurmin": "Der Betrag der Aufladung muss mindestens 10 {{t0}} sein und der Stand Ihres Accounts muss positiv sein.", + "ovhAccount_renew_step1_erreurformat": "Der angegebene Betrag ist nicht korrekt, bitte verwenden Sie ausschließlich Ziffern sowie Punkt oder Komma als Dezimaltrennzeichen.", + "ovhAccount_renew_step1_amount": "Betrag ({{t0}}):", + "ovhAccount_renew_step2_msg": "Zusammenfassung Ihrer Bestellung", + "ovhAccount_renew_step2_credit": "Betrag für die Aufladung:", + "ovhAccount_renew_step2_error": "Es ist ein Fehler aufgetreten. Bitte entschuldigen Sie die entstandenen Unannehmlichkeiten. ", + "ovhAccount_renew_step2_success": "Der Betrag (Bestellung Nr. {{t1}}) wird Ihrem Prepaid-Account nach Eingang der Zahlung gutgeschrieben.", + "ovhAccount_account_list_error": "Beim Abruf der Liste Ihrer Accounts ist ein Fehler aufgetreten", + "ovhAccount_account_list_title": "- Account", + "ovhAccount_account_list_empty": "Kein Account zum Anzeigen vorhanden", + "telconso_menu_this_month": "Laufender Monat", + "telconso_menu_last_month": "Vorherige Monate", + "telconso_search": "Eine Leitung suchen", + "telconso_table_empty": "Keine anzuzeigenden Elemente vorhanden", + "telconso_table_line_empty": "Keine anzuzeigende Leitung vorhanden", + "telconso_title_current_month": "Mein Telefonie-Verbrauch vom {{t0}} bis zum {{t1}}", + "telconso_consumption": "Verbrauch", + "telconso_plan_to": "Abo für {{t0}}", + "telconso_allowed_outplan": "Überschreitung des Abos erlaubt", + "telconso_service_name_consumption": "Verbrauch", + "telconso_nb_lines": "Anzahl Leitungen:", + "telconso_nb_groups": "Anzahl Gruppen:", + "telconso_callout": "{{t0}}% getätigte Anrufe", + "telconso_callin": "{{t0}}% empfangene Anrufe", + "telconso_faxout": "{{t0}}% versandte Faxe", + "telconso_faxin": "{{t0}}% empfangene Faxe", + "telconso_to_fixe": "Zu Festnetznummern", + "telconso_to_mobiles": "Zu Mobilnummern", + "telconso_to_special": "Zu Sondernummern", + "telconso_send_fax": "Fax-Versand", + "telconso_fax": "Fax", + "telconso_calls": "Anzahl Anrufe", + "telconso_faxs": "Anzahl Faxe", + "telconso_anonymous": "Anonym", + "telconso_in": "Empfangen", + "telconso_out": "Gesendet", + "telconso_com_time": "Gesprächsdauer", + "telconso_call_count": "Anzahl", + "telconso_line": "Zeile", + "telconso_lines": "Leitungen", + "telconso_price": "Preis", + "telconso_outplan": "Außerhalb des Abos (ohne MwSt)", + "telconso_group_outplan": "Außerhalb des Abos", + "telconso_group": "Gruppe", + "telconso_all_groups": "Alle Gruppen", + "telconso_select_group": "Wählen Sie eine Gruppe aus, um mehr Informationen zu erhalten", + "telconso_calls_details": "Anrufdetails", + "telconso_fax_details": "Faxdetails", + "telconso_line_myline": "Meine Leitung {{t0}}", + "telconso_line_include": "Im Abo enthaltener Verbrauch", + "telconso_line_outplan": "Nicht im Abo enthaltener Verbrauch", + "telconso_next_billing": "Datum der nächsten Rechnung:", + "tel_conso_conso_date": "Datum", + "tel_conso_conso_num_emit": "Anrufende Nummer", + "tel_conso_conso_num_recv": "Angerufene Nummer", + "tel_conso_conso_tranfert": "Weitergeleitet zu", + "tel_conso_conso_time": "Dauer", + "tel_conso_conso_include": "Inklusive", + "tel_conso_conso_outplan": "Außerhalb des Abos (ohne MwSt)", + "tel_conso_conso_included": "Inklusive", + "tel_conso_conso_notincluded": "Nicht inklusive", + "tel_conso_calls": "Anrufe", + "tel_conso_tabs_inc": "Empfangen", + "tel_conso_tabs_out": "Gesendet", + "tel_conso_tabs_trs": "Druchgestellt", + "tel_conso_tabs_incfix": "Vom Festnetz aus", + "tel_conso_tabs_incmob": "Vom Mobilnetz aus", + "tel_conso_tabs_incspe": "Von Sondernummern aus", + "tel_conso_tabs_outfix": "Zu Festnetznummern", + "tel_conso_tabs_outmob": "Zu Mobilnummern", + "tel_conso_tabs_outspe": "Zu Sondernummern", + "tel_conso_tabs_trsfix": "Zu Festnetznummern", + "tel_conso_tabs_trsmob": "Zu Mobilnummern", + "tel_conso_tabs_trsspe": "Zu Sondernummern", + "tel_conso_tabs_sent": "Versandt", + "tel_conso_tabs_received": "Empfangen", + "tel_conso_error": "Beim Laden der Informationen ist ein Fehler aufgetreten", + "tel_conso_h": "Std", + "tel_conso_min": "Min", + "tel_conso_s": "Sek", + "tel_lastconso_title": "Meine Verbrauchserfassung der letzten Monate", + "tel_lastconso_month": "Monat", + "tel_lastconso_priceplan": "Gesamtbetrag", + "tel_lastconso_outplan": "Außerhalb des Abos", + "tel_lastconso_sheet": "Verbrauchserfassung", + "tel_lastconso_sheet_down": "Herunterladen", + "tel_lastconso_sheet_progress": "Wird ausgeführt", + "tel_lastconso_month_date_display": "MM JJJJ", + "fidelity_title": "Meine Punkte", + "fidelity_get_accounts_error": "Beim Laden der Informationen ist ein Fehler aufgetreten", + "fidelity_header_date": "Datum", + "fidelity_header_order": "Transaktion", + "fidelity_header_operation": "Operation", + "fidelity_header_credit": "Aufladung", + "fidelity_header_debit": "Soll", + "fidelity_header_balance": "Stand", + "fidelity_points": "Punkt(e)", + "fidelity_creditOrder_title": "Account aufladen", + "fidelity_creditOrder_step1_msg": "Sie können Ihren Account mit Guthaben versehen, um für Ihre Käufe zu bezahlen oder Ihre Dienstleistungen „manuell“ zu verlängern. (1 Punkt = 0,01 {{t0}} zzgl. MwSt.)", + "fidelity_creditOrder_step1_amount": "Betrag (in Punkten)", + "fidelity_creditOrder_step1_erreurformat": "Der angegebene Betrag ist nicht korrekt, bitte verwenden Sie nur Ziffern.", + "fidelity_creditOrder_step1_erreurmin": "Der Betrag für die Aufladung muss mindestens {{t0}} Punkte sein.", + "fidelity_creditOrder_step1_erreurmax": "Der maximale Betrag für die Aufladung ist {{t0}} Punkte.", + "fidelity_creditOrder_step2_msg": "Zusammenfassung Ihrer Bestellung", + "fidelity_creditOrder_step2_credit": "Betrag der Aufladung:", + "fidelity_creditOrder_step2_error": "Beim Laden der Informationen ist ein Fehler aufgetreten", + "fidelity_creditOrder_step2_success": "Der Betrag (Bestellung Nr. {{t1}}) wird Ihrem Prepaid-Account nach Eingang der Zahlung gutgeschrieben.", + "fidelity_no_item": "Keine Elemente zum Anzeigen vorhanden.", + "fidelity_balance_info": "Stand am {{t0}}: {{t1}} Punkt(e)", + "fidelity_no_account": "Sie haben keinen Treue-Account", + "sla_table_head_date": "Datum", + "sla_table_head_description": "Beschreibung", + "sla_table_head_refund": "SLA-Gutschrift", + "sla_table_apply": "Anwenden", + "sla_informations_error": "Beim Abruf der Daten ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut.", + "sla_apply_error": "Bei der Anfrage für die SLA-Gutschrift ist ein Fehler aufgetreten:", + "sla_apply_success": "Die Anfrage für die SLA-Gutschrift wurde erfolgreich durchgeführt, diese wird in einigen Stunden aktiv.", + "sla_apply_no_data": "Sie haben keinen Anspruch auf eine SLA-Gutschrift.", + "sla_table_head_service_name": "Name der Dienstleistung", + "sla_table_head_service_description": "Beschreibung der Dienstleistung", + "sla_table_head_service_sla_plan": "Vertragliche SLA", + "sla_table_head_service_sla_application": "Gewährte Gutschrift", + "sla_table_services_empty": "Keine Dienstleistungen", + "sla_informations": "Hier sehen Sie die Liste der für Ihre Dienstleistungen verfügbaren Gutschriften. Um diese in Anspruch zu nehmen, klicken Sie jeweils auf den \"Anwenden\" Button.", + "sla_informations_end": "Sie haben bis zum {{t0}} Uhr Zeit, um Ihre Entschädigungsanfrage durchzuführen und die im Rahmen unserer SLA gewährten Gutschriften zu erhalten.", + "sla_informations_applied": "Ihre Anfrage ist eingegangen und wird so schnell wie möglich bearbeitet.", + "sla_informations_applied_all": "Ihre Anfragen sind eingegangen und werden so schnell wie möglich bearbeitet.", + "sla_informations_status_created": "Erstellt", + "sla_informations_status_notApplicable": "Nicht anwendbar", + "sla_informations_status_completed": "Validiert", + "sla_informations_status_requested": "In Bearbeitung ", + "voucher_table_head_id": "ID", + "voucher_table_head_balance": "Stand", + "voucher_table_head_voucher_open_date": "Eröffnungsdatum", + "voucher_table_head_voucher_last_update": "Letztes Update", + "voucher_table_empty": "Keine Gutscheine", + "voucher_informations_error": "Es ist ein Fehler aufgetreten:", + "vouchers_title": "Meine Gutscheine", + "vouchers_movements_title": "Transaktionen auf dem Gutschein {{t0}} ", + "voucher_movements_table_head_id": "ID", + "voucher_movements_table_head_description": "Beschreibung", + "voucher_movements_table_head_date": "Datum", + "voucher_movements_table_head_amount": "Betrag", + "voucher_movements_table_head_previous_balance": "Vorheriger Stand", + "voucher_movements_table_head_balance": "Stand", + "voucher_movements_table_head_operation": "Operation", + "voucher_movements_table_head_order": "Bestellung", + "voucher_movements_table_empty": "Keine Bewegungen", + "voucher_movements_operation_type_cancel-credit": "Aufladung abgebrochen", + "voucher_movements_operation_type_cancel-debit": "Einzug abgebrochen", + "voucher_movements_operation_type_cancel-pre-debit": "Abbruch vor Einzug", + "voucher_movements_operation_type_credit": "Aufladung", + "voucher_movements_operation_type_debit": "Soll", + "voucher_movements_operation_type_pre-credit": "Vor Aufladung", + "voucher_movements_operation_type_pre-debit": "Vor Einzug", + "statements_account_automatic_payment_inactive": "Die Verlängerung Ihrer Services per Lastschriftverfahren ist nicht möglich. ", + "statements_account_no_default_payment_mean": "Sie haben kein Standard-Zahlungsmittel ausgewählt. ", + "statements_account_invalid_default_payment_mean": "Ihr Standard-Zahlungsmittel ist nicht mehr gültig. ", + "statements_account_manage_my_payment_means": "Meine Zahlungsmittel verwalten", + "statements_account_pay_debt_button": "Mein Konto sofort ausgleichen ", + "statements_table_caption": "Bestellungen auf Ihren Konten ", + "statements_table_header_order": "Bestellung", + "statements_table_header_date": "Datum", + "statements_table_header_due_date": "Fälligkeitsdatum", + "statements_table_no_due_date": "Sofort ", + "statements_table_header_amount": "Betrag", + "statements_table_header_balance": "Fälliger Betrag ", + "statements_table_header_details": "Details", + "statements_table_no_detail": "Keine Daten verfügbar.", + "statements_table_invoice_link": "Die Rechnung {{t0}} in einem neuen Fenster öffnen. ", + "statements_table_order_link": "Die Bestellung {{t0}} in einem neuen Fenster öffnen. ", + "statements_table_detail_label": "Details dieser Rechnung einsehen. ", + "statements_table_detail_link": "Details für den Sollbetrag {{t0}} einsehen. ", + "statements_table_pay_debt_button": "Mein Konto sofort ausgleichen ", + "statements_summary_error": "Beim Abruf Ihrer Kontobilanz ist ein Fehler aufgetreten. ", + "statements_detail_error": "Beim Abruf Ihrer Kontodetails ist ein Fehler aufgetreten. ", + "statements_single_debt_error": "Beim Abruf der Details der Zeile {{t0}} ist ein Fehler aufgetreten. ", + "statements_payment_mean_error": "Beim Abruf Ihrer Zahlungsmittel ist ein Fehler aufgetreten ", + "statements_details_summary_title": "Bestellübersicht ", + "statements_details_operations_title": "Transaktionshistorie ", + "statements_details_page_loader": "Informationen werden geladen ... ", + "statements_details_page_operations": "Beim Abruf Ihrer Transaktionshistorie ist ein Fehler aufgetreten. ", + "statements_details_return_to_statements": "Zurück zur vorherigen Seite ", + "statements_details_table_caption": "Liste der Transaktionen auf der Rechnung ", + "statements_details_table_header_date": "Datum", + "statements_details_table_header_operation": "Operation", + "statements_details_table_header_status": "Status", + "statements_details_table_header_amount": "Betrag", + "statements_details_table_header_document": "Dokument ", + "statements_details_table_order_link": "Die zu dieser Transaktion gehörende Bestellung in einem neuen Fenster öffnen. ", + "statements_details_table_invoice_html_link": "Rechnung im html-Format abrufen (neues Fenster). ", + "statements_details_table_invoice_pdf_link": "Rechnung im PDF-Format abrufen (neues Fenster). ", + "statements_operation_status_done": "Fertiggestellt ", + "statements_operation_status_cancelled": "Abgebrochen", + "statements_operation_status_failed": "Abgebrochen ", + "statements_operation_status_todo": "Warten auf Zahlung ", + "statements_operation_status_pending": "In Bearbeitung ", + "statements_operation_status_paid": "Bezahlt", + "statements_operation_description_order": "Auftragserstellung ", + "statements_operation_description_cancel": "Transaktion abbrechen ", + "statements_operation_description_creditcard_manual": "Manuelle Zahlung per Kreditkarte ", + "statements_operation_description_creditcard_automatic": "Automatische Abbuchung von einer Kreditkarte ", + "statements_operation_description_refund_creditcard": "Erstattung auf eine Kreditkarte ", + "statements_operation_description_unpaid_creditcard": "Abbuchung abgelehnt (Kreditkarte) ", + "statements_operation_description_paypal_manual": "Manuelle Zahlung via PayPal ", + "statements_operation_description_paypal_automatic": "Automatische Abbuchung von einem PayPal Konto ", + "statements_operation_description_refund_paypal": "Erstattung auf ein PayPal Konto ", + "statements_operation_description_unpaid_paypal": "Abbuchung abgelehnt (PayPal) ", + "statements_operation_description_sepa_automatic": "Lastschrift von einem Bankkonto ", + "statements_operation_description_refund_sepa": "Erstattung auf ein Bankkonto ", + "statements_operation_description_unpaid_sepa": "Lastschrift abgelehnt (Bankkonto) ", + "statements_operation_description_credit_account_automatic": "Automatische Abbuchung von einem OVH Prepaid-Account ", + "statements_operation_description_refund_credit_account": "Erstattung auf einen OVH Prepaid-Account", + "statements_operation_description_unpaid_credit_account": "Zahlung per OVH Prepaid-Account abbrechen ", + "statements_operation_description_check_manual": "Bezahlung per Scheck ", + "statements_operation_description_refund_check": "Erstattung einer Überweisung ", + "statements_operation_description_unpaid_check": "Scheck abgelehnt ", + "statements_operation_description_transfer_manual": "Zahlung per Überweisung ", + "statements_operation_description_unpaid_transfer": "Überweisung abgelehnt ", + "statements_operation_description_warrant_manual": "Zahlung per Postanweisung ", + "statements_operation_description_refund_warrant": "Erstattung einer Postanweisung ", + "statements_operation_description_unpaid_warrant": "Postanweisung abgelehnt ", + "statements_operation_description_refund": "Rückerstattung", + "statements_operation_description_refund_unknown": "Rückerstattung", + "billing_date_range_choose_custom_date": "Zeitraum festlegen", + "billing_date_range_text": "Vom {{t0}} bis zum {{t1}}", + "billing_price_ttc_label": "{{price}} inkl. MwSt.?", + "billing_guides_header": "Anleitungen", + "billing_guides_header_manage_payment_methods_guides": "Meine Zahlungsmittel verwalten", + "billing_guides_header_managing_orders_guides": "Meine Bestellungen bei OVHcloud verwalten", + "billing_guides_header_purchase_order_guides": "Begriff der Bestellnummer oder „Purchase Order“ (PO)", + "billing_guides_header_managing_bills_guides": "Meine Rechnungen von OVHcloud verwalten", + "billing_guides_header_automatic_renewal_guides": "Die Verlängerung meiner Dienste verwalten", + "fidelity_creditOrder_submit_error": "Beim Gutschreiben Ihrer Punkte ist ein Fehler aufgetreten.", + "fidelity_creditOrder_submit_success": "Ihr Guthaben in Höhe von {{t0}} Punkten wurde generiert. Sie können im Tab Meine Bestellungen mit Ihrer Bestellung fortfahren." +} diff --git a/packages/manager/modules/new-billing/src/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/translations/Messages_en_GB.json new file mode 100644 index 000000000000..2ba9784d7735 --- /dev/null +++ b/packages/manager/modules/new-billing/src/translations/Messages_en_GB.json @@ -0,0 +1,920 @@ +{ + "billingError": "An has error occurred while loading the information", + "title_from": "from", + "title_to": "to", + "period_tooltip_from": "Select a start date", + "period_tooltip_to": "Select an end date", + "table_download_html": "See HTML version", + "table_download_pdf": "See PDF version", + "table_download_html_order": "View order in HTML format", + "table_download_pdf_order": "View order in PDF format", + "table_download_html_invoice": "View invoice in HTML format", + "table_download_pdf_invoice": "View invoice in PDF format", + "table_download_pdf_beta": "See PDF version (Beta)", + "todo": "Coming soon", + "wizard_order": "Order", + "wizard_cancel": "Cancel", + "wizard_confirm": "Confirm", + "wizard_pay": "Pay", + "wizard_renew": "Renew", + "wizard_next": "Next", + "wizard_previous": "Previous", + "common_order_ascending": "sort in ascending order ", + "common_order_descending": "sort in descending order ", + "common_payment_type_cash": "Cash", + "common_payment_type_chargeback": "Payment declined", + "common_payment_type_cheque": "Cheque", + "common_payment_type_creditCard": "Credit card", + "common_payment_type_CREDIT_CARD": "Credit card", + "common_payment_type_debtAccount": "SEPA direct debit ", + "common_payment_type_DEBT_ACCOUNT": "SEPA direct debit ", + "common_payment_type_deferredPaymentAccount": "Deferred payment account", + "common_payment_type_DEFERRED_PAYMENT_ACCOUNT": "Deferred payment account", + "common_payment_type_deposit": "Deposit", + "common_payment_type_edinar": "e-DINAR", + "common_payment_type_fidelityPoints": "My points", + "common_payment_type_FIDELITY_POINTS": "My points", + "common_payment_type_free": "Free", + "common_payment_type_ideal": "iDEAL", + "common_payment_type_mandat": "Postal order", + "common_payment_type_multibanco": "Multibanco", + "common_payment_type_none": "None", + "common_payment_type_ovhAccount": "Prepaid account", + "common_payment_type_OVH_ACCOUNT": "Prepaid account", + "common_payment_type_paymentMandate": "Payment order", + "common_payment_type_PAYMENT_MANDATE": "Payment order", + "common_payment_type_paypal": "Paypal", + "common_payment_type_payu": "PayU", + "common_payment_type_platnosci": "Płatności", + "common_payment_type_refund": "Credit note", + "common_payment_type_transfer": "Transfer", + "common_payment_type_withdrawal": "Recurring payment", + "common_payment_type_bankAccount": "Bank account", + "common_payment_type_BANK_ACCOUNT": "Bank account", + "common_payment_type_digitalLaunchPad": "Digital launchpad", + "common_payment_type_DIGITAL_LAUNCH_PAD": "Digital launchpad", + "common_payment_type_unavailable": "Payment details not available ", + "common_payment_type_0": "All", + "common_see_another_month": "See another month", + "common_choose": "Choose", + "common_payment_type_creditCard_expiration_date": "Expiry date:", + "common_time_period_in_years": "{{t0}} years", + "common_time_period_one_year": "1 year", + "common_time_period_in_months": "{{t0}} months", + "common_time_period_one_month": "1 month", + "pagination_page": "Page {{ current }} / {{ last }}", + "pagination_display": "Display", + "pagination_display_all": "All", + "pagination_go": "OK", + "history_title2": "My bills", + "history_table_head_date": "Issue date ", + "history_table_head_id": "Reference", + "history_table_head_order_id": "Order number ", + "history_table_head_product": "Product", + "history_table_head_payment": "Payment method", + "history_table_head_payment_select_filter": "Filter by payment method ", + "history_table_head_total_with_VAT": "Amount incl. VAT", + "history_table_head_total": "Amount", + "history_table_head_balance_due": "Outstanding balance", + "history_table_head_due_date": "Date due", + "history_table_head_actions": "Actions", + "history_table_actions_tooltip": "More details of this bill ", + "history_table_empty": "You have no invoices for the month selected", + "history_table_information_not_available": "Information not available ", + "history_table_debt_due_immediately": "Immediate", + "history_table_debt_paid": "Paid", + "payments_error": "An error occurred. We apologise for any inconvenience caused.", + "payments_title": "Payment tracking", + "payments_description": "The following list shows payments that were made with your default payment method. Each of these payments can include one or several bills. ", + "payments_table_head_date": "Payment date", + "payments_table_head_id": "Reference", + "payments_table_head_type": "Payment method", + "payments_table_head_amount": "Total sum", + "payments_table_head_actions": "Actions", + "payments_table_actions_tooltip": "More information on this payment", + "payments_table_type_not_available": "Information not available ", + "payments_table_empty": "You have no payment for the selected period.", + "payments_request_pending": "A bill payment is being processed. Click on this link to find out more.", + "payments_details_link": "See payment details", + "payment_details_payment_id": "Reference", + "payment_details_payment_date": "Date", + "payment_details_payment_amount": "Total sum", + "payment_details_table_header_id": "Invoice reference ", + "payment_details_table_header_date": "Issue date ", + "payment_details_table_header_payment": "Transaction amount", + "payment_details_table_header_document": "Document", + "payment_details_title": "Payment details", + "payments_details_table_empty": "No details available.", + "payment_details_return_to_payments": "Back to previous page", + "orders_page_title": "My orders ", + "orders_table_head_date": "Date", + "orders_table_head_id": "Order number ", + "orders_table_head_status": "Status", + "orders_table_head_total_taxes_included": "Amount with VAT", + "orders_table_head_total": "Amount", + "orders_table_empty": "You do not have any orders ", + "orders_table_empty_with_filter": "There is no order matching this criteria: ", + "orders_informations_error": "An error has occurred:", + "orders_order_status_cancelled": "Cancelled", + "orders_order_status_cancelling": "Cancelling ", + "orders_order_status_checking": "Validation", + "orders_order_status_delivered": "Complete ", + "orders_order_status_delivering": "Being processed ", + "orders_order_status_documents_requested": "Documents pending ", + "orders_order_status_not_paid": "Unpaid ", + "orders_order_status_unknown": "Unknown", + "orders_order_bc_expired": "Order expired ", + "orders_order_status_filter_progress": "In progress", + "orders_order_status_filter_all": "All ", + "orders_order_status_filter_terminated": "Completed ", + "orders_order_status_filter_expired": "Expired ", + "orders_order_loading_error": "An error occurred while retrieving this order", + "orders_search_input_title": "Search for my orders by ID. ", + "orders_table_actions_tooltip": "More details about this order", + "orders_order_action_retract": "Cancel the order", + "orders_retract_return_to_orders": "Back to my orders", + "orders_retract_title": "Withdrawal of the service(s) from the order", + "orders_retract_confirmation": "Do you really want to cancel order {{t0}}?", + "orders_retract_confirmation_text": "Yes, I want to cancel that order.", + "orders_retract_description1": "You have a right of withdrawal for a period of 14 days, starting on the date of the order. In the event of withdrawal, you will receive a refund - within 30 days from the withdrawal - for the money originally paid, minus the days of service usage on a prorate basis. ", + "orders_retract_description2": "Warning: withdrawal done through this form is valid for all products associated with this order. Withdrawal is effective immediately.", + "orders_retract_alert": "Confirmation will result in the automatic and irreversible deletion of all data associated with this order (including backups). Before you continue and confirm your withdrawal, it is your responsibility to take all necessary measures for the safekeeping of your data and the continuity of your activities. OVH assumes no responsibility in this regard.", + "orders_retract_success": "Order {{t0}} has been cancelled.", + "orders_retract_error": "An error has occurred during the cancellation of your order.", + "refunds_title2": "My credits", + "refunds_table_head_date": "Date", + "refunds_table_head_id": "Reference", + "refunds_table_head_bill": "Associated invoice", + "refunds_table_head_account": "Credited to", + "refunds_table_head_total": "Amount", + "refunds_table_head_total_with_VAT": "Amount incl. VAT", + "refunds_table_download": "Download", + "refunds_table_empty": "You don't have any credits for the period selected.", + "refunds_table_account_no_information": "No information available", + "ovhAccount_partial_error": "Some movements are not displayed due to an error, but the balance will not be affected.", + "ovhAccount_title2": "Transactions on my prepaid account", + "ovhAccount_no_account": "You don't have a prepaid account", + "ovhAccount_balance": "Balance:", + "ovhAccount_table_head_date": "Date", + "ovhAccount_table_head_id": "Reference", + "ovhAccount_table_head_product": "Product", + "ovhAccount_table_head_remaining": "Balance", + "ovhAccount_table_head_type": "Type", + "ovhAccount_table_head_debit": "Debit", + "ovhAccount_table_head_credit": "Credit", + "ovhAccount_table_head_crediter": "Credit", + "ovhAccount_table_head_crediter_none": "This account cannot be credited.", + "ovhAccount_table_head_download": "Download", + "ovhAccount_table_empty": "You don't have any activity on your prepaid account for the selected month", + "ovhAccount_table_error": "An error occurred. Unable to display the information.", + "ovhAccount_retrieve_account": "Select your bank account: ", + "ovhAccount_retrieve_amount": "Amount to transfer: ", + "ovhAccount_retrieve_account_add": "Add a bank account ", + "ovhAccount_retrieve_amount_disponible": "Amount available:", + "ovhAccount_retrieve_error": "Due to an error the operation has not been carried out. ", + "ovhAccount_retrieve_explanation": "You can begin transferring a chosen amount from your OVH customer account to a bank account. Please note that you can only transfer amounts from returns and refunds (e.g. commercial gestures) from OVH.", + "ovhAccount_retrieve_success": "Your transfer request has been processed.", + "ovhAccount_retrieve_resume_1": "Confirm the transfer of an amount of", + "ovhAccount_retrieve_resume_2": "from your prepaid account to your bank account ", + "ovhAccount_retrieve_tips": "Click \"Settle\" to open the purchase order. Your browser must allow pop-ups. ", + "ovhAccount_create_alert": "Set up an alert", + "ovhAccount_create_alert_resume": "You will be alerted by e-mail when your account balance falls below the alert threshold.", + "ovhAccount_delete_alert": "Disable balance alerts on your account:", + "ovhAccount_create_alert_amount": "Alert threshold amount ", + "ovhAccount_create_alert_wizard_button": "Set threshold ", + "ovhAccount_create_alert_success": "Your alert has been registered. ", + "ovhAccount_create_alert_error": "Your alert could not be registered due to a problem.", + "ovhAccount_create_alert_amount_resume": "Alert threshold set: {{t0}}", + "ovhAccount_no_alert": "No alert set ", + "ovhAccount_create_alert_input_error": "Please enter a positive whole number ", + "payment_mean_title": "My payment methods", + "payment_mean_back": "Back to my payment methods", + "payment_mean_loading_error": "An error has occurred loading the page", + "payment_mean_no_register": "You don't have any saved payment methods.", + "payment_mean_add": "Add", + "payment_mean_add_title": "Add a payment method ", + "payment_mean_action_unavailable_for_our_subsidiary": "This action is not supported for your country.", + "payment_mean_default": "By default", + "payment_mean_set_default": "Automatic payment method", + "payment_mean_set_default_after_validation": "I want to choose this as my default payment method as soon as it is validated.", + "payment_mean_set_as_default": "This payment method will be selected by default once you confirm.", + "payment_mean_contact_presentation_reuse_contact": "by using an already existing contact", + "payment_mean_contact_presentation_create_contact": "by creating a new contact", + "payment_mean_contact_presentation_billingContactId_title": "Credit card address", + "payment_mean_contact_presentation_new_card_title": "Enter a new card", + "payment_mean_contact_presentation_update_title_billingContactId": "Change credit card address", + "payment_mean_contact_presentation_update_label": "Edit", + "payment_mean_contact_presentation_phone_label": "Tel:", + "payment_mean_contact_presentation_email_label": "Email:", + "payment_mean_contact_creation_main_title": "Creating a contact", + "payment_mean_contact_creation_mandatory_fields_rules_explained": "By default, only mandatory fields (marked with an asterisk) are displayed. Use the button placed at the beginning of each section to display all fields you can fill in.", + "payment_mean_contact_creation_fieldset_GENERAL_INFORMATIONS": "General information", + "payment_mean_contact_creation_fieldset_LEGAL": "Legal data ", + "payment_mean_contact_creation_fieldset_PROFILE": "Profile", + "payment_mean_contact_creation_fieldset_CONTACTS": "Contacts", + "payment_mean_contact_creation_label_gender": "Title", + "payment_mean_contact_creation_label_firstName": "First name", + "payment_mean_contact_creation_label_lastName": "Surname", + "payment_mean_contact_creation_label_nationality": "Nationality", + "payment_mean_contact_creation_label_country": "Country", + "payment_mean_contact_creation_label_address_country": "Country", + "payment_mean_contact_creation_label_address_province": "Province", + "payment_mean_contact_creation_label_address_state": "Status", + "payment_mean_contact_creation_label_address_area": "Region", + "payment_mean_contact_creation_label_legalform": "Legal status", + "payment_mean_contact_creation_label_email_confirmation": "Confirmation email", + "payment_mean_contact_creation_label_spareEmail": "Backup email address", + "payment_mean_contact_creation_label_email": "Email address", + "payment_mean_contact_creation_label_address_line1": "Address", + "payment_mean_contact_creation_label_address_line2": "Address (line 1)", + "payment_mean_contact_creation_label_address_line3": "Address (line 2)", + "payment_mean_contact_creation_label_address_otherDetails": "Adress (other)", + "payment_mean_contact_creation_label_address_zip": "Postcode", + "payment_mean_contact_creation_label_address_city": "City", + "payment_mean_contact_creation_label_birthDay": "Anniversary date ", + "payment_mean_contact_creation_label_phone": "Phone", + "payment_mean_contact_creation_label_fax": "Fax", + "payment_mean_contact_creation_label_language": "Language", + "payment_mean_contact_creation_label_organisation": "Organisation", + "payment_mean_contact_creation_label_organisationType": "Type of organisation ", + "payment_mean_contact_creation_label_organisationName": "Name of organisation", + "payment_mean_contact_creation_label_vat": "Intra-Community VAT number", + "payment_mean_contact_creation_label_birthCity": "Place of birth", + "payment_mean_contact_creation_label_birthZip": "Postcode of place of birth", + "payment_mean_contact_creation_label_birthCountry": "Country of birth", + "payment_mean_contact_creation_label_cellPhone": "Phone ", + "payment_mean_contact_creation_label_nationalIdentificationNumber": "Tax code", + "payment_mean_contact_creation_label_companyNationalIdentificationNumber": "Tax code", + "payment_mean_contact_creation_label_associationNationalIdentificationNumber": "National identification number", + "payment_mean_contact_creation_label_optional": "(Optional)", + "payment_mean_contact_creation_gender_male": "Male ", + "payment_mean_contact_creation_gender_female": "Female ", + "payment_mean_contact_creation_country_AC": "Ascension Island", + "payment_mean_contact_creation_country_AD": "Andorra", + "payment_mean_contact_creation_country_AE": "United Arab Emirates", + "payment_mean_contact_creation_country_AF": "Afghanistan", + "payment_mean_contact_creation_country_AG": "Antigua and Barbuda", + "payment_mean_contact_creation_country_AI": "Anguilla", + "payment_mean_contact_creation_country_AL": "Albania", + "payment_mean_contact_creation_country_AM": "Armenia", + "payment_mean_contact_creation_country_AO": "Angola", + "payment_mean_contact_creation_country_AQ": "Antarctica", + "payment_mean_contact_creation_country_AR": "Argentina", + "payment_mean_contact_creation_country_AS": "American Samoa", + "payment_mean_contact_creation_country_AT": "Austria", + "payment_mean_contact_creation_country_AU": "Australia", + "payment_mean_contact_creation_country_AW": "Aruba", + "payment_mean_contact_creation_country_AX": "Åland Islands", + "payment_mean_contact_creation_country_AZ": "Azerbaijan", + "payment_mean_contact_creation_country_BA": "Bosnia and Herzegovina", + "payment_mean_contact_creation_country_BB": "Barbados", + "payment_mean_contact_creation_country_BD": "Bangladesh", + "payment_mean_contact_creation_country_BE": "Belgium", + "payment_mean_contact_creation_country_BF": "Burkina Faso", + "payment_mean_contact_creation_country_BG": "Bulgaria", + "payment_mean_contact_creation_country_BH": "Bahrain", + "payment_mean_contact_creation_country_BI": "Burundi", + "payment_mean_contact_creation_country_BJ": "Benin", + "payment_mean_contact_creation_country_BL": "Saint Barts", + "payment_mean_contact_creation_country_BM": "Bermuda", + "payment_mean_contact_creation_country_BN": "Brunei Darussalam", + "payment_mean_contact_creation_country_BO": "Plurinational State Of Bolivia", + "payment_mean_contact_creation_country_BQ": "Bonaire, Sint Eustatius and Saba", + "payment_mean_contact_creation_country_BR": "Brazil", + "payment_mean_contact_creation_country_BS": "Bahamas", + "payment_mean_contact_creation_country_BT": "Bhutan", + "payment_mean_contact_creation_country_BW": "Botswana", + "payment_mean_contact_creation_country_BY": "Belarus", + "payment_mean_contact_creation_country_BZ": "Belize", + "payment_mean_contact_creation_country_CA": "Canada", + "payment_mean_contact_creation_country_CC": "Cocos (Keeling) Islands", + "payment_mean_contact_creation_country_CD": "Democratic Republic of Congo", + "payment_mean_contact_creation_country_CF": "Central African Republic", + "payment_mean_contact_creation_country_CG": "Republic of Congo", + "payment_mean_contact_creation_country_CH": "Switzerland", + "payment_mean_contact_creation_country_CI": "The Ivory Coast", + "payment_mean_contact_creation_country_CK": "The Cook Islands", + "payment_mean_contact_creation_country_CL": "Chile", + "payment_mean_contact_creation_country_CM": "Cameroon", + "payment_mean_contact_creation_country_CN": "China", + "payment_mean_contact_creation_country_CO": "Colombia", + "payment_mean_contact_creation_country_CR": "Costa Rica", + "payment_mean_contact_creation_country_CU": "Cuba", + "payment_mean_contact_creation_country_CV": "Cape Verde", + "payment_mean_contact_creation_country_CW": "Curaçao", + "payment_mean_contact_creation_country_CX": "Christmas Island", + "payment_mean_contact_creation_country_CY": "Cyprus", + "payment_mean_contact_creation_country_CZ": "Czech Republic", + "payment_mean_contact_creation_country_DE": "Germany", + "payment_mean_contact_creation_country_DG": "Diego Garcia", + "payment_mean_contact_creation_country_DJ": "Djibouti", + "payment_mean_contact_creation_country_DK": "Denmark", + "payment_mean_contact_creation_country_DM": "Dominica", + "payment_mean_contact_creation_country_DO": "Dominican Republic", + "payment_mean_contact_creation_country_DZ": "Algeria", + "payment_mean_contact_creation_country_EA": "Autonomous City of Ceuta", + "payment_mean_contact_creation_country_EC": "Ecuador", + "payment_mean_contact_creation_country_EE": "Estonia", + "payment_mean_contact_creation_country_EG": "Egypt", + "payment_mean_contact_creation_country_EH": "Western Sahara", + "payment_mean_contact_creation_country_ER": "Eritrea", + "payment_mean_contact_creation_country_ES": "Spain", + "payment_mean_contact_creation_country_ET": "Ethiopia", + "payment_mean_contact_creation_country_FI": "Finland", + "payment_mean_contact_creation_country_FJ": "Fiji", + "payment_mean_contact_creation_country_FK": "Falkland Islands", + "payment_mean_contact_creation_country_FM": "Federated States of Micronesia", + "payment_mean_contact_creation_country_FO": "Faroe Islands", + "payment_mean_contact_creation_country_FR": "France", + "payment_mean_contact_creation_country_GA": "Gabon", + "payment_mean_contact_creation_country_GB": "United Kingdom", + "payment_mean_contact_creation_country_UK": "United Kingdom", + "payment_mean_contact_creation_country_GD": "Grenada", + "payment_mean_contact_creation_country_GE": "Georgia", + "payment_mean_contact_creation_country_GF": "French Guiana", + "payment_mean_contact_creation_country_GG": "Guernsey", + "payment_mean_contact_creation_country_GH": "Ghana", + "payment_mean_contact_creation_country_GI": "Gibraltar", + "payment_mean_contact_creation_country_GL": "Greenland", + "payment_mean_contact_creation_country_GM": "Gambia", + "payment_mean_contact_creation_country_GN": "Guinea", + "payment_mean_contact_creation_country_GP": "Guadeloupe", + "payment_mean_contact_creation_country_GQ": "Equatorial Guinea", + "payment_mean_contact_creation_country_GR": "Greece", + "payment_mean_contact_creation_country_GS": "South Georgia and the South Sandwich Islands", + "payment_mean_contact_creation_country_GT": "Guatemala", + "payment_mean_contact_creation_country_GU": "Guam", + "payment_mean_contact_creation_country_GW": "Guinea-Bissau", + "payment_mean_contact_creation_country_GY": "Guyana", + "payment_mean_contact_creation_country_HK": "Hong Kong", + "payment_mean_contact_creation_country_HN": "Honduras", + "payment_mean_contact_creation_country_HR": "Croatia", + "payment_mean_contact_creation_country_HT": "Haiti", + "payment_mean_contact_creation_country_HU": "Hungary", + "payment_mean_contact_creation_country_IC": "Canary Islands", + "payment_mean_contact_creation_country_ID": "Indonesia", + "payment_mean_contact_creation_country_IE": "Ireland", + "payment_mean_contact_creation_country_IL": "Israel", + "payment_mean_contact_creation_country_IM": "Isle of Man", + "payment_mean_contact_creation_country_IN": "India", + "payment_mean_contact_creation_country_IO": "British Indian Ocean Territory", + "payment_mean_contact_creation_country_IQ": "Iraq", + "payment_mean_contact_creation_country_IR": "Islamic Republic of Iran", + "payment_mean_contact_creation_country_IS": "Iceland", + "payment_mean_contact_creation_country_IT": "Italy", + "payment_mean_contact_creation_country_JE": "Jersey", + "payment_mean_contact_creation_country_JM": "Jamaica", + "payment_mean_contact_creation_country_JO": "Jordan", + "payment_mean_contact_creation_country_JP": "Japan", + "payment_mean_contact_creation_country_KE": "Kenya", + "payment_mean_contact_creation_country_KG": "Kyrgyzstan", + "payment_mean_contact_creation_country_KH": "Cambodia", + "payment_mean_contact_creation_country_KI": "Kiribati", + "payment_mean_contact_creation_country_KM": "Comoros", + "payment_mean_contact_creation_country_KN": "Saint Kitts and Nevis", + "payment_mean_contact_creation_country_KP": "Democratic People's Republic of Korea", + "payment_mean_contact_creation_country_KR": "Republic of Korea", + "payment_mean_contact_creation_country_KW": "Kuwait", + "payment_mean_contact_creation_country_KY": "Cayman Islands", + "payment_mean_contact_creation_country_KZ": "Kazakhstan", + "payment_mean_contact_creation_country_LA": "Lao People's Democratic Republic", + "payment_mean_contact_creation_country_LB": "Lebanon", + "payment_mean_contact_creation_country_LC": "Saint Lucia", + "payment_mean_contact_creation_country_LI": "Liechtenstein", + "payment_mean_contact_creation_country_LK": "Sri Lanka", + "payment_mean_contact_creation_country_LR": "Liberia", + "payment_mean_contact_creation_country_LS": "Lesotho", + "payment_mean_contact_creation_country_LT": "Lithuania", + "payment_mean_contact_creation_country_LU": "Luxembourg", + "payment_mean_contact_creation_country_LV": "Latvia", + "payment_mean_contact_creation_country_LY": "Libya", + "payment_mean_contact_creation_country_MA": "Morocco", + "payment_mean_contact_creation_country_MC": "Monaco", + "payment_mean_contact_creation_country_MD": "Moldova", + "payment_mean_contact_creation_country_ME": "Montenegro", + "payment_mean_contact_creation_country_MF": "Saint Martin", + "payment_mean_contact_creation_country_MG": "Madagascar", + "payment_mean_contact_creation_country_MH": "Marshall Islands", + "payment_mean_contact_creation_country_MK": "The Former Yugoslav Republic of Macedonia", + "payment_mean_contact_creation_country_ML": "Mali", + "payment_mean_contact_creation_country_MM": "Myanmar", + "payment_mean_contact_creation_country_MN": "Mongolia", + "payment_mean_contact_creation_country_MO": "Macau", + "payment_mean_contact_creation_country_MP": "Northern Mariana Islands", + "payment_mean_contact_creation_country_MQ": "Martinique", + "payment_mean_contact_creation_country_MR": "Mauritania", + "payment_mean_contact_creation_country_MS": "Montserrat", + "payment_mean_contact_creation_country_MT": "Malta", + "payment_mean_contact_creation_country_MU": "Mauritius", + "payment_mean_contact_creation_country_MV": "Maldives", + "payment_mean_contact_creation_country_MW": "Malawi", + "payment_mean_contact_creation_country_MX": "Mexico", + "payment_mean_contact_creation_country_MY": "Malaysia", + "payment_mean_contact_creation_country_MZ": "Mozambique", + "payment_mean_contact_creation_country_NA": "Namibia", + "payment_mean_contact_creation_country_NC": "New Caledonia", + "payment_mean_contact_creation_country_NE": "Niger", + "payment_mean_contact_creation_country_NF": "Norfolk Island", + "payment_mean_contact_creation_country_NG": "Nigeria", + "payment_mean_contact_creation_country_NI": "Nicaragua", + "payment_mean_contact_creation_country_NL": "Netherlands", + "payment_mean_contact_creation_country_NO": "Norway", + "payment_mean_contact_creation_country_NP": "Nepal", + "payment_mean_contact_creation_country_NR": "Nauru", + "payment_mean_contact_creation_country_NU": "Niue", + "payment_mean_contact_creation_country_NZ": "New Zealand", + "payment_mean_contact_creation_country_OM": "Oman", + "payment_mean_contact_creation_country_PA": "Panama", + "payment_mean_contact_creation_country_PE": "Peru", + "payment_mean_contact_creation_country_PF": "French Polynesia", + "payment_mean_contact_creation_country_PG": "Papua New Guinea", + "payment_mean_contact_creation_country_PH": "Philippines", + "payment_mean_contact_creation_country_PK": "Pakistan", + "payment_mean_contact_creation_country_PL": "Poland", + "payment_mean_contact_creation_country_PM": "Saint Pierre and Miquelon", + "payment_mean_contact_creation_country_PN": "Pitcairn Islands", + "payment_mean_contact_creation_country_PR": "Puerto Rico", + "payment_mean_contact_creation_country_PS": "Palestinian Territory, Occupied", + "payment_mean_contact_creation_country_PT": "Portugal", + "payment_mean_contact_creation_country_PW": "Palau", + "payment_mean_contact_creation_country_PY": "Paraguay", + "payment_mean_contact_creation_country_QA": "Qatar", + "payment_mean_contact_creation_country_RE": "Réunion Island", + "payment_mean_contact_creation_country_RO": "Romania", + "payment_mean_contact_creation_country_RS": "Serbia", + "payment_mean_contact_creation_country_RU": "Russian Federation", + "payment_mean_contact_creation_country_RW": "Rwanda", + "payment_mean_contact_creation_country_SA": "Saudi Arabia", + "payment_mean_contact_creation_country_SB": "Solomon Islands", + "payment_mean_contact_creation_country_SC": "Seychelles", + "payment_mean_contact_creation_country_SD": "Sudan", + "payment_mean_contact_creation_country_SE": "Sweden", + "payment_mean_contact_creation_country_SG": "Singapore", + "payment_mean_contact_creation_country_SH": "Saint Helena, Ascension and Tristan da Cunha", + "payment_mean_contact_creation_country_SI": "Slovenia", + "payment_mean_contact_creation_country_SJ": "Svalbard and Jan Mayen", + "payment_mean_contact_creation_country_SK": "Slovakia", + "payment_mean_contact_creation_country_SL": "Sierra Leone", + "payment_mean_contact_creation_country_SM": "San Marino", + "payment_mean_contact_creation_country_SN": "Senegal", + "payment_mean_contact_creation_country_SO": "Somalia", + "payment_mean_contact_creation_country_SR": "Suriname", + "payment_mean_contact_creation_country_SS": "South Sudan", + "payment_mean_contact_creation_country_ST": "São Tomé and Príncipe", + "payment_mean_contact_creation_country_SV": "El Salvador", + "payment_mean_contact_creation_country_SX": "Sint Maarten", + "payment_mean_contact_creation_country_SY": "Syrian Arab Republic", + "payment_mean_contact_creation_country_SZ": "Swaziland", + "payment_mean_contact_creation_country_TA": "Tristan dã Cunha", + "payment_mean_contact_creation_country_TC": "Turks and Caicos Islands", + "payment_mean_contact_creation_country_TD": "Chad", + "payment_mean_contact_creation_country_TF": "French Southern Territories", + "payment_mean_contact_creation_country_TG": "Togo", + "payment_mean_contact_creation_country_TH": "Thailand", + "payment_mean_contact_creation_country_TJ": "Tajikistan", + "payment_mean_contact_creation_country_TK": "Tokelau", + "payment_mean_contact_creation_country_TL": "East Timor", + "payment_mean_contact_creation_country_TM": "Turkmenistan", + "payment_mean_contact_creation_country_TN": "Tunisia", + "payment_mean_contact_creation_country_TO": "Tonga", + "payment_mean_contact_creation_country_TR": "Turkey", + "payment_mean_contact_creation_country_TT": "Trinidad and Tobago", + "payment_mean_contact_creation_country_TV": "Tuvalu", + "payment_mean_contact_creation_country_TW": "Taiwan, Province of China", + "payment_mean_contact_creation_country_TZ": "United Republic of Tanzania", + "payment_mean_contact_creation_country_UA": "Ukraine", + "payment_mean_contact_creation_country_UG": "Uganda", + "payment_mean_contact_creation_country_UM": "United States Minor Outlying Islands", + "payment_mean_contact_creation_country_US": "United States", + "payment_mean_contact_creation_country_UY": "Uruguay", + "payment_mean_contact_creation_country_UZ": "Uzbekistan", + "payment_mean_contact_creation_country_VA": "Vatican City State", + "payment_mean_contact_creation_country_VC": "Saint Vincent and the Grenadines", + "payment_mean_contact_creation_country_VE": "Bolivarian Republic of Venezuela", + "payment_mean_contact_creation_country_VG": "Virgin Islands (British)", + "payment_mean_contact_creation_country_VI": "Virgin Islands (US)", + "payment_mean_contact_creation_country_VN": "Vietnam", + "payment_mean_contact_creation_country_VU": "Vanuatu", + "payment_mean_contact_creation_country_WF": "Wallis and Futuna", + "payment_mean_contact_creation_country_WS": "Samoa", + "payment_mean_contact_creation_country_XK": "Kosovo", + "payment_mean_contact_creation_country_YE": "Yemen", + "payment_mean_contact_creation_country_YT": "Mayotte", + "payment_mean_contact_creation_country_ZA": "South Africa", + "payment_mean_contact_creation_country_ZM": "Zambia", + "payment_mean_contact_creation_country_ZW": "Zimbabwe", + "payment_mean_contact_creation_country_UNKNOWN": "My country is not on this list", + "payment_mean_contact_creation_legalform_individual": "Individual", + "payment_mean_contact_creation_legalform_association": "Association", + "payment_mean_contact_creation_legalform_corporation": "Company", + "payment_mean_contact_creation_legalform_administration": "Administration", + "payment_mean_contact_creation_legalform_personalcorporation": "Independent worker", + "payment_mean_contact_creation_legalform_other": "Other", + "payment_mean_contact_creation_language_de_DE": "German", + "payment_mean_contact_creation_language_en_AU": "English ", + "payment_mean_contact_creation_language_en_CA": "English (Canadian) ", + "payment_mean_contact_creation_language_en_GB": "English", + "payment_mean_contact_creation_language_en_US": "English (United States)", + "payment_mean_contact_creation_language_es_ES": "Spanish", + "payment_mean_contact_creation_language_fr_CA": "French (Canadian) ", + "payment_mean_contact_creation_language_fr_FR": "French", + "payment_mean_contact_creation_language_fr_MA": "French (Morocco)", + "payment_mean_contact_creation_language_fr_SN": "French (Senegal)", + "payment_mean_contact_creation_language_fr_TN": "French (Tunisia)", + "payment_mean_contact_creation_language_pl_PL": "Polish", + "payment_mean_contact_creation_language_cs_CZ": "Czech", + "payment_mean_contact_creation_language_fi_FI": "Finnish", + "payment_mean_contact_creation_language_en_IE": "Irish", + "payment_mean_contact_creation_language_it_IT": "Italian", + "payment_mean_contact_creation_language_lt_LT": "Lithuanian", + "payment_mean_contact_creation_language_nl_NL": "Dutch", + "payment_mean_contact_creation_language_pt_PT": "Portuguese", + "payment_mean_contact_contact_creation_submit": "Confirm and save", + "payment_mean_contact_contact_creation_cancel": "Cancel", + "mean_manage_my_services": "Manage my services ", + "mean_table_head_creation_date": "Creation date", + "mean_table_head_description": "Description", + "mean_table_head_type": "Type of payment", + "mean_table_head_options": "Options", + "payment_mean_no_description": "No description", + "payment_mean_description_error": "An error occured when modifying the description:", + "payment_mean_default_mean_error": "An error occurred. We apologise for any inconvenience caused.", + "add_mean_select_title_choose": "Choose ", + "add_mean_select_title_no_choice": "No other choice possible", + "add_mean_unable_to_get_payment_means": "Unable to retrieve the available payment methods", + "mean_table_head_state": "Status", + "mean_table_head_actions": "Actions", + "mean_table_head_3d_secure": "3D Secure", + "mean_table_head_3d_secure_true": "Yes", + "mean_table_head_3d_secure_false": "No", + "mean_table_tooltip_more_actions": "More actions for this payment method", + "deleteMean_title": "Deleting a payment method", + "paymentMean_delete_message_paypal": "Warning: you are about to permanently delete the payment method linked to the PayPal account:", + "paymentMean_delete_message_bankAccount": "Warning: you are about to permanently delete the payment method linked to the bank account:", + "paymentMean_delete_message_creditCard": "Warning: you are about to permanently delete the payment method linked to card number:", + "paymentMean_label_creditcard_owner_name": "Name on bank card", + "paymentMean_label_creditcard_number": "Number", + "paymentMean_label_creditcard_validation": "Validation", + "paymentMean_label_creditcard_expiration": "Expiry", + "paymentMean_label_iban": "IBAN", + "paymentMean_label_bic": "BIC", + "paymentMean_label_addressNumber": "Number", + "paymentMean_label_addressStreetName": "Pathname", + "paymentMean_label_addressPostalCode": "Postcode", + "paymentMean_label_addressTown": "City", + "paymentMean_label_ownerName": "Surname and first name of owner or organisation owner", + "paymentMean_label_ownerAddress": "Address of account owner", + "paymentMean_error_bic_bank": "The bank code is incorrect.", + "paymentMean_error_bic_valid": "The sort code is incorrect.", + "paymentMean_error_required": "This field is required", + "paymentMean_error_iban_base": "The base of the IBAN is incorrect.", + "paymentMean_error_iban_country": "The country of the IBAN is incorrect.", + "paymentMean_error_iban_key": "The key of the IBAN is incorrect.", + "paymentMean_error_iban_valid": "The IBAN is incorrect.", + "paymentMean_error_minlength": "There must be at least 5 characters.", + "paymentMean_error_addressPostalCode_required": "This field is required", + "paymentMean_error_addressPostalCode_min": "Postcode invalid.", + "paymentMean_error_addressPostalCode_max": "Postcode invalid.", + "paymentMean_error_addressPostalCode_pattern": "Postcode must be composed of 5 characters", + "paymentMean_error_maxlength": "The text must be fewer than 255 characters.", + "paymentType_delete_error": "Error on deleting the payment method", + "paymentType_modify_error": "An error has occurred modifying the payment method", + "paymentType_delete_success": "Payment method deleted", + "paymentMean_add_message_paypal": "By clicking on the \"Add\" button, you can log in to your PayPal account and allow OVH to debit your PayPal account when you receive your next bills.", + "paymentMean_add_message_creditCard": "To check that your card is registered, we will try to take a payment.
Please note that we will not withdraw any money, once we receive confirmation from your bank.
Your bank card will be enabled immediately.", + "paymentMean_add_message_creditCard_CA": "When OVH requests debit authorisation it may appear that there has been a change in your account balance. However in reality OVH will not debit your account and nothing will appear on your bank statement. ", + "paymentMean_add_message_bankAccount": "When you click on the \"Add\" button, a document will be downloaded.
Please follow the procedure as described in the document to validate the payment method. Your bank account will be approved within 24 to 48 hours, from the time that the direct debit authorisation has been received. ", + "paymentType_status_valid": "Confirmed", + "paymentType_status_expired": "Expired", + "paymentType_status_proposedByCustomer": "Pending confirmation ", + "paymentType_status_tooManyFailures": "Invalid (too many incorrect attempts)", + "paymentType_status_broken": "Broken", + "paymentType_status_canceled": "Cancelled", + "paymentType_status_canceling": "Cancelling", + "paymentType_status_canceledbycustomer": "Cancelled by customer", + "paymentType_status_canceled_by_customer": "Cancelled by customer", + "paymentType_status_created": "Pending confirmation ", + "paymentType_status_error": "Error", + "paymentType_status_validforcredit": "Valid for credit", + "paymentType_add_error": "An error occured while adding the payment method", + "paymentType_status_pendingValidation": "Validation in progress", + "paymentType_status_waiting_for_documents": "Pending receipt", + "payment_mean_add_paypal": "Launch a PayPal subscription", + "payement_mean_add_creditCard": "Generate a purchase order", + "payment_mean_get_validation": "Retrieve validation procedure", + "payment_mean_return_by_mail_procedure": "Procedure to be returned by post", + "paymentType_add_validation_description": "Please confirm the payment method you have added.", + "paymentType_add_success_url": "Click here to be redirected to a secure page and complete the operation.", + "paymentType_bankAccount_add_success_with_download": "The bank account has been added, and will be activated once it has been validated. Please follow the procedure described in this document to validate the payment method to be sent by post.", + "paymentType_bankAccount_pending_validation": "You added a bank account through your customer control panel. We are currently waiting for you to send us by mail your direct debit approval on that account.", + "paymentType_bankAccount_processing_delay": "Your bank account will be validated within 24 to 48 hours from the moment we receive your authorisation for direct debit.", + "payment_mean_radio_select_default": "Use this automatic payment method by default.", + "payment_mean_select_default": "Assign as default method.", + "payment_mean_delete_payment_mean": "Delete this payment method. ", + "payment_mean_description_add": "Add description.", + "payment_mean_description_edit": "Modify description.", + "payment_mean_description_input": "Payment method description ", + "payment_mean_description_save": "Save the description ", + "payment_mean_description_cancel": "Remove changes to description ", + "ovhAccount_table_type_CANCEL_CREDIT": "Credit cancellation ", + "ovhAccount_table_type_CANCEL_CREDIT_BILL": "Invoice cancellation", + "ovhAccount_table_type_CANCEL_CREDIT_REFUND": "Credit note cancellation", + "ovhAccount_table_type_CANCEL_CREDIT_STATEMENT_INCOME": "Prepaid account cancellation", + "ovhAccount_table_type_CANCEL_CREDIT_STATEMENT_OUTCOME": "Bank transfer cancellation", + "ovhAccount_table_type_CANCEL_CREDIT_DEPOSIT": "Cancel advance payment", + "ovhAccount_table_type_CANCEL_DEBIT": "Cancel debit", + "ovhAccount_table_type_CANCEL_DEBIT_BILL": "Invoice cancellation", + "ovhAccount_table_type_CANCEL_DEBIT_REFUND": "Credit note cancellation", + "ovhAccount_table_type_CANCEL_DEBIT_STATEMENT_INCOME": "Prepaid account cancellation", + "ovhAccount_table_type_CANCEL_DEBIT_STATEMENT_OUTCOME": "Bank transfer cancellation", + "ovhAccount_table_type_CANCEL_PRE_DEBIT": "Cancel debit", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_BILL": "Invoice", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_REFUND": "Credit note", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_STATEMENT_INCOME": "Prepaid account provision", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_STATEMENT_OUTCOME": "Bank transfer", + "ovhAccount_table_type_CREDIT": "Credit", + "ovhAccount_table_type_CREDIT_BILL": "Invoice", + "ovhAccount_table_type_CREDIT_DEPOSIT": "Upfront", + "ovhAccount_table_type_CREDIT_REFUND": "Credit note", + "ovhAccount_table_type_CREDIT_STATEMENT_INCOME": "Prepaid account provision", + "ovhAccount_table_type_CREDIT_STATEMENT_OUTCOME": "Bank transfer", + "ovhAccount_table_type_DEBIT": "Debit", + "ovhAccount_table_type_DEBIT_BILL": "Invoice", + "ovhAccount_table_type_DEBIT_REFUND": "Credit note", + "ovhAccount_table_type_DEBIT_STATEMENT_INCOME": "Prepaid account provision", + "ovhAccount_table_type_DEBIT_STATEMENT_OUTCOME": "Bank transfer", + "ovhAccount_table_type_DEBIT_WITHDRAWAL": "Debit", + "ovhAccount_table_type_PRE_CREDIT": "Credit", + "ovhAccount_table_type_PRE_CREDIT_BILL": "Invoice", + "ovhAccount_table_type_PRE_CREDIT_REFUND": "Credit note", + "ovhAccount_table_type_PRE_CREDIT_STATEMENT_INCOME": "Prepaid account provision", + "ovhAccount_table_type_PRE_CREDIT_STATEMENT_OUTCOME": "Bank transfer", + "ovhAccount_table_type_PRE_DEBIT": "Debit", + "ovhAccount_table_type_PRE_DEBIT_BILL": "Invoice", + "ovhAccount_table_type_PRE_DEBIT_REFUND": "Credit note", + "ovhAccount_table_type_PRE_DEBIT_STATEMENT_INCOME": "Prepaid account provision", + "ovhAccount_table_type_PRE_DEBIT_STATEMENT_OUTCOME": "Bank transfer", + "ovhAccount_table_head_payment_type": "Payment method", + "ovhAccount_table_type_payment_CASH": "Type", + "ovhAccount_table_type_payment_CHARGEBACK": "Cancellation of payment", + "ovhAccount_table_type_payment_CHEQUE": "Cheque", + "ovhAccount_table_type_payment_CREDIT_CARD": "Credit card", + "ovhAccount_table_type_payment_DEPOSIT": "Upfront", + "ovhAccount_table_type_payment_DEBT_ACCOUNT": "Debit account", + "ovhAccount_table_type_payment_EDINAR": "e-DINAR", + "ovhAccount_table_type_payment_FIDELITY_POINTS": "My points", + "ovhAccount_table_type_payment_FREE": "Free", + "ovhAccount_table_type_payment_IDEAL": "iDEAL", + "ovhAccount_table_type_payment_MANDAT": "Mandate", + "ovhAccount_table_type_payment_MULTIBANCO": "Multibanco", + "ovhAccount_table_type_payment_NONE": "None", + "ovhAccount_table_type_payment_OVH_ACCOUNT": "Prepaid account", + "ovhAccount_table_type_payment_PAYMENT_MANDATE": "Mandate", + "ovhAccount_table_type_payment_PAYPAL": "Paypal", + "ovhAccount_table_type_payment_PLATNOSCI": "Płatności", + "ovhAccount_table_type_payment_REFUND": "Credit note", + "ovhAccount_table_type_payment_TRANSFER": "Transfer", + "ovhAccount_table_type_payment_WITHDRAWAL": "Bank withdrawal", + "ovhAccount_table_type_payment_CREDIT_ACCOUNT": "Credit account", + "ovhAccount_table_type_payment_DIGITAL_LAUNCH_PAD": "DLP voucher", + "ovhAccount_table_type_payment_INCUBATOR_ACCOUNT": "Incubator account", + "ovhAccount_table_type_payment_PAYU": "PayU", + "ovhAccount_retrieve_title": "Transfer to a bank account ", + "ovhAccount_renew_title": "Credit your prepaid account", + "ovhAccount_renew_step1_msg": "You can credit your account to pay your invoices, or to pay in advance for future invoices.", + "ovhAccount_renew_step1_erreurmin": "The amount of credit must be less than 10 {{t0}} and your account balance must be positive.", + "ovhAccount_renew_step1_erreurformat": "The amount entered is incorrect. Please only use numbers separated by a full stop or comma.", + "ovhAccount_renew_step1_amount": "Amount ({{t0}}):", + "ovhAccount_renew_step2_msg": "Order summary", + "ovhAccount_renew_step2_credit": "Amount to be credited:", + "ovhAccount_renew_step2_error": "An error occurred. We apologise for any inconvenience caused.", + "ovhAccount_renew_step2_success": "Your (order # {{t1}}) credit will be effective on your prepaid account as soon as your payment has been received.", + "ovhAccount_account_list_error": "An error occurred while retrieving the list of your accounts", + "ovhAccount_account_list_title": "- Account", + "ovhAccount_account_list_empty": "There is no account to display", + "telconso_menu_this_month": "Current month", + "telconso_menu_last_month": "Previous months", + "telconso_search": "Search for a line", + "telconso_table_empty": "No elements to display", + "telconso_table_line_empty": "No lines to display", + "telconso_title_current_month": "My phone usage monitoring from {{t0}} to {{t1}}", + "telconso_consumption": "Usage", + "telconso_plan_to": "Fixed at {{t0}}", + "telconso_allowed_outplan": "Authorised beyond fixed rate", + "telconso_service_name_consumption": "Usage", + "telconso_nb_lines": "Number of lines:", + "telconso_nb_groups": "Number of groups:", + "telconso_callout": "{{t0}} % of calls made", + "telconso_callin": "{{t0}} % of calls received", + "telconso_faxout": "{{t0}} % of faxes sent", + "telconso_faxin": "{{t0}} % of faxes received", + "telconso_to_fixe": "To landlines", + "telconso_to_mobiles": "To mobiles", + "telconso_to_special": "To special numbers", + "telconso_send_fax": "Send a fax", + "telconso_fax": "Fax", + "telconso_calls": "Number of calls", + "telconso_faxs": "Number of faxes", + "telconso_anonymous": "Anonymous", + "telconso_in": "Received", + "telconso_out": "Issued", + "telconso_com_time": "Communication time", + "telconso_call_count": "Number", + "telconso_line": "Line", + "telconso_lines": "Lines", + "telconso_price": "Price", + "telconso_outplan": "Beyond fixed rate", + "telconso_group_outplan": "Fixed rate", + "telconso_group": "Group", + "telconso_all_groups": "All groups", + "telconso_select_group": "Select a group for more information", + "telconso_calls_details": "Call details", + "telconso_fax_details": "Fax details", + "telconso_line_myline": "My line {{t0}}", + "telconso_line_include": "Consumption included in fixed rate", + "telconso_line_outplan": "Consumption beyond fixed rate", + "telconso_next_billing": "Date of next bill:", + "tel_conso_conso_date": "Date", + "tel_conso_conso_num_emit": "Caller", + "tel_conso_conso_num_recv": "Called number", + "tel_conso_conso_tranfert": "Forwarded to", + "tel_conso_conso_time": "Duration", + "tel_conso_conso_include": "Included", + "tel_conso_conso_outplan": "Beyond fixed rate", + "tel_conso_conso_included": "Included", + "tel_conso_conso_notincluded": "Not included", + "tel_conso_calls": "calls", + "tel_conso_tabs_inc": "Received", + "tel_conso_tabs_out": "Issued", + "tel_conso_tabs_trs": "Transferred", + "tel_conso_tabs_incfix": "From landlines", + "tel_conso_tabs_incmob": "From mobiles", + "tel_conso_tabs_incspe": "From special numbers", + "tel_conso_tabs_outfix": "To landlines", + "tel_conso_tabs_outmob": "To mobiles", + "tel_conso_tabs_outspe": "To special numbers", + "tel_conso_tabs_trsfix": "To landlines", + "tel_conso_tabs_trsmob": "To mobiles", + "tel_conso_tabs_trsspe": "To special numbers", + "tel_conso_tabs_sent": "Sent", + "tel_conso_tabs_received": "Received", + "tel_conso_error": "An error occurred while loading the information", + "tel_conso_h": "hr", + "tel_conso_min": "min", + "tel_conso_s": "s", + "tel_lastconso_title": "My phone usage for the previous months", + "tel_lastconso_month": "Month", + "tel_lastconso_priceplan": "Total sum", + "tel_lastconso_outplan": "Fixed rate", + "tel_lastconso_sheet": "Usage statements", + "tel_lastconso_sheet_down": "Download", + "tel_lastconso_sheet_progress": "In progress", + "tel_lastconso_month_date_display": "MMM yyyy", + "fidelity_title": "My points", + "fidelity_get_accounts_error": "An error occurred while loading the information", + "fidelity_header_date": "Date", + "fidelity_header_order": "Transaction", + "fidelity_header_operation": "Operation", + "fidelity_header_credit": "Credit", + "fidelity_header_debit": "Debit", + "fidelity_header_balance": "Balance", + "fidelity_points": "point(s)", + "fidelity_creditOrder_title": "Credit your account", + "fidelity_creditOrder_step1_msg": "You can credit your account to pay for your orders, or to renew your services, when a renewal says “manual”. (1 point = 0.01 {{t0}} ex. VAT)", + "fidelity_creditOrder_step1_amount": "Amount (in points)", + "fidelity_creditOrder_step1_erreurformat": "The amount entered is incorrect. Please use numbers only. ", + "fidelity_creditOrder_step1_erreurmin": "The amount of credit must be at least {{t0}} points.", + "fidelity_creditOrder_step1_erreurmax": "The maximum amount of credit is {{t0}} points.", + "fidelity_creditOrder_step2_msg": "Order summary", + "fidelity_creditOrder_step2_credit": "Amount to be credited:", + "fidelity_creditOrder_step2_error": "An error occurred while loading the information", + "fidelity_creditOrder_step2_success": "Your (order # {{t1}}) credit will be effective on your prepaid account as soon as your payment has been received.", + "fidelity_no_item": "There are no items to display.", + "fidelity_balance_info": "Situation as of {{t0}}: {{t1}} point(s)", + "fidelity_no_account": "You do not have a loyalty account", + "sla_table_head_date": "Date", + "sla_table_head_description": "Description", + "sla_table_head_refund": "Compensation", + "sla_table_apply": "Apply", + "sla_informations_error": "There was an error retrieving information. Please retry using another method:", + "sla_apply_error": "An error occured when requesting compensation: ", + "sla_apply_success": "Your compensation request has been registered and your compensation will be applied within the next few hours. ", + "sla_apply_no_data": "You are not entitled to any compensation.", + "sla_table_head_service_name": "Service name", + "sla_table_head_service_description": "Service description", + "sla_table_head_service_sla_plan": "Contractual SLA", + "sla_table_head_service_sla_application": "Compensation granted", + "sla_table_services_empty": "No services", + "sla_informations": "Please see the compensation you are eligible for below. Click \"Apply\" to activate your compensation. ", + "sla_informations_end": "You will have until {{t0}} to submit your compensation request, and receive the compensation you are entitled to in accordance with our SLAs", + "sla_informations_applied": "Your request has been received, and will be processed as soon as possible.", + "sla_informations_applied_all": "Your requests have been received, and will be processed as soon as possible.", + "sla_informations_status_created": "Created", + "sla_informations_status_notApplicable": "Not applicable", + "sla_informations_status_completed": "Accepted ", + "sla_informations_status_requested": "Processing", + "voucher_table_head_id": "ID", + "voucher_table_head_balance": "Balance", + "voucher_table_head_voucher_open_date": "Opening date", + "voucher_table_head_voucher_last_update": "Last update", + "voucher_table_empty": "No voucher", + "voucher_informations_error": "An error has occurred:", + "vouchers_title": "My vouchers", + "vouchers_movements_title": "Transactions with the {{t0}} voucher", + "voucher_movements_table_head_id": "ID", + "voucher_movements_table_head_description": "Description", + "voucher_movements_table_head_date": "Date", + "voucher_movements_table_head_amount": "Amount", + "voucher_movements_table_head_previous_balance": "Previous balance", + "voucher_movements_table_head_balance": "Balance", + "voucher_movements_table_head_operation": "Operation", + "voucher_movements_table_head_order": "Order", + "voucher_movements_table_empty": "No new transactions", + "voucher_movements_operation_type_cancel-credit": "Credit cancelled", + "voucher_movements_operation_type_cancel-debit": "Debit cancelled", + "voucher_movements_operation_type_cancel-pre-debit": "Pre-debit cancellation", + "voucher_movements_operation_type_credit": "Credit", + "voucher_movements_operation_type_debit": "Debit", + "voucher_movements_operation_type_pre-credit": "Pre-credit", + "voucher_movements_operation_type_pre-debit": "Pre-debit", + "statements_account_automatic_payment_inactive": "You cannot use direct debit to renew your services. ", + "statements_account_no_default_payment_mean": "You have not specified a default payment method. ", + "statements_account_invalid_default_payment_mean": "Your default payment method is no longer valid. ", + "statements_account_manage_my_payment_means": "Manage my payment methods ", + "statements_account_pay_debt_button": "Pay balance immediately", + "statements_table_caption": "Orders to your account", + "statements_table_header_order": "Order", + "statements_table_header_date": "Date", + "statements_table_header_due_date": "Due date", + "statements_table_no_due_date": "Immediate", + "statements_table_header_amount": "Amount", + "statements_table_header_balance": "Balance due", + "statements_table_header_details": "Details", + "statements_table_no_detail": "No data available. ", + "statements_table_invoice_link": "See the invoice {{t0}} in a new window.", + "statements_table_order_link": "See the order {{t0}} in a new window.", + "statements_table_detail_label": "See details of this bill. ", + "statements_table_detail_link": "See details for this debt {{t0}}.", + "statements_table_pay_debt_button": "Pay balance immediately", + "statements_summary_error": "An error occurred while retrieving your account balance.", + "statements_detail_error": "An error occurred while retrieving your account details.", + "statements_single_debt_error": "An error occurred while retrieving the details of line {{t0}}.", + "statements_payment_mean_error": "An error has occurred while retrieving your payment method.", + "statements_details_summary_title": "Order summary", + "statements_details_operations_title": "History of operations", + "statements_details_page_loader": "Loading information...", + "statements_details_page_operations": "An error occurred while retrieving the history of operations.", + "statements_details_return_to_statements": "Back to previous page", + "statements_details_table_caption": "List of operations on the invoice", + "statements_details_table_header_date": "Date", + "statements_details_table_header_operation": "Operation", + "statements_details_table_header_status": "Status", + "statements_details_table_header_amount": "Amount", + "statements_details_table_header_document": "Document", + "statements_details_table_order_link": "Opening the order associated with this operation in a new window.", + "statements_details_table_invoice_html_link": "See the invoice in HMTL (new window).", + "statements_details_table_invoice_pdf_link": "See the invoice in PDF version (new window).", + "statements_operation_status_done": "Completed", + "statements_operation_status_cancelled": "Cancelled", + "statements_operation_status_failed": "Failed", + "statements_operation_status_todo": "Awaiting payment", + "statements_operation_status_pending": "Processing", + "statements_operation_status_paid": "Paid", + "statements_operation_description_order": "Order creation", + "statements_operation_description_cancel": "Cancelling an operation", + "statements_operation_description_creditcard_manual": "Manual credit card payment", + "statements_operation_description_creditcard_automatic": "Automatic withdrawal on a credit card", + "statements_operation_description_refund_creditcard": "Credit card reimbursement", + "statements_operation_description_unpaid_creditcard": "Credit card withdrawal declined", + "statements_operation_description_paypal_manual": "Manual payment with PayPal ", + "statements_operation_description_paypal_automatic": "Automatic withdrawal from a PayPal account", + "statements_operation_description_refund_paypal": "Reimbursement to a PayPal account", + "statements_operation_description_unpaid_paypal": "PayPal account withdrawal declined", + "statements_operation_description_sepa_automatic": "Automatic withdrawal from a bank account", + "statements_operation_description_refund_sepa": "Reimbursement to a bank account", + "statements_operation_description_unpaid_sepa": "Bank account withdrawal declined", + "statements_operation_description_credit_account_automatic": "Automatic withdrawal from a prepaid OVH account", + "statements_operation_description_refund_credit_account": "Reimbursement through a prepaid OVH account", + "statements_operation_description_unpaid_credit_account": "Cancellation of a deposit through the OVH prepaid account", + "statements_operation_description_check_manual": "Payment by cheque", + "statements_operation_description_refund_check": "Reimbursement of a wire transfer", + "statements_operation_description_unpaid_check": "Cheque declined", + "statements_operation_description_transfer_manual": "Payment by wire transfer", + "statements_operation_description_unpaid_transfer": "Wire transfer declined", + "statements_operation_description_warrant_manual": "Payment by money order", + "statements_operation_description_refund_warrant": "Reimbursement of a money order ", + "statements_operation_description_unpaid_warrant": "Money order declined", + "statements_operation_description_refund": "Refund", + "statements_operation_description_refund_unknown": "Refund", + "billing_date_range_choose_custom_date": "Define the period ", + "billing_date_range_text": "From {{t0}} to {{t1}}", + "billing_price_ttc_label": "{{price}} incl. VAT", + "billing_guides_header": "Guides", + "billing_guides_header_manage_payment_methods_guides": "Managing payment methods ", + "billing_guides_header_managing_orders_guides": "Managing OVHcloud orders", + "billing_guides_header_purchase_order_guides": "Concept of Order Number or Purchase Order (PO)", + "billing_guides_header_managing_bills_guides": "Managing OVHcloud bills", + "billing_guides_header_automatic_renewal_guides": "Managing renewal for your services", + "fidelity_creditOrder_submit_error": "An error has occurred generating your credit.", + "fidelity_creditOrder_submit_success": "Your credit {{t0}} points has been generated. You can proceed with your order in the My orders tab" +} diff --git a/packages/manager/modules/new-billing/src/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/translations/Messages_es_ES.json new file mode 100644 index 000000000000..71ddda92ed35 --- /dev/null +++ b/packages/manager/modules/new-billing/src/translations/Messages_es_ES.json @@ -0,0 +1,920 @@ +{ + "billingError": "Se ha producido un error al cargar la información", + "title_from": "desde", + "title_to": "hasta", + "period_tooltip_from": "Seleccione una fecha de inicio", + "period_tooltip_to": "Seleccione una fecha de fin", + "table_download_html": "Ver la versión HTML", + "table_download_pdf": "Ver la versión PDF", + "table_download_html_order": "Ver la orden de pedido en formato HTML", + "table_download_pdf_order": "Ver la orden de pedido en formato PDF", + "table_download_html_invoice": "Ver la factura en formato HTML", + "table_download_pdf_invoice": "Ver la factura en formato PDF", + "table_download_pdf_beta": "Ver la versión PDF (Beta)", + "todo": "Próximamente", + "wizard_order": "Contratar", + "wizard_cancel": "Cancelar", + "wizard_confirm": "Aceptar", + "wizard_pay": "Abonar", + "wizard_renew": "Renovar", + "wizard_next": "Siguiente", + "wizard_previous": "Anterior", + "common_order_ascending": "orden creciente", + "common_order_descending": "orden decreciente", + "common_payment_type_cash": "Efectivo", + "common_payment_type_chargeback": "Pago rechazado", + "common_payment_type_cheque": "Cheque", + "common_payment_type_creditCard": "Tarjeta bancaria", + "common_payment_type_CREDIT_CARD": "Tarjeta bancaria", + "common_payment_type_debtAccount": "Adeudo SEPA", + "common_payment_type_DEBT_ACCOUNT": "Adeudo SEPA", + "common_payment_type_deferredPaymentAccount": "Cuenta de pago diferido", + "common_payment_type_DEFERRED_PAYMENT_ACCOUNT": "Cuenta de pago diferido", + "common_payment_type_deposit": "Ingreso en cuenta", + "common_payment_type_edinar": "e-Dinar", + "common_payment_type_fidelityPoints": "Mis puntos", + "common_payment_type_FIDELITY_POINTS": "Mis puntos", + "common_payment_type_free": "Gratuito", + "common_payment_type_ideal": "iDEAL", + "common_payment_type_mandat": "Giro", + "common_payment_type_multibanco": "Multibanco", + "common_payment_type_none": "Ninguno", + "common_payment_type_ovhAccount": "Cuenta de prepago", + "common_payment_type_OVH_ACCOUNT": "Cuenta de prepago", + "common_payment_type_paymentMandate": "Giro administrativo", + "common_payment_type_PAYMENT_MANDATE": "Giro administrativo", + "common_payment_type_paypal": "Paypal", + "common_payment_type_payu": "PayU", + "common_payment_type_platnosci": "Płatności", + "common_payment_type_refund": "Abono", + "common_payment_type_transfer": "Transferencia", + "common_payment_type_withdrawal": "Domiciliación", + "common_payment_type_bankAccount": "Cuenta bancaria", + "common_payment_type_BANK_ACCOUNT": "Cuenta bancaria", + "common_payment_type_digitalLaunchPad": "Digital Launch Pad", + "common_payment_type_DIGITAL_LAUNCH_PAD": "Digital Launch Pad", + "common_payment_type_unavailable": "Información sobre el pago no disponible.", + "common_payment_type_0": "Todos", + "common_see_another_month": "Ver otro mes", + "common_choose": "Elegir", + "common_payment_type_creditCard_expiration_date": "Fecha de expiración:", + "common_time_period_in_years": "{{t0}} años", + "common_time_period_one_year": "1 año", + "common_time_period_in_months": "{{t0}} mes(es)", + "common_time_period_one_month": "1 mes", + "pagination_page": "Página {{ current }}/{{ last }}", + "pagination_display": "Ver", + "pagination_display_all": "Todo", + "pagination_go": "OK", + "history_title2": "Mis facturas", + "history_table_head_date": "Fecha de emisión", + "history_table_head_id": "Referencia", + "history_table_head_order_id": "Número de pedido", + "history_table_head_product": "Producto", + "history_table_head_payment": "Forma de pago", + "history_table_head_payment_select_filter": "Filtrar por forma de pago", + "history_table_head_total_with_VAT": "Importe IVA incl.", + "history_table_head_total": "Importe", + "history_table_head_balance_due": "Saldo a pagar", + "history_table_head_due_date": "Fecha de vencimiento", + "history_table_head_actions": "Acciones", + "history_table_actions_tooltip": "Más detalles sobre esta factura", + "history_table_empty": "No hay facturas en el mes seleccionado", + "history_table_information_not_available": "Información no disponible", + "history_table_debt_due_immediately": "Inmediato", + "history_table_debt_paid": "Pagada", + "payments_error": "Se ha producido un error, disculpe las molestias.", + "payments_title": "Seguimiento de los pagos", + "payments_description": "La siguiente tabla muestra los pagos realizados con su forma de pago por defecto. Cada pago puede corresponder a una o más facturas.", + "payments_table_head_date": "Fecha de pago", + "payments_table_head_id": "Referencia", + "payments_table_head_type": "Forma de pago", + "payments_table_head_amount": "Importe total", + "payments_table_head_actions": "Acciones", + "payments_table_actions_tooltip": "Más detalles sobre el pago", + "payments_table_type_not_available": "Información no disponible", + "payments_table_empty": "No hay pagos en el período seleccionado.", + "payments_request_pending": "Ya hay un pago del saldo en curso. Para más información, haga clic aquí.", + "payments_details_link": "Ver los detalles de este pago", + "payment_details_payment_id": "Referencia", + "payment_details_payment_date": "Fecha", + "payment_details_payment_amount": "Importe total", + "payment_details_table_header_id": "Referencia de la factura", + "payment_details_table_header_date": "Fecha de emisión", + "payment_details_table_header_payment": "Importe de la operación", + "payment_details_table_header_document": "Documento", + "payment_details_title": "Detalles del pago", + "payments_details_table_empty": "No hay detalles disponibles.", + "payment_details_return_to_payments": "Volver a la página anterior", + "orders_page_title": "Mis pedidos ", + "orders_table_head_date": "Fecha", + "orders_table_head_id": "Número de pedido", + "orders_table_head_status": "Estado", + "orders_table_head_total_taxes_included": "Importe con IVA incl.", + "orders_table_head_total": "Importe", + "orders_table_empty": "No tiene ningún pedido. ", + "orders_table_empty_with_filter": "No hay pedidos que cumplan los criterios:", + "orders_informations_error": "Se ha producido un error:", + "orders_order_status_cancelled": "Cancelada", + "orders_order_status_cancelling": "Cancelando...", + "orders_order_status_checking": "Validación", + "orders_order_status_delivered": "Entregado", + "orders_order_status_delivering": "Entregando...", + "orders_order_status_documents_requested": "Pendiente de documentación", + "orders_order_status_not_paid": "Pago no recibido", + "orders_order_status_unknown": "Desconocido", + "orders_order_bc_expired": "El pedido ha expirado.", + "orders_order_status_filter_progress": "En proceso", + "orders_order_status_filter_all": "Todos", + "orders_order_status_filter_terminated": "Finalizados", + "orders_order_status_filter_expired": "Expirados", + "orders_order_loading_error": "Error al cargar el pedido.", + "orders_search_input_title": "Buscar mis pedidos por identificador.", + "orders_table_actions_tooltip": "Más detalles sobre el pedido", + "orders_order_action_retract": "Cancelar el pedido", + "orders_retract_return_to_orders": "Volver a mis pedidos", + "orders_retract_title": "Desistimiento de los servicios del pedido", + "orders_retract_confirmation": "¿Seguro que quiere cancelar el pedido {{t0}}?", + "orders_retract_confirmation_text": "Sí, quiero cancelar el pedido.", + "orders_retract_description1": "Le informamos de que dispone del derecho de desistimiento durante 14 días contados desde la fecha del pedido. En caso de ejercitar dicho derecho, se le reembolsará, en un plazo de 30 días contados desde la solicitud de desistimiento, la cantidad inicialmente abonada menos la parte proporcional correspondiente a los días de servicio consumidos.", + "orders_retract_description2": "Atención: El desistimiento mediante el presente formulario afecta a todos los productos incluidos en el pedido y se aplica con efecto inmediato.", + "orders_retract_alert": "La confirmación implicará la eliminación automática, inmediata e irreversible de todos los datos asociados al pedido (incluyendo sus copias de seguridad y backups). Antes de continuar y confirmar el desistimiento, le corresponde adoptar todas las medidas necesarias para conservar sus datos y garantizar la continuidad de su actividad. OVH se exime de toda responsabilidad a este respecto.", + "orders_retract_success": "Se ha cancelado el pedido {{t0}}.", + "orders_retract_error": "Se ha producido un error al cancelar el pedido.", + "refunds_title2": "Mis devoluciones", + "refunds_table_head_date": "Fecha", + "refunds_table_head_id": "Referencia", + "refunds_table_head_bill": "Asociado a la factura", + "refunds_table_head_account": "Abonado en", + "refunds_table_head_total": "Importe", + "refunds_table_head_total_with_VAT": "Importe IVA incl.", + "refunds_table_download": "Descargar", + "refunds_table_empty": "No hay devoluciones en el período seleccionado", + "refunds_table_account_no_information": "Información no disponible", + "ovhAccount_partial_error": "Algunos movimientos no se muestran debido a un error. No obstante, el saldo no se ve afectado.", + "ovhAccount_title2": "Movimientos en mi cuenta de prepago", + "ovhAccount_no_account": "No tiene cuenta de prepago", + "ovhAccount_balance": "Situación a", + "ovhAccount_table_head_date": "Fecha", + "ovhAccount_table_head_id": "Referencia", + "ovhAccount_table_head_product": "Producto", + "ovhAccount_table_head_remaining": "Saldo", + "ovhAccount_table_head_type": "Tipo", + "ovhAccount_table_head_debit": "Débito", + "ovhAccount_table_head_credit": "Crédito", + "ovhAccount_table_head_crediter": "Recargar", + "ovhAccount_table_head_crediter_none": "No es posible recargar esta cuenta.", + "ovhAccount_table_head_download": "Descargar", + "ovhAccount_table_empty": "No hay movimientos en la cuenta de prepago durante el mes seleccionado.", + "ovhAccount_table_error": "Se ha producido un error. No es posible mostrar la información.", + "ovhAccount_retrieve_account": "Seleccione su cuenta bancaria:", + "ovhAccount_retrieve_amount": "Importe de la transferencia:", + "ovhAccount_retrieve_account_add": "Añadir una cuenta bancaria ", + "ovhAccount_retrieve_amount_disponible": "Cantidad disponible:", + "ovhAccount_retrieve_error": "La operación no se ha podido realizar debido a un error.", + "ovhAccount_retrieve_explanation": "Tiene la posibilidad de realizar una transferencia por el importe seleccionado desde su cuenta de cliente OVH a una cuenta bancaria. Recuerde que solo podrá transferir los importes procedentes de devoluciones y reembolsos. ", + "ovhAccount_retrieve_success": "Su solicitud de transferencia se ha procesado correctamente.", + "ovhAccount_retrieve_resume_1": "Confirme la transferencia por un importe de", + "ovhAccount_retrieve_resume_2": "de su cuenta de prepago a su cuenta bancaria", + "ovhAccount_retrieve_tips": "Haga clic en «Abonar» para abrir la orden de pedido. Asegúrese de que el navegador no bloquea las ventanas emergentes. ", + "ovhAccount_create_alert": "Crear una alerta", + "ovhAccount_create_alert_resume": "Recibirá una notificación por correo electrónico cuando el saldo de su cuenta supere el umbral de alerta.", + "ovhAccount_delete_alert": "Desactivar las alertas relativas al saldo de la cuenta:", + "ovhAccount_create_alert_amount": "Umbral de alerta:", + "ovhAccount_create_alert_wizard_button": "Crear", + "ovhAccount_create_alert_success": "Se ha guardado la alerta.", + "ovhAccount_create_alert_error": "No se ha podido guardar la alerta debido a un problema.", + "ovhAccount_create_alert_amount_resume": "Umbral de alerta establecido: {{t0}}", + "ovhAccount_no_alert": "No hay alertas configuradas.", + "ovhAccount_create_alert_input_error": "Solo están autorizados los números enteros positivos.", + "payment_mean_title": "Mis formas de pago", + "payment_mean_back": "Volver a mis formas de pago", + "payment_mean_loading_error": "Se ha producido un error al cargar la página.", + "payment_mean_no_register": "No hay formas de pago guardadas.", + "payment_mean_add": "Añadir", + "payment_mean_add_title": "Añadir una forma de pago", + "payment_mean_action_unavailable_for_our_subsidiary": "No es posible realizar esta acción desde su país.", + "payment_mean_default": "Por defecto", + "payment_mean_set_default": "Forma de pago por defecto", + "payment_mean_set_default_after_validation": "Una vez validada, quiero seleccionar esta forma de pago por defecto.", + "payment_mean_set_as_default": "Una vez validada, se seleccionará esta forma de pago por defecto.", + "payment_mean_contact_presentation_reuse_contact": "utilizando un contacto preexistente", + "payment_mean_contact_presentation_create_contact": "creando un nuevo contacto", + "payment_mean_contact_presentation_billingContactId_title": "Dirección de la tarjeta de crédito", + "payment_mean_contact_presentation_new_card_title": "Introduzca una nueva tarjeta", + "payment_mean_contact_presentation_update_title_billingContactId": "Cambiar la dirección de la tarjeta de crédito", + "payment_mean_contact_presentation_update_label": "Editar", + "payment_mean_contact_presentation_phone_label": "Tel.:", + "payment_mean_contact_presentation_email_label": "Correo electrónico:", + "payment_mean_contact_creation_main_title": "Creación de un contacto", + "payment_mean_contact_creation_mandatory_fields_rules_explained": "Por defecto solo se muestran los campos obligatorios (marcados con asterisco). Para ver todos los campos que puede completar, utilice el botón situado al principio de cada sección.", + "payment_mean_contact_creation_fieldset_GENERAL_INFORMATIONS": "Información general", + "payment_mean_contact_creation_fieldset_LEGAL": "Datos jurídicos", + "payment_mean_contact_creation_fieldset_PROFILE": "Perfil", + "payment_mean_contact_creation_fieldset_CONTACTS": "Contactos", + "payment_mean_contact_creation_label_gender": "Tratamiento", + "payment_mean_contact_creation_label_firstName": "Nombre", + "payment_mean_contact_creation_label_lastName": "Apellidos", + "payment_mean_contact_creation_label_nationality": "Nacionalidad", + "payment_mean_contact_creation_label_country": "País", + "payment_mean_contact_creation_label_address_country": "País", + "payment_mean_contact_creation_label_address_province": "Provincia", + "payment_mean_contact_creation_label_address_state": "Estado", + "payment_mean_contact_creation_label_address_area": "Región", + "payment_mean_contact_creation_label_legalform": "Forma jurídica", + "payment_mean_contact_creation_label_email_confirmation": "Repetir correo electrónico", + "payment_mean_contact_creation_label_spareEmail": "Correo electrónico secundario", + "payment_mean_contact_creation_label_email": "Correo electrónico", + "payment_mean_contact_creation_label_address_line1": "Dirección", + "payment_mean_contact_creation_label_address_line2": "Dirección (continuación 1)", + "payment_mean_contact_creation_label_address_line3": "Dirección (continuación 2)", + "payment_mean_contact_creation_label_address_otherDetails": "Dirección (otra)", + "payment_mean_contact_creation_label_address_zip": "Código postal", + "payment_mean_contact_creation_label_address_city": "Localidad", + "payment_mean_contact_creation_label_birthDay": "Fecha de nacimiento", + "payment_mean_contact_creation_label_phone": "Teléfono", + "payment_mean_contact_creation_label_fax": "Fax", + "payment_mean_contact_creation_label_language": "Idioma", + "payment_mean_contact_creation_label_organisation": "Organización", + "payment_mean_contact_creation_label_organisationType": "Tipo de organización", + "payment_mean_contact_creation_label_organisationName": "Nombre de la organización", + "payment_mean_contact_creation_label_vat": "NIF-IVA intracomunitario", + "payment_mean_contact_creation_label_birthCity": "Localidad de nacimiento", + "payment_mean_contact_creation_label_birthZip": "C.P. del lugar de nacimiento", + "payment_mean_contact_creation_label_birthCountry": "País de nacimiento", + "payment_mean_contact_creation_label_cellPhone": "Teléfono móvil", + "payment_mean_contact_creation_label_nationalIdentificationNumber": "Código fiscal ", + "payment_mean_contact_creation_label_companyNationalIdentificationNumber": "Código fiscal ", + "payment_mean_contact_creation_label_associationNationalIdentificationNumber": "NIF", + "payment_mean_contact_creation_label_optional": "(Opcional)", + "payment_mean_contact_creation_gender_male": "Masculino", + "payment_mean_contact_creation_gender_female": "Femenino", + "payment_mean_contact_creation_country_AC": "Isla Ascensión", + "payment_mean_contact_creation_country_AD": "Andorra", + "payment_mean_contact_creation_country_AE": "Emiratos Árabes Unidos", + "payment_mean_contact_creation_country_AF": "Afganistán", + "payment_mean_contact_creation_country_AG": "Antigua y Barbuda", + "payment_mean_contact_creation_country_AI": "Anguila", + "payment_mean_contact_creation_country_AL": "Albania", + "payment_mean_contact_creation_country_AM": "Armenia", + "payment_mean_contact_creation_country_AO": "Angola", + "payment_mean_contact_creation_country_AQ": "Antártida", + "payment_mean_contact_creation_country_AR": "Argentina", + "payment_mean_contact_creation_country_AS": "Samoa Americana", + "payment_mean_contact_creation_country_AT": "Austria", + "payment_mean_contact_creation_country_AU": "Australia", + "payment_mean_contact_creation_country_AW": "Aruba", + "payment_mean_contact_creation_country_AX": "Åland", + "payment_mean_contact_creation_country_AZ": "Azerbaiyán", + "payment_mean_contact_creation_country_BA": "Bosnia y Herzegovina", + "payment_mean_contact_creation_country_BB": "Barbados", + "payment_mean_contact_creation_country_BD": "Bangladés", + "payment_mean_contact_creation_country_BE": "Bélgica", + "payment_mean_contact_creation_country_BF": "Burkina Faso", + "payment_mean_contact_creation_country_BG": "Bulgaria", + "payment_mean_contact_creation_country_BH": "Baréin", + "payment_mean_contact_creation_country_BI": "Burundi", + "payment_mean_contact_creation_country_BJ": "Benín", + "payment_mean_contact_creation_country_BL": "San Bartolomé", + "payment_mean_contact_creation_country_BM": "Bermudas", + "payment_mean_contact_creation_country_BN": "Brunéi Darusalam", + "payment_mean_contact_creation_country_BO": "Estado Plurinacional de Bolivia", + "payment_mean_contact_creation_country_BQ": "Bonaire, San Eustaquio y Saba", + "payment_mean_contact_creation_country_BR": "Brasil", + "payment_mean_contact_creation_country_BS": "Bahamas", + "payment_mean_contact_creation_country_BT": "Bután", + "payment_mean_contact_creation_country_BW": "Botsuana", + "payment_mean_contact_creation_country_BY": "Bielorrusia", + "payment_mean_contact_creation_country_BZ": "Belice", + "payment_mean_contact_creation_country_CA": "Canadá", + "payment_mean_contact_creation_country_CC": "Islas Cocos (Keeling)", + "payment_mean_contact_creation_country_CD": "República Democrática del Congo", + "payment_mean_contact_creation_country_CF": "República Centroafricana", + "payment_mean_contact_creation_country_CG": "República del Congo", + "payment_mean_contact_creation_country_CH": "Suiza", + "payment_mean_contact_creation_country_CI": "Costa de Marfil", + "payment_mean_contact_creation_country_CK": "Islas Cook", + "payment_mean_contact_creation_country_CL": "Chile", + "payment_mean_contact_creation_country_CM": "Camerún", + "payment_mean_contact_creation_country_CN": "China", + "payment_mean_contact_creation_country_CO": "Colombia", + "payment_mean_contact_creation_country_CR": "Costa Rica", + "payment_mean_contact_creation_country_CU": "Cuba", + "payment_mean_contact_creation_country_CV": "Cabo Verde", + "payment_mean_contact_creation_country_CW": "Curazao", + "payment_mean_contact_creation_country_CX": "Isla Christmas", + "payment_mean_contact_creation_country_CY": "Chipre", + "payment_mean_contact_creation_country_CZ": "República Checa", + "payment_mean_contact_creation_country_DE": "Alemania", + "payment_mean_contact_creation_country_DG": "Diego García", + "payment_mean_contact_creation_country_DJ": "Yibuti", + "payment_mean_contact_creation_country_DK": "Dinamarca", + "payment_mean_contact_creation_country_DM": "Dominica", + "payment_mean_contact_creation_country_DO": "República Dominicana", + "payment_mean_contact_creation_country_DZ": "Argelia", + "payment_mean_contact_creation_country_EA": "Ciudad Autónoma de Ceuta", + "payment_mean_contact_creation_country_EC": "Ecuador", + "payment_mean_contact_creation_country_EE": "Estonia", + "payment_mean_contact_creation_country_EG": "Egipto", + "payment_mean_contact_creation_country_EH": "Sáhara Occidental", + "payment_mean_contact_creation_country_ER": "Eritrea", + "payment_mean_contact_creation_country_ES": "España", + "payment_mean_contact_creation_country_ET": "Etiopía", + "payment_mean_contact_creation_country_FI": "Finlandia", + "payment_mean_contact_creation_country_FJ": "Fiyi", + "payment_mean_contact_creation_country_FK": "Islas Malvinas", + "payment_mean_contact_creation_country_FM": "Estados Federados de Micronesia", + "payment_mean_contact_creation_country_FO": "Islas Feroe", + "payment_mean_contact_creation_country_FR": "Francia", + "payment_mean_contact_creation_country_GA": "Gabón", + "payment_mean_contact_creation_country_GB": "Reino Unido", + "payment_mean_contact_creation_country_UK": "Reino Unido", + "payment_mean_contact_creation_country_GD": "Granada", + "payment_mean_contact_creation_country_GE": "Georgia", + "payment_mean_contact_creation_country_GF": "Guayana Francesa", + "payment_mean_contact_creation_country_GG": "Guernsey", + "payment_mean_contact_creation_country_GH": "Ghana", + "payment_mean_contact_creation_country_GI": "Gibraltar", + "payment_mean_contact_creation_country_GL": "Groenlandia", + "payment_mean_contact_creation_country_GM": "Gambia", + "payment_mean_contact_creation_country_GN": "Guinea", + "payment_mean_contact_creation_country_GP": "Guadalupe", + "payment_mean_contact_creation_country_GQ": "Guinea Ecuatorial", + "payment_mean_contact_creation_country_GR": "Grecia", + "payment_mean_contact_creation_country_GS": "Georgia del Sur e Islas Sandwich del Sur", + "payment_mean_contact_creation_country_GT": "Guatemala", + "payment_mean_contact_creation_country_GU": "Guam", + "payment_mean_contact_creation_country_GW": "Guinea-Bisáu", + "payment_mean_contact_creation_country_GY": "Guyana", + "payment_mean_contact_creation_country_HK": "Hong Kong", + "payment_mean_contact_creation_country_HN": "Honduras", + "payment_mean_contact_creation_country_HR": "Croacia", + "payment_mean_contact_creation_country_HT": "Haití", + "payment_mean_contact_creation_country_HU": "Hungría", + "payment_mean_contact_creation_country_IC": "Islas Canarias", + "payment_mean_contact_creation_country_ID": "Indonesia", + "payment_mean_contact_creation_country_IE": "Irlanda", + "payment_mean_contact_creation_country_IL": "Israel", + "payment_mean_contact_creation_country_IM": "Isla de Man", + "payment_mean_contact_creation_country_IN": "India", + "payment_mean_contact_creation_country_IO": "Territorio Británico del Océano Índico", + "payment_mean_contact_creation_country_IQ": "Irak", + "payment_mean_contact_creation_country_IR": "República Islámica de Irán", + "payment_mean_contact_creation_country_IS": "Islandia", + "payment_mean_contact_creation_country_IT": "Italia", + "payment_mean_contact_creation_country_JE": "Jersey", + "payment_mean_contact_creation_country_JM": "Jamaica", + "payment_mean_contact_creation_country_JO": "Jordania", + "payment_mean_contact_creation_country_JP": "Japón", + "payment_mean_contact_creation_country_KE": "Kenia", + "payment_mean_contact_creation_country_KG": "Kirguistán", + "payment_mean_contact_creation_country_KH": "Camboya", + "payment_mean_contact_creation_country_KI": "Kiribati", + "payment_mean_contact_creation_country_KM": "Comoras", + "payment_mean_contact_creation_country_KN": "San Cristóbal y Nieves", + "payment_mean_contact_creation_country_KP": "República Popular Democrática de Corea", + "payment_mean_contact_creation_country_KR": "República de Corea", + "payment_mean_contact_creation_country_KW": "Kuwait", + "payment_mean_contact_creation_country_KY": "Islas Caimán", + "payment_mean_contact_creation_country_KZ": "Kazajistán", + "payment_mean_contact_creation_country_LA": "República Democrática Popular de Laos", + "payment_mean_contact_creation_country_LB": "Líbano", + "payment_mean_contact_creation_country_LC": "Santa Lucía", + "payment_mean_contact_creation_country_LI": "Liechtenstein", + "payment_mean_contact_creation_country_LK": "Sri Lanka", + "payment_mean_contact_creation_country_LR": "Liberia", + "payment_mean_contact_creation_country_LS": "Lesoto", + "payment_mean_contact_creation_country_LT": "Lituania", + "payment_mean_contact_creation_country_LU": "Luxemburgo", + "payment_mean_contact_creation_country_LV": "Letonia", + "payment_mean_contact_creation_country_LY": "Libia", + "payment_mean_contact_creation_country_MA": "Marruecos", + "payment_mean_contact_creation_country_MC": "Mónaco", + "payment_mean_contact_creation_country_MD": "Moldavia", + "payment_mean_contact_creation_country_ME": "Montenegro", + "payment_mean_contact_creation_country_MF": "Colectividad de San Martín", + "payment_mean_contact_creation_country_MG": "Madagascar", + "payment_mean_contact_creation_country_MH": "Islas Marshall", + "payment_mean_contact_creation_country_MK": "Antigua República Yugoslava de Macedonia", + "payment_mean_contact_creation_country_ML": "Mali", + "payment_mean_contact_creation_country_MM": "Myanmar", + "payment_mean_contact_creation_country_MN": "Mongolia", + "payment_mean_contact_creation_country_MO": "Macao", + "payment_mean_contact_creation_country_MP": "Islas Marianas del Norte", + "payment_mean_contact_creation_country_MQ": "Martinica", + "payment_mean_contact_creation_country_MR": "Mauritania", + "payment_mean_contact_creation_country_MS": "Montserrat", + "payment_mean_contact_creation_country_MT": "Malta", + "payment_mean_contact_creation_country_MU": "Mauricio", + "payment_mean_contact_creation_country_MV": "Maldivas", + "payment_mean_contact_creation_country_MW": "Malaui", + "payment_mean_contact_creation_country_MX": "México", + "payment_mean_contact_creation_country_MY": "Malasia", + "payment_mean_contact_creation_country_MZ": "Mozambique", + "payment_mean_contact_creation_country_NA": "Namibia", + "payment_mean_contact_creation_country_NC": "Nueva Caledonia", + "payment_mean_contact_creation_country_NE": "Níger", + "payment_mean_contact_creation_country_NF": "Isla Norfolk", + "payment_mean_contact_creation_country_NG": "Nigeria", + "payment_mean_contact_creation_country_NI": "Nicaragua", + "payment_mean_contact_creation_country_NL": "Países Bajos", + "payment_mean_contact_creation_country_NO": "Noruega", + "payment_mean_contact_creation_country_NP": "Nepal", + "payment_mean_contact_creation_country_NR": "Nauru", + "payment_mean_contact_creation_country_NU": "Niue", + "payment_mean_contact_creation_country_NZ": "Nueva Zelanda", + "payment_mean_contact_creation_country_OM": "Omán", + "payment_mean_contact_creation_country_PA": "Panamá", + "payment_mean_contact_creation_country_PE": "Perú", + "payment_mean_contact_creation_country_PF": "Polinesia Francesa", + "payment_mean_contact_creation_country_PG": "Papúa Nueva Guinea", + "payment_mean_contact_creation_country_PH": "Filipinas", + "payment_mean_contact_creation_country_PK": "Pakistán", + "payment_mean_contact_creation_country_PL": "Polonia", + "payment_mean_contact_creation_country_PM": "San Pedro y Miquelón", + "payment_mean_contact_creation_country_PN": "Islas Pitcairn", + "payment_mean_contact_creation_country_PR": "Puerto Rico", + "payment_mean_contact_creation_country_PS": "Territorios Palestinos", + "payment_mean_contact_creation_country_PT": "Portugal", + "payment_mean_contact_creation_country_PW": "Palaos", + "payment_mean_contact_creation_country_PY": "Paraguay", + "payment_mean_contact_creation_country_QA": "Qatar", + "payment_mean_contact_creation_country_RE": "Reunión", + "payment_mean_contact_creation_country_RO": "Rumanía", + "payment_mean_contact_creation_country_RS": "Serbia", + "payment_mean_contact_creation_country_RU": "Federación de Rusia", + "payment_mean_contact_creation_country_RW": "Ruanda", + "payment_mean_contact_creation_country_SA": "Arabia Saudí", + "payment_mean_contact_creation_country_SB": "Islas Salomón", + "payment_mean_contact_creation_country_SC": "Seychelles", + "payment_mean_contact_creation_country_SD": "Sudán", + "payment_mean_contact_creation_country_SE": "Suecia", + "payment_mean_contact_creation_country_SG": "Singapur", + "payment_mean_contact_creation_country_SH": "Santa Elena, Ascensión y Tristán da Cunha", + "payment_mean_contact_creation_country_SI": "Eslovenia", + "payment_mean_contact_creation_country_SJ": "Svalbard y Jan Mayen", + "payment_mean_contact_creation_country_SK": "Eslovaquia", + "payment_mean_contact_creation_country_SL": "Sierra Leona", + "payment_mean_contact_creation_country_SM": "San Marino", + "payment_mean_contact_creation_country_SN": "Senegal", + "payment_mean_contact_creation_country_SO": "Somalia", + "payment_mean_contact_creation_country_SR": "Surinam", + "payment_mean_contact_creation_country_SS": "Sudán del Sur", + "payment_mean_contact_creation_country_ST": "Santo Tomé y Príncipe", + "payment_mean_contact_creation_country_SV": "El Salvador", + "payment_mean_contact_creation_country_SX": "San Martín", + "payment_mean_contact_creation_country_SY": "República Árabe Siria", + "payment_mean_contact_creation_country_SZ": "Suazilandia", + "payment_mean_contact_creation_country_TA": "Tristán da Cunha", + "payment_mean_contact_creation_country_TC": "Islas Turcas y Caicos", + "payment_mean_contact_creation_country_TD": "Chad", + "payment_mean_contact_creation_country_TF": "Territorios Australes Franceses", + "payment_mean_contact_creation_country_TG": "Togo", + "payment_mean_contact_creation_country_TH": "Tailandia", + "payment_mean_contact_creation_country_TJ": "Tayikistán", + "payment_mean_contact_creation_country_TK": "Tokelau", + "payment_mean_contact_creation_country_TL": "Timor Oriental", + "payment_mean_contact_creation_country_TM": "Turkmenistán", + "payment_mean_contact_creation_country_TN": "Túnez", + "payment_mean_contact_creation_country_TO": "Tonga", + "payment_mean_contact_creation_country_TR": "Turquía", + "payment_mean_contact_creation_country_TT": "Trinidad y Tobago", + "payment_mean_contact_creation_country_TV": "Tuvalu", + "payment_mean_contact_creation_country_TW": "Taiwán", + "payment_mean_contact_creation_country_TZ": "República Unida de Tanzania", + "payment_mean_contact_creation_country_UA": "Ucrania", + "payment_mean_contact_creation_country_UG": "Uganda", + "payment_mean_contact_creation_country_UM": "Islas menores alejadas de los Estados Unidos", + "payment_mean_contact_creation_country_US": "Estados Unidos", + "payment_mean_contact_creation_country_UY": "Uruguay", + "payment_mean_contact_creation_country_UZ": "Uzbekistán", + "payment_mean_contact_creation_country_VA": "Estado de la Ciudad del Vaticano", + "payment_mean_contact_creation_country_VC": "San Vicente y las Granadinas", + "payment_mean_contact_creation_country_VE": "República Bolivariana de Venezuela", + "payment_mean_contact_creation_country_VG": "Islas Vírgenes Británicas", + "payment_mean_contact_creation_country_VI": "Islas Vírgenes de los Estados Unidos", + "payment_mean_contact_creation_country_VN": "Vietnam", + "payment_mean_contact_creation_country_VU": "Vanuatu", + "payment_mean_contact_creation_country_WF": "Wallis y Futuna", + "payment_mean_contact_creation_country_WS": "Samoa", + "payment_mean_contact_creation_country_XK": "Kosovo", + "payment_mean_contact_creation_country_YE": "Yemen", + "payment_mean_contact_creation_country_YT": "Mayotte", + "payment_mean_contact_creation_country_ZA": "Sudáfrica", + "payment_mean_contact_creation_country_ZM": "Zambia", + "payment_mean_contact_creation_country_ZW": "Zimbabue", + "payment_mean_contact_creation_country_UNKNOWN": "Mi país no aparece en la lista", + "payment_mean_contact_creation_legalform_individual": "Particular o autónomo", + "payment_mean_contact_creation_legalform_association": "Asociación", + "payment_mean_contact_creation_legalform_corporation": "Empresa", + "payment_mean_contact_creation_legalform_administration": "Administración", + "payment_mean_contact_creation_legalform_personalcorporation": "Trabajador autónomo", + "payment_mean_contact_creation_legalform_other": "Otro", + "payment_mean_contact_creation_language_de_DE": "Alemán", + "payment_mean_contact_creation_language_en_AU": "Inglés (Australia)", + "payment_mean_contact_creation_language_en_CA": "Inglés (Canadá)", + "payment_mean_contact_creation_language_en_GB": "Inglés", + "payment_mean_contact_creation_language_en_US": "Inglés (Estados Unidos)", + "payment_mean_contact_creation_language_es_ES": "Español", + "payment_mean_contact_creation_language_fr_CA": "Francés (Canadá)", + "payment_mean_contact_creation_language_fr_FR": "Francés", + "payment_mean_contact_creation_language_fr_MA": "Francés (Marruecos)", + "payment_mean_contact_creation_language_fr_SN": "Francés (Senegal)", + "payment_mean_contact_creation_language_fr_TN": "Francés (Túnez)", + "payment_mean_contact_creation_language_pl_PL": "Polaco", + "payment_mean_contact_creation_language_cs_CZ": "Checo", + "payment_mean_contact_creation_language_fi_FI": "Finés", + "payment_mean_contact_creation_language_en_IE": "Irlandés", + "payment_mean_contact_creation_language_it_IT": "Italiano", + "payment_mean_contact_creation_language_lt_LT": "Lituano", + "payment_mean_contact_creation_language_nl_NL": "Holandés", + "payment_mean_contact_creation_language_pt_PT": "Portugués", + "payment_mean_contact_contact_creation_submit": "Confirmar y guardar", + "payment_mean_contact_contact_creation_cancel": "Cancelar", + "mean_manage_my_services": "Administrar mis servicios", + "mean_table_head_creation_date": "Fecha de creación", + "mean_table_head_description": "Descripción", + "mean_table_head_type": "Forma de pago", + "mean_table_head_options": "Opciones", + "payment_mean_no_description": "No hay ninguna descripción.", + "payment_mean_description_error": "Se ha producido un error al modificar la descripción:", + "payment_mean_default_mean_error": "Se ha producido un error, disculpe las molestias.", + "add_mean_select_title_choose": "Elija", + "add_mean_select_title_no_choice": "No hay más opciones para elegir", + "add_mean_unable_to_get_payment_means": "No se han podido cargar las formas de pago disponibles", + "mean_table_head_state": "Estado", + "mean_table_head_actions": "Acciones", + "mean_table_head_3d_secure": "3D Secure", + "mean_table_head_3d_secure_true": "Sí", + "mean_table_head_3d_secure_false": "No", + "mean_table_tooltip_more_actions": "Más acciones para esta forma de pago", + "deleteMean_title": "Eliminación de una forma de pago", + "paymentMean_delete_message_paypal": "Atención: Va a eliminar definitivamente la forma de pago asociada a la cuenta PayPal:", + "paymentMean_delete_message_bankAccount": "Atención: Va a eliminar definitivamente la forma de pago asociada a la cuenta bancaria:", + "paymentMean_delete_message_creditCard": "Atención: Va a eliminar definitivamente la forma de pago asociada a la tarjeta número:", + "paymentMean_label_creditcard_owner_name": "Nombre que figura en la tarjeta bancaria", + "paymentMean_label_creditcard_number": "Número", + "paymentMean_label_creditcard_validation": "Validación", + "paymentMean_label_creditcard_expiration": "Expiración", + "paymentMean_label_iban": "IBAN", + "paymentMean_label_bic": "BIC", + "paymentMean_label_addressNumber": "Número", + "paymentMean_label_addressStreetName": "Nombre de la vía", + "paymentMean_label_addressPostalCode": "Código postal", + "paymentMean_label_addressTown": "Localidad", + "paymentMean_label_ownerName": "Nombre y apellidos del propietario o nombre de la organización propietaria", + "paymentMean_label_ownerAddress": "Dirección del titular de la cuenta", + "paymentMean_error_bic_bank": "El código de la entidad bancaria es incorrecto.", + "paymentMean_error_bic_valid": "El BIC no es válido.", + "paymentMean_error_required": "Este campo es obligatorio.", + "paymentMean_error_iban_base": "La base del IBAN no es válida.", + "paymentMean_error_iban_country": "El país del IBAN no es válido.", + "paymentMean_error_iban_key": "La clave del IBAN no es válida.", + "paymentMean_error_iban_valid": "El IBAN no es válido.", + "paymentMean_error_minlength": "Mínimo 5 caracteres.", + "paymentMean_error_addressPostalCode_required": "Este campo es obligatorio.", + "paymentMean_error_addressPostalCode_min": "El código postal no es válido.", + "paymentMean_error_addressPostalCode_max": "El código postal no es válido.", + "paymentMean_error_addressPostalCode_pattern": "El código postal debe contener cinco cifras.", + "paymentMean_error_maxlength": "El texto debe tener menos de 255 caracteres.", + "paymentType_delete_error": "Se ha producido un error al eliminar la forma de pago", + "paymentType_modify_error": "Se ha producido un error al modificar la forma de pago.", + "paymentType_delete_success": "Forma de pago eliminada", + "paymentMean_add_message_paypal": "Haciendo clic en el botón «Añadir», podrá conectarse a su cuenta PayPal para autorizar a OVH realizar cargos a su cuenta PayPal cuando genere sus próximas facturas.", + "paymentMean_add_message_creditCard": "Para verificar la tarjeta bancaria memorizada, vamos a proceder a un intento de pago.
El importe de 1 euro no se cargará a su cuenta una vez recibida la confirmación de la entidad bancaria.
Su tarjeta bancaria se activará de inmediato.", + "paymentMean_add_message_creditCard_CA": "OVH solicita la autorización del cargo, que puede aparecer en su cuenta como un movimiento en curso, pero no solicitará la finalización de esta autorización. Así pues, el importe no se cargará en su cuenta o le será devuelto por su entidad bancaria. ", + "paymentMean_add_message_bankAccount": "Al hacer clic en el botón «Añadir», se descargará un documento.
Siga el procedimiento que se describe en dicho documento para validar la forma de pago. Su cuenta bancaria se validará en las 24-48 horas posteriores a la recepción de la autorización de domiciliación.", + "paymentType_status_valid": "Aceptado", + "paymentType_status_expired": "Expirado", + "paymentType_status_proposedByCustomer": "Pendiente de validación", + "paymentType_status_tooManyFailures": "No válido (demasiados intentos en error)", + "paymentType_status_broken": "Roto", + "paymentType_status_canceled": "Cancelado", + "paymentType_status_canceling": "Cancelando", + "paymentType_status_canceledbycustomer": "Cancelado por el usuario", + "paymentType_status_canceled_by_customer": "Cancelado por el usuario", + "paymentType_status_created": "Pendiente de validación", + "paymentType_status_error": "En error", + "paymentType_status_validforcredit": "Válido para abonar los pagos", + "paymentType_add_error": "Se ha producido un error al añadir la forma de pago", + "paymentType_status_pendingValidation": "En validación", + "paymentType_status_waiting_for_documents": "Pendiente de recepción", + "payment_mean_add_paypal": "Activar una suscripción PayPal", + "payement_mean_add_creditCard": "Generar una orden de pedido", + "payment_mean_get_validation": "Obtener el procedimiento de validación", + "payment_mean_return_by_mail_procedure": "Enviar el procedimiento por correo postal", + "paymentType_add_validation_description": "Debe validar la adición de su forma de pago.", + "paymentType_add_success_url": "Haga clic aquí para que le redirijamos a una página segura y finalizar la operación.", + "paymentType_bankAccount_add_success_with_download": "Se ha añadido la cuenta bancaria, pero es necesario validarla para que esté activa. Siga el procedimiento descrito en este documento para validar la forma de pago y envíenoslo por correo postal.", + "paymentType_bankAccount_pending_validation": "Ha añadido una cuenta bancaria en su área de cliente. Aún no hemos recibido la autorización de domiciliación a dicha cuenta que debe enviarnos por correo postal.", + "paymentType_bankAccount_processing_delay": "Su cuenta bancaria se validará en las 24-48 horas posteriores a la recepción de su autorización de domiciliación.", + "payment_mean_radio_select_default": "Utilizar esta forma de pago automático por defecto.", + "payment_mean_select_default": "Establecer como forma de pago por defecto", + "payment_mean_delete_payment_mean": "Borrar la forma de pago", + "payment_mean_description_add": "Añadir una descripción", + "payment_mean_description_edit": "Cambiar la descripción", + "payment_mean_description_input": "Descripción de la forma de pago", + "payment_mean_description_save": "Guardar la descripción", + "payment_mean_description_cancel": "Cancelar las modificaciones en la descripción", + "ovhAccount_table_type_CANCEL_CREDIT": "Anulación de la devolución", + "ovhAccount_table_type_CANCEL_CREDIT_BILL": "Cancelación de factura", + "ovhAccount_table_type_CANCEL_CREDIT_REFUND": "Cancelación de devolución", + "ovhAccount_table_type_CANCEL_CREDIT_STATEMENT_INCOME": "Cancelación de recarga de cuenta de prepago", + "ovhAccount_table_type_CANCEL_CREDIT_STATEMENT_OUTCOME": "Cancelación de transferencia a cuenta bancaria", + "ovhAccount_table_type_CANCEL_CREDIT_DEPOSIT": "Cancelación del pago", + "ovhAccount_table_type_CANCEL_DEBIT": "Anulación del cargo", + "ovhAccount_table_type_CANCEL_DEBIT_BILL": "Cancelación de factura", + "ovhAccount_table_type_CANCEL_DEBIT_REFUND": "Cancelación de devolución", + "ovhAccount_table_type_CANCEL_DEBIT_STATEMENT_INCOME": "Cancelación de recarga de cuenta de prepago", + "ovhAccount_table_type_CANCEL_DEBIT_STATEMENT_OUTCOME": "Cancelación de transferencia a cuenta bancaria", + "ovhAccount_table_type_CANCEL_PRE_DEBIT": "Anulación del cargo", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_BILL": "Factura", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_REFUND": "Abono", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_STATEMENT_INCOME": "Recarga de cuenta de prepago", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_STATEMENT_OUTCOME": "Transferencia bancaria", + "ovhAccount_table_type_CREDIT": "Crédito", + "ovhAccount_table_type_CREDIT_BILL": "Factura", + "ovhAccount_table_type_CREDIT_DEPOSIT": "Pago mensual", + "ovhAccount_table_type_CREDIT_REFUND": "Abono", + "ovhAccount_table_type_CREDIT_STATEMENT_INCOME": "Recarga de cuenta de prepago", + "ovhAccount_table_type_CREDIT_STATEMENT_OUTCOME": "Transferencia bancaria", + "ovhAccount_table_type_DEBIT": "Débito", + "ovhAccount_table_type_DEBIT_BILL": "Factura", + "ovhAccount_table_type_DEBIT_REFUND": "Abono", + "ovhAccount_table_type_DEBIT_STATEMENT_INCOME": "Recarga de cuenta de prepago", + "ovhAccount_table_type_DEBIT_STATEMENT_OUTCOME": "Transferencia bancaria", + "ovhAccount_table_type_DEBIT_WITHDRAWAL": "Débito", + "ovhAccount_table_type_PRE_CREDIT": "Crédito", + "ovhAccount_table_type_PRE_CREDIT_BILL": "Factura", + "ovhAccount_table_type_PRE_CREDIT_REFUND": "Abono", + "ovhAccount_table_type_PRE_CREDIT_STATEMENT_INCOME": "Recarga de cuenta de prepago", + "ovhAccount_table_type_PRE_CREDIT_STATEMENT_OUTCOME": "Transferencia bancaria", + "ovhAccount_table_type_PRE_DEBIT": "Débito", + "ovhAccount_table_type_PRE_DEBIT_BILL": "Factura", + "ovhAccount_table_type_PRE_DEBIT_REFUND": "Abono", + "ovhAccount_table_type_PRE_DEBIT_STATEMENT_INCOME": "Recarga de cuenta de prepago", + "ovhAccount_table_type_PRE_DEBIT_STATEMENT_OUTCOME": "Transferencia bancaria", + "ovhAccount_table_head_payment_type": "Forma de pago", + "ovhAccount_table_type_payment_CASH": "Efectivo", + "ovhAccount_table_type_payment_CHARGEBACK": "Anulación del pago", + "ovhAccount_table_type_payment_CHEQUE": "Cheque", + "ovhAccount_table_type_payment_CREDIT_CARD": "Tarjeta bancaria", + "ovhAccount_table_type_payment_DEPOSIT": "Pago mensual", + "ovhAccount_table_type_payment_DEBT_ACCOUNT": "Cuenta con saldo negativo", + "ovhAccount_table_type_payment_EDINAR": "e-Dinar", + "ovhAccount_table_type_payment_FIDELITY_POINTS": "Mis puntos", + "ovhAccount_table_type_payment_FREE": "Gratuito", + "ovhAccount_table_type_payment_IDEAL": "iDEAL", + "ovhAccount_table_type_payment_MANDAT": "Giro", + "ovhAccount_table_type_payment_MULTIBANCO": "Multibanco", + "ovhAccount_table_type_payment_NONE": "Ninguno", + "ovhAccount_table_type_payment_OVH_ACCOUNT": "Cuenta de prepago", + "ovhAccount_table_type_payment_PAYMENT_MANDATE": "Giro", + "ovhAccount_table_type_payment_PAYPAL": "Paypal", + "ovhAccount_table_type_payment_PLATNOSCI": "Płatności", + "ovhAccount_table_type_payment_REFUND": "Abono", + "ovhAccount_table_type_payment_TRANSFER": "Transferencia", + "ovhAccount_table_type_payment_WITHDRAWAL": "Domiciliación bancaria", + "ovhAccount_table_type_payment_CREDIT_ACCOUNT": "Cuenta de crédito", + "ovhAccount_table_type_payment_DIGITAL_LAUNCH_PAD": "Voucher DLP", + "ovhAccount_table_type_payment_INCUBATOR_ACCOUNT": "Cuenta Incubator", + "ovhAccount_table_type_payment_PAYU": "PayU", + "ovhAccount_retrieve_title": "Transferencia a una cuenta bancaria ", + "ovhAccount_renew_title": "Recarga de cuenta de prepago", + "ovhAccount_renew_step1_msg": "Puede recargar su cuenta para abonar sus facturas o para anticipar el pago de próximas facturas.", + "ovhAccount_renew_step1_erreurmin": "El importe de la recarga debe ser de al menos 10 {{t0}} y el saldo de su cuenta debe ser positivo.", + "ovhAccount_renew_step1_erreurformat": "El importe introducido es incorrecto. Por favor, utilice únicamente cifras, con el punto o la coma como separador decimal.", + "ovhAccount_renew_step1_amount": "Importe ({{t0}}):", + "ovhAccount_renew_step2_msg": "Resumen del pedido", + "ovhAccount_renew_step2_credit": "Importe de la recarga:", + "ovhAccount_renew_step2_error": "Se ha producido un error, disculpe las molestias.", + "ovhAccount_renew_step2_success": "Su recarga (pedido n° {{t1}}) estará disponible en su cuenta de prepago una vez recibido el pago.", + "ovhAccount_account_list_error": "Se ha producido un error al cargar la lista de cuentas.", + "ovhAccount_account_list_title": "- Cuenta", + "ovhAccount_account_list_empty": "No hay ninguna cuenta.", + "telconso_menu_this_month": "Mes corriente", + "telconso_menu_last_month": "Meses anteriores", + "telconso_search": "Buscar una línea", + "telconso_table_empty": "No hay elementos", + "telconso_table_line_empty": "No hay líneas", + "telconso_title_current_month": "Seguimiento de mi consumo de telefonía del {{t0}} al {{t1}}", + "telconso_consumption": "Consumo", + "telconso_plan_to": "Tarifa plana de {{t0}}", + "telconso_allowed_outplan": "Consumo adicional autorizado", + "telconso_service_name_consumption": "Consumo", + "telconso_nb_lines": "Número de líneas:", + "telconso_nb_groups": "Número de grupos:", + "telconso_callout": "{{t0}} % de llamadas enviadas", + "telconso_callin": "{{t0}} % de llamadas recibidas", + "telconso_faxout": "{{t0}} % de fax enviados", + "telconso_faxin": "{{t0}} % de fax recibidos", + "telconso_to_fixe": "A fijo", + "telconso_to_mobiles": "A móvil", + "telconso_to_special": "A números especiales", + "telconso_send_fax": "Envío de fax", + "telconso_fax": "Fax", + "telconso_calls": "Número de llamadas", + "telconso_faxs": "Número de faxes", + "telconso_anonymous": "Anónimo", + "telconso_in": "Recibidos", + "telconso_out": "Emitida", + "telconso_com_time": "Tiempo de com.", + "telconso_call_count": "Número", + "telconso_line": "Línea", + "telconso_lines": "Líneas", + "telconso_price": "Precio", + "telconso_outplan": "Consumo adicional (+ IVA)", + "telconso_group_outplan": "Consumo adicional", + "telconso_group": "Grupo", + "telconso_all_groups": "Todos los grupos", + "telconso_select_group": "Seleccione un grupo para más detalles", + "telconso_calls_details": "Detalles de las llamadas", + "telconso_fax_details": "Detalles de los faxes", + "telconso_line_myline": "Mi línea {{t0}}", + "telconso_line_include": "Consumo incluido en la tarifa", + "telconso_line_outplan": "Consumo no incluido en la tarifa", + "telconso_next_billing": "Fecha de la siguiente factura:", + "tel_conso_conso_date": "Fecha", + "tel_conso_conso_num_emit": "Número remitente", + "tel_conso_conso_num_recv": "Número de destino", + "tel_conso_conso_tranfert": "Desviado a", + "tel_conso_conso_time": "Duración", + "tel_conso_conso_include": "Incluido", + "tel_conso_conso_outplan": "Consumo adicional (+ IVA)", + "tel_conso_conso_included": "Incluido", + "tel_conso_conso_notincluded": "No incluido", + "tel_conso_calls": "llamadas", + "tel_conso_tabs_inc": "Recibidos", + "tel_conso_tabs_out": "Emitida", + "tel_conso_tabs_trs": "Transferidas", + "tel_conso_tabs_incfix": "Desde fijo", + "tel_conso_tabs_incmob": "Desde móvil", + "tel_conso_tabs_incspe": "Desde números especiales", + "tel_conso_tabs_outfix": "A fijo", + "tel_conso_tabs_outmob": "A móvil", + "tel_conso_tabs_outspe": "A números especiales", + "tel_conso_tabs_trsfix": "A fijo", + "tel_conso_tabs_trsmob": "A móvil", + "tel_conso_tabs_trsspe": "A números especiales", + "tel_conso_tabs_sent": "Enviadas", + "tel_conso_tabs_received": "Recibidos", + "tel_conso_error": "Se ha producido un error al cargar la información", + "tel_conso_h": "h", + "tel_conso_min": "min", + "tel_conso_s": "seg", + "tel_lastconso_title": "Detalle de llamadas de los meses anteriores", + "tel_lastconso_month": "Mes", + "tel_lastconso_priceplan": "Importe total", + "tel_lastconso_outplan": "Consumo adicional", + "tel_lastconso_sheet": "Consumo", + "tel_lastconso_sheet_down": "Descargar", + "tel_lastconso_sheet_progress": "En proceso", + "tel_lastconso_month_date_display": "MMM YYYY", + "fidelity_title": "Mis puntos", + "fidelity_get_accounts_error": "Se ha producido un error al cargar la información.", + "fidelity_header_date": "Fecha", + "fidelity_header_order": "Transacción", + "fidelity_header_operation": "Operación", + "fidelity_header_credit": "Crédito", + "fidelity_header_debit": "Débito", + "fidelity_header_balance": "Saldo", + "fidelity_points": "punto(s)", + "fidelity_creditOrder_title": "Recargar la cuenta", + "fidelity_creditOrder_step1_msg": "Puede recargar su cuenta para para abonar sus compras o renovar sus servicios mediante una renovación «manual». (1 punto = 0,01 {{t0}} + IVA)", + "fidelity_creditOrder_step1_amount": "Importe (en puntos)", + "fidelity_creditOrder_step1_erreurformat": "El importe introducido es incorrecto. Introduzca únicamente cifras.", + "fidelity_creditOrder_step1_erreurmin": "El importe de la recarga debe ser de al menos {{t0}} puntos.", + "fidelity_creditOrder_step1_erreurmax": "El importe máximo de la recarga es de {{t0}} puntos.", + "fidelity_creditOrder_step2_msg": "Resumen del pedido", + "fidelity_creditOrder_step2_credit": "Importe a recargar:", + "fidelity_creditOrder_step2_error": "Se ha producido un error al cargar la información.", + "fidelity_creditOrder_step2_success": "Su recarga (pedido n° {{t1}}) estará disponible en su cuenta de prepago una vez recibido el pago.", + "fidelity_no_item": "No hay elementos para mostrar.", + "fidelity_balance_info": "Situación a {{t0}}: {{t1}} punto(s)", + "fidelity_no_account": "No tiene una cuenta de fidelidad.", + "sla_table_head_date": "Fecha", + "sla_table_head_description": "Descripción", + "sla_table_head_refund": "Compensación", + "sla_table_apply": "Aplicar", + "sla_informations_error": "Se ha producido un error al cargar la información. Vuelva a intentarlo más tarde:", + "sla_apply_error": "Se ha producido un error al solicitar la compensación:", + "sla_apply_success": "Se ha registrado correctamente la solicitud de compensación. Se hará efectiva en unas horas. ", + "sla_apply_no_data": "No tiene derecho a ninguna compensación.", + "sla_table_head_service_name": "Nombre del servicio", + "sla_table_head_service_description": "Descripción del servicio", + "sla_table_head_service_sla_plan": "SLA contractual", + "sla_table_head_service_sla_application": "Beneficio otorgado", + "sla_table_services_empty": "No hay servicios", + "sla_informations": "A continuación, le mostramos la lista de operaciones de compensación que puede solicitar. Para ello, haga clic en el botón «Aplicar» correspondiente. ", + "sla_informations_end": "Dispone hasta el {{t0}} para solicitar la compensación correspondiente en el marco de nuestro SLA.", + "sla_informations_applied": "Su solicitud se ha registrado correctamente y será tratada lo antes posible.", + "sla_informations_applied_all": "Su solicitud se ha registrado correctamente y será tratada lo antes posible.", + "sla_informations_status_created": "Creada", + "sla_informations_status_notApplicable": "No aplicable", + "sla_informations_status_completed": "Aprobada", + "sla_informations_status_requested": "En tratamiento", + "voucher_table_head_id": "ID", + "voucher_table_head_balance": "Saldo", + "voucher_table_head_voucher_open_date": "Fecha de inicio", + "voucher_table_head_voucher_last_update": "Última actualización", + "voucher_table_empty": "No hay códigos promocionales.", + "voucher_informations_error": "Se ha producido un error:", + "vouchers_title": "Códigos promocionales", + "vouchers_movements_title": "Movimientos del código promocional {{t0}}", + "voucher_movements_table_head_id": "ID", + "voucher_movements_table_head_description": "Descripción", + "voucher_movements_table_head_date": "Fecha", + "voucher_movements_table_head_amount": "Importe", + "voucher_movements_table_head_previous_balance": "Saldo anterior", + "voucher_movements_table_head_balance": "Saldo", + "voucher_movements_table_head_operation": "Operación", + "voucher_movements_table_head_order": "Pedido", + "voucher_movements_table_empty": "No hay movimientos.", + "voucher_movements_operation_type_cancel-credit": "Se ha cancelado la recarga.", + "voucher_movements_operation_type_cancel-debit": "Se ha cancelado el pago.", + "voucher_movements_operation_type_cancel-pre-debit": "Cancelación del prepago", + "voucher_movements_operation_type_credit": "Crédito", + "voucher_movements_operation_type_debit": "Débito", + "voucher_movements_operation_type_pre-credit": "Prerrecarga", + "voucher_movements_operation_type_pre-debit": "Prepago", + "statements_account_automatic_payment_inactive": "La domiciliación bancaria no está disponible para la renovación de los servicios.", + "statements_account_no_default_payment_mean": "No ha guardado una forma de pago por defecto.", + "statements_account_invalid_default_payment_mean": "Su forma de pago por defecto ya no es válida.", + "statements_account_manage_my_payment_means": "Administrar mis formas de pago ", + "statements_account_pay_debt_button": "Abonar el importe pendiente ahora", + "statements_table_caption": "Pedidos de su cuenta", + "statements_table_header_order": "Pedido", + "statements_table_header_date": "Fecha", + "statements_table_header_due_date": "Fecha de vencimiento", + "statements_table_no_due_date": "Inmediato", + "statements_table_header_amount": "Importe", + "statements_table_header_balance": "Saldo pendiente", + "statements_table_header_details": "Detalles", + "statements_table_no_detail": "No hay datos disponibles. ", + "statements_table_invoice_link": "Consultar la factura {{t0}} en otra ventana.", + "statements_table_order_link": "Consultar el pedido {{t0}} en otra ventana.", + "statements_table_detail_label": "Ver los detalles de esta factura.", + "statements_table_detail_link": "Ver los detalles de la deuda {{t0}}.", + "statements_table_pay_debt_button": "Abonar el importe pendiente ahora", + "statements_summary_error": "Se ha producido un error al cargar el saldo de su cuenta.", + "statements_detail_error": "Se ha producido un error al cargar los detalles de su cuenta.", + "statements_single_debt_error": "Se ha producido un error al cargar los detalles de esta línea {{t0}}.", + "statements_payment_mean_error": "Se ha producido un error al cargar sus formas de pago.", + "statements_details_summary_title": "Resumen del pedido", + "statements_details_operations_title": "Historial de operaciones", + "statements_details_page_loader": "Cargando la información...", + "statements_details_page_operations": "Se ha producido un error al cargar el historial de operaciones.", + "statements_details_return_to_statements": "Volver a la página anterior", + "statements_details_table_caption": "Lista de las operaciones en la factura", + "statements_details_table_header_date": "Fecha", + "statements_details_table_header_operation": "Operación", + "statements_details_table_header_status": "Estado", + "statements_details_table_header_amount": "Importe", + "statements_details_table_header_document": "Documento", + "statements_details_table_order_link": "Abrir el pedido asociado a esta operación en otra ventana.", + "statements_details_table_invoice_html_link": "Consultar la factura en versión HTML (nueva ventana)", + "statements_details_table_invoice_pdf_link": "Consultar la factura en versión PDF (nueva ventana)", + "statements_operation_status_done": "Completado", + "statements_operation_status_cancelled": "Cancelada", + "statements_operation_status_failed": "Incompleto", + "statements_operation_status_todo": "Pendiente de pago", + "statements_operation_status_pending": "En tratamiento", + "statements_operation_status_paid": "Pagada", + "statements_operation_description_order": "Creación del pedido", + "statements_operation_description_cancel": "Anulación de una operación", + "statements_operation_description_creditcard_manual": "Pago manual en tarjeta de crédito", + "statements_operation_description_creditcard_automatic": "Cobro automático en tarjeta de crédito", + "statements_operation_description_refund_creditcard": "Devolución en tarjeta de crédito", + "statements_operation_description_unpaid_creditcard": "Cobro rechazado en tarjeta de crédito", + "statements_operation_description_paypal_manual": "Pago manual en PayPal", + "statements_operation_description_paypal_automatic": "Cobro automático en PayPal", + "statements_operation_description_refund_paypal": "Devolución en PayPal", + "statements_operation_description_unpaid_paypal": "Cobro rechazado en PayPal", + "statements_operation_description_sepa_automatic": "Cargo automático en cuenta bancaria", + "statements_operation_description_refund_sepa": "Devolución en cuenta bancaria", + "statements_operation_description_unpaid_sepa": "Cargo rechazado en cuenta bancaria", + "statements_operation_description_credit_account_automatic": "Cargo automático en cuenta de prepago OVH", + "statements_operation_description_refund_credit_account": "Devolución en cuenta de prepago OVH", + "statements_operation_description_unpaid_credit_account": "Anulación de un pago a través de la cuenta de prepago OVH", + "statements_operation_description_check_manual": "Pago por cheque", + "statements_operation_description_refund_check": "Devolución de una transferencia bancaria", + "statements_operation_description_unpaid_check": "Cheque rechazado", + "statements_operation_description_transfer_manual": "Pago por transferencia bancaria", + "statements_operation_description_unpaid_transfer": "Transferencia bancaria rechazada", + "statements_operation_description_warrant_manual": "Pago por mandato", + "statements_operation_description_refund_warrant": "Devolución de un mandato", + "statements_operation_description_unpaid_warrant": "Mandato rechazado", + "statements_operation_description_refund": "Devolución", + "statements_operation_description_refund_unknown": "Devolución", + "billing_date_range_choose_custom_date": "Indicar un período", + "billing_date_range_text": "Del {{t0}} al {{t1}}", + "billing_price_ttc_label": "{{price}} IVA incl.", + "billing_guides_header": "Guías", + "billing_guides_header_manage_payment_methods_guides": "Administrar mis formas de pago", + "billing_guides_header_managing_orders_guides": "Gestionar mis pedidos de OVHcloud", + "billing_guides_header_purchase_order_guides": "Concepto de número de pedido o «purchase order» (PO)", + "billing_guides_header_managing_bills_guides": "Gestionar mis facturas de OVHcloud", + "billing_guides_header_automatic_renewal_guides": "Gestionar la renovación de mis servicios", + "fidelity_creditOrder_submit_error": "Se ha producido un error al cargar los puntos.", + "fidelity_creditOrder_submit_success": "Su crédito de {{t0}} points se ha generado correctamente. Ya puede realizar su pedido en la pestaña Mis pedidos." +} diff --git a/packages/manager/modules/new-billing/src/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..f3820ba4738d --- /dev/null +++ b/packages/manager/modules/new-billing/src/translations/Messages_fr_CA.json @@ -0,0 +1,920 @@ +{ + "billingError": "Une erreur s'est produite lors du chargement des informations", + "title_from": "du", + "title_to": "au", + "period_tooltip_from": "Sélectionnez une date de début", + "period_tooltip_to": "Sélectionnez une date de fin", + "table_download_html": "Voir la version HTML", + "table_download_pdf": "Voir la version PDF", + "table_download_html_order": "Voir la commande au format HTML", + "table_download_pdf_order": "Voir la commande au format PDF", + "table_download_html_invoice": "Voir la facture au format HTML", + "table_download_pdf_invoice": "Voir la facture au format PDF", + "table_download_pdf_beta": "Voir la version PDF (Beta)", + "todo": "A venir", + "wizard_order": "Commander", + "wizard_cancel": "Annuler", + "wizard_confirm": "Valider", + "wizard_pay": "Régler", + "wizard_renew": "Renouveler", + "wizard_next": "Suivant", + "wizard_previous": "Précédent", + "common_order_ascending": "tri par ordre croissant", + "common_order_descending": "tri par ordre décroissant", + "common_payment_type_cash": "Liquide", + "common_payment_type_chargeback": "Paiement refusé", + "common_payment_type_cheque": "Chèque", + "common_payment_type_creditCard": "Carte bancaire", + "common_payment_type_CREDIT_CARD": "Carte bancaire", + "common_payment_type_debtAccount": "Prélèvement SEPA", + "common_payment_type_DEBT_ACCOUNT": "Prélèvement SEPA", + "common_payment_type_deferredPaymentAccount": "Compte de paiement différé", + "common_payment_type_DEFERRED_PAYMENT_ACCOUNT": "Compte de paiement différé", + "common_payment_type_deposit": "Deposit", + "common_payment_type_edinar": "e-DINAR", + "common_payment_type_fidelityPoints": "Mes points", + "common_payment_type_FIDELITY_POINTS": "Mes points", + "common_payment_type_free": "Gratuit", + "common_payment_type_ideal": "iDEAL", + "common_payment_type_mandat": "Mandat cash", + "common_payment_type_multibanco": "Multibanco", + "common_payment_type_none": "Aucun", + "common_payment_type_ovhAccount": "Compte prépayé", + "common_payment_type_OVH_ACCOUNT": "Compte prépayé", + "common_payment_type_paymentMandate": "Mandat administratif", + "common_payment_type_PAYMENT_MANDATE": "Mandat administratif", + "common_payment_type_paypal": "Paypal", + "common_payment_type_payu": "PayU", + "common_payment_type_platnosci": "Płatności", + "common_payment_type_refund": "Avoir", + "common_payment_type_transfer": "Virement", + "common_payment_type_withdrawal": "Prélèvement", + "common_payment_type_bankAccount": "Compte bancaire", + "common_payment_type_BANK_ACCOUNT": "Compte bancaire", + "common_payment_type_digitalLaunchPad": "Digital launchpad", + "common_payment_type_DIGITAL_LAUNCH_PAD": "Digital launchpad", + "common_payment_type_unavailable": "Information sur le paiement non-disponible", + "common_payment_type_0": "Tous", + "common_see_another_month": "Voir un autre mois", + "common_choose": "Choisir", + "common_payment_type_creditCard_expiration_date": "Date d'expiration :", + "common_time_period_in_years": "{{t0}} ans", + "common_time_period_one_year": "1 an", + "common_time_period_in_months": "{{t0}} mois", + "common_time_period_one_month": "1 mois", + "pagination_page": "Page {{ current }} / {{ last }}", + "pagination_display": "Afficher", + "pagination_display_all": "Tout", + "pagination_go": "Ok", + "history_title2": "Mes factures", + "history_table_head_date": "Date d'émission", + "history_table_head_id": "Référence", + "history_table_head_order_id": "Numéro de commande", + "history_table_head_product": "Produit", + "history_table_head_payment": "Moyen de paiement", + "history_table_head_payment_select_filter": "Filtrer par moyen de paiement", + "history_table_head_total_with_VAT": "Montant TTC", + "history_table_head_total": "Montant", + "history_table_head_balance_due": "Solde à payer", + "history_table_head_due_date": "Date due", + "history_table_head_actions": "Actions", + "history_table_actions_tooltip": "Plus de détails sur cette facture", + "history_table_empty": "Vous n'avez pas de facture pour le mois sélectionné", + "history_table_information_not_available": "Information non-disponible", + "history_table_debt_due_immediately": "Immédiate", + "history_table_debt_paid": "Payée", + "payments_error": "Une erreur est survenue, veuillez nous excuser pour la gêne occasionnée.", + "payments_title": "Suivi des paiements", + "payments_description": "La liste suivante présente les paiements qui ont été réalisés sur votre moyen de paiement par défaut. Chacun des paiements peut regrouper une ou plusieurs factures.", + "payments_table_head_date": "Date de paiement", + "payments_table_head_id": "Référence", + "payments_table_head_type": "Moyen de paiement", + "payments_table_head_amount": "Montant total", + "payments_table_head_actions": "Actions", + "payments_table_actions_tooltip": "Plus de détails sur ce paiement", + "payments_table_type_not_available": "Information non-disponible", + "payments_table_empty": "Vous n'avez pas de paiement pour la période sélectionnée.", + "payments_request_pending": "Un règlement de solde est en cours. Cliquez sur ce lien pour en savoir plus.", + "payments_details_link": "Voir les détails pour ce paiement", + "payment_details_payment_id": "Référence", + "payment_details_payment_date": "Date", + "payment_details_payment_amount": "Montant total", + "payment_details_table_header_id": "Référence de facture", + "payment_details_table_header_date": "Date d'émission", + "payment_details_table_header_payment": "Montant de l'opération", + "payment_details_table_header_document": "Document", + "payment_details_title": "Détails du paiement", + "payments_details_table_empty": "Aucun détail disponible.", + "payment_details_return_to_payments": "Retour à la page précédente", + "orders_page_title": "Mes commandes", + "orders_table_head_date": "Date", + "orders_table_head_id": "Numéro de commande", + "orders_table_head_status": "État", + "orders_table_head_total_taxes_included": "Montant avec taxes", + "orders_table_head_total": "Montant", + "orders_table_empty": "Vous n'avez pas de commande.", + "orders_table_empty_with_filter": "Vous n'avez pas de commande pour ces critères:", + "orders_informations_error": "Une erreur s'est produite :", + "orders_order_status_cancelled": "Annulée", + "orders_order_status_cancelling": "Annulation en cours", + "orders_order_status_checking": "Validation", + "orders_order_status_delivered": "Finalisée", + "orders_order_status_delivering": "Livraison en cours", + "orders_order_status_documents_requested": "En attente de documents", + "orders_order_status_not_paid": "Paiement non reçu", + "orders_order_status_unknown": "Inconnu", + "orders_order_bc_expired": "Commande expirée", + "orders_order_status_filter_progress": "En cours", + "orders_order_status_filter_all": "Toutes", + "orders_order_status_filter_terminated": "Terminées", + "orders_order_status_filter_expired": "Expirées", + "orders_order_loading_error": "Erreur lors de la récupération de cette commande", + "orders_search_input_title": "Rechercher mes commandes par identifiant.", + "orders_table_actions_tooltip": "Plus de détails sur cette commande", + "orders_order_action_retract": "Annuler la commande", + "orders_retract_return_to_orders": "Retourner à mes commandes", + "orders_retract_title": "Rétractation du/des services de la commande", + "orders_retract_confirmation": "Voulez-vous vraiment annuler votre commande {{t0}}?", + "orders_retract_confirmation_text": "Oui je désire annuler cette commande.", + "orders_retract_description1": "Vous disposez d’un droit de rétractation de 14 jours à compter de la date de commande. En cas de rétractation, vous serez remboursé dans un délai de 30 jours à compter de la demande de rétractation, des sommes initialement versées déduction faite des jours de Services consommés au prorata temporis.", + "orders_retract_description2": "Attention, la rétractation via ce formulaire vaut pour tous les produits associés à cette commande. La rétractation prend effet immédiatement.", + "orders_retract_alert": "La confirmation entrainera la suppression automatique, immédiate et irréversible de l’ensemble des données liées à cette commande (y compris leur sauvegarde et back-up). Avant de poursuivre et de confirmer votre rétractation, il vous appartient de prendre toutes les mesures nécessaire à la conservation de vos données et à la poursuite de vos activités. OVH décline toute responsabilité à ce titre.", + "orders_retract_success": "Votre commande {{t0}} a bien été annulée.", + "orders_retract_error": "Une erreur s'est produite lors de l'annulation de votre commande.", + "refunds_title2": "Mes avoirs", + "refunds_table_head_date": "Date", + "refunds_table_head_id": "Référence", + "refunds_table_head_bill": "Associé à la facture", + "refunds_table_head_account": "Crédité sur", + "refunds_table_head_total": "Montant", + "refunds_table_head_total_with_VAT": "Montant TTC", + "refunds_table_download": "Télécharger", + "refunds_table_empty": "Vous n'avez pas d'avoir pour la période sélectionnée", + "refunds_table_account_no_information": "Informations indisponibles", + "ovhAccount_partial_error": "Suite à une erreur, certains mouvements ne sont pas affichés. Cependant le solde n'est pas affecté.", + "ovhAccount_title2": "Mouvements sur mon compte prépayé", + "ovhAccount_no_account": "Vous n'avez pas de compte prépayé", + "ovhAccount_balance": "Situation au", + "ovhAccount_table_head_date": "Date", + "ovhAccount_table_head_id": "Référence", + "ovhAccount_table_head_product": "Produit", + "ovhAccount_table_head_remaining": "Solde", + "ovhAccount_table_head_type": "Type", + "ovhAccount_table_head_debit": "Débit", + "ovhAccount_table_head_credit": "Crédit", + "ovhAccount_table_head_crediter": "Créditer", + "ovhAccount_table_head_crediter_none": "Ce compte ne peut pas être crédité.", + "ovhAccount_table_head_download": "Télécharger", + "ovhAccount_table_empty": "Vous n'avez pas de mouvements sur votre compte prépayé pour le mois sélectionné", + "ovhAccount_table_error": "Une erreur s'est produite. Impossible d'afficher les informations", + "ovhAccount_retrieve_account": "Sélectionnez votre compte bancaire :", + "ovhAccount_retrieve_amount": "Montant à transférer :", + "ovhAccount_retrieve_account_add": "Ajouter un compte bancaire", + "ovhAccount_retrieve_amount_disponible": "Somme disponible :", + "ovhAccount_retrieve_error": "Suite à une erreur votre opération n'a pas pu être effectuée.", + "ovhAccount_retrieve_explanation": "Vous avez la possibilité de lancer un virement d'un montant choisi depuis votre compte client OVH vers un compte bancaire. Veuillez noter que seules les sommes issues des reversements et des remboursements sont disponibles.", + "ovhAccount_retrieve_success": "Votre demande de virement a été traitée avec succès.", + "ovhAccount_retrieve_resume_1": "Confirmez-vous le virement d'un montant de", + "ovhAccount_retrieve_resume_2": "de votre compte prépayé vers votre compte bancaire", + "ovhAccount_retrieve_tips": "Cliquez sur \"Régler\" pour ouvrir le bon de commande. Il faut que votre navigateur accepte les pop-up.", + "ovhAccount_create_alert": "Définir une alerte", + "ovhAccount_create_alert_resume": "Vous serez alerté par e-mail lorsque le solde de votre compte passera en dessous du seuil d'alerte.", + "ovhAccount_delete_alert": "Désactiver les alertes concernant le solde sur votre compte :", + "ovhAccount_create_alert_amount": "Montant du seuil d'alerte :", + "ovhAccount_create_alert_wizard_button": "Définir", + "ovhAccount_create_alert_success": "Votre alerte a bien été enregistrée.", + "ovhAccount_create_alert_error": "Votre alerte n'a pas pu être correctement enregistrée suite à un problème.", + "ovhAccount_create_alert_amount_resume": "Montant du seuil d'alerte défini : {{t0}}", + "ovhAccount_no_alert": "Aucune alerte définie", + "ovhAccount_create_alert_input_error": "Nous n'acceptons que les nombres entiers positifs.", + "payment_mean_title": "Mes moyens de paiement", + "payment_mean_back": "Retourner à mes moyens de paiement", + "payment_mean_loading_error": "Erreur lors du chargement de la page", + "payment_mean_no_register": "Vous n'avez aucun moyen de paiement enregistré.", + "payment_mean_add": "Ajouter", + "payment_mean_add_title": "Ajouter un moyen de paiement", + "payment_mean_action_unavailable_for_our_subsidiary": "Cette action n’est pas supportée pour votre pays.", + "payment_mean_default": "Par défaut", + "payment_mean_set_default": "Moyen de paiement par défaut", + "payment_mean_set_default_after_validation": "Je veux sélectionner ce moyen de paiement par défaut dès sa validation.", + "payment_mean_set_as_default": "Ce moyen de paiement sera sélectionné par défaut après sa validation.", + "payment_mean_contact_presentation_reuse_contact": "en utilisant un contact déjà existant", + "payment_mean_contact_presentation_create_contact": "en créant un nouveau contact", + "payment_mean_contact_presentation_billingContactId_title": "Credit card address", + "payment_mean_contact_presentation_new_card_title": "Entrez une nouvelle carte", + "payment_mean_contact_presentation_update_title_billingContactId": "Changer l'adresse de la carte de crédit", + "payment_mean_contact_presentation_update_label": "Modifier", + "payment_mean_contact_presentation_phone_label": "Tél :", + "payment_mean_contact_presentation_email_label": "E-mail :", + "payment_mean_contact_creation_main_title": "Création d'un contact", + "payment_mean_contact_creation_mandatory_fields_rules_explained": "Par défaut seuls les champs obligatoires (marqués d'un astérisque) sont affichés. Utilisez le bouton positionné en début de chaque section pour afficher l'intégralité des champs que vous pouvez renseigner.", + "payment_mean_contact_creation_fieldset_GENERAL_INFORMATIONS": "Informations générales", + "payment_mean_contact_creation_fieldset_LEGAL": "Données juridiques", + "payment_mean_contact_creation_fieldset_PROFILE": "Profil", + "payment_mean_contact_creation_fieldset_CONTACTS": "Contacts", + "payment_mean_contact_creation_label_gender": "Civilité", + "payment_mean_contact_creation_label_firstName": "Prénom", + "payment_mean_contact_creation_label_lastName": "Nom", + "payment_mean_contact_creation_label_nationality": "Nationalité", + "payment_mean_contact_creation_label_country": "Pays", + "payment_mean_contact_creation_label_address_country": "Pays", + "payment_mean_contact_creation_label_address_province": "Province", + "payment_mean_contact_creation_label_address_state": "État", + "payment_mean_contact_creation_label_address_area": "Région", + "payment_mean_contact_creation_label_legalform": "Statut juridique", + "payment_mean_contact_creation_label_email_confirmation": "Confirmation email", + "payment_mean_contact_creation_label_spareEmail": "Email de secours", + "payment_mean_contact_creation_label_email": "Email", + "payment_mean_contact_creation_label_address_line1": "Adresse", + "payment_mean_contact_creation_label_address_line2": "Adresse (complément 1)", + "payment_mean_contact_creation_label_address_line3": "Adresse (complément 2)", + "payment_mean_contact_creation_label_address_otherDetails": "Adresse (autre)", + "payment_mean_contact_creation_label_address_zip": "Code postal", + "payment_mean_contact_creation_label_address_city": "Ville", + "payment_mean_contact_creation_label_birthDay": "Date d'anniversaire", + "payment_mean_contact_creation_label_phone": "Téléphone", + "payment_mean_contact_creation_label_fax": "Fax", + "payment_mean_contact_creation_label_language": "Langue", + "payment_mean_contact_creation_label_organisation": "Organisation", + "payment_mean_contact_creation_label_organisationType": "Type d'organisation", + "payment_mean_contact_creation_label_organisationName": "Nom de l'organisation", + "payment_mean_contact_creation_label_vat": "TVA intra communautaire", + "payment_mean_contact_creation_label_birthCity": "Ville de naissance", + "payment_mean_contact_creation_label_birthZip": "Code postal de naissance", + "payment_mean_contact_creation_label_birthCountry": "Pays de naissance", + "payment_mean_contact_creation_label_cellPhone": "Téléphone mobile", + "payment_mean_contact_creation_label_nationalIdentificationNumber": "Code fiscal", + "payment_mean_contact_creation_label_companyNationalIdentificationNumber": "Code fiscal", + "payment_mean_contact_creation_label_associationNationalIdentificationNumber": "Numéro d'identification national", + "payment_mean_contact_creation_label_optional": "(Optionnel)", + "payment_mean_contact_creation_gender_male": "Masculin", + "payment_mean_contact_creation_gender_female": "Féminin", + "payment_mean_contact_creation_country_AC": "Ascension Island", + "payment_mean_contact_creation_country_AD": "Andorra", + "payment_mean_contact_creation_country_AE": "United Arab Emirates", + "payment_mean_contact_creation_country_AF": "Afghanistan", + "payment_mean_contact_creation_country_AG": "Antigua And Barbuda", + "payment_mean_contact_creation_country_AI": "Anguilla", + "payment_mean_contact_creation_country_AL": "Albania", + "payment_mean_contact_creation_country_AM": "Armenia", + "payment_mean_contact_creation_country_AO": "Angola", + "payment_mean_contact_creation_country_AQ": "Antarctica", + "payment_mean_contact_creation_country_AR": "Argentina", + "payment_mean_contact_creation_country_AS": "American Samoa", + "payment_mean_contact_creation_country_AT": "Austria", + "payment_mean_contact_creation_country_AU": "Australia", + "payment_mean_contact_creation_country_AW": "Aruba", + "payment_mean_contact_creation_country_AX": "Åland Islands", + "payment_mean_contact_creation_country_AZ": "Azerbaijan", + "payment_mean_contact_creation_country_BA": "Bosnia and Herzegovina", + "payment_mean_contact_creation_country_BB": "Barbados", + "payment_mean_contact_creation_country_BD": "Bangladesh", + "payment_mean_contact_creation_country_BE": "Belgium", + "payment_mean_contact_creation_country_BF": "Burkina Faso", + "payment_mean_contact_creation_country_BG": "Bulgaria", + "payment_mean_contact_creation_country_BH": "Bahrain", + "payment_mean_contact_creation_country_BI": "Burundi", + "payment_mean_contact_creation_country_BJ": "Benin", + "payment_mean_contact_creation_country_BL": "Saint Barthélemy", + "payment_mean_contact_creation_country_BM": "Bermuda", + "payment_mean_contact_creation_country_BN": "Brunei Darussalam", + "payment_mean_contact_creation_country_BO": "Plurinational State Of Bolivia", + "payment_mean_contact_creation_country_BQ": "Bonaire, Saint Eustatius And Saba", + "payment_mean_contact_creation_country_BR": "Brazil", + "payment_mean_contact_creation_country_BS": "Bahamas", + "payment_mean_contact_creation_country_BT": "Bhutan", + "payment_mean_contact_creation_country_BW": "Botswana", + "payment_mean_contact_creation_country_BY": "Belarus", + "payment_mean_contact_creation_country_BZ": "Belize", + "payment_mean_contact_creation_country_CA": "Canada", + "payment_mean_contact_creation_country_CC": "Cocos (Keeling) Islands", + "payment_mean_contact_creation_country_CD": "Democratic Republic Of Congo", + "payment_mean_contact_creation_country_CF": "Central African Republic", + "payment_mean_contact_creation_country_CG": "Republic Of Congo", + "payment_mean_contact_creation_country_CH": "Switzerland", + "payment_mean_contact_creation_country_CI": "Cote d'Ivoire", + "payment_mean_contact_creation_country_CK": "Cook Islands", + "payment_mean_contact_creation_country_CL": "Chile", + "payment_mean_contact_creation_country_CM": "Cameroon", + "payment_mean_contact_creation_country_CN": "China", + "payment_mean_contact_creation_country_CO": "Colombia", + "payment_mean_contact_creation_country_CR": "Costa Rica", + "payment_mean_contact_creation_country_CU": "Cuba", + "payment_mean_contact_creation_country_CV": "Cape Verde", + "payment_mean_contact_creation_country_CW": "Curacao", + "payment_mean_contact_creation_country_CX": "Christmas Island", + "payment_mean_contact_creation_country_CY": "Cyprus", + "payment_mean_contact_creation_country_CZ": "Czech Republic", + "payment_mean_contact_creation_country_DE": "Germany", + "payment_mean_contact_creation_country_DG": "Diego Garcia", + "payment_mean_contact_creation_country_DJ": "Djibouti", + "payment_mean_contact_creation_country_DK": "Denmark", + "payment_mean_contact_creation_country_DM": "Dominica", + "payment_mean_contact_creation_country_DO": "Dominican Republic", + "payment_mean_contact_creation_country_DZ": "Algeria", + "payment_mean_contact_creation_country_EA": "Autonomous City of Ceuta", + "payment_mean_contact_creation_country_EC": "Ecuador", + "payment_mean_contact_creation_country_EE": "Estonia", + "payment_mean_contact_creation_country_EG": "Egypt", + "payment_mean_contact_creation_country_EH": "Western Sahara", + "payment_mean_contact_creation_country_ER": "Eritrea", + "payment_mean_contact_creation_country_ES": "Spain", + "payment_mean_contact_creation_country_ET": "Ethiopia", + "payment_mean_contact_creation_country_FI": "Finland", + "payment_mean_contact_creation_country_FJ": "Fiji", + "payment_mean_contact_creation_country_FK": "Falkland Islands", + "payment_mean_contact_creation_country_FM": "Federated States Of Micronesia", + "payment_mean_contact_creation_country_FO": "Faroe Islands", + "payment_mean_contact_creation_country_FR": "France", + "payment_mean_contact_creation_country_GA": "Gabon", + "payment_mean_contact_creation_country_GB": "United Kingdom", + "payment_mean_contact_creation_country_UK": "United Kingdom", + "payment_mean_contact_creation_country_GD": "Grenada", + "payment_mean_contact_creation_country_GE": "Georgia", + "payment_mean_contact_creation_country_GF": "French Guiana", + "payment_mean_contact_creation_country_GG": "Guernsey", + "payment_mean_contact_creation_country_GH": "Ghana", + "payment_mean_contact_creation_country_GI": "Gibraltar", + "payment_mean_contact_creation_country_GL": "Greenland", + "payment_mean_contact_creation_country_GM": "Gambia", + "payment_mean_contact_creation_country_GN": "Guinea", + "payment_mean_contact_creation_country_GP": "Guadeloupe", + "payment_mean_contact_creation_country_GQ": "Equatorial Guinea", + "payment_mean_contact_creation_country_GR": "Greece", + "payment_mean_contact_creation_country_GS": "South Georgia and the South Sandwich Islands", + "payment_mean_contact_creation_country_GT": "Guatemala", + "payment_mean_contact_creation_country_GU": "Guam", + "payment_mean_contact_creation_country_GW": "Guinea-bissau", + "payment_mean_contact_creation_country_GY": "Guyana", + "payment_mean_contact_creation_country_HK": "Hong Kong", + "payment_mean_contact_creation_country_HN": "Honduras", + "payment_mean_contact_creation_country_HR": "Croatia", + "payment_mean_contact_creation_country_HT": "Haiti", + "payment_mean_contact_creation_country_HU": "Hungary", + "payment_mean_contact_creation_country_IC": "Canary Islands", + "payment_mean_contact_creation_country_ID": "Indonesia", + "payment_mean_contact_creation_country_IE": "Ireland", + "payment_mean_contact_creation_country_IL": "Israel", + "payment_mean_contact_creation_country_IM": "Isle Of Man", + "payment_mean_contact_creation_country_IN": "India", + "payment_mean_contact_creation_country_IO": "British Indian Ocean Territory", + "payment_mean_contact_creation_country_IQ": "Iraq", + "payment_mean_contact_creation_country_IR": "Islamic Republic Of Iran", + "payment_mean_contact_creation_country_IS": "Iceland", + "payment_mean_contact_creation_country_IT": "Italy", + "payment_mean_contact_creation_country_JE": "Jersey", + "payment_mean_contact_creation_country_JM": "Jamaica", + "payment_mean_contact_creation_country_JO": "Jordan", + "payment_mean_contact_creation_country_JP": "Japan", + "payment_mean_contact_creation_country_KE": "Kenya", + "payment_mean_contact_creation_country_KG": "Kyrgyzstan", + "payment_mean_contact_creation_country_KH": "Cambodia", + "payment_mean_contact_creation_country_KI": "Kiribati", + "payment_mean_contact_creation_country_KM": "Comoros", + "payment_mean_contact_creation_country_KN": "Saint Kitts And Nevis", + "payment_mean_contact_creation_country_KP": "Democratic People's Republic Of Korea", + "payment_mean_contact_creation_country_KR": "Republic Of Korea", + "payment_mean_contact_creation_country_KW": "Kuwait", + "payment_mean_contact_creation_country_KY": "Cayman Islands", + "payment_mean_contact_creation_country_KZ": "Kazakhstan", + "payment_mean_contact_creation_country_LA": "Lao People's Democratic Republic", + "payment_mean_contact_creation_country_LB": "Lebanon", + "payment_mean_contact_creation_country_LC": "Saint Lucia", + "payment_mean_contact_creation_country_LI": "Liechtenstein", + "payment_mean_contact_creation_country_LK": "Sri Lanka", + "payment_mean_contact_creation_country_LR": "Liberia", + "payment_mean_contact_creation_country_LS": "Lesotho", + "payment_mean_contact_creation_country_LT": "Lithuania", + "payment_mean_contact_creation_country_LU": "Luxembourg", + "payment_mean_contact_creation_country_LV": "Latvia", + "payment_mean_contact_creation_country_LY": "Libya", + "payment_mean_contact_creation_country_MA": "Morocco", + "payment_mean_contact_creation_country_MC": "Monaco", + "payment_mean_contact_creation_country_MD": "Moldova", + "payment_mean_contact_creation_country_ME": "Montenegro", + "payment_mean_contact_creation_country_MF": "Saint Martin", + "payment_mean_contact_creation_country_MG": "Madagascar", + "payment_mean_contact_creation_country_MH": "Marshall Islands", + "payment_mean_contact_creation_country_MK": "The Former Yugoslav Republic Of Macedonia", + "payment_mean_contact_creation_country_ML": "Mali", + "payment_mean_contact_creation_country_MM": "Myanmar", + "payment_mean_contact_creation_country_MN": "Mongolia", + "payment_mean_contact_creation_country_MO": "Macao", + "payment_mean_contact_creation_country_MP": "Northern Mariana Islands", + "payment_mean_contact_creation_country_MQ": "Martinique", + "payment_mean_contact_creation_country_MR": "Mauritania", + "payment_mean_contact_creation_country_MS": "Montserrat", + "payment_mean_contact_creation_country_MT": "Malta", + "payment_mean_contact_creation_country_MU": "Mauritius", + "payment_mean_contact_creation_country_MV": "Maldives", + "payment_mean_contact_creation_country_MW": "Malawi", + "payment_mean_contact_creation_country_MX": "Mexico", + "payment_mean_contact_creation_country_MY": "Malaysia", + "payment_mean_contact_creation_country_MZ": "Mozambique", + "payment_mean_contact_creation_country_NA": "Namibia", + "payment_mean_contact_creation_country_NC": "New Caledonia", + "payment_mean_contact_creation_country_NE": "Niger", + "payment_mean_contact_creation_country_NF": "Norfolk Island", + "payment_mean_contact_creation_country_NG": "Nigeria", + "payment_mean_contact_creation_country_NI": "Nicaragua", + "payment_mean_contact_creation_country_NL": "Netherlands", + "payment_mean_contact_creation_country_NO": "Norway", + "payment_mean_contact_creation_country_NP": "Nepal", + "payment_mean_contact_creation_country_NR": "Nauru", + "payment_mean_contact_creation_country_NU": "Niue", + "payment_mean_contact_creation_country_NZ": "New Zealand", + "payment_mean_contact_creation_country_OM": "Oman", + "payment_mean_contact_creation_country_PA": "Panama", + "payment_mean_contact_creation_country_PE": "Peru", + "payment_mean_contact_creation_country_PF": "French Polynesia", + "payment_mean_contact_creation_country_PG": "Papua New Guinea", + "payment_mean_contact_creation_country_PH": "Philippines", + "payment_mean_contact_creation_country_PK": "Pakistan", + "payment_mean_contact_creation_country_PL": "Poland", + "payment_mean_contact_creation_country_PM": "Saint Pierre And Miquelon", + "payment_mean_contact_creation_country_PN": "Pitcairn Islands", + "payment_mean_contact_creation_country_PR": "Puerto Rico", + "payment_mean_contact_creation_country_PS": "Palestinian Territory, Occupied", + "payment_mean_contact_creation_country_PT": "Portugal", + "payment_mean_contact_creation_country_PW": "Palau", + "payment_mean_contact_creation_country_PY": "Paraguay", + "payment_mean_contact_creation_country_QA": "Qatar", + "payment_mean_contact_creation_country_RE": "La Réunion", + "payment_mean_contact_creation_country_RO": "Romania", + "payment_mean_contact_creation_country_RS": "Serbia", + "payment_mean_contact_creation_country_RU": "Russian Federation", + "payment_mean_contact_creation_country_RW": "Rwanda", + "payment_mean_contact_creation_country_SA": "Saudi Arabia", + "payment_mean_contact_creation_country_SB": "Solomon Islands", + "payment_mean_contact_creation_country_SC": "Seychelles", + "payment_mean_contact_creation_country_SD": "Sudan", + "payment_mean_contact_creation_country_SE": "Sweden", + "payment_mean_contact_creation_country_SG": "Singapore", + "payment_mean_contact_creation_country_SH": "Saint Helena, Ascension And Tristan Da Cunha", + "payment_mean_contact_creation_country_SI": "Slovenia", + "payment_mean_contact_creation_country_SJ": "Svalbard And Jan Mayen", + "payment_mean_contact_creation_country_SK": "Slovakia", + "payment_mean_contact_creation_country_SL": "Sierra Leone", + "payment_mean_contact_creation_country_SM": "San Marino", + "payment_mean_contact_creation_country_SN": "Senegal", + "payment_mean_contact_creation_country_SO": "Somalia", + "payment_mean_contact_creation_country_SR": "Suriname", + "payment_mean_contact_creation_country_SS": "South Sudan", + "payment_mean_contact_creation_country_ST": "São Tomé and Príncipe", + "payment_mean_contact_creation_country_SV": "El Salvador", + "payment_mean_contact_creation_country_SX": "Sint Maarten", + "payment_mean_contact_creation_country_SY": "Syrian Arab Republic", + "payment_mean_contact_creation_country_SZ": "Swaziland", + "payment_mean_contact_creation_country_TA": "Tristan dã Cunha", + "payment_mean_contact_creation_country_TC": "Turks And Caicos Islands", + "payment_mean_contact_creation_country_TD": "Chad", + "payment_mean_contact_creation_country_TF": "French Southern Territories", + "payment_mean_contact_creation_country_TG": "Togo", + "payment_mean_contact_creation_country_TH": "Thailand", + "payment_mean_contact_creation_country_TJ": "Tajikistan", + "payment_mean_contact_creation_country_TK": "Tokelau", + "payment_mean_contact_creation_country_TL": "East Timor", + "payment_mean_contact_creation_country_TM": "Turkmenistan", + "payment_mean_contact_creation_country_TN": "Tunisia", + "payment_mean_contact_creation_country_TO": "Tonga", + "payment_mean_contact_creation_country_TR": "Turkey", + "payment_mean_contact_creation_country_TT": "Trinidad And Tobago", + "payment_mean_contact_creation_country_TV": "Tuvalu", + "payment_mean_contact_creation_country_TW": "Taiwan, Province Of China", + "payment_mean_contact_creation_country_TZ": "United Republic Of Tanzania", + "payment_mean_contact_creation_country_UA": "Ukraine", + "payment_mean_contact_creation_country_UG": "Uganda", + "payment_mean_contact_creation_country_UM": "United States Minor Outlying Islands", + "payment_mean_contact_creation_country_US": "United States", + "payment_mean_contact_creation_country_UY": "Uruguay", + "payment_mean_contact_creation_country_UZ": "Uzbekistan", + "payment_mean_contact_creation_country_VA": "Vatican City State", + "payment_mean_contact_creation_country_VC": "Saint Vincent And The Grenadines", + "payment_mean_contact_creation_country_VE": "Bolivarian Republic Of Venezuela", + "payment_mean_contact_creation_country_VG": "Virgin Islands (British)", + "payment_mean_contact_creation_country_VI": "Virgin Islands (US)", + "payment_mean_contact_creation_country_VN": "Viet Nam", + "payment_mean_contact_creation_country_VU": "Vanuatu", + "payment_mean_contact_creation_country_WF": "Wallis And Futuna", + "payment_mean_contact_creation_country_WS": "Samoa", + "payment_mean_contact_creation_country_XK": "Kosovo", + "payment_mean_contact_creation_country_YE": "Yemen", + "payment_mean_contact_creation_country_YT": "Mayotte", + "payment_mean_contact_creation_country_ZA": "South Africa", + "payment_mean_contact_creation_country_ZM": "Zambia", + "payment_mean_contact_creation_country_ZW": "Zimbabwe", + "payment_mean_contact_creation_country_UNKNOWN": "Mon pays n'est pas dans cette liste", + "payment_mean_contact_creation_legalform_individual": "Individuel", + "payment_mean_contact_creation_legalform_association": "Association", + "payment_mean_contact_creation_legalform_corporation": "Entreprise", + "payment_mean_contact_creation_legalform_administration": "Administration", + "payment_mean_contact_creation_legalform_personalcorporation": "Travailleur indépendant", + "payment_mean_contact_creation_legalform_other": "Autre", + "payment_mean_contact_creation_language_de_DE": "Allemand", + "payment_mean_contact_creation_language_en_AU": "Anglais (Australien)", + "payment_mean_contact_creation_language_en_CA": "Anglais (Canadien)", + "payment_mean_contact_creation_language_en_GB": "Anglais", + "payment_mean_contact_creation_language_en_US": "Anglais (États Unis)", + "payment_mean_contact_creation_language_es_ES": "Espagnol", + "payment_mean_contact_creation_language_fr_CA": "Français (Canadien)", + "payment_mean_contact_creation_language_fr_FR": "Français", + "payment_mean_contact_creation_language_fr_MA": "Français (Maroc)", + "payment_mean_contact_creation_language_fr_SN": "Français (Sénégal)", + "payment_mean_contact_creation_language_fr_TN": "Français (Tunisie)", + "payment_mean_contact_creation_language_pl_PL": "Polonais", + "payment_mean_contact_creation_language_cs_CZ": "Tchéque", + "payment_mean_contact_creation_language_fi_FI": "Finnois", + "payment_mean_contact_creation_language_en_IE": "Irlandais", + "payment_mean_contact_creation_language_it_IT": "Italien", + "payment_mean_contact_creation_language_lt_LT": "Lituanien", + "payment_mean_contact_creation_language_nl_NL": "Néerlandais", + "payment_mean_contact_creation_language_pt_PT": "Portugais", + "payment_mean_contact_contact_creation_submit": "Confirmer et enregistrer", + "payment_mean_contact_contact_creation_cancel": "Annuler", + "mean_manage_my_services": "Gérer mes services", + "mean_table_head_creation_date": "Date de création", + "mean_table_head_description": "Description", + "mean_table_head_type": "Type de paiement", + "mean_table_head_options": "Options", + "payment_mean_no_description": "Aucune description", + "payment_mean_description_error": "Une erreur est survenue lors de la modification de la description :", + "payment_mean_default_mean_error": "Une erreur est survenue, veuillez nous excuser pour la gêne occasionnée.", + "add_mean_select_title_choose": "Faites votre choix", + "add_mean_select_title_no_choice": "Aucun autre choix possible", + "add_mean_unable_to_get_payment_means": "Impossible d’obtenir les moyens de paiement disponibles", + "mean_table_head_state": "État", + "mean_table_head_actions": "Actions", + "mean_table_head_3d_secure": "3D Secure", + "mean_table_head_3d_secure_true": "Oui", + "mean_table_head_3d_secure_false": "Non", + "mean_table_tooltip_more_actions": "Plus d'actions pour ce moyen de paiement", + "deleteMean_title": "Suppression d'un moyen de paiement", + "paymentMean_delete_message_paypal": "Attention, vous allez supprimer définitivement le moyen de paiement associé au compte paypal :", + "paymentMean_delete_message_bankAccount": "Attention, vous allez supprimer définitivement le moyen de paiement associé au compte bancaire :", + "paymentMean_delete_message_creditCard": "Attention, vous allez supprimer définitivement le moyen de paiement associé à la carte du numéro :", + "paymentMean_label_creditcard_owner_name": "Nom inscrit sur la carte bancaire", + "paymentMean_label_creditcard_number": "Numéro", + "paymentMean_label_creditcard_validation": "Validation", + "paymentMean_label_creditcard_expiration": "Expiration", + "paymentMean_label_iban": "IBAN", + "paymentMean_label_bic": "BIC", + "paymentMean_label_addressNumber": "Numéro", + "paymentMean_label_addressStreetName": "Nom de la voie", + "paymentMean_label_addressPostalCode": "Code postal", + "paymentMean_label_addressTown": "Ville", + "paymentMean_label_ownerName": "Nom et prénom du propriétaire ou nom de l'organisation propriétaire", + "paymentMean_label_ownerAddress": "Adresse du propriétaire du compte", + "paymentMean_error_bic_bank": "Le code de la banque est incorrect.", + "paymentMean_error_bic_valid": "Le BIC est invalide.", + "paymentMean_error_required": "Ce champs est requis.", + "paymentMean_error_iban_base": "la base de l'IBAN est invalide.", + "paymentMean_error_iban_country": "Le pays de l'IBAN est invalide.", + "paymentMean_error_iban_key": "La clef de l'IBAN est invalide.", + "paymentMean_error_iban_valid": "L'IBAN est invalide.", + "paymentMean_error_minlength": "Il faut au moins 5 caractères.", + "paymentMean_error_addressPostalCode_required": "Ce champs est requis.", + "paymentMean_error_addressPostalCode_min": "Le code postal n'est pas valide.", + "paymentMean_error_addressPostalCode_max": "Le code postal n'est pas valide.", + "paymentMean_error_addressPostalCode_pattern": "Le code postal doit être composé de 5 chiffres.", + "paymentMean_error_maxlength": "Le texte doit être plus petit que 255 caractères.", + "paymentType_delete_error": "Erreur lors de la suppression du moyen de paiement", + "paymentType_modify_error": "Erreur lors de la modification du moyen de paiement", + "paymentType_delete_success": "Moyen de paiement supprimé", + "paymentMean_add_message_paypal": "En cliquant sur le bouton \"Ajouter\", vous pourrez vous connecter sur votre compte Paypal afin de valider un abonnement permettant à OVH d'effectuer des débits sur votre compte Paypal lors de l'édition de vos prochaines factures.", + "paymentMean_add_message_creditCard": "Afin de valider l'enregistrement de votre carte bancaire, nous allons procéder à une tentative de paiement.
Le montant d'1 euro ne sera donc pas débité sur votre compte suite à la confirmation de votre banque.
Votre carte bancaire sera activée immédiatement.", + "paymentMean_add_message_creditCard_CA": "OVH demande l'autorisation de débit, qui peut apparaître comme un mouvement en cours sur votre compte, mais ne demandera pas la finalisation de cette autorisation, le montant ne vous sera donc pas débité ou sera remboursé par votre institution bancaire.", + "paymentMean_add_message_bankAccount": "En cliquant sur le bouton \"Ajouter\", un document sera téléchargé.
Veuillez suivre la procédure décrite dans le document pour valider le moyen de paiement. Votre compte bancaire sera validé dans les 24h à 48h à compter de la réception de votre autorisation de prélévement.", + "paymentType_status_valid": "Validé", + "paymentType_status_expired": "Expiré", + "paymentType_status_proposedByCustomer": "En attente de validation", + "paymentType_status_tooManyFailures": "Invalide (trop de tentatives de validation en erreur)", + "paymentType_status_broken": "Brisé", + "paymentType_status_canceled": "Annulé", + "paymentType_status_canceling": "En cours d'annulation", + "paymentType_status_canceledbycustomer": "Annulé par l'utilisateur", + "paymentType_status_canceled_by_customer": "Annulé par l'utilisateur", + "paymentType_status_created": "En attente de validation", + "paymentType_status_error": "En erreur", + "paymentType_status_validforcredit": "Valide pour crédit", + "paymentType_add_error": "Erreur lors de l'ajout du moyen de paiement", + "paymentType_status_pendingValidation": "En cours de validation", + "paymentType_status_waiting_for_documents": "En attente de réception", + "payment_mean_add_paypal": "Lancer un abonnement Paypal", + "payement_mean_add_creditCard": "Générer un bon de commande", + "payment_mean_get_validation": "Récupérer la procédure de validation", + "payment_mean_return_by_mail_procedure": "Procédure à retourner par voie postale", + "paymentType_add_validation_description": "Vous devez valider l'ajout de votre moyen de paiement.", + "paymentType_add_success_url": "Cliquez ici pour être redirigé vers une page sécurisée et finaliser l'opération.", + "paymentType_bankAccount_add_success_with_download": "Le compte bancaire a été ajouté, il sera actif une fois validé. Veuillez suivre la procédure décrite dans ce document pour valider le moyen de paiement à retourner par voie postale.", + "paymentType_bankAccount_pending_validation": "Vous avez ajouté un compte bancaire sur votre espace client pour lequel nous sommes dans l'attente de votre autorisation de prélèvement à nous retourner par voie postale.", + "paymentType_bankAccount_processing_delay": "Votre compte bancaire sera validé dans les 24h à 48h à compter de la réception de votre autorisation de prélèvement.", + "payment_mean_radio_select_default": "Désigner ce moyen de paiement automatique par défaut.", + "payment_mean_select_default": "Désigner comme moyen par défaut.", + "payment_mean_delete_payment_mean": "Effacer ce moyen de paiement.", + "payment_mean_description_add": "Ajouter une description.", + "payment_mean_description_edit": "Modifier la description.", + "payment_mean_description_input": "Description du moyen de paiement", + "payment_mean_description_save": "Enregistrer la description", + "payment_mean_description_cancel": "Annuler les changements à la description", + "ovhAccount_table_type_CANCEL_CREDIT": "Annulation crédit", + "ovhAccount_table_type_CANCEL_CREDIT_BILL": "Annulation facture", + "ovhAccount_table_type_CANCEL_CREDIT_REFUND": "Annulation avoir", + "ovhAccount_table_type_CANCEL_CREDIT_STATEMENT_INCOME": "Annulation approvisionnement compte prépayé", + "ovhAccount_table_type_CANCEL_CREDIT_STATEMENT_OUTCOME": "Annulation virement vers compte bancaire", + "ovhAccount_table_type_CANCEL_CREDIT_DEPOSIT": "Annulation acompte", + "ovhAccount_table_type_CANCEL_DEBIT": "Annulation débit", + "ovhAccount_table_type_CANCEL_DEBIT_BILL": "Annulation facture", + "ovhAccount_table_type_CANCEL_DEBIT_REFUND": "Annulation avoir", + "ovhAccount_table_type_CANCEL_DEBIT_STATEMENT_INCOME": "Annulation approvisionnement compte prépayé", + "ovhAccount_table_type_CANCEL_DEBIT_STATEMENT_OUTCOME": "Annulation virement vers compte bancaire", + "ovhAccount_table_type_CANCEL_PRE_DEBIT": "Annulation débit", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_BILL": "Facture", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_REFUND": "Avoir", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_STATEMENT_INCOME": "Approvisionnement compte prépayé", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_STATEMENT_OUTCOME": "Virement vers compte bancaire", + "ovhAccount_table_type_CREDIT": "Crédit", + "ovhAccount_table_type_CREDIT_BILL": "Facture", + "ovhAccount_table_type_CREDIT_DEPOSIT": "Acompte", + "ovhAccount_table_type_CREDIT_REFUND": "Avoir", + "ovhAccount_table_type_CREDIT_STATEMENT_INCOME": "Approvisionnement compte prépayé", + "ovhAccount_table_type_CREDIT_STATEMENT_OUTCOME": "Virement vers compte bancaire", + "ovhAccount_table_type_DEBIT": "Débit", + "ovhAccount_table_type_DEBIT_BILL": "Facture", + "ovhAccount_table_type_DEBIT_REFUND": "Avoir", + "ovhAccount_table_type_DEBIT_STATEMENT_INCOME": "Approvisionnement compte prépayé", + "ovhAccount_table_type_DEBIT_STATEMENT_OUTCOME": "Virement vers compte bancaire", + "ovhAccount_table_type_DEBIT_WITHDRAWAL": "Débit", + "ovhAccount_table_type_PRE_CREDIT": "Crédit", + "ovhAccount_table_type_PRE_CREDIT_BILL": "Facture", + "ovhAccount_table_type_PRE_CREDIT_REFUND": "Avoir", + "ovhAccount_table_type_PRE_CREDIT_STATEMENT_INCOME": "Approvisionnement compte prépayé", + "ovhAccount_table_type_PRE_CREDIT_STATEMENT_OUTCOME": "Virement vers compte bancaire", + "ovhAccount_table_type_PRE_DEBIT": "Débit", + "ovhAccount_table_type_PRE_DEBIT_BILL": "Facture", + "ovhAccount_table_type_PRE_DEBIT_REFUND": "Avoir", + "ovhAccount_table_type_PRE_DEBIT_STATEMENT_INCOME": "Approvisionnement compte prépayé", + "ovhAccount_table_type_PRE_DEBIT_STATEMENT_OUTCOME": "Virement vers compte bancaire", + "ovhAccount_table_head_payment_type": "Moyen de paiement", + "ovhAccount_table_type_payment_CASH": "Espèce", + "ovhAccount_table_type_payment_CHARGEBACK": "Annulation de paiement", + "ovhAccount_table_type_payment_CHEQUE": "Chèque", + "ovhAccount_table_type_payment_CREDIT_CARD": "Carte bancaire", + "ovhAccount_table_type_payment_DEPOSIT": "Acompte", + "ovhAccount_table_type_payment_DEBT_ACCOUNT": "Compte débiteur", + "ovhAccount_table_type_payment_EDINAR": "e-DINAR", + "ovhAccount_table_type_payment_FIDELITY_POINTS": "Mes points", + "ovhAccount_table_type_payment_FREE": "Gratuit", + "ovhAccount_table_type_payment_IDEAL": "iDEAL", + "ovhAccount_table_type_payment_MANDAT": "Mandat", + "ovhAccount_table_type_payment_MULTIBANCO": "Multibanco", + "ovhAccount_table_type_payment_NONE": "Aucun", + "ovhAccount_table_type_payment_OVH_ACCOUNT": "Compte prépayé", + "ovhAccount_table_type_payment_PAYMENT_MANDATE": "Mandat", + "ovhAccount_table_type_payment_PAYPAL": "Paypal", + "ovhAccount_table_type_payment_PLATNOSCI": "Płatności", + "ovhAccount_table_type_payment_REFUND": "Avoir", + "ovhAccount_table_type_payment_TRANSFER": "Virement", + "ovhAccount_table_type_payment_WITHDRAWAL": "Prélèvement bancaire", + "ovhAccount_table_type_payment_CREDIT_ACCOUNT": "Compte de crédit", + "ovhAccount_table_type_payment_DIGITAL_LAUNCH_PAD": "Voucher DLP", + "ovhAccount_table_type_payment_INCUBATOR_ACCOUNT": "Compte Incubator", + "ovhAccount_table_type_payment_PAYU": "PayU", + "ovhAccount_retrieve_title": "Virement vers un compte bancaire", + "ovhAccount_renew_title": "Créditez votre compte prépayé", + "ovhAccount_renew_step1_msg": "Vous pouvez créditer votre compte pour régler vos factures, ou anticiper le paiement des factures suivantes.", + "ovhAccount_renew_step1_erreurmin": "Le montant du crédit doit être au moins de 10 {{t0}} et votre solde de compte doit être positif.", + "ovhAccount_renew_step1_erreurformat": "Le montant saisi est incorrect, veuillez utiliser uniquement des chiffres avec comme caractère de séparation le point ou la virgule.", + "ovhAccount_renew_step1_amount": "Montant ({{t0}}) :", + "ovhAccount_renew_step2_msg": "Résumé de votre commande", + "ovhAccount_renew_step2_credit": "Montant qui sera crédité :", + "ovhAccount_renew_step2_error": "Une erreur est survenue, veuillez nous excuser pour la gêne occasionnée.", + "ovhAccount_renew_step2_success": "Votre crédit (commande N° {{t1}}) sera effectif sur votre compte prépayé à réception de votre paiement.", + "ovhAccount_account_list_error": "Une erreur est survenue lors de la récupération la liste de vos comptes", + "ovhAccount_account_list_title": "- Compte", + "ovhAccount_account_list_empty": "Aucun compte a afficher", + "telconso_menu_this_month": "Mois en cours", + "telconso_menu_last_month": "Mois précédents", + "telconso_search": "Rechercher une ligne", + "telconso_table_empty": "Aucun élément à afficher", + "telconso_table_line_empty": "Aucune ligne à afficher", + "telconso_title_current_month": "Mon suivi conso téléphonie du {{t0}} au {{t1}}", + "telconso_consumption": "Consommation", + "telconso_plan_to": "Forfait à {{t0}}", + "telconso_allowed_outplan": "Hors-forfait autorisé", + "telconso_service_name_consumption": "Consommation", + "telconso_nb_lines": "Nombre de lignes :", + "telconso_nb_groups": "Nombre de groupes :", + "telconso_callout": "{{t0}} % d'appels émis", + "telconso_callin": "{{t0}} % d'appels reçus", + "telconso_faxout": "{{t0}} % de fax émis", + "telconso_faxin": "{{t0}} % de fax reçus", + "telconso_to_fixe": "Vers les fixes", + "telconso_to_mobiles": "Vers les mobiles", + "telconso_to_special": "Vers les numéros spéciaux", + "telconso_send_fax": "Envoi de fax", + "telconso_fax": "Fax", + "telconso_calls": "Nombre d'appels", + "telconso_faxs": "Nombre de fax", + "telconso_anonymous": "Anonyme", + "telconso_in": "Reçus", + "telconso_out": "Emis", + "telconso_com_time": "Temps de com.", + "telconso_call_count": "Nombre", + "telconso_line": "Ligne", + "telconso_lines": "Lignes", + "telconso_price": "Tarif", + "telconso_outplan": "Hors-forfait (HT)", + "telconso_group_outplan": "Hors-forfait", + "telconso_group": "Groupe", + "telconso_all_groups": "Tous les groupes", + "telconso_select_group": "Selectionnez un groupe pour plus d'informations", + "telconso_calls_details": "Détails des appels", + "telconso_fax_details": "Détails des fax", + "telconso_line_myline": "Ma ligne {{t0}}", + "telconso_line_include": "Conso incluses dans le forfait", + "telconso_line_outplan": "Conso hors-forfait", + "telconso_next_billing": "Date de prochaine facture:", + "tel_conso_conso_date": "Date", + "tel_conso_conso_num_emit": "Numéro appelant", + "tel_conso_conso_num_recv": "Numéro appelé", + "tel_conso_conso_tranfert": "Redirigé vers", + "tel_conso_conso_time": "Durée", + "tel_conso_conso_include": "Inclus", + "tel_conso_conso_outplan": "Hors-forfait (HT)", + "tel_conso_conso_included": "Inclus", + "tel_conso_conso_notincluded": "Non inclus", + "tel_conso_calls": "appels", + "tel_conso_tabs_inc": "Reçus", + "tel_conso_tabs_out": "Emis", + "tel_conso_tabs_trs": "Transférés", + "tel_conso_tabs_incfix": "Depuis les fixes", + "tel_conso_tabs_incmob": "Depuis les mobiles", + "tel_conso_tabs_incspe": "Depuis les numéros spéciaux", + "tel_conso_tabs_outfix": "Vers les fixes", + "tel_conso_tabs_outmob": "Vers les mobiles", + "tel_conso_tabs_outspe": "Vers les numéros spéciaux", + "tel_conso_tabs_trsfix": "Vers les fixes", + "tel_conso_tabs_trsmob": "Vers les mobiles", + "tel_conso_tabs_trsspe": "Vers les numéros spéciaux", + "tel_conso_tabs_sent": "Envoyés", + "tel_conso_tabs_received": "Reçus", + "tel_conso_error": "une erreur est survenue pendant le chargement des informations", + "tel_conso_h": "h", + "tel_conso_min": "min", + "tel_conso_s": "s", + "tel_lastconso_title": "Mon relevé téléphonique des mois précédents", + "tel_lastconso_month": "Mois", + "tel_lastconso_priceplan": "Montant total", + "tel_lastconso_outplan": "Hors-forfait", + "tel_lastconso_sheet": "Relevés de consommation", + "tel_lastconso_sheet_down": "Télécharger", + "tel_lastconso_sheet_progress": "En cours", + "tel_lastconso_month_date_display": "MMM yyyy", + "fidelity_title": "Mes points", + "fidelity_get_accounts_error": "Une erreur est survenue pendant le chargement des informations", + "fidelity_header_date": "Date", + "fidelity_header_order": "Transaction", + "fidelity_header_operation": "Opération", + "fidelity_header_credit": "Crédit", + "fidelity_header_debit": "Débit", + "fidelity_header_balance": "Solde", + "fidelity_points": "point(s)", + "fidelity_creditOrder_title": "Créditer votre compte", + "fidelity_creditOrder_step1_msg": "Vous pouvez créditer votre compte pour régler vos achats, ou pour renouveler vos services, lors d'un renouvellement dit \"manuel\". (1 point = 0,01 {{t0}} HT)", + "fidelity_creditOrder_step1_amount": "Montant (en points)", + "fidelity_creditOrder_step1_erreurformat": "Le montant saisi est incorrect, veuillez utiliser uniquement des chiffres.", + "fidelity_creditOrder_step1_erreurmin": "Le montant du crédit doit être au moins de {{t0}} points.", + "fidelity_creditOrder_step1_erreurmax": "Le montant maximum du crédit est de {{t0}} points.", + "fidelity_creditOrder_step2_msg": "Résumé de votre commande", + "fidelity_creditOrder_step2_credit": "Montant qui sera crédité:", + "fidelity_creditOrder_step2_error": "Une erreur est survenue pendant le chargement des informations", + "fidelity_creditOrder_step2_success": "Votre crédit (commande N° {{t1}}) sera effectif sur votre compte prépayé à réception de votre paiement.", + "fidelity_creditOrder_submit_error": "Une erreur est survenue lors du crédit de vos points.", + "fidelity_creditOrder_submit_success": "Votre crédit de {{t0}} points a bien été généré, vous pouvez procéder à votre commande dans l'onglet Mes commandes", + "fidelity_no_item": "Aucun élément à afficher.", + "fidelity_balance_info": "Situation au {{t0}} : {{t1}} point(s)", + "fidelity_no_account": "Vous ne disposez pas de compte fidélité", + "sla_table_head_date": "Date", + "sla_table_head_description": "Description", + "sla_table_head_refund": "Compensation", + "sla_table_apply": "Appliquer", + "sla_informations_error": "Une erreur est survenue lors de la récupération des informations. Veuillez réessayer ultérieurement :", + "sla_apply_error": "Une erreur est survenue lors de la demande de compensation :", + "sla_apply_success": "La demande de compensation a bien été prise en compte. Elle sera effective d'ici quelques heures.", + "sla_apply_no_data": "Vous n'avez droit à aucune compensation.", + "sla_table_head_service_name": "Nom du service", + "sla_table_head_service_description": "Description du service", + "sla_table_head_service_sla_plan": "SLA contractuel", + "sla_table_head_service_sla_application": "Avantage octroyé", + "sla_table_services_empty": "Aucun service", + "sla_informations": "Voici la liste des opérations de compensation auxquelles vous êtes éligible. Pour bénéficier de ces dernières, veuillez cliquer sur le bouton \"Appliquer\" correspondant.", + "sla_informations_end": "Vous avez jusqu'au {{t0}} pour effectuer votre demande d'indemnisation et obtenir les dédommagements alloués dans le cadre de nos SLA.", + "sla_informations_applied": "Votre demande a bien été prise en compte et sera traitée dans les plus brefs délais.", + "sla_informations_applied_all": "Vos demandes ont bien été prises en compte et seront traitées dans les plus brefs délais.", + "sla_informations_status_created": "Créée", + "sla_informations_status_notApplicable": "Non applicable", + "sla_informations_status_completed": "Validée", + "sla_informations_status_requested": "En cours de traitement", + "voucher_table_head_id": "ID", + "voucher_table_head_balance": "Balance", + "voucher_table_head_voucher_open_date": "Date d'ouverture", + "voucher_table_head_voucher_last_update": "Dernière mise à jour", + "voucher_table_empty": "Aucun voucher", + "voucher_informations_error": "Une erreur s'est produite :", + "vouchers_title": "Mes vouchers", + "vouchers_movements_title": "Mouvements sur le voucher {{t0}}", + "voucher_movements_table_head_id": "ID", + "voucher_movements_table_head_description": "Description", + "voucher_movements_table_head_date": "Date", + "voucher_movements_table_head_amount": "Montant", + "voucher_movements_table_head_previous_balance": "Balance précédente", + "voucher_movements_table_head_balance": "Balance", + "voucher_movements_table_head_operation": "Opération", + "voucher_movements_table_head_order": "Commande", + "voucher_movements_table_empty": "Aucun mouvement", + "voucher_movements_operation_type_cancel-credit": "Crédit annulé", + "voucher_movements_operation_type_cancel-debit": "Débit annulé", + "voucher_movements_operation_type_cancel-pre-debit": "Annulation pré-débit", + "voucher_movements_operation_type_credit": "Crédit", + "voucher_movements_operation_type_debit": "Débit", + "voucher_movements_operation_type_pre-credit": "Pré-crédit", + "voucher_movements_operation_type_pre-debit": "Pré-débit", + "statements_account_automatic_payment_inactive": "Le prélèvement automatique n'est pas possible pour le renouvellement de vos services.", + "statements_account_no_default_payment_mean": "Vous n'avez pas désigné de moyen de paiement par défaut.", + "statements_account_invalid_default_payment_mean": "Votre moyen de paiement par défaut n'est plus valide.", + "statements_account_manage_my_payment_means": "Gérer mes moyens de paiement", + "statements_account_pay_debt_button": "Régler mon solde immédiatement", + "statements_table_caption": "Commandes à votre comptes", + "statements_table_header_order": "Commande", + "statements_table_header_date": "Date", + "statements_table_header_due_date": "Date d'échéance", + "statements_table_no_due_date": "Immédiate", + "statements_table_header_amount": "Montant", + "statements_table_header_balance": "Balance due", + "statements_table_header_details": "Détails", + "statements_table_no_detail": "Aucune donnée disponible.", + "statements_table_invoice_link": "Consulter la facture {{t0}} dans une nouvelle fenêtre.", + "statements_table_order_link": "Consulter la commande {{t0}} dans une nouvelle fenêtre.", + "statements_table_detail_label": "Voir les détails pour cette facture.", + "statements_table_detail_link": "Voir les détails pour cette dette {{t0}}.", + "statements_table_pay_debt_button": "Régler mon solde immédiatement", + "statements_summary_error": "Une erreur est survenue dans l'obtention de la balance de votre compte.", + "statements_detail_error": "Une erreur est survenue dans l'obtention du détails de votre compte.", + "statements_single_debt_error": "Une erreur est survenue dans l'obtention du détails de cette ligne {{t0}}.", + "statements_payment_mean_error": "Une erreur est survenue dans l'obtention de vos moyens de paiement", + "statements_details_summary_title": "Sommaire de la commande", + "statements_details_operations_title": "Historique des opérations", + "statements_details_page_loader": "Chargement des informations ...", + "statements_details_page_operations": "Une erreur est survenue dans l'obtention de l'historique des opérations.", + "statements_details_return_to_statements": "Retour à la page précédente", + "statements_details_table_caption": "Listes des opérations sur la facture", + "statements_details_table_header_date": "Date", + "statements_details_table_header_operation": "Opération", + "statements_details_table_header_status": "État", + "statements_details_table_header_amount": "Montant", + "statements_details_table_header_document": "Document", + "statements_details_table_order_link": "Ouvrir la commande associée à cette opération dans une nouvelle fenêtre.", + "statements_details_table_invoice_html_link": "Consulter la facture en version html (nouvelle fenêtre).", + "statements_details_table_invoice_pdf_link": "Consulter la facture en version pdf (nouvelle fenêtre).", + "statements_operation_status_done": "Complétée", + "statements_operation_status_cancelled": "Annulée", + "statements_operation_status_failed": "Échouée", + "statements_operation_status_todo": "En attente de paiement", + "statements_operation_status_pending": "En cours de traitement", + "statements_operation_status_paid": "Payée", + "statements_operation_description_order": "Création de la commande", + "statements_operation_description_cancel": "Annulation d'une opération", + "statements_operation_description_creditcard_manual": "Paiement manuel sur carte de crédit", + "statements_operation_description_creditcard_automatic": "Débit automatique sur carte de crédit", + "statements_operation_description_refund_creditcard": "Remboursement sur carte de crédit", + "statements_operation_description_unpaid_creditcard": "Débit refusé sur carte de crédit", + "statements_operation_description_paypal_manual": "Paiement manuel sur PayPal", + "statements_operation_description_paypal_automatic": "Débit automatique sur compte PayPal", + "statements_operation_description_refund_paypal": "Remboursement sur compte PayPal", + "statements_operation_description_unpaid_paypal": "Débit refusé sur compte PayPal", + "statements_operation_description_sepa_automatic": "Prélèvement automatique sur compte bancaire", + "statements_operation_description_refund_sepa": "Remboursement sur compte bancaire", + "statements_operation_description_unpaid_sepa": "Prélèvement refusé sur compte bancaire", + "statements_operation_description_credit_account_automatic": "Prélèvement automatique sur compte prépayé OVH", + "statements_operation_description_refund_credit_account": "Remboursement sur compte prépayé OVH", + "statements_operation_description_unpaid_credit_account": "Annulation d'un versement via le compte prépayé OVH", + "statements_operation_description_check_manual": "Paiement par chèque", + "statements_operation_description_refund_check": "Remboursement d'un virement bancaire", + "statements_operation_description_unpaid_check": "Chèque refusé", + "statements_operation_description_transfer_manual": "Paiement par virement bancaire", + "statements_operation_description_unpaid_transfer": "Virement bancaire refusé", + "statements_operation_description_warrant_manual": "Paiement par mandat", + "statements_operation_description_refund_warrant": "Remboursement d'un mandat", + "statements_operation_description_unpaid_warrant": "Mandat refusé", + "statements_operation_description_refund": "Remboursement", + "statements_operation_description_refund_unknown": "Remboursement", + "billing_date_range_choose_custom_date": "Définir une période", + "billing_date_range_text": "Du {{t0}} au {{t1}}", + "billing_price_ttc_label": "{{price}} TTC", + "billing_guides_header": "Guides", + "billing_guides_header_manage_payment_methods_guides": "Gérer mes moyens de paiement", + "billing_guides_header_managing_orders_guides": "Gérer mes commandes OVHcloud", + "billing_guides_header_purchase_order_guides": "Notion de Numéro de commande ou Purchase Order (PO)", + "billing_guides_header_managing_bills_guides": "Gérer mes factures OVHcloud", + "billing_guides_header_automatic_renewal_guides": "Gérer le renouvellement de mes services" +} diff --git a/packages/manager/modules/new-billing/src/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..f3820ba4738d --- /dev/null +++ b/packages/manager/modules/new-billing/src/translations/Messages_fr_FR.json @@ -0,0 +1,920 @@ +{ + "billingError": "Une erreur s'est produite lors du chargement des informations", + "title_from": "du", + "title_to": "au", + "period_tooltip_from": "Sélectionnez une date de début", + "period_tooltip_to": "Sélectionnez une date de fin", + "table_download_html": "Voir la version HTML", + "table_download_pdf": "Voir la version PDF", + "table_download_html_order": "Voir la commande au format HTML", + "table_download_pdf_order": "Voir la commande au format PDF", + "table_download_html_invoice": "Voir la facture au format HTML", + "table_download_pdf_invoice": "Voir la facture au format PDF", + "table_download_pdf_beta": "Voir la version PDF (Beta)", + "todo": "A venir", + "wizard_order": "Commander", + "wizard_cancel": "Annuler", + "wizard_confirm": "Valider", + "wizard_pay": "Régler", + "wizard_renew": "Renouveler", + "wizard_next": "Suivant", + "wizard_previous": "Précédent", + "common_order_ascending": "tri par ordre croissant", + "common_order_descending": "tri par ordre décroissant", + "common_payment_type_cash": "Liquide", + "common_payment_type_chargeback": "Paiement refusé", + "common_payment_type_cheque": "Chèque", + "common_payment_type_creditCard": "Carte bancaire", + "common_payment_type_CREDIT_CARD": "Carte bancaire", + "common_payment_type_debtAccount": "Prélèvement SEPA", + "common_payment_type_DEBT_ACCOUNT": "Prélèvement SEPA", + "common_payment_type_deferredPaymentAccount": "Compte de paiement différé", + "common_payment_type_DEFERRED_PAYMENT_ACCOUNT": "Compte de paiement différé", + "common_payment_type_deposit": "Deposit", + "common_payment_type_edinar": "e-DINAR", + "common_payment_type_fidelityPoints": "Mes points", + "common_payment_type_FIDELITY_POINTS": "Mes points", + "common_payment_type_free": "Gratuit", + "common_payment_type_ideal": "iDEAL", + "common_payment_type_mandat": "Mandat cash", + "common_payment_type_multibanco": "Multibanco", + "common_payment_type_none": "Aucun", + "common_payment_type_ovhAccount": "Compte prépayé", + "common_payment_type_OVH_ACCOUNT": "Compte prépayé", + "common_payment_type_paymentMandate": "Mandat administratif", + "common_payment_type_PAYMENT_MANDATE": "Mandat administratif", + "common_payment_type_paypal": "Paypal", + "common_payment_type_payu": "PayU", + "common_payment_type_platnosci": "Płatności", + "common_payment_type_refund": "Avoir", + "common_payment_type_transfer": "Virement", + "common_payment_type_withdrawal": "Prélèvement", + "common_payment_type_bankAccount": "Compte bancaire", + "common_payment_type_BANK_ACCOUNT": "Compte bancaire", + "common_payment_type_digitalLaunchPad": "Digital launchpad", + "common_payment_type_DIGITAL_LAUNCH_PAD": "Digital launchpad", + "common_payment_type_unavailable": "Information sur le paiement non-disponible", + "common_payment_type_0": "Tous", + "common_see_another_month": "Voir un autre mois", + "common_choose": "Choisir", + "common_payment_type_creditCard_expiration_date": "Date d'expiration :", + "common_time_period_in_years": "{{t0}} ans", + "common_time_period_one_year": "1 an", + "common_time_period_in_months": "{{t0}} mois", + "common_time_period_one_month": "1 mois", + "pagination_page": "Page {{ current }} / {{ last }}", + "pagination_display": "Afficher", + "pagination_display_all": "Tout", + "pagination_go": "Ok", + "history_title2": "Mes factures", + "history_table_head_date": "Date d'émission", + "history_table_head_id": "Référence", + "history_table_head_order_id": "Numéro de commande", + "history_table_head_product": "Produit", + "history_table_head_payment": "Moyen de paiement", + "history_table_head_payment_select_filter": "Filtrer par moyen de paiement", + "history_table_head_total_with_VAT": "Montant TTC", + "history_table_head_total": "Montant", + "history_table_head_balance_due": "Solde à payer", + "history_table_head_due_date": "Date due", + "history_table_head_actions": "Actions", + "history_table_actions_tooltip": "Plus de détails sur cette facture", + "history_table_empty": "Vous n'avez pas de facture pour le mois sélectionné", + "history_table_information_not_available": "Information non-disponible", + "history_table_debt_due_immediately": "Immédiate", + "history_table_debt_paid": "Payée", + "payments_error": "Une erreur est survenue, veuillez nous excuser pour la gêne occasionnée.", + "payments_title": "Suivi des paiements", + "payments_description": "La liste suivante présente les paiements qui ont été réalisés sur votre moyen de paiement par défaut. Chacun des paiements peut regrouper une ou plusieurs factures.", + "payments_table_head_date": "Date de paiement", + "payments_table_head_id": "Référence", + "payments_table_head_type": "Moyen de paiement", + "payments_table_head_amount": "Montant total", + "payments_table_head_actions": "Actions", + "payments_table_actions_tooltip": "Plus de détails sur ce paiement", + "payments_table_type_not_available": "Information non-disponible", + "payments_table_empty": "Vous n'avez pas de paiement pour la période sélectionnée.", + "payments_request_pending": "Un règlement de solde est en cours. Cliquez sur ce lien pour en savoir plus.", + "payments_details_link": "Voir les détails pour ce paiement", + "payment_details_payment_id": "Référence", + "payment_details_payment_date": "Date", + "payment_details_payment_amount": "Montant total", + "payment_details_table_header_id": "Référence de facture", + "payment_details_table_header_date": "Date d'émission", + "payment_details_table_header_payment": "Montant de l'opération", + "payment_details_table_header_document": "Document", + "payment_details_title": "Détails du paiement", + "payments_details_table_empty": "Aucun détail disponible.", + "payment_details_return_to_payments": "Retour à la page précédente", + "orders_page_title": "Mes commandes", + "orders_table_head_date": "Date", + "orders_table_head_id": "Numéro de commande", + "orders_table_head_status": "État", + "orders_table_head_total_taxes_included": "Montant avec taxes", + "orders_table_head_total": "Montant", + "orders_table_empty": "Vous n'avez pas de commande.", + "orders_table_empty_with_filter": "Vous n'avez pas de commande pour ces critères:", + "orders_informations_error": "Une erreur s'est produite :", + "orders_order_status_cancelled": "Annulée", + "orders_order_status_cancelling": "Annulation en cours", + "orders_order_status_checking": "Validation", + "orders_order_status_delivered": "Finalisée", + "orders_order_status_delivering": "Livraison en cours", + "orders_order_status_documents_requested": "En attente de documents", + "orders_order_status_not_paid": "Paiement non reçu", + "orders_order_status_unknown": "Inconnu", + "orders_order_bc_expired": "Commande expirée", + "orders_order_status_filter_progress": "En cours", + "orders_order_status_filter_all": "Toutes", + "orders_order_status_filter_terminated": "Terminées", + "orders_order_status_filter_expired": "Expirées", + "orders_order_loading_error": "Erreur lors de la récupération de cette commande", + "orders_search_input_title": "Rechercher mes commandes par identifiant.", + "orders_table_actions_tooltip": "Plus de détails sur cette commande", + "orders_order_action_retract": "Annuler la commande", + "orders_retract_return_to_orders": "Retourner à mes commandes", + "orders_retract_title": "Rétractation du/des services de la commande", + "orders_retract_confirmation": "Voulez-vous vraiment annuler votre commande {{t0}}?", + "orders_retract_confirmation_text": "Oui je désire annuler cette commande.", + "orders_retract_description1": "Vous disposez d’un droit de rétractation de 14 jours à compter de la date de commande. En cas de rétractation, vous serez remboursé dans un délai de 30 jours à compter de la demande de rétractation, des sommes initialement versées déduction faite des jours de Services consommés au prorata temporis.", + "orders_retract_description2": "Attention, la rétractation via ce formulaire vaut pour tous les produits associés à cette commande. La rétractation prend effet immédiatement.", + "orders_retract_alert": "La confirmation entrainera la suppression automatique, immédiate et irréversible de l’ensemble des données liées à cette commande (y compris leur sauvegarde et back-up). Avant de poursuivre et de confirmer votre rétractation, il vous appartient de prendre toutes les mesures nécessaire à la conservation de vos données et à la poursuite de vos activités. OVH décline toute responsabilité à ce titre.", + "orders_retract_success": "Votre commande {{t0}} a bien été annulée.", + "orders_retract_error": "Une erreur s'est produite lors de l'annulation de votre commande.", + "refunds_title2": "Mes avoirs", + "refunds_table_head_date": "Date", + "refunds_table_head_id": "Référence", + "refunds_table_head_bill": "Associé à la facture", + "refunds_table_head_account": "Crédité sur", + "refunds_table_head_total": "Montant", + "refunds_table_head_total_with_VAT": "Montant TTC", + "refunds_table_download": "Télécharger", + "refunds_table_empty": "Vous n'avez pas d'avoir pour la période sélectionnée", + "refunds_table_account_no_information": "Informations indisponibles", + "ovhAccount_partial_error": "Suite à une erreur, certains mouvements ne sont pas affichés. Cependant le solde n'est pas affecté.", + "ovhAccount_title2": "Mouvements sur mon compte prépayé", + "ovhAccount_no_account": "Vous n'avez pas de compte prépayé", + "ovhAccount_balance": "Situation au", + "ovhAccount_table_head_date": "Date", + "ovhAccount_table_head_id": "Référence", + "ovhAccount_table_head_product": "Produit", + "ovhAccount_table_head_remaining": "Solde", + "ovhAccount_table_head_type": "Type", + "ovhAccount_table_head_debit": "Débit", + "ovhAccount_table_head_credit": "Crédit", + "ovhAccount_table_head_crediter": "Créditer", + "ovhAccount_table_head_crediter_none": "Ce compte ne peut pas être crédité.", + "ovhAccount_table_head_download": "Télécharger", + "ovhAccount_table_empty": "Vous n'avez pas de mouvements sur votre compte prépayé pour le mois sélectionné", + "ovhAccount_table_error": "Une erreur s'est produite. Impossible d'afficher les informations", + "ovhAccount_retrieve_account": "Sélectionnez votre compte bancaire :", + "ovhAccount_retrieve_amount": "Montant à transférer :", + "ovhAccount_retrieve_account_add": "Ajouter un compte bancaire", + "ovhAccount_retrieve_amount_disponible": "Somme disponible :", + "ovhAccount_retrieve_error": "Suite à une erreur votre opération n'a pas pu être effectuée.", + "ovhAccount_retrieve_explanation": "Vous avez la possibilité de lancer un virement d'un montant choisi depuis votre compte client OVH vers un compte bancaire. Veuillez noter que seules les sommes issues des reversements et des remboursements sont disponibles.", + "ovhAccount_retrieve_success": "Votre demande de virement a été traitée avec succès.", + "ovhAccount_retrieve_resume_1": "Confirmez-vous le virement d'un montant de", + "ovhAccount_retrieve_resume_2": "de votre compte prépayé vers votre compte bancaire", + "ovhAccount_retrieve_tips": "Cliquez sur \"Régler\" pour ouvrir le bon de commande. Il faut que votre navigateur accepte les pop-up.", + "ovhAccount_create_alert": "Définir une alerte", + "ovhAccount_create_alert_resume": "Vous serez alerté par e-mail lorsque le solde de votre compte passera en dessous du seuil d'alerte.", + "ovhAccount_delete_alert": "Désactiver les alertes concernant le solde sur votre compte :", + "ovhAccount_create_alert_amount": "Montant du seuil d'alerte :", + "ovhAccount_create_alert_wizard_button": "Définir", + "ovhAccount_create_alert_success": "Votre alerte a bien été enregistrée.", + "ovhAccount_create_alert_error": "Votre alerte n'a pas pu être correctement enregistrée suite à un problème.", + "ovhAccount_create_alert_amount_resume": "Montant du seuil d'alerte défini : {{t0}}", + "ovhAccount_no_alert": "Aucune alerte définie", + "ovhAccount_create_alert_input_error": "Nous n'acceptons que les nombres entiers positifs.", + "payment_mean_title": "Mes moyens de paiement", + "payment_mean_back": "Retourner à mes moyens de paiement", + "payment_mean_loading_error": "Erreur lors du chargement de la page", + "payment_mean_no_register": "Vous n'avez aucun moyen de paiement enregistré.", + "payment_mean_add": "Ajouter", + "payment_mean_add_title": "Ajouter un moyen de paiement", + "payment_mean_action_unavailable_for_our_subsidiary": "Cette action n’est pas supportée pour votre pays.", + "payment_mean_default": "Par défaut", + "payment_mean_set_default": "Moyen de paiement par défaut", + "payment_mean_set_default_after_validation": "Je veux sélectionner ce moyen de paiement par défaut dès sa validation.", + "payment_mean_set_as_default": "Ce moyen de paiement sera sélectionné par défaut après sa validation.", + "payment_mean_contact_presentation_reuse_contact": "en utilisant un contact déjà existant", + "payment_mean_contact_presentation_create_contact": "en créant un nouveau contact", + "payment_mean_contact_presentation_billingContactId_title": "Credit card address", + "payment_mean_contact_presentation_new_card_title": "Entrez une nouvelle carte", + "payment_mean_contact_presentation_update_title_billingContactId": "Changer l'adresse de la carte de crédit", + "payment_mean_contact_presentation_update_label": "Modifier", + "payment_mean_contact_presentation_phone_label": "Tél :", + "payment_mean_contact_presentation_email_label": "E-mail :", + "payment_mean_contact_creation_main_title": "Création d'un contact", + "payment_mean_contact_creation_mandatory_fields_rules_explained": "Par défaut seuls les champs obligatoires (marqués d'un astérisque) sont affichés. Utilisez le bouton positionné en début de chaque section pour afficher l'intégralité des champs que vous pouvez renseigner.", + "payment_mean_contact_creation_fieldset_GENERAL_INFORMATIONS": "Informations générales", + "payment_mean_contact_creation_fieldset_LEGAL": "Données juridiques", + "payment_mean_contact_creation_fieldset_PROFILE": "Profil", + "payment_mean_contact_creation_fieldset_CONTACTS": "Contacts", + "payment_mean_contact_creation_label_gender": "Civilité", + "payment_mean_contact_creation_label_firstName": "Prénom", + "payment_mean_contact_creation_label_lastName": "Nom", + "payment_mean_contact_creation_label_nationality": "Nationalité", + "payment_mean_contact_creation_label_country": "Pays", + "payment_mean_contact_creation_label_address_country": "Pays", + "payment_mean_contact_creation_label_address_province": "Province", + "payment_mean_contact_creation_label_address_state": "État", + "payment_mean_contact_creation_label_address_area": "Région", + "payment_mean_contact_creation_label_legalform": "Statut juridique", + "payment_mean_contact_creation_label_email_confirmation": "Confirmation email", + "payment_mean_contact_creation_label_spareEmail": "Email de secours", + "payment_mean_contact_creation_label_email": "Email", + "payment_mean_contact_creation_label_address_line1": "Adresse", + "payment_mean_contact_creation_label_address_line2": "Adresse (complément 1)", + "payment_mean_contact_creation_label_address_line3": "Adresse (complément 2)", + "payment_mean_contact_creation_label_address_otherDetails": "Adresse (autre)", + "payment_mean_contact_creation_label_address_zip": "Code postal", + "payment_mean_contact_creation_label_address_city": "Ville", + "payment_mean_contact_creation_label_birthDay": "Date d'anniversaire", + "payment_mean_contact_creation_label_phone": "Téléphone", + "payment_mean_contact_creation_label_fax": "Fax", + "payment_mean_contact_creation_label_language": "Langue", + "payment_mean_contact_creation_label_organisation": "Organisation", + "payment_mean_contact_creation_label_organisationType": "Type d'organisation", + "payment_mean_contact_creation_label_organisationName": "Nom de l'organisation", + "payment_mean_contact_creation_label_vat": "TVA intra communautaire", + "payment_mean_contact_creation_label_birthCity": "Ville de naissance", + "payment_mean_contact_creation_label_birthZip": "Code postal de naissance", + "payment_mean_contact_creation_label_birthCountry": "Pays de naissance", + "payment_mean_contact_creation_label_cellPhone": "Téléphone mobile", + "payment_mean_contact_creation_label_nationalIdentificationNumber": "Code fiscal", + "payment_mean_contact_creation_label_companyNationalIdentificationNumber": "Code fiscal", + "payment_mean_contact_creation_label_associationNationalIdentificationNumber": "Numéro d'identification national", + "payment_mean_contact_creation_label_optional": "(Optionnel)", + "payment_mean_contact_creation_gender_male": "Masculin", + "payment_mean_contact_creation_gender_female": "Féminin", + "payment_mean_contact_creation_country_AC": "Ascension Island", + "payment_mean_contact_creation_country_AD": "Andorra", + "payment_mean_contact_creation_country_AE": "United Arab Emirates", + "payment_mean_contact_creation_country_AF": "Afghanistan", + "payment_mean_contact_creation_country_AG": "Antigua And Barbuda", + "payment_mean_contact_creation_country_AI": "Anguilla", + "payment_mean_contact_creation_country_AL": "Albania", + "payment_mean_contact_creation_country_AM": "Armenia", + "payment_mean_contact_creation_country_AO": "Angola", + "payment_mean_contact_creation_country_AQ": "Antarctica", + "payment_mean_contact_creation_country_AR": "Argentina", + "payment_mean_contact_creation_country_AS": "American Samoa", + "payment_mean_contact_creation_country_AT": "Austria", + "payment_mean_contact_creation_country_AU": "Australia", + "payment_mean_contact_creation_country_AW": "Aruba", + "payment_mean_contact_creation_country_AX": "Åland Islands", + "payment_mean_contact_creation_country_AZ": "Azerbaijan", + "payment_mean_contact_creation_country_BA": "Bosnia and Herzegovina", + "payment_mean_contact_creation_country_BB": "Barbados", + "payment_mean_contact_creation_country_BD": "Bangladesh", + "payment_mean_contact_creation_country_BE": "Belgium", + "payment_mean_contact_creation_country_BF": "Burkina Faso", + "payment_mean_contact_creation_country_BG": "Bulgaria", + "payment_mean_contact_creation_country_BH": "Bahrain", + "payment_mean_contact_creation_country_BI": "Burundi", + "payment_mean_contact_creation_country_BJ": "Benin", + "payment_mean_contact_creation_country_BL": "Saint Barthélemy", + "payment_mean_contact_creation_country_BM": "Bermuda", + "payment_mean_contact_creation_country_BN": "Brunei Darussalam", + "payment_mean_contact_creation_country_BO": "Plurinational State Of Bolivia", + "payment_mean_contact_creation_country_BQ": "Bonaire, Saint Eustatius And Saba", + "payment_mean_contact_creation_country_BR": "Brazil", + "payment_mean_contact_creation_country_BS": "Bahamas", + "payment_mean_contact_creation_country_BT": "Bhutan", + "payment_mean_contact_creation_country_BW": "Botswana", + "payment_mean_contact_creation_country_BY": "Belarus", + "payment_mean_contact_creation_country_BZ": "Belize", + "payment_mean_contact_creation_country_CA": "Canada", + "payment_mean_contact_creation_country_CC": "Cocos (Keeling) Islands", + "payment_mean_contact_creation_country_CD": "Democratic Republic Of Congo", + "payment_mean_contact_creation_country_CF": "Central African Republic", + "payment_mean_contact_creation_country_CG": "Republic Of Congo", + "payment_mean_contact_creation_country_CH": "Switzerland", + "payment_mean_contact_creation_country_CI": "Cote d'Ivoire", + "payment_mean_contact_creation_country_CK": "Cook Islands", + "payment_mean_contact_creation_country_CL": "Chile", + "payment_mean_contact_creation_country_CM": "Cameroon", + "payment_mean_contact_creation_country_CN": "China", + "payment_mean_contact_creation_country_CO": "Colombia", + "payment_mean_contact_creation_country_CR": "Costa Rica", + "payment_mean_contact_creation_country_CU": "Cuba", + "payment_mean_contact_creation_country_CV": "Cape Verde", + "payment_mean_contact_creation_country_CW": "Curacao", + "payment_mean_contact_creation_country_CX": "Christmas Island", + "payment_mean_contact_creation_country_CY": "Cyprus", + "payment_mean_contact_creation_country_CZ": "Czech Republic", + "payment_mean_contact_creation_country_DE": "Germany", + "payment_mean_contact_creation_country_DG": "Diego Garcia", + "payment_mean_contact_creation_country_DJ": "Djibouti", + "payment_mean_contact_creation_country_DK": "Denmark", + "payment_mean_contact_creation_country_DM": "Dominica", + "payment_mean_contact_creation_country_DO": "Dominican Republic", + "payment_mean_contact_creation_country_DZ": "Algeria", + "payment_mean_contact_creation_country_EA": "Autonomous City of Ceuta", + "payment_mean_contact_creation_country_EC": "Ecuador", + "payment_mean_contact_creation_country_EE": "Estonia", + "payment_mean_contact_creation_country_EG": "Egypt", + "payment_mean_contact_creation_country_EH": "Western Sahara", + "payment_mean_contact_creation_country_ER": "Eritrea", + "payment_mean_contact_creation_country_ES": "Spain", + "payment_mean_contact_creation_country_ET": "Ethiopia", + "payment_mean_contact_creation_country_FI": "Finland", + "payment_mean_contact_creation_country_FJ": "Fiji", + "payment_mean_contact_creation_country_FK": "Falkland Islands", + "payment_mean_contact_creation_country_FM": "Federated States Of Micronesia", + "payment_mean_contact_creation_country_FO": "Faroe Islands", + "payment_mean_contact_creation_country_FR": "France", + "payment_mean_contact_creation_country_GA": "Gabon", + "payment_mean_contact_creation_country_GB": "United Kingdom", + "payment_mean_contact_creation_country_UK": "United Kingdom", + "payment_mean_contact_creation_country_GD": "Grenada", + "payment_mean_contact_creation_country_GE": "Georgia", + "payment_mean_contact_creation_country_GF": "French Guiana", + "payment_mean_contact_creation_country_GG": "Guernsey", + "payment_mean_contact_creation_country_GH": "Ghana", + "payment_mean_contact_creation_country_GI": "Gibraltar", + "payment_mean_contact_creation_country_GL": "Greenland", + "payment_mean_contact_creation_country_GM": "Gambia", + "payment_mean_contact_creation_country_GN": "Guinea", + "payment_mean_contact_creation_country_GP": "Guadeloupe", + "payment_mean_contact_creation_country_GQ": "Equatorial Guinea", + "payment_mean_contact_creation_country_GR": "Greece", + "payment_mean_contact_creation_country_GS": "South Georgia and the South Sandwich Islands", + "payment_mean_contact_creation_country_GT": "Guatemala", + "payment_mean_contact_creation_country_GU": "Guam", + "payment_mean_contact_creation_country_GW": "Guinea-bissau", + "payment_mean_contact_creation_country_GY": "Guyana", + "payment_mean_contact_creation_country_HK": "Hong Kong", + "payment_mean_contact_creation_country_HN": "Honduras", + "payment_mean_contact_creation_country_HR": "Croatia", + "payment_mean_contact_creation_country_HT": "Haiti", + "payment_mean_contact_creation_country_HU": "Hungary", + "payment_mean_contact_creation_country_IC": "Canary Islands", + "payment_mean_contact_creation_country_ID": "Indonesia", + "payment_mean_contact_creation_country_IE": "Ireland", + "payment_mean_contact_creation_country_IL": "Israel", + "payment_mean_contact_creation_country_IM": "Isle Of Man", + "payment_mean_contact_creation_country_IN": "India", + "payment_mean_contact_creation_country_IO": "British Indian Ocean Territory", + "payment_mean_contact_creation_country_IQ": "Iraq", + "payment_mean_contact_creation_country_IR": "Islamic Republic Of Iran", + "payment_mean_contact_creation_country_IS": "Iceland", + "payment_mean_contact_creation_country_IT": "Italy", + "payment_mean_contact_creation_country_JE": "Jersey", + "payment_mean_contact_creation_country_JM": "Jamaica", + "payment_mean_contact_creation_country_JO": "Jordan", + "payment_mean_contact_creation_country_JP": "Japan", + "payment_mean_contact_creation_country_KE": "Kenya", + "payment_mean_contact_creation_country_KG": "Kyrgyzstan", + "payment_mean_contact_creation_country_KH": "Cambodia", + "payment_mean_contact_creation_country_KI": "Kiribati", + "payment_mean_contact_creation_country_KM": "Comoros", + "payment_mean_contact_creation_country_KN": "Saint Kitts And Nevis", + "payment_mean_contact_creation_country_KP": "Democratic People's Republic Of Korea", + "payment_mean_contact_creation_country_KR": "Republic Of Korea", + "payment_mean_contact_creation_country_KW": "Kuwait", + "payment_mean_contact_creation_country_KY": "Cayman Islands", + "payment_mean_contact_creation_country_KZ": "Kazakhstan", + "payment_mean_contact_creation_country_LA": "Lao People's Democratic Republic", + "payment_mean_contact_creation_country_LB": "Lebanon", + "payment_mean_contact_creation_country_LC": "Saint Lucia", + "payment_mean_contact_creation_country_LI": "Liechtenstein", + "payment_mean_contact_creation_country_LK": "Sri Lanka", + "payment_mean_contact_creation_country_LR": "Liberia", + "payment_mean_contact_creation_country_LS": "Lesotho", + "payment_mean_contact_creation_country_LT": "Lithuania", + "payment_mean_contact_creation_country_LU": "Luxembourg", + "payment_mean_contact_creation_country_LV": "Latvia", + "payment_mean_contact_creation_country_LY": "Libya", + "payment_mean_contact_creation_country_MA": "Morocco", + "payment_mean_contact_creation_country_MC": "Monaco", + "payment_mean_contact_creation_country_MD": "Moldova", + "payment_mean_contact_creation_country_ME": "Montenegro", + "payment_mean_contact_creation_country_MF": "Saint Martin", + "payment_mean_contact_creation_country_MG": "Madagascar", + "payment_mean_contact_creation_country_MH": "Marshall Islands", + "payment_mean_contact_creation_country_MK": "The Former Yugoslav Republic Of Macedonia", + "payment_mean_contact_creation_country_ML": "Mali", + "payment_mean_contact_creation_country_MM": "Myanmar", + "payment_mean_contact_creation_country_MN": "Mongolia", + "payment_mean_contact_creation_country_MO": "Macao", + "payment_mean_contact_creation_country_MP": "Northern Mariana Islands", + "payment_mean_contact_creation_country_MQ": "Martinique", + "payment_mean_contact_creation_country_MR": "Mauritania", + "payment_mean_contact_creation_country_MS": "Montserrat", + "payment_mean_contact_creation_country_MT": "Malta", + "payment_mean_contact_creation_country_MU": "Mauritius", + "payment_mean_contact_creation_country_MV": "Maldives", + "payment_mean_contact_creation_country_MW": "Malawi", + "payment_mean_contact_creation_country_MX": "Mexico", + "payment_mean_contact_creation_country_MY": "Malaysia", + "payment_mean_contact_creation_country_MZ": "Mozambique", + "payment_mean_contact_creation_country_NA": "Namibia", + "payment_mean_contact_creation_country_NC": "New Caledonia", + "payment_mean_contact_creation_country_NE": "Niger", + "payment_mean_contact_creation_country_NF": "Norfolk Island", + "payment_mean_contact_creation_country_NG": "Nigeria", + "payment_mean_contact_creation_country_NI": "Nicaragua", + "payment_mean_contact_creation_country_NL": "Netherlands", + "payment_mean_contact_creation_country_NO": "Norway", + "payment_mean_contact_creation_country_NP": "Nepal", + "payment_mean_contact_creation_country_NR": "Nauru", + "payment_mean_contact_creation_country_NU": "Niue", + "payment_mean_contact_creation_country_NZ": "New Zealand", + "payment_mean_contact_creation_country_OM": "Oman", + "payment_mean_contact_creation_country_PA": "Panama", + "payment_mean_contact_creation_country_PE": "Peru", + "payment_mean_contact_creation_country_PF": "French Polynesia", + "payment_mean_contact_creation_country_PG": "Papua New Guinea", + "payment_mean_contact_creation_country_PH": "Philippines", + "payment_mean_contact_creation_country_PK": "Pakistan", + "payment_mean_contact_creation_country_PL": "Poland", + "payment_mean_contact_creation_country_PM": "Saint Pierre And Miquelon", + "payment_mean_contact_creation_country_PN": "Pitcairn Islands", + "payment_mean_contact_creation_country_PR": "Puerto Rico", + "payment_mean_contact_creation_country_PS": "Palestinian Territory, Occupied", + "payment_mean_contact_creation_country_PT": "Portugal", + "payment_mean_contact_creation_country_PW": "Palau", + "payment_mean_contact_creation_country_PY": "Paraguay", + "payment_mean_contact_creation_country_QA": "Qatar", + "payment_mean_contact_creation_country_RE": "La Réunion", + "payment_mean_contact_creation_country_RO": "Romania", + "payment_mean_contact_creation_country_RS": "Serbia", + "payment_mean_contact_creation_country_RU": "Russian Federation", + "payment_mean_contact_creation_country_RW": "Rwanda", + "payment_mean_contact_creation_country_SA": "Saudi Arabia", + "payment_mean_contact_creation_country_SB": "Solomon Islands", + "payment_mean_contact_creation_country_SC": "Seychelles", + "payment_mean_contact_creation_country_SD": "Sudan", + "payment_mean_contact_creation_country_SE": "Sweden", + "payment_mean_contact_creation_country_SG": "Singapore", + "payment_mean_contact_creation_country_SH": "Saint Helena, Ascension And Tristan Da Cunha", + "payment_mean_contact_creation_country_SI": "Slovenia", + "payment_mean_contact_creation_country_SJ": "Svalbard And Jan Mayen", + "payment_mean_contact_creation_country_SK": "Slovakia", + "payment_mean_contact_creation_country_SL": "Sierra Leone", + "payment_mean_contact_creation_country_SM": "San Marino", + "payment_mean_contact_creation_country_SN": "Senegal", + "payment_mean_contact_creation_country_SO": "Somalia", + "payment_mean_contact_creation_country_SR": "Suriname", + "payment_mean_contact_creation_country_SS": "South Sudan", + "payment_mean_contact_creation_country_ST": "São Tomé and Príncipe", + "payment_mean_contact_creation_country_SV": "El Salvador", + "payment_mean_contact_creation_country_SX": "Sint Maarten", + "payment_mean_contact_creation_country_SY": "Syrian Arab Republic", + "payment_mean_contact_creation_country_SZ": "Swaziland", + "payment_mean_contact_creation_country_TA": "Tristan dã Cunha", + "payment_mean_contact_creation_country_TC": "Turks And Caicos Islands", + "payment_mean_contact_creation_country_TD": "Chad", + "payment_mean_contact_creation_country_TF": "French Southern Territories", + "payment_mean_contact_creation_country_TG": "Togo", + "payment_mean_contact_creation_country_TH": "Thailand", + "payment_mean_contact_creation_country_TJ": "Tajikistan", + "payment_mean_contact_creation_country_TK": "Tokelau", + "payment_mean_contact_creation_country_TL": "East Timor", + "payment_mean_contact_creation_country_TM": "Turkmenistan", + "payment_mean_contact_creation_country_TN": "Tunisia", + "payment_mean_contact_creation_country_TO": "Tonga", + "payment_mean_contact_creation_country_TR": "Turkey", + "payment_mean_contact_creation_country_TT": "Trinidad And Tobago", + "payment_mean_contact_creation_country_TV": "Tuvalu", + "payment_mean_contact_creation_country_TW": "Taiwan, Province Of China", + "payment_mean_contact_creation_country_TZ": "United Republic Of Tanzania", + "payment_mean_contact_creation_country_UA": "Ukraine", + "payment_mean_contact_creation_country_UG": "Uganda", + "payment_mean_contact_creation_country_UM": "United States Minor Outlying Islands", + "payment_mean_contact_creation_country_US": "United States", + "payment_mean_contact_creation_country_UY": "Uruguay", + "payment_mean_contact_creation_country_UZ": "Uzbekistan", + "payment_mean_contact_creation_country_VA": "Vatican City State", + "payment_mean_contact_creation_country_VC": "Saint Vincent And The Grenadines", + "payment_mean_contact_creation_country_VE": "Bolivarian Republic Of Venezuela", + "payment_mean_contact_creation_country_VG": "Virgin Islands (British)", + "payment_mean_contact_creation_country_VI": "Virgin Islands (US)", + "payment_mean_contact_creation_country_VN": "Viet Nam", + "payment_mean_contact_creation_country_VU": "Vanuatu", + "payment_mean_contact_creation_country_WF": "Wallis And Futuna", + "payment_mean_contact_creation_country_WS": "Samoa", + "payment_mean_contact_creation_country_XK": "Kosovo", + "payment_mean_contact_creation_country_YE": "Yemen", + "payment_mean_contact_creation_country_YT": "Mayotte", + "payment_mean_contact_creation_country_ZA": "South Africa", + "payment_mean_contact_creation_country_ZM": "Zambia", + "payment_mean_contact_creation_country_ZW": "Zimbabwe", + "payment_mean_contact_creation_country_UNKNOWN": "Mon pays n'est pas dans cette liste", + "payment_mean_contact_creation_legalform_individual": "Individuel", + "payment_mean_contact_creation_legalform_association": "Association", + "payment_mean_contact_creation_legalform_corporation": "Entreprise", + "payment_mean_contact_creation_legalform_administration": "Administration", + "payment_mean_contact_creation_legalform_personalcorporation": "Travailleur indépendant", + "payment_mean_contact_creation_legalform_other": "Autre", + "payment_mean_contact_creation_language_de_DE": "Allemand", + "payment_mean_contact_creation_language_en_AU": "Anglais (Australien)", + "payment_mean_contact_creation_language_en_CA": "Anglais (Canadien)", + "payment_mean_contact_creation_language_en_GB": "Anglais", + "payment_mean_contact_creation_language_en_US": "Anglais (États Unis)", + "payment_mean_contact_creation_language_es_ES": "Espagnol", + "payment_mean_contact_creation_language_fr_CA": "Français (Canadien)", + "payment_mean_contact_creation_language_fr_FR": "Français", + "payment_mean_contact_creation_language_fr_MA": "Français (Maroc)", + "payment_mean_contact_creation_language_fr_SN": "Français (Sénégal)", + "payment_mean_contact_creation_language_fr_TN": "Français (Tunisie)", + "payment_mean_contact_creation_language_pl_PL": "Polonais", + "payment_mean_contact_creation_language_cs_CZ": "Tchéque", + "payment_mean_contact_creation_language_fi_FI": "Finnois", + "payment_mean_contact_creation_language_en_IE": "Irlandais", + "payment_mean_contact_creation_language_it_IT": "Italien", + "payment_mean_contact_creation_language_lt_LT": "Lituanien", + "payment_mean_contact_creation_language_nl_NL": "Néerlandais", + "payment_mean_contact_creation_language_pt_PT": "Portugais", + "payment_mean_contact_contact_creation_submit": "Confirmer et enregistrer", + "payment_mean_contact_contact_creation_cancel": "Annuler", + "mean_manage_my_services": "Gérer mes services", + "mean_table_head_creation_date": "Date de création", + "mean_table_head_description": "Description", + "mean_table_head_type": "Type de paiement", + "mean_table_head_options": "Options", + "payment_mean_no_description": "Aucune description", + "payment_mean_description_error": "Une erreur est survenue lors de la modification de la description :", + "payment_mean_default_mean_error": "Une erreur est survenue, veuillez nous excuser pour la gêne occasionnée.", + "add_mean_select_title_choose": "Faites votre choix", + "add_mean_select_title_no_choice": "Aucun autre choix possible", + "add_mean_unable_to_get_payment_means": "Impossible d’obtenir les moyens de paiement disponibles", + "mean_table_head_state": "État", + "mean_table_head_actions": "Actions", + "mean_table_head_3d_secure": "3D Secure", + "mean_table_head_3d_secure_true": "Oui", + "mean_table_head_3d_secure_false": "Non", + "mean_table_tooltip_more_actions": "Plus d'actions pour ce moyen de paiement", + "deleteMean_title": "Suppression d'un moyen de paiement", + "paymentMean_delete_message_paypal": "Attention, vous allez supprimer définitivement le moyen de paiement associé au compte paypal :", + "paymentMean_delete_message_bankAccount": "Attention, vous allez supprimer définitivement le moyen de paiement associé au compte bancaire :", + "paymentMean_delete_message_creditCard": "Attention, vous allez supprimer définitivement le moyen de paiement associé à la carte du numéro :", + "paymentMean_label_creditcard_owner_name": "Nom inscrit sur la carte bancaire", + "paymentMean_label_creditcard_number": "Numéro", + "paymentMean_label_creditcard_validation": "Validation", + "paymentMean_label_creditcard_expiration": "Expiration", + "paymentMean_label_iban": "IBAN", + "paymentMean_label_bic": "BIC", + "paymentMean_label_addressNumber": "Numéro", + "paymentMean_label_addressStreetName": "Nom de la voie", + "paymentMean_label_addressPostalCode": "Code postal", + "paymentMean_label_addressTown": "Ville", + "paymentMean_label_ownerName": "Nom et prénom du propriétaire ou nom de l'organisation propriétaire", + "paymentMean_label_ownerAddress": "Adresse du propriétaire du compte", + "paymentMean_error_bic_bank": "Le code de la banque est incorrect.", + "paymentMean_error_bic_valid": "Le BIC est invalide.", + "paymentMean_error_required": "Ce champs est requis.", + "paymentMean_error_iban_base": "la base de l'IBAN est invalide.", + "paymentMean_error_iban_country": "Le pays de l'IBAN est invalide.", + "paymentMean_error_iban_key": "La clef de l'IBAN est invalide.", + "paymentMean_error_iban_valid": "L'IBAN est invalide.", + "paymentMean_error_minlength": "Il faut au moins 5 caractères.", + "paymentMean_error_addressPostalCode_required": "Ce champs est requis.", + "paymentMean_error_addressPostalCode_min": "Le code postal n'est pas valide.", + "paymentMean_error_addressPostalCode_max": "Le code postal n'est pas valide.", + "paymentMean_error_addressPostalCode_pattern": "Le code postal doit être composé de 5 chiffres.", + "paymentMean_error_maxlength": "Le texte doit être plus petit que 255 caractères.", + "paymentType_delete_error": "Erreur lors de la suppression du moyen de paiement", + "paymentType_modify_error": "Erreur lors de la modification du moyen de paiement", + "paymentType_delete_success": "Moyen de paiement supprimé", + "paymentMean_add_message_paypal": "En cliquant sur le bouton \"Ajouter\", vous pourrez vous connecter sur votre compte Paypal afin de valider un abonnement permettant à OVH d'effectuer des débits sur votre compte Paypal lors de l'édition de vos prochaines factures.", + "paymentMean_add_message_creditCard": "Afin de valider l'enregistrement de votre carte bancaire, nous allons procéder à une tentative de paiement.
Le montant d'1 euro ne sera donc pas débité sur votre compte suite à la confirmation de votre banque.
Votre carte bancaire sera activée immédiatement.", + "paymentMean_add_message_creditCard_CA": "OVH demande l'autorisation de débit, qui peut apparaître comme un mouvement en cours sur votre compte, mais ne demandera pas la finalisation de cette autorisation, le montant ne vous sera donc pas débité ou sera remboursé par votre institution bancaire.", + "paymentMean_add_message_bankAccount": "En cliquant sur le bouton \"Ajouter\", un document sera téléchargé.
Veuillez suivre la procédure décrite dans le document pour valider le moyen de paiement. Votre compte bancaire sera validé dans les 24h à 48h à compter de la réception de votre autorisation de prélévement.", + "paymentType_status_valid": "Validé", + "paymentType_status_expired": "Expiré", + "paymentType_status_proposedByCustomer": "En attente de validation", + "paymentType_status_tooManyFailures": "Invalide (trop de tentatives de validation en erreur)", + "paymentType_status_broken": "Brisé", + "paymentType_status_canceled": "Annulé", + "paymentType_status_canceling": "En cours d'annulation", + "paymentType_status_canceledbycustomer": "Annulé par l'utilisateur", + "paymentType_status_canceled_by_customer": "Annulé par l'utilisateur", + "paymentType_status_created": "En attente de validation", + "paymentType_status_error": "En erreur", + "paymentType_status_validforcredit": "Valide pour crédit", + "paymentType_add_error": "Erreur lors de l'ajout du moyen de paiement", + "paymentType_status_pendingValidation": "En cours de validation", + "paymentType_status_waiting_for_documents": "En attente de réception", + "payment_mean_add_paypal": "Lancer un abonnement Paypal", + "payement_mean_add_creditCard": "Générer un bon de commande", + "payment_mean_get_validation": "Récupérer la procédure de validation", + "payment_mean_return_by_mail_procedure": "Procédure à retourner par voie postale", + "paymentType_add_validation_description": "Vous devez valider l'ajout de votre moyen de paiement.", + "paymentType_add_success_url": "Cliquez ici pour être redirigé vers une page sécurisée et finaliser l'opération.", + "paymentType_bankAccount_add_success_with_download": "Le compte bancaire a été ajouté, il sera actif une fois validé. Veuillez suivre la procédure décrite dans ce document pour valider le moyen de paiement à retourner par voie postale.", + "paymentType_bankAccount_pending_validation": "Vous avez ajouté un compte bancaire sur votre espace client pour lequel nous sommes dans l'attente de votre autorisation de prélèvement à nous retourner par voie postale.", + "paymentType_bankAccount_processing_delay": "Votre compte bancaire sera validé dans les 24h à 48h à compter de la réception de votre autorisation de prélèvement.", + "payment_mean_radio_select_default": "Désigner ce moyen de paiement automatique par défaut.", + "payment_mean_select_default": "Désigner comme moyen par défaut.", + "payment_mean_delete_payment_mean": "Effacer ce moyen de paiement.", + "payment_mean_description_add": "Ajouter une description.", + "payment_mean_description_edit": "Modifier la description.", + "payment_mean_description_input": "Description du moyen de paiement", + "payment_mean_description_save": "Enregistrer la description", + "payment_mean_description_cancel": "Annuler les changements à la description", + "ovhAccount_table_type_CANCEL_CREDIT": "Annulation crédit", + "ovhAccount_table_type_CANCEL_CREDIT_BILL": "Annulation facture", + "ovhAccount_table_type_CANCEL_CREDIT_REFUND": "Annulation avoir", + "ovhAccount_table_type_CANCEL_CREDIT_STATEMENT_INCOME": "Annulation approvisionnement compte prépayé", + "ovhAccount_table_type_CANCEL_CREDIT_STATEMENT_OUTCOME": "Annulation virement vers compte bancaire", + "ovhAccount_table_type_CANCEL_CREDIT_DEPOSIT": "Annulation acompte", + "ovhAccount_table_type_CANCEL_DEBIT": "Annulation débit", + "ovhAccount_table_type_CANCEL_DEBIT_BILL": "Annulation facture", + "ovhAccount_table_type_CANCEL_DEBIT_REFUND": "Annulation avoir", + "ovhAccount_table_type_CANCEL_DEBIT_STATEMENT_INCOME": "Annulation approvisionnement compte prépayé", + "ovhAccount_table_type_CANCEL_DEBIT_STATEMENT_OUTCOME": "Annulation virement vers compte bancaire", + "ovhAccount_table_type_CANCEL_PRE_DEBIT": "Annulation débit", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_BILL": "Facture", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_REFUND": "Avoir", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_STATEMENT_INCOME": "Approvisionnement compte prépayé", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_STATEMENT_OUTCOME": "Virement vers compte bancaire", + "ovhAccount_table_type_CREDIT": "Crédit", + "ovhAccount_table_type_CREDIT_BILL": "Facture", + "ovhAccount_table_type_CREDIT_DEPOSIT": "Acompte", + "ovhAccount_table_type_CREDIT_REFUND": "Avoir", + "ovhAccount_table_type_CREDIT_STATEMENT_INCOME": "Approvisionnement compte prépayé", + "ovhAccount_table_type_CREDIT_STATEMENT_OUTCOME": "Virement vers compte bancaire", + "ovhAccount_table_type_DEBIT": "Débit", + "ovhAccount_table_type_DEBIT_BILL": "Facture", + "ovhAccount_table_type_DEBIT_REFUND": "Avoir", + "ovhAccount_table_type_DEBIT_STATEMENT_INCOME": "Approvisionnement compte prépayé", + "ovhAccount_table_type_DEBIT_STATEMENT_OUTCOME": "Virement vers compte bancaire", + "ovhAccount_table_type_DEBIT_WITHDRAWAL": "Débit", + "ovhAccount_table_type_PRE_CREDIT": "Crédit", + "ovhAccount_table_type_PRE_CREDIT_BILL": "Facture", + "ovhAccount_table_type_PRE_CREDIT_REFUND": "Avoir", + "ovhAccount_table_type_PRE_CREDIT_STATEMENT_INCOME": "Approvisionnement compte prépayé", + "ovhAccount_table_type_PRE_CREDIT_STATEMENT_OUTCOME": "Virement vers compte bancaire", + "ovhAccount_table_type_PRE_DEBIT": "Débit", + "ovhAccount_table_type_PRE_DEBIT_BILL": "Facture", + "ovhAccount_table_type_PRE_DEBIT_REFUND": "Avoir", + "ovhAccount_table_type_PRE_DEBIT_STATEMENT_INCOME": "Approvisionnement compte prépayé", + "ovhAccount_table_type_PRE_DEBIT_STATEMENT_OUTCOME": "Virement vers compte bancaire", + "ovhAccount_table_head_payment_type": "Moyen de paiement", + "ovhAccount_table_type_payment_CASH": "Espèce", + "ovhAccount_table_type_payment_CHARGEBACK": "Annulation de paiement", + "ovhAccount_table_type_payment_CHEQUE": "Chèque", + "ovhAccount_table_type_payment_CREDIT_CARD": "Carte bancaire", + "ovhAccount_table_type_payment_DEPOSIT": "Acompte", + "ovhAccount_table_type_payment_DEBT_ACCOUNT": "Compte débiteur", + "ovhAccount_table_type_payment_EDINAR": "e-DINAR", + "ovhAccount_table_type_payment_FIDELITY_POINTS": "Mes points", + "ovhAccount_table_type_payment_FREE": "Gratuit", + "ovhAccount_table_type_payment_IDEAL": "iDEAL", + "ovhAccount_table_type_payment_MANDAT": "Mandat", + "ovhAccount_table_type_payment_MULTIBANCO": "Multibanco", + "ovhAccount_table_type_payment_NONE": "Aucun", + "ovhAccount_table_type_payment_OVH_ACCOUNT": "Compte prépayé", + "ovhAccount_table_type_payment_PAYMENT_MANDATE": "Mandat", + "ovhAccount_table_type_payment_PAYPAL": "Paypal", + "ovhAccount_table_type_payment_PLATNOSCI": "Płatności", + "ovhAccount_table_type_payment_REFUND": "Avoir", + "ovhAccount_table_type_payment_TRANSFER": "Virement", + "ovhAccount_table_type_payment_WITHDRAWAL": "Prélèvement bancaire", + "ovhAccount_table_type_payment_CREDIT_ACCOUNT": "Compte de crédit", + "ovhAccount_table_type_payment_DIGITAL_LAUNCH_PAD": "Voucher DLP", + "ovhAccount_table_type_payment_INCUBATOR_ACCOUNT": "Compte Incubator", + "ovhAccount_table_type_payment_PAYU": "PayU", + "ovhAccount_retrieve_title": "Virement vers un compte bancaire", + "ovhAccount_renew_title": "Créditez votre compte prépayé", + "ovhAccount_renew_step1_msg": "Vous pouvez créditer votre compte pour régler vos factures, ou anticiper le paiement des factures suivantes.", + "ovhAccount_renew_step1_erreurmin": "Le montant du crédit doit être au moins de 10 {{t0}} et votre solde de compte doit être positif.", + "ovhAccount_renew_step1_erreurformat": "Le montant saisi est incorrect, veuillez utiliser uniquement des chiffres avec comme caractère de séparation le point ou la virgule.", + "ovhAccount_renew_step1_amount": "Montant ({{t0}}) :", + "ovhAccount_renew_step2_msg": "Résumé de votre commande", + "ovhAccount_renew_step2_credit": "Montant qui sera crédité :", + "ovhAccount_renew_step2_error": "Une erreur est survenue, veuillez nous excuser pour la gêne occasionnée.", + "ovhAccount_renew_step2_success": "Votre crédit (commande N° {{t1}}) sera effectif sur votre compte prépayé à réception de votre paiement.", + "ovhAccount_account_list_error": "Une erreur est survenue lors de la récupération la liste de vos comptes", + "ovhAccount_account_list_title": "- Compte", + "ovhAccount_account_list_empty": "Aucun compte a afficher", + "telconso_menu_this_month": "Mois en cours", + "telconso_menu_last_month": "Mois précédents", + "telconso_search": "Rechercher une ligne", + "telconso_table_empty": "Aucun élément à afficher", + "telconso_table_line_empty": "Aucune ligne à afficher", + "telconso_title_current_month": "Mon suivi conso téléphonie du {{t0}} au {{t1}}", + "telconso_consumption": "Consommation", + "telconso_plan_to": "Forfait à {{t0}}", + "telconso_allowed_outplan": "Hors-forfait autorisé", + "telconso_service_name_consumption": "Consommation", + "telconso_nb_lines": "Nombre de lignes :", + "telconso_nb_groups": "Nombre de groupes :", + "telconso_callout": "{{t0}} % d'appels émis", + "telconso_callin": "{{t0}} % d'appels reçus", + "telconso_faxout": "{{t0}} % de fax émis", + "telconso_faxin": "{{t0}} % de fax reçus", + "telconso_to_fixe": "Vers les fixes", + "telconso_to_mobiles": "Vers les mobiles", + "telconso_to_special": "Vers les numéros spéciaux", + "telconso_send_fax": "Envoi de fax", + "telconso_fax": "Fax", + "telconso_calls": "Nombre d'appels", + "telconso_faxs": "Nombre de fax", + "telconso_anonymous": "Anonyme", + "telconso_in": "Reçus", + "telconso_out": "Emis", + "telconso_com_time": "Temps de com.", + "telconso_call_count": "Nombre", + "telconso_line": "Ligne", + "telconso_lines": "Lignes", + "telconso_price": "Tarif", + "telconso_outplan": "Hors-forfait (HT)", + "telconso_group_outplan": "Hors-forfait", + "telconso_group": "Groupe", + "telconso_all_groups": "Tous les groupes", + "telconso_select_group": "Selectionnez un groupe pour plus d'informations", + "telconso_calls_details": "Détails des appels", + "telconso_fax_details": "Détails des fax", + "telconso_line_myline": "Ma ligne {{t0}}", + "telconso_line_include": "Conso incluses dans le forfait", + "telconso_line_outplan": "Conso hors-forfait", + "telconso_next_billing": "Date de prochaine facture:", + "tel_conso_conso_date": "Date", + "tel_conso_conso_num_emit": "Numéro appelant", + "tel_conso_conso_num_recv": "Numéro appelé", + "tel_conso_conso_tranfert": "Redirigé vers", + "tel_conso_conso_time": "Durée", + "tel_conso_conso_include": "Inclus", + "tel_conso_conso_outplan": "Hors-forfait (HT)", + "tel_conso_conso_included": "Inclus", + "tel_conso_conso_notincluded": "Non inclus", + "tel_conso_calls": "appels", + "tel_conso_tabs_inc": "Reçus", + "tel_conso_tabs_out": "Emis", + "tel_conso_tabs_trs": "Transférés", + "tel_conso_tabs_incfix": "Depuis les fixes", + "tel_conso_tabs_incmob": "Depuis les mobiles", + "tel_conso_tabs_incspe": "Depuis les numéros spéciaux", + "tel_conso_tabs_outfix": "Vers les fixes", + "tel_conso_tabs_outmob": "Vers les mobiles", + "tel_conso_tabs_outspe": "Vers les numéros spéciaux", + "tel_conso_tabs_trsfix": "Vers les fixes", + "tel_conso_tabs_trsmob": "Vers les mobiles", + "tel_conso_tabs_trsspe": "Vers les numéros spéciaux", + "tel_conso_tabs_sent": "Envoyés", + "tel_conso_tabs_received": "Reçus", + "tel_conso_error": "une erreur est survenue pendant le chargement des informations", + "tel_conso_h": "h", + "tel_conso_min": "min", + "tel_conso_s": "s", + "tel_lastconso_title": "Mon relevé téléphonique des mois précédents", + "tel_lastconso_month": "Mois", + "tel_lastconso_priceplan": "Montant total", + "tel_lastconso_outplan": "Hors-forfait", + "tel_lastconso_sheet": "Relevés de consommation", + "tel_lastconso_sheet_down": "Télécharger", + "tel_lastconso_sheet_progress": "En cours", + "tel_lastconso_month_date_display": "MMM yyyy", + "fidelity_title": "Mes points", + "fidelity_get_accounts_error": "Une erreur est survenue pendant le chargement des informations", + "fidelity_header_date": "Date", + "fidelity_header_order": "Transaction", + "fidelity_header_operation": "Opération", + "fidelity_header_credit": "Crédit", + "fidelity_header_debit": "Débit", + "fidelity_header_balance": "Solde", + "fidelity_points": "point(s)", + "fidelity_creditOrder_title": "Créditer votre compte", + "fidelity_creditOrder_step1_msg": "Vous pouvez créditer votre compte pour régler vos achats, ou pour renouveler vos services, lors d'un renouvellement dit \"manuel\". (1 point = 0,01 {{t0}} HT)", + "fidelity_creditOrder_step1_amount": "Montant (en points)", + "fidelity_creditOrder_step1_erreurformat": "Le montant saisi est incorrect, veuillez utiliser uniquement des chiffres.", + "fidelity_creditOrder_step1_erreurmin": "Le montant du crédit doit être au moins de {{t0}} points.", + "fidelity_creditOrder_step1_erreurmax": "Le montant maximum du crédit est de {{t0}} points.", + "fidelity_creditOrder_step2_msg": "Résumé de votre commande", + "fidelity_creditOrder_step2_credit": "Montant qui sera crédité:", + "fidelity_creditOrder_step2_error": "Une erreur est survenue pendant le chargement des informations", + "fidelity_creditOrder_step2_success": "Votre crédit (commande N° {{t1}}) sera effectif sur votre compte prépayé à réception de votre paiement.", + "fidelity_creditOrder_submit_error": "Une erreur est survenue lors du crédit de vos points.", + "fidelity_creditOrder_submit_success": "Votre crédit de {{t0}} points a bien été généré, vous pouvez procéder à votre commande dans l'onglet Mes commandes", + "fidelity_no_item": "Aucun élément à afficher.", + "fidelity_balance_info": "Situation au {{t0}} : {{t1}} point(s)", + "fidelity_no_account": "Vous ne disposez pas de compte fidélité", + "sla_table_head_date": "Date", + "sla_table_head_description": "Description", + "sla_table_head_refund": "Compensation", + "sla_table_apply": "Appliquer", + "sla_informations_error": "Une erreur est survenue lors de la récupération des informations. Veuillez réessayer ultérieurement :", + "sla_apply_error": "Une erreur est survenue lors de la demande de compensation :", + "sla_apply_success": "La demande de compensation a bien été prise en compte. Elle sera effective d'ici quelques heures.", + "sla_apply_no_data": "Vous n'avez droit à aucune compensation.", + "sla_table_head_service_name": "Nom du service", + "sla_table_head_service_description": "Description du service", + "sla_table_head_service_sla_plan": "SLA contractuel", + "sla_table_head_service_sla_application": "Avantage octroyé", + "sla_table_services_empty": "Aucun service", + "sla_informations": "Voici la liste des opérations de compensation auxquelles vous êtes éligible. Pour bénéficier de ces dernières, veuillez cliquer sur le bouton \"Appliquer\" correspondant.", + "sla_informations_end": "Vous avez jusqu'au {{t0}} pour effectuer votre demande d'indemnisation et obtenir les dédommagements alloués dans le cadre de nos SLA.", + "sla_informations_applied": "Votre demande a bien été prise en compte et sera traitée dans les plus brefs délais.", + "sla_informations_applied_all": "Vos demandes ont bien été prises en compte et seront traitées dans les plus brefs délais.", + "sla_informations_status_created": "Créée", + "sla_informations_status_notApplicable": "Non applicable", + "sla_informations_status_completed": "Validée", + "sla_informations_status_requested": "En cours de traitement", + "voucher_table_head_id": "ID", + "voucher_table_head_balance": "Balance", + "voucher_table_head_voucher_open_date": "Date d'ouverture", + "voucher_table_head_voucher_last_update": "Dernière mise à jour", + "voucher_table_empty": "Aucun voucher", + "voucher_informations_error": "Une erreur s'est produite :", + "vouchers_title": "Mes vouchers", + "vouchers_movements_title": "Mouvements sur le voucher {{t0}}", + "voucher_movements_table_head_id": "ID", + "voucher_movements_table_head_description": "Description", + "voucher_movements_table_head_date": "Date", + "voucher_movements_table_head_amount": "Montant", + "voucher_movements_table_head_previous_balance": "Balance précédente", + "voucher_movements_table_head_balance": "Balance", + "voucher_movements_table_head_operation": "Opération", + "voucher_movements_table_head_order": "Commande", + "voucher_movements_table_empty": "Aucun mouvement", + "voucher_movements_operation_type_cancel-credit": "Crédit annulé", + "voucher_movements_operation_type_cancel-debit": "Débit annulé", + "voucher_movements_operation_type_cancel-pre-debit": "Annulation pré-débit", + "voucher_movements_operation_type_credit": "Crédit", + "voucher_movements_operation_type_debit": "Débit", + "voucher_movements_operation_type_pre-credit": "Pré-crédit", + "voucher_movements_operation_type_pre-debit": "Pré-débit", + "statements_account_automatic_payment_inactive": "Le prélèvement automatique n'est pas possible pour le renouvellement de vos services.", + "statements_account_no_default_payment_mean": "Vous n'avez pas désigné de moyen de paiement par défaut.", + "statements_account_invalid_default_payment_mean": "Votre moyen de paiement par défaut n'est plus valide.", + "statements_account_manage_my_payment_means": "Gérer mes moyens de paiement", + "statements_account_pay_debt_button": "Régler mon solde immédiatement", + "statements_table_caption": "Commandes à votre comptes", + "statements_table_header_order": "Commande", + "statements_table_header_date": "Date", + "statements_table_header_due_date": "Date d'échéance", + "statements_table_no_due_date": "Immédiate", + "statements_table_header_amount": "Montant", + "statements_table_header_balance": "Balance due", + "statements_table_header_details": "Détails", + "statements_table_no_detail": "Aucune donnée disponible.", + "statements_table_invoice_link": "Consulter la facture {{t0}} dans une nouvelle fenêtre.", + "statements_table_order_link": "Consulter la commande {{t0}} dans une nouvelle fenêtre.", + "statements_table_detail_label": "Voir les détails pour cette facture.", + "statements_table_detail_link": "Voir les détails pour cette dette {{t0}}.", + "statements_table_pay_debt_button": "Régler mon solde immédiatement", + "statements_summary_error": "Une erreur est survenue dans l'obtention de la balance de votre compte.", + "statements_detail_error": "Une erreur est survenue dans l'obtention du détails de votre compte.", + "statements_single_debt_error": "Une erreur est survenue dans l'obtention du détails de cette ligne {{t0}}.", + "statements_payment_mean_error": "Une erreur est survenue dans l'obtention de vos moyens de paiement", + "statements_details_summary_title": "Sommaire de la commande", + "statements_details_operations_title": "Historique des opérations", + "statements_details_page_loader": "Chargement des informations ...", + "statements_details_page_operations": "Une erreur est survenue dans l'obtention de l'historique des opérations.", + "statements_details_return_to_statements": "Retour à la page précédente", + "statements_details_table_caption": "Listes des opérations sur la facture", + "statements_details_table_header_date": "Date", + "statements_details_table_header_operation": "Opération", + "statements_details_table_header_status": "État", + "statements_details_table_header_amount": "Montant", + "statements_details_table_header_document": "Document", + "statements_details_table_order_link": "Ouvrir la commande associée à cette opération dans une nouvelle fenêtre.", + "statements_details_table_invoice_html_link": "Consulter la facture en version html (nouvelle fenêtre).", + "statements_details_table_invoice_pdf_link": "Consulter la facture en version pdf (nouvelle fenêtre).", + "statements_operation_status_done": "Complétée", + "statements_operation_status_cancelled": "Annulée", + "statements_operation_status_failed": "Échouée", + "statements_operation_status_todo": "En attente de paiement", + "statements_operation_status_pending": "En cours de traitement", + "statements_operation_status_paid": "Payée", + "statements_operation_description_order": "Création de la commande", + "statements_operation_description_cancel": "Annulation d'une opération", + "statements_operation_description_creditcard_manual": "Paiement manuel sur carte de crédit", + "statements_operation_description_creditcard_automatic": "Débit automatique sur carte de crédit", + "statements_operation_description_refund_creditcard": "Remboursement sur carte de crédit", + "statements_operation_description_unpaid_creditcard": "Débit refusé sur carte de crédit", + "statements_operation_description_paypal_manual": "Paiement manuel sur PayPal", + "statements_operation_description_paypal_automatic": "Débit automatique sur compte PayPal", + "statements_operation_description_refund_paypal": "Remboursement sur compte PayPal", + "statements_operation_description_unpaid_paypal": "Débit refusé sur compte PayPal", + "statements_operation_description_sepa_automatic": "Prélèvement automatique sur compte bancaire", + "statements_operation_description_refund_sepa": "Remboursement sur compte bancaire", + "statements_operation_description_unpaid_sepa": "Prélèvement refusé sur compte bancaire", + "statements_operation_description_credit_account_automatic": "Prélèvement automatique sur compte prépayé OVH", + "statements_operation_description_refund_credit_account": "Remboursement sur compte prépayé OVH", + "statements_operation_description_unpaid_credit_account": "Annulation d'un versement via le compte prépayé OVH", + "statements_operation_description_check_manual": "Paiement par chèque", + "statements_operation_description_refund_check": "Remboursement d'un virement bancaire", + "statements_operation_description_unpaid_check": "Chèque refusé", + "statements_operation_description_transfer_manual": "Paiement par virement bancaire", + "statements_operation_description_unpaid_transfer": "Virement bancaire refusé", + "statements_operation_description_warrant_manual": "Paiement par mandat", + "statements_operation_description_refund_warrant": "Remboursement d'un mandat", + "statements_operation_description_unpaid_warrant": "Mandat refusé", + "statements_operation_description_refund": "Remboursement", + "statements_operation_description_refund_unknown": "Remboursement", + "billing_date_range_choose_custom_date": "Définir une période", + "billing_date_range_text": "Du {{t0}} au {{t1}}", + "billing_price_ttc_label": "{{price}} TTC", + "billing_guides_header": "Guides", + "billing_guides_header_manage_payment_methods_guides": "Gérer mes moyens de paiement", + "billing_guides_header_managing_orders_guides": "Gérer mes commandes OVHcloud", + "billing_guides_header_purchase_order_guides": "Notion de Numéro de commande ou Purchase Order (PO)", + "billing_guides_header_managing_bills_guides": "Gérer mes factures OVHcloud", + "billing_guides_header_automatic_renewal_guides": "Gérer le renouvellement de mes services" +} diff --git a/packages/manager/modules/new-billing/src/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/translations/Messages_it_IT.json new file mode 100644 index 000000000000..c59f1a38a382 --- /dev/null +++ b/packages/manager/modules/new-billing/src/translations/Messages_it_IT.json @@ -0,0 +1,920 @@ +{ + "billingError": "Si è verificato un errore nel caricamento delle informazioni", + "title_from": "dal ", + "title_to": "al", + "period_tooltip_from": "Seleziona una data di inizio", + "period_tooltip_to": "Seleziona una data di fine", + "table_download_html": "Visualizza in HTML", + "table_download_pdf": "Visualizza in PDF", + "table_download_html_order": "Visualizza l'ordine in formato HTML", + "table_download_pdf_order": "Visualizza l'ordine in formato PDF", + "table_download_html_invoice": "Visualizza la fattura in formato HTML", + "table_download_pdf_invoice": "Visualizza la fattura in formato PDF", + "table_download_pdf_beta": "Visualizza la versione PDF (Beta)", + "todo": "Presto", + "wizard_order": "Ordina", + "wizard_cancel": "Annulla", + "wizard_confirm": "Conferma", + "wizard_pay": "Salda", + "wizard_renew": "Rinnova", + "wizard_next": "Seguente", + "wizard_previous": "Precedente", + "common_order_ascending": "ordine crescente", + "common_order_descending": "ordine decrescente", + "common_payment_type_cash": "Contanti", + "common_payment_type_chargeback": "Pagamento non accettato", + "common_payment_type_cheque": "Assegno", + "common_payment_type_creditCard": "Carta bancaria", + "common_payment_type_CREDIT_CARD": "Carta bancaria", + "common_payment_type_debtAccount": "Addebito SEPA", + "common_payment_type_DEBT_ACCOUNT": "Addebito SEPA", + "common_payment_type_deferredPaymentAccount": "Conto di pagamento differito", + "common_payment_type_DEFERRED_PAYMENT_ACCOUNT": "Conto di pagamento differito", + "common_payment_type_deposit": "Deposito", + "common_payment_type_edinar": "Moneta elettronica", + "common_payment_type_fidelityPoints": "I miei punti", + "common_payment_type_FIDELITY_POINTS": "I miei punti", + "common_payment_type_free": "Gratuito", + "common_payment_type_ideal": "iDEAL", + "common_payment_type_mandat": "Vaglia postale", + "common_payment_type_multibanco": "Multibanco", + "common_payment_type_none": "Nessuno", + "common_payment_type_ovhAccount": "Conto prepagato", + "common_payment_type_OVH_ACCOUNT": "Conto prepagato", + "common_payment_type_paymentMandate": "Vaglia", + "common_payment_type_PAYMENT_MANDATE": "Vaglia", + "common_payment_type_paypal": "Paypal", + "common_payment_type_payu": "PayU", + "common_payment_type_platnosci": "Transfer payment", + "common_payment_type_refund": "Credito", + "common_payment_type_transfer": "Bonifico", + "common_payment_type_withdrawal": "Prelievo", + "common_payment_type_bankAccount": "Conto corrente", + "common_payment_type_BANK_ACCOUNT": "Conto corrente", + "common_payment_type_digitalLaunchPad": "Digital Launch Pad", + "common_payment_type_DIGITAL_LAUNCH_PAD": "Digital Launch Pad", + "common_payment_type_unavailable": "Informazione sul pagamento non disponibile", + "common_payment_type_0": "Tutti", + "common_see_another_month": "Visualizza un altro mese", + "common_choose": "Scegli", + "common_payment_type_creditCard_expiration_date": "Data di scadenza:", + "common_time_period_in_years": "{{t0}} anni", + "common_time_period_one_year": "1 anno", + "common_time_period_in_months": "{{t0}} mese", + "common_time_period_one_month": "1 mese", + "pagination_page": "Pagina {{ current }}/{{ last }}", + "pagination_display": "Mostra", + "pagination_display_all": "Tutto", + "pagination_go": "OK", + "history_title2": "Le tue fatture", + "history_table_head_date": "Data di emissione", + "history_table_head_id": "Referenza", + "history_table_head_order_id": "Numero dell'ordine", + "history_table_head_product": "Prodotto", + "history_table_head_payment": "Metodo di pagamento", + "history_table_head_payment_select_filter": "Filtra per modalità di pagamento", + "history_table_head_total_with_VAT": "Importo IVA inclusa", + "history_table_head_total": "Importo", + "history_table_head_balance_due": "Importo da saldare", + "history_table_head_due_date": "Termine ultimo", + "history_table_head_actions": "Azioni", + "history_table_actions_tooltip": "Maggiori dettagli per questa fattura", + "history_table_empty": "Non ci sono fatture per il mese selezionato", + "history_table_information_not_available": "Informazione non disponibile", + "history_table_debt_due_immediately": "Immediato", + "history_table_debt_paid": "Pagato", + "payments_error": "Si è verificato un errore, ci scusiamo per il disagio.", + "payments_title": "Controllo dei pagamenti", + "payments_description": "La lista seguente ti mostra i pagamenti effettuati con la tua modalità di pagamento predefinita. Ciascun pagamento può raggruppare una o più fatture.", + "payments_table_head_date": "Data di pagamento", + "payments_table_head_id": "Referenza", + "payments_table_head_type": "Metodo di pagamento", + "payments_table_head_amount": "Importo totale", + "payments_table_head_actions": "Azioni", + "payments_table_actions_tooltip": "Maggiori dettagli su questo pagamento", + "payments_table_type_not_available": "Informazione non disponibile", + "payments_table_empty": "Non sono presenti pagamenti per il periodo selezionato.", + "payments_request_pending": "Un pagamento è in fase di elaborazione. Clicca qui per avere maggiori informazioni.", + "payments_details_link": "Visualizza i dettagli del pagamento", + "payment_details_payment_id": "Referenza", + "payment_details_payment_date": "Data", + "payment_details_payment_amount": "Importo totale", + "payment_details_table_header_id": "Riferimento della fattura", + "payment_details_table_header_date": "Data di emissione", + "payment_details_table_header_payment": "Importo dell'operazione", + "payment_details_table_header_document": "Documento", + "payment_details_title": "Dettagli del pagamento", + "payments_details_table_empty": "Nessun dettaglio disponibile.", + "payment_details_return_to_payments": "Ritorna alla pagina precedente", + "orders_page_title": "I tuoi ordini", + "orders_table_head_date": "Data", + "orders_table_head_id": "Numero dell'ordine", + "orders_table_head_status": "Stato", + "orders_table_head_total_taxes_included": "Importo IVA inclusa", + "orders_table_head_total": "Importo", + "orders_table_empty": "Non sono presenti ordini", + "orders_table_empty_with_filter": "Non sono presenti ordini con questi parametri:", + "orders_informations_error": "Si è verificato un errore:", + "orders_order_status_cancelled": "Annullata", + "orders_order_status_cancelling": "Annulamento in corso...", + "orders_order_status_checking": "Convalida", + "orders_order_status_delivered": "Completata", + "orders_order_status_delivering": "Consegna in corso...", + "orders_order_status_documents_requested": "In attesa dei documenti", + "orders_order_status_not_paid": "Pagamento non ricevuto", + "orders_order_status_unknown": "Sconosciuto", + "orders_order_bc_expired": "Ordine scaduto", + "orders_order_status_filter_progress": "In corso", + "orders_order_status_filter_all": "Tutti", + "orders_order_status_filter_terminated": "Completati", + "orders_order_status_filter_expired": "Scaduti", + "orders_order_loading_error": "Si è verificato un errore durante il recupero di questo ordine", + "orders_search_input_title": "Ricerca i tuoi ordini per identificativo.", + "orders_table_actions_tooltip": "Più informazioni su questo ordine", + "orders_order_action_retract": "Annulla l'ordine", + "orders_retract_return_to_orders": "Ritorna ai tuoi ordini", + "orders_retract_title": "Recesso dei servizi dell'ordine", + "orders_retract_confirmation": "Vuoi davvero annullare il tuo ordine {{t0}}?", + "orders_retract_confirmation_text": "Sì, voglio annullare questo ordine.", + "orders_retract_description1": "Puoi esercitare il diritto di recesso entro 14 giorni a partire dalla data dell'ordine. In caso di rescissione del contratto riceverai un rimborso entro 30 giorni dalla data della tua richiesta, per un importo pari alle somme versate inizialmente al netto dei giorni di servizio effettivamente utilizzati.", + "orders_retract_description2": "Attenzione: la richiesta di recesso tramite questo form è valida per tutti i prodotti associati a questo ordine e prende effetto immediato.", + "orders_retract_alert": "La conferma comporta l'eliminazione automatica, immediata e irreversible di tutti i dati associati all'ordine (backup inclusi). Prima di proseguire e confermare il recesso, è compito del cliente attuare le misure necessarie alla conservazione dei propri dati e al proseguimento della propria attività. A questo titolo, OVH declina qualunque responsabilità.", + "orders_retract_success": "L'ordine {{t0}} è stato annullato.", + "orders_retract_error": "Si è verificato un errore durante l'annullamento del tuo ordine.", + "refunds_title2": "Accrediti", + "refunds_table_head_date": "Data", + "refunds_table_head_id": "Referenza", + "refunds_table_head_bill": "Associato alla fattura", + "refunds_table_head_account": "Accreditato su", + "refunds_table_head_total": "Importo", + "refunds_table_head_total_with_VAT": "Importo IVA inclusa", + "refunds_table_download": "Esegui il download", + "refunds_table_empty": "Non ci sono accrediti nel periodo selezionato", + "refunds_table_account_no_information": "Informazioni indisponibili", + "ovhAccount_partial_error": "A causa di un errore, alcuni movimenti non possono essere visualizzati. Il saldo resta comunque invariato.", + "ovhAccount_title2": "Movimenti del tuo conto prepagato", + "ovhAccount_no_account": "Non hai conti prepagati", + "ovhAccount_balance": "Saldo:", + "ovhAccount_table_head_date": "Data", + "ovhAccount_table_head_id": "Referenza", + "ovhAccount_table_head_product": "Prodotto", + "ovhAccount_table_head_remaining": "Saldo", + "ovhAccount_table_head_type": "Tipo", + "ovhAccount_table_head_debit": "Flusso", + "ovhAccount_table_head_credit": "Credito", + "ovhAccount_table_head_crediter": "Accredita", + "ovhAccount_table_head_crediter_none": "Non è possibile aggiungere credito a questo account", + "ovhAccount_table_head_download": "Esegui il download", + "ovhAccount_table_empty": "Non sono presenti movimenti sul tuo conto prepagato per il mese selezionato ", + "ovhAccount_table_error": "Si è verificato un errore, non è possibile caricare le informazioni", + "ovhAccount_retrieve_account": "Seleziona il tuo conto bancario:", + "ovhAccount_retrieve_amount": "Importo da trasferire:", + "ovhAccount_retrieve_account_add": "Aggiungi un conto bancario", + "ovhAccount_retrieve_amount_disponible": "Importo disponibile:", + "ovhAccount_retrieve_error": "A causa di un errore, la tua operazione non è stata effettuata.", + "ovhAccount_retrieve_explanation": "Hai la possibilità di effettuare un bonifico dal tuo conto cliente OVH verso un conto bancario. Ricordati che sono disponibili solo gli importi derivanti da trasferimenti e rimborsi.", + "ovhAccount_retrieve_success": "La tua richiesta di bonifico è stata elaborata correttamente.", + "ovhAccount_retrieve_resume_1": "Conferma il bonifico di un importo di", + "ovhAccount_retrieve_resume_2": "del tuo conto prepagato verso il tuo conto bancario", + "ovhAccount_retrieve_tips": "Clicca su \"Salda\" per aprire il tuo buono d'ordine. È necessario che il tuo browser consenta la visualizzazione dei popup.", + "ovhAccount_create_alert": "Definisci un alert", + "ovhAccount_create_alert_resume": "Riceverai un'email quando il saldo del tuo account raggiungerà la soglia di alert.", + "ovhAccount_delete_alert": "Disattiva gli alert relativi al saldo del tuo account:", + "ovhAccount_create_alert_amount": "Importo della soglia di alert:", + "ovhAccount_create_alert_wizard_button": "Definisci", + "ovhAccount_create_alert_success": "Il tuo alert è stato registrato correttamente.", + "ovhAccount_create_alert_error": "Si è verificato un problema, la registrazione del tuo alert non è andata a buon fine.", + "ovhAccount_create_alert_amount_resume": "Soglia di alert définita: {{t0}}", + "ovhAccount_no_alert": "Nessun alert definito", + "ovhAccount_create_alert_input_error": "È possibile inserire solo numeri interi positivi.", + "payment_mean_title": "I tuoi metodi di pagamento", + "payment_mean_back": "Ritorna ai tuoi metodi di pagamento", + "payment_mean_loading_error": "Errore durante il caricamento della pagina", + "payment_mean_no_register": "Non ci sono metodi di pagamento registrati", + "payment_mean_add": "Aggiungi", + "payment_mean_add_title": "Aggiungi un metodo di pagamento", + "payment_mean_action_unavailable_for_our_subsidiary": "Operazione non disponibile in Italia", + "payment_mean_default": "Standard", + "payment_mean_set_default": "Metodo di pagamento predefinito ", + "payment_mean_set_default_after_validation": "Una volta confermata, voglio impostare questa modalità di pagamento come predefinita.", + "payment_mean_set_as_default": "Una volta confermato, questo metodo di pagamento verrà impostato come predefinito.", + "payment_mean_contact_presentation_reuse_contact": "utilizzando un contatto già esistente", + "payment_mean_contact_presentation_create_contact": "creando un nuovo contatto", + "payment_mean_contact_presentation_billingContactId_title": "Credit card address", + "payment_mean_contact_presentation_new_card_title": "Registra una nuova carta", + "payment_mean_contact_presentation_update_title_billingContactId": "Modifica l'indirizzo della carta bancaria", + "payment_mean_contact_presentation_update_label": "Modifica", + "payment_mean_contact_presentation_phone_label": "Tel:", + "payment_mean_contact_presentation_email_label": "E-mail :", + "payment_mean_contact_creation_main_title": "Crea un contatto", + "payment_mean_contact_creation_mandatory_fields_rules_explained": "Di default vengono mostrati solo i campi obbligatori (contrassegnati con un asterisco). Per visualizzare tutti i campi, clicca sul pulsante all'inizio di ogni sezione.", + "payment_mean_contact_creation_fieldset_GENERAL_INFORMATIONS": "Informazioni generali", + "payment_mean_contact_creation_fieldset_LEGAL": "Informazioni aggiuntive", + "payment_mean_contact_creation_fieldset_PROFILE": "Profilo", + "payment_mean_contact_creation_fieldset_CONTACTS": "Contatti", + "payment_mean_contact_creation_label_gender": "Titolo", + "payment_mean_contact_creation_label_firstName": "Nome", + "payment_mean_contact_creation_label_lastName": "Cognome", + "payment_mean_contact_creation_label_nationality": "Nazionalità", + "payment_mean_contact_creation_label_country": "Paese", + "payment_mean_contact_creation_label_address_country": "Paese", + "payment_mean_contact_creation_label_address_province": "Provincia", + "payment_mean_contact_creation_label_address_state": "Stato", + "payment_mean_contact_creation_label_address_area": "Provincia", + "payment_mean_contact_creation_label_legalform": "Statuto giuridico", + "payment_mean_contact_creation_label_email_confirmation": "Conferma email", + "payment_mean_contact_creation_label_spareEmail": "Email di recupero", + "payment_mean_contact_creation_label_email": "Email", + "payment_mean_contact_creation_label_address_line1": "Indirizzo", + "payment_mean_contact_creation_label_address_line2": "Indirizzo (riga 1)", + "payment_mean_contact_creation_label_address_line3": "Indirizzo (riga 2)", + "payment_mean_contact_creation_label_address_otherDetails": "Indirizzo (altro)", + "payment_mean_contact_creation_label_address_zip": "Codice postale", + "payment_mean_contact_creation_label_address_city": "Città", + "payment_mean_contact_creation_label_birthDay": "Data di nascita", + "payment_mean_contact_creation_label_phone": "Telefono", + "payment_mean_contact_creation_label_fax": "Fax", + "payment_mean_contact_creation_label_language": "Lingua", + "payment_mean_contact_creation_label_organisation": "Organizzazione", + "payment_mean_contact_creation_label_organisationType": "Tipo di società", + "payment_mean_contact_creation_label_organisationName": "Nome azienda", + "payment_mean_contact_creation_label_vat": "IVA intra comunitaria", + "payment_mean_contact_creation_label_birthCity": "Luogo di nascita", + "payment_mean_contact_creation_label_birthZip": "Codice postale del luogo di nascita", + "payment_mean_contact_creation_label_birthCountry": "Paese di nascita", + "payment_mean_contact_creation_label_cellPhone": "Mobile", + "payment_mean_contact_creation_label_nationalIdentificationNumber": "Codice fiscale", + "payment_mean_contact_creation_label_companyNationalIdentificationNumber": "Codice fiscale", + "payment_mean_contact_creation_label_associationNationalIdentificationNumber": "Codice Fiscale", + "payment_mean_contact_creation_label_optional": "(Opzionale)", + "payment_mean_contact_creation_gender_male": "M", + "payment_mean_contact_creation_gender_female": "F", + "payment_mean_contact_creation_country_AC": "Isola di Ascensione", + "payment_mean_contact_creation_country_AD": "Andorra", + "payment_mean_contact_creation_country_AE": "Emirati Arabi Uniti", + "payment_mean_contact_creation_country_AF": "Afghanistan", + "payment_mean_contact_creation_country_AG": "Antigua e Barbuda", + "payment_mean_contact_creation_country_AI": "Anguilla", + "payment_mean_contact_creation_country_AL": "Albania", + "payment_mean_contact_creation_country_AM": "Armenia", + "payment_mean_contact_creation_country_AO": "Angola", + "payment_mean_contact_creation_country_AQ": "Antartide", + "payment_mean_contact_creation_country_AR": "Argentina", + "payment_mean_contact_creation_country_AS": "Samoa Americane", + "payment_mean_contact_creation_country_AT": "Austria", + "payment_mean_contact_creation_country_AU": "Australia", + "payment_mean_contact_creation_country_AW": "Aruba", + "payment_mean_contact_creation_country_AX": "Åland Islands", + "payment_mean_contact_creation_country_AZ": "Azerbaijan", + "payment_mean_contact_creation_country_BA": "Bosnia-Erzegovina", + "payment_mean_contact_creation_country_BB": "Barbados", + "payment_mean_contact_creation_country_BD": "Bangladesh", + "payment_mean_contact_creation_country_BE": "Belgio", + "payment_mean_contact_creation_country_BF": "Burkina Faso", + "payment_mean_contact_creation_country_BG": "Bulgaria", + "payment_mean_contact_creation_country_BH": "Bahrein", + "payment_mean_contact_creation_country_BI": "Burundi", + "payment_mean_contact_creation_country_BJ": "Benin", + "payment_mean_contact_creation_country_BL": "Saint Barts", + "payment_mean_contact_creation_country_BM": "Bermuda", + "payment_mean_contact_creation_country_BN": "Brunei Darussalam", + "payment_mean_contact_creation_country_BO": "Bolivia", + "payment_mean_contact_creation_country_BQ": "Bonaire, Sint Eustatius e Saba.", + "payment_mean_contact_creation_country_BR": "Brasile", + "payment_mean_contact_creation_country_BS": "Bahamas", + "payment_mean_contact_creation_country_BT": "Bhutan", + "payment_mean_contact_creation_country_BW": "Botswana", + "payment_mean_contact_creation_country_BY": "Bielorussia", + "payment_mean_contact_creation_country_BZ": "Belize", + "payment_mean_contact_creation_country_CA": "Canada", + "payment_mean_contact_creation_country_CC": "Isole Cocos (Keeling)", + "payment_mean_contact_creation_country_CD": "Repubblica Democratica del Congo", + "payment_mean_contact_creation_country_CF": "Repubblica Centrafricana", + "payment_mean_contact_creation_country_CG": "Repubblica del Congo", + "payment_mean_contact_creation_country_CH": "Svizzera", + "payment_mean_contact_creation_country_CI": "Costa d'Avorio", + "payment_mean_contact_creation_country_CK": "Isole Cook", + "payment_mean_contact_creation_country_CL": "Cile", + "payment_mean_contact_creation_country_CM": "Camerun", + "payment_mean_contact_creation_country_CN": "Cina", + "payment_mean_contact_creation_country_CO": "Colombia", + "payment_mean_contact_creation_country_CR": "Costa Rica", + "payment_mean_contact_creation_country_CU": "Cuba", + "payment_mean_contact_creation_country_CV": "Capo Verde", + "payment_mean_contact_creation_country_CW": "Curaçao", + "payment_mean_contact_creation_country_CX": "Isola di Natale", + "payment_mean_contact_creation_country_CY": "Cipro", + "payment_mean_contact_creation_country_CZ": "Repubblica Ceca", + "payment_mean_contact_creation_country_DE": "Germania", + "payment_mean_contact_creation_country_DG": "Diego Garcia", + "payment_mean_contact_creation_country_DJ": "Gibuti", + "payment_mean_contact_creation_country_DK": "Danimarca", + "payment_mean_contact_creation_country_DM": "Dominica", + "payment_mean_contact_creation_country_DO": "Repubblica Dominicana", + "payment_mean_contact_creation_country_DZ": "Algeria", + "payment_mean_contact_creation_country_EA": "Città autonoma di Ceuta", + "payment_mean_contact_creation_country_EC": "Ecuador", + "payment_mean_contact_creation_country_EE": "Estonia", + "payment_mean_contact_creation_country_EG": "Egitto", + "payment_mean_contact_creation_country_EH": "Sahara Occidentale", + "payment_mean_contact_creation_country_ER": "Eritrea", + "payment_mean_contact_creation_country_ES": "Spagna", + "payment_mean_contact_creation_country_ET": "Etiopia", + "payment_mean_contact_creation_country_FI": "Finlandia", + "payment_mean_contact_creation_country_FJ": "Isole Fiji", + "payment_mean_contact_creation_country_FK": "Isole Falkland", + "payment_mean_contact_creation_country_FM": "Stati Federati di Micronesia", + "payment_mean_contact_creation_country_FO": "Isole Faroe", + "payment_mean_contact_creation_country_FR": "Francia", + "payment_mean_contact_creation_country_GA": "Gabon", + "payment_mean_contact_creation_country_GB": "Regno Unito", + "payment_mean_contact_creation_country_UK": "Regno Unito", + "payment_mean_contact_creation_country_GD": "Grenada", + "payment_mean_contact_creation_country_GE": "Georgia", + "payment_mean_contact_creation_country_GF": "Guyana francese", + "payment_mean_contact_creation_country_GG": "Guernsey", + "payment_mean_contact_creation_country_GH": "Ghana", + "payment_mean_contact_creation_country_GI": "Gibilterra", + "payment_mean_contact_creation_country_GL": "Groenlandia", + "payment_mean_contact_creation_country_GM": "Gambia", + "payment_mean_contact_creation_country_GN": "Guinea", + "payment_mean_contact_creation_country_GP": "Guadalupe", + "payment_mean_contact_creation_country_GQ": "Guinea Equatoriale", + "payment_mean_contact_creation_country_GR": "Grecia", + "payment_mean_contact_creation_country_GS": "South Georgia and the South Sandwich Islands", + "payment_mean_contact_creation_country_GT": "Guatemala", + "payment_mean_contact_creation_country_GU": "Guam", + "payment_mean_contact_creation_country_GW": "Guinea-Bissau", + "payment_mean_contact_creation_country_GY": "Guyana", + "payment_mean_contact_creation_country_HK": "Hong Kong", + "payment_mean_contact_creation_country_HN": "Honduras", + "payment_mean_contact_creation_country_HR": "Croazia", + "payment_mean_contact_creation_country_HT": "Haiti", + "payment_mean_contact_creation_country_HU": "Ungheria", + "payment_mean_contact_creation_country_IC": "Isole Canarie", + "payment_mean_contact_creation_country_ID": "Indonesia", + "payment_mean_contact_creation_country_IE": "Irlanda", + "payment_mean_contact_creation_country_IL": "Israele", + "payment_mean_contact_creation_country_IM": "Isola di Man", + "payment_mean_contact_creation_country_IN": "India", + "payment_mean_contact_creation_country_IO": "Territorio britannico dell'Oceano Indiano", + "payment_mean_contact_creation_country_IQ": "Iraq", + "payment_mean_contact_creation_country_IR": "Iran", + "payment_mean_contact_creation_country_IS": "Islanda", + "payment_mean_contact_creation_country_IT": "Italia", + "payment_mean_contact_creation_country_JE": "Jersey", + "payment_mean_contact_creation_country_JM": "Giamaica", + "payment_mean_contact_creation_country_JO": "Giordania", + "payment_mean_contact_creation_country_JP": "Giappone", + "payment_mean_contact_creation_country_KE": "Kenya", + "payment_mean_contact_creation_country_KG": "Kyrgyzstan", + "payment_mean_contact_creation_country_KH": "Cambogia", + "payment_mean_contact_creation_country_KI": "Kiribati", + "payment_mean_contact_creation_country_KM": "Comore", + "payment_mean_contact_creation_country_KN": "Saint Kitts e Nevis", + "payment_mean_contact_creation_country_KP": "Corea del Nord", + "payment_mean_contact_creation_country_KR": "Corea del Sud", + "payment_mean_contact_creation_country_KW": "Kuwait", + "payment_mean_contact_creation_country_KY": "Isole Cayman", + "payment_mean_contact_creation_country_KZ": "Kazakhistan", + "payment_mean_contact_creation_country_LA": "Laos", + "payment_mean_contact_creation_country_LB": "Libano", + "payment_mean_contact_creation_country_LC": "Santa Lucia", + "payment_mean_contact_creation_country_LI": "Liechtenstein", + "payment_mean_contact_creation_country_LK": "Sri Lanka", + "payment_mean_contact_creation_country_LR": "Liberia", + "payment_mean_contact_creation_country_LS": "Lesotho", + "payment_mean_contact_creation_country_LT": "Lituania", + "payment_mean_contact_creation_country_LU": "Lussemburgo", + "payment_mean_contact_creation_country_LV": "Lettonia", + "payment_mean_contact_creation_country_LY": "Libia", + "payment_mean_contact_creation_country_MA": "Marocco", + "payment_mean_contact_creation_country_MC": "Monaco", + "payment_mean_contact_creation_country_MD": "Moldavia", + "payment_mean_contact_creation_country_ME": "Montenegro", + "payment_mean_contact_creation_country_MF": "Saint Martin", + "payment_mean_contact_creation_country_MG": "Madagascar", + "payment_mean_contact_creation_country_MH": "Isole Marshall", + "payment_mean_contact_creation_country_MK": "Repubblica di Macedonia", + "payment_mean_contact_creation_country_ML": "Mali", + "payment_mean_contact_creation_country_MM": "Myanmar", + "payment_mean_contact_creation_country_MN": "Mongolia", + "payment_mean_contact_creation_country_MO": "Macao", + "payment_mean_contact_creation_country_MP": "Isole Marianne Settentrionali", + "payment_mean_contact_creation_country_MQ": "Martinica", + "payment_mean_contact_creation_country_MR": "Mauritania", + "payment_mean_contact_creation_country_MS": "Monserrato", + "payment_mean_contact_creation_country_MT": "Malta", + "payment_mean_contact_creation_country_MU": "Mauritius", + "payment_mean_contact_creation_country_MV": "Maldive", + "payment_mean_contact_creation_country_MW": "Malawi", + "payment_mean_contact_creation_country_MX": "Messico", + "payment_mean_contact_creation_country_MY": "Malesia", + "payment_mean_contact_creation_country_MZ": "Mozambico", + "payment_mean_contact_creation_country_NA": "Namibia", + "payment_mean_contact_creation_country_NC": "Nuova Caledonia", + "payment_mean_contact_creation_country_NE": "Niger", + "payment_mean_contact_creation_country_NF": "Isola Norfolk", + "payment_mean_contact_creation_country_NG": "Nigeria", + "payment_mean_contact_creation_country_NI": "Nicaragua", + "payment_mean_contact_creation_country_NL": "Paesi Bassi", + "payment_mean_contact_creation_country_NO": "Norvegia", + "payment_mean_contact_creation_country_NP": "Nepal", + "payment_mean_contact_creation_country_NR": "Nauru", + "payment_mean_contact_creation_country_NU": "Niue", + "payment_mean_contact_creation_country_NZ": "Nuova Zelanda", + "payment_mean_contact_creation_country_OM": "Oman", + "payment_mean_contact_creation_country_PA": "Panama", + "payment_mean_contact_creation_country_PE": "Peru", + "payment_mean_contact_creation_country_PF": "Polinesia francese", + "payment_mean_contact_creation_country_PG": "Papua Nuova Guinea", + "payment_mean_contact_creation_country_PH": "Filippine", + "payment_mean_contact_creation_country_PK": "Pakistan", + "payment_mean_contact_creation_country_PL": "Polonia", + "payment_mean_contact_creation_country_PM": "Saint-Pierre e Miquelon", + "payment_mean_contact_creation_country_PN": "Pitcairn Islands", + "payment_mean_contact_creation_country_PR": "Porto Rico", + "payment_mean_contact_creation_country_PS": "Palestina", + "payment_mean_contact_creation_country_PT": "Portogallo", + "payment_mean_contact_creation_country_PW": "Palau", + "payment_mean_contact_creation_country_PY": "Paraguay", + "payment_mean_contact_creation_country_QA": "Qatar", + "payment_mean_contact_creation_country_RE": "La Riunione", + "payment_mean_contact_creation_country_RO": "Romania", + "payment_mean_contact_creation_country_RS": "Serbia", + "payment_mean_contact_creation_country_RU": "Russia", + "payment_mean_contact_creation_country_RW": "Ruanda", + "payment_mean_contact_creation_country_SA": "Arabia Saudita", + "payment_mean_contact_creation_country_SB": "Isole Salomone", + "payment_mean_contact_creation_country_SC": "Seychelles", + "payment_mean_contact_creation_country_SD": "Sudan", + "payment_mean_contact_creation_country_SE": "Svezia", + "payment_mean_contact_creation_country_SG": "Singapore", + "payment_mean_contact_creation_country_SH": "Sant'Elena, Ascensione e Tristan da Cunha", + "payment_mean_contact_creation_country_SI": "Slovenia", + "payment_mean_contact_creation_country_SJ": "Svalbard e Jan Mayen", + "payment_mean_contact_creation_country_SK": "Slovacchia", + "payment_mean_contact_creation_country_SL": "Sierra Leone", + "payment_mean_contact_creation_country_SM": "San Marino", + "payment_mean_contact_creation_country_SN": "Senegal", + "payment_mean_contact_creation_country_SO": "Somalia", + "payment_mean_contact_creation_country_SR": "Suriname", + "payment_mean_contact_creation_country_SS": "Sudan del Sud", + "payment_mean_contact_creation_country_ST": "São Tomé e Príncipe", + "payment_mean_contact_creation_country_SV": "El Salvador", + "payment_mean_contact_creation_country_SX": "Sint Maarten", + "payment_mean_contact_creation_country_SY": "Siria", + "payment_mean_contact_creation_country_SZ": "Swaziland", + "payment_mean_contact_creation_country_TA": "Tristan da Cunha", + "payment_mean_contact_creation_country_TC": "Isole Turks e Caicos", + "payment_mean_contact_creation_country_TD": "Chad", + "payment_mean_contact_creation_country_TF": "French Southern Territories", + "payment_mean_contact_creation_country_TG": "Togo", + "payment_mean_contact_creation_country_TH": "Thailandia", + "payment_mean_contact_creation_country_TJ": "Tagikistan", + "payment_mean_contact_creation_country_TK": "Tokelau", + "payment_mean_contact_creation_country_TL": "Timor Est", + "payment_mean_contact_creation_country_TM": "Turkmenistan", + "payment_mean_contact_creation_country_TN": "Tunisia", + "payment_mean_contact_creation_country_TO": "Tonga", + "payment_mean_contact_creation_country_TR": "Turchia", + "payment_mean_contact_creation_country_TT": "Trinidad e Tobago", + "payment_mean_contact_creation_country_TV": "Tuvalu", + "payment_mean_contact_creation_country_TW": "Provincia di Taiwan", + "payment_mean_contact_creation_country_TZ": "Tanzania", + "payment_mean_contact_creation_country_UA": "Ucraina", + "payment_mean_contact_creation_country_UG": "Uganda", + "payment_mean_contact_creation_country_UM": "United States Minor Outlying Islands", + "payment_mean_contact_creation_country_US": "United States", + "payment_mean_contact_creation_country_UY": "Uruguay", + "payment_mean_contact_creation_country_UZ": "Uzbekistan", + "payment_mean_contact_creation_country_VA": "Città del Vaticano", + "payment_mean_contact_creation_country_VC": "Saint Vincent e Grenadine", + "payment_mean_contact_creation_country_VE": "Venezuela", + "payment_mean_contact_creation_country_VG": "Isole Vergini britanniche", + "payment_mean_contact_creation_country_VI": "Isole Vergini americane", + "payment_mean_contact_creation_country_VN": "Vietnam", + "payment_mean_contact_creation_country_VU": "Vanuatu", + "payment_mean_contact_creation_country_WF": "Wallis e Futuna", + "payment_mean_contact_creation_country_WS": "Samoa", + "payment_mean_contact_creation_country_XK": "Kosovo", + "payment_mean_contact_creation_country_YE": "Yemen", + "payment_mean_contact_creation_country_YT": "Mayotte", + "payment_mean_contact_creation_country_ZA": "Sudafrica", + "payment_mean_contact_creation_country_ZM": "Zambia", + "payment_mean_contact_creation_country_ZW": "Zimbawe", + "payment_mean_contact_creation_country_UNKNOWN": "Il mio Paese non è nella lista", + "payment_mean_contact_creation_legalform_individual": "Privato", + "payment_mean_contact_creation_legalform_association": "Associazione", + "payment_mean_contact_creation_legalform_corporation": "Società", + "payment_mean_contact_creation_legalform_administration": "Amministrazione", + "payment_mean_contact_creation_legalform_personalcorporation": "Lavoratore autonomo", + "payment_mean_contact_creation_legalform_other": "Altro", + "payment_mean_contact_creation_language_de_DE": "Tedesco", + "payment_mean_contact_creation_language_en_AU": "English (Australia)", + "payment_mean_contact_creation_language_en_CA": "Inglese (Canada)", + "payment_mean_contact_creation_language_en_GB": "Inglese", + "payment_mean_contact_creation_language_en_US": "English (United States)", + "payment_mean_contact_creation_language_es_ES": "Spagnolo", + "payment_mean_contact_creation_language_fr_CA": "Francese (Canada)", + "payment_mean_contact_creation_language_fr_FR": "Francese", + "payment_mean_contact_creation_language_fr_MA": "Francese (Marocco)", + "payment_mean_contact_creation_language_fr_SN": "Francese (Senegal)", + "payment_mean_contact_creation_language_fr_TN": "Francese (Tunisia)", + "payment_mean_contact_creation_language_pl_PL": "Polacco", + "payment_mean_contact_creation_language_cs_CZ": "Ceco", + "payment_mean_contact_creation_language_fi_FI": "Finlandese", + "payment_mean_contact_creation_language_en_IE": "Irlandese", + "payment_mean_contact_creation_language_it_IT": "Italiano", + "payment_mean_contact_creation_language_lt_LT": "Lituano", + "payment_mean_contact_creation_language_nl_NL": "Olandese", + "payment_mean_contact_creation_language_pt_PT": "Portoghese", + "payment_mean_contact_contact_creation_submit": "Conferma e salva", + "payment_mean_contact_contact_creation_cancel": "Annulla", + "mean_manage_my_services": "Gestisci i tuoi servizi", + "mean_table_head_creation_date": "Data di creazione", + "mean_table_head_description": "Descrizione", + "mean_table_head_type": "Tipo di pagamento", + "mean_table_head_options": "Opzioni", + "payment_mean_no_description": "Nessuna descrizione", + "payment_mean_description_error": "Si è verificato un errore durante la modifica della descrizione:", + "payment_mean_default_mean_error": "Si è verificato un errore, ci scusiamo per il disagio.", + "add_mean_select_title_choose": "Scegli", + "add_mean_select_title_no_choice": "Nessuna scelta possibile", + "add_mean_unable_to_get_payment_means": "Impossibile confermare le modalità di pagamento disponibili", + "mean_table_head_state": "Stato", + "mean_table_head_actions": "Azioni", + "mean_table_head_3d_secure": "3D Secure", + "mean_table_head_3d_secure_true": "Sì", + "mean_table_head_3d_secure_false": "No", + "mean_table_tooltip_more_actions": "Più azioni per questo metodo di pagamento", + "deleteMean_title": "Eliminazione di un metodo di pagamento", + "paymentMean_delete_message_paypal": "Attenzione, stai per eliminare definitivamente il metodo di pagamento associato all'account Paypal:", + "paymentMean_delete_message_bankAccount": "Attenzione, stai per eliminare definitivamente il metodo di pagamento associato al conto bancario:", + "paymentMean_delete_message_creditCard": "Attenzione, stai per eliminare definitivamente il metodo di pagamento associato alla carta numero:", + "paymentMean_label_creditcard_owner_name": "Nome sulla carta bancaria", + "paymentMean_label_creditcard_number": "Numero", + "paymentMean_label_creditcard_validation": "Convalida", + "paymentMean_label_creditcard_expiration": "Scadenza", + "paymentMean_label_iban": "IBAN", + "paymentMean_label_bic": "BIC", + "paymentMean_label_addressNumber": "Numero", + "paymentMean_label_addressStreetName": "Nome della via", + "paymentMean_label_addressPostalCode": "Codice postale", + "paymentMean_label_addressTown": "Città", + "paymentMean_label_ownerName": "Nome e cognome del proprietario o nome della società proprietaria", + "paymentMean_label_ownerAddress": "Indirizzo del proprietario dell'account", + "paymentMean_error_bic_bank": "Il codice bancario non è corretto", + "paymentMean_error_bic_valid": "Il BIC non è valido", + "paymentMean_error_required": "Campo obbligatorio", + "paymentMean_error_iban_base": "la base dell'IBAN non è valida.", + "paymentMean_error_iban_country": "Il paese indicato nell'IBAN non è valido.", + "paymentMean_error_iban_key": "La chiave dell'IBAN non è valida.", + "paymentMean_error_iban_valid": "L'IBAN non è valido.", + "paymentMean_error_minlength": "Sono necessari almeno 5 caratteri.", + "paymentMean_error_addressPostalCode_required": "Campo obbligatorio", + "paymentMean_error_addressPostalCode_min": "Il codice postale non è valido.", + "paymentMean_error_addressPostalCode_max": "Il codice postale non è valido.", + "paymentMean_error_addressPostalCode_pattern": "Il codice postale deve contenere 5 cifre.", + "paymentMean_error_maxlength": "Il testo deve essere minore di 255 caratteri", + "paymentType_delete_error": "Errore nell'eliminazione del metodo di pagamento", + "paymentType_modify_error": "Errore durante la modifica del metodo di pagamento", + "paymentType_delete_success": "Metodo di pagamento eliminato", + "paymentMean_add_message_paypal": "Cliccando su \"Aggiungi\" ti potrai connettere al tuo account Paypal e potrai autorizzare OVH a effettuare addebiti sul tuo account Paypal quando vengono emesse le nuove fatture.", + "paymentMean_add_message_creditCard": "Per confermare la registrazione della tua carta, effettuiamo un tentativo di prelievo di 1 euro,
che provvediamo a riaccreditare sul tuo conto subito dopo che la transazione viene autorizzata dalla tua banca.
La tua carta bancaria sarà attivata immediatamente. ", + "paymentMean_add_message_creditCard_CA": "OVH richiede l'autorizzazione all'addebito. Sul tuo conto potrebbe apparire un movimento in corso, ma l'importo non verrà addebitato o sarà rimborsato dalla tua banca.", + "paymentMean_add_message_bankAccount": "Cliccando su \"Aggiungi\" viene scaricato un documento.
Segui la procedura descritta per confermare la modalità di pagamento. Il tuo conto bancario verrà convalidato entro 24-48 ore a partire dalla ricezione della tua autorizzazione al prelievo.", + "paymentType_status_valid": "Validato", + "paymentType_status_expired": "Scaduto", + "paymentType_status_proposedByCustomer": "In attesa di convalida", + "paymentType_status_tooManyFailures": "Non valido (troppi tentativi di conferma errati)", + "paymentType_status_broken": "Rotto", + "paymentType_status_canceled": "Annullato", + "paymentType_status_canceling": "Annullamento in corso...", + "paymentType_status_canceledbycustomer": "Annullato dall'utente", + "paymentType_status_canceled_by_customer": "Annullato dall'utente", + "paymentType_status_created": "In attesa di convalida", + "paymentType_status_error": "In errore", + "paymentType_status_validforcredit": "Valido per l'accredito", + "paymentType_add_error": "Errore nell'aggiunta del metodo di pagamento", + "paymentType_status_pendingValidation": "In corso di validazione", + "paymentType_status_waiting_for_documents": "In attesa di ricezione", + "payment_mean_add_paypal": "Avvia un abbonamento Paypal", + "payement_mean_add_creditCard": "Genera un ordine", + "payment_mean_get_validation": "Recupera la procedura di validazione", + "payment_mean_return_by_mail_procedure": "Procedura per la conferma della modalità di pagamento", + "paymentType_add_validation_description": "Conferma il metodo di pagamento.", + "paymentType_add_success_url": "Clicca qui per essere reindirizzato verso una pagina sicura e completare l'operazione.", + "paymentType_bankAccount_add_success_with_download": "Il tuo conto bancario è stato aggiunto e, una volta confermato, sarà attivo. Ti preghiamo di seguire la procedura descritta in questo documento per confermare la tua modalità di pagamento.", + "paymentType_bankAccount_pending_validation": "Hai aggiunto un conto bancario nel tuo Spazio Cliente OVH, siamo in attesa di ricevere la tua autorizzazione al prelievo.", + "paymentType_bankAccount_processing_delay": "Il tuo conto bancario sarà convalidato entro 24-48 ore a partire dalla ricezione della tua autorizzazione al prelievo.", + "payment_mean_radio_select_default": "Definisci questo metodo di pagamento automatico come predefinito.", + "payment_mean_select_default": "Imposta come metodo predefinito.", + "payment_mean_delete_payment_mean": "Elimina questo metodo di pagamento", + "payment_mean_description_add": "Aggiungi una descrizione", + "payment_mean_description_edit": "Modifica la descrizione", + "payment_mean_description_input": "Descrizione del metodo di pagamento", + "payment_mean_description_save": "Salva la descrizione", + "payment_mean_description_cancel": "Annulla le modifiche alla descrizione", + "ovhAccount_table_type_CANCEL_CREDIT": "Annulla credito", + "ovhAccount_table_type_CANCEL_CREDIT_BILL": "Annullamento fattura", + "ovhAccount_table_type_CANCEL_CREDIT_REFUND": "Annullamento credito", + "ovhAccount_table_type_CANCEL_CREDIT_STATEMENT_INCOME": "Annulla ricarica conto prepagato", + "ovhAccount_table_type_CANCEL_CREDIT_STATEMENT_OUTCOME": "Annullamento bonifico verso conto bancario", + "ovhAccount_table_type_CANCEL_CREDIT_DEPOSIT": "Cancellazione dell'acconto", + "ovhAccount_table_type_CANCEL_DEBIT": "Annulla debito", + "ovhAccount_table_type_CANCEL_DEBIT_BILL": "Annullamento fattura", + "ovhAccount_table_type_CANCEL_DEBIT_REFUND": "Annullamento credito", + "ovhAccount_table_type_CANCEL_DEBIT_STATEMENT_INCOME": "Annulla ricarica conto prepagato", + "ovhAccount_table_type_CANCEL_DEBIT_STATEMENT_OUTCOME": "Annullamento bonifico verso conto bancario", + "ovhAccount_table_type_CANCEL_PRE_DEBIT": "Annulla debito", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_BILL": "Fattura", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_REFUND": "Credito", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_STATEMENT_INCOME": "Ricarica conto prepagato", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_STATEMENT_OUTCOME": "Bonifico verso conto bancario", + "ovhAccount_table_type_CREDIT": "Credito", + "ovhAccount_table_type_CREDIT_BILL": "Fattura", + "ovhAccount_table_type_CREDIT_DEPOSIT": "Acconto", + "ovhAccount_table_type_CREDIT_REFUND": "Credito", + "ovhAccount_table_type_CREDIT_STATEMENT_INCOME": "Ricarica conto prepagato", + "ovhAccount_table_type_CREDIT_STATEMENT_OUTCOME": "Bonifico verso conto bancario", + "ovhAccount_table_type_DEBIT": "Flusso", + "ovhAccount_table_type_DEBIT_BILL": "Fattura", + "ovhAccount_table_type_DEBIT_REFUND": "Credito", + "ovhAccount_table_type_DEBIT_STATEMENT_INCOME": "Ricarica conto prepagato", + "ovhAccount_table_type_DEBIT_STATEMENT_OUTCOME": "Bonifico verso conto bancario", + "ovhAccount_table_type_DEBIT_WITHDRAWAL": "Flusso", + "ovhAccount_table_type_PRE_CREDIT": "Credito", + "ovhAccount_table_type_PRE_CREDIT_BILL": "Fattura", + "ovhAccount_table_type_PRE_CREDIT_REFUND": "Credito", + "ovhAccount_table_type_PRE_CREDIT_STATEMENT_INCOME": "Ricarica conto prepagato", + "ovhAccount_table_type_PRE_CREDIT_STATEMENT_OUTCOME": "Bonifico verso conto bancario", + "ovhAccount_table_type_PRE_DEBIT": "Flusso", + "ovhAccount_table_type_PRE_DEBIT_BILL": "Fattura", + "ovhAccount_table_type_PRE_DEBIT_REFUND": "Credito", + "ovhAccount_table_type_PRE_DEBIT_STATEMENT_INCOME": "Ricarica conto prepagato", + "ovhAccount_table_type_PRE_DEBIT_STATEMENT_OUTCOME": "Bonifico verso conto bancario", + "ovhAccount_table_head_payment_type": "Metodo di pagamento", + "ovhAccount_table_type_payment_CASH": "Tipo", + "ovhAccount_table_type_payment_CHARGEBACK": "Annullamento del pagamento", + "ovhAccount_table_type_payment_CHEQUE": "Assegno", + "ovhAccount_table_type_payment_CREDIT_CARD": "Carta bancaria", + "ovhAccount_table_type_payment_DEPOSIT": "Acconto", + "ovhAccount_table_type_payment_DEBT_ACCOUNT": "Account in negativo ", + "ovhAccount_table_type_payment_EDINAR": "Moneta elettronica", + "ovhAccount_table_type_payment_FIDELITY_POINTS": "I miei punti", + "ovhAccount_table_type_payment_FREE": "Gratuito", + "ovhAccount_table_type_payment_IDEAL": "iDEAL", + "ovhAccount_table_type_payment_MANDAT": "Mandato", + "ovhAccount_table_type_payment_MULTIBANCO": "Multibanco", + "ovhAccount_table_type_payment_NONE": "Nessuno", + "ovhAccount_table_type_payment_OVH_ACCOUNT": "Conto prepagato", + "ovhAccount_table_type_payment_PAYMENT_MANDATE": "Mandato", + "ovhAccount_table_type_payment_PAYPAL": "Paypal", + "ovhAccount_table_type_payment_PLATNOSCI": "Transfer payment", + "ovhAccount_table_type_payment_REFUND": "Credito", + "ovhAccount_table_type_payment_TRANSFER": "Bonifico", + "ovhAccount_table_type_payment_WITHDRAWAL": "Prelievo bancario", + "ovhAccount_table_type_payment_CREDIT_ACCOUNT": "Carta di credito", + "ovhAccount_table_type_payment_DIGITAL_LAUNCH_PAD": "Voucher DLP", + "ovhAccount_table_type_payment_INCUBATOR_ACCOUNT": "Account Incubator", + "ovhAccount_table_type_payment_PAYU": "PayU", + "ovhAccount_retrieve_title": "Bonifico verso un conto bancario", + "ovhAccount_renew_title": "Accredita il tuo conto prepagato", + "ovhAccount_renew_step1_msg": "Puoi accreditare il tuo conto per saldare le tue fatture.", + "ovhAccount_renew_step1_erreurmin": "L'importo del credito deve essere almeno di 10 {{t0}} e il saldo del tuo conto deve essere sempre positivo.", + "ovhAccount_renew_step1_erreurformat": "L'importo inserito non è corretto: utilizza solo cifre con un punto o una virgola come carattere di separazione.", + "ovhAccount_renew_step1_amount": "Importo ({{t0}}):", + "ovhAccount_renew_step2_msg": "Riepilogo del tuo ordine", + "ovhAccount_renew_step2_credit": "Importo che sarà accreditato:", + "ovhAccount_renew_step2_error": "Si è verificato un errore, ci scusiamo per il disagio.", + "ovhAccount_renew_step2_success": "Il credito (ordine N° {{t1}}) diventerà effettivo sul tuo conto prepagato alla ricezione del tuo pagamento. ", + "ovhAccount_account_list_error": "Si è verificato un errore nel recupero della lista dei tuoi account", + "ovhAccount_account_list_title": "- Account", + "ovhAccount_account_list_empty": "Nessun account da visualizzare ", + "telconso_menu_this_month": "Mese in corso", + "telconso_menu_last_month": "Mesi precedenti", + "telconso_search": "Ricerca un elemento", + "telconso_table_empty": "Non ci sono elementi da visualizzare", + "telconso_table_line_empty": "Non ci sono elementi da visualizzare", + "telconso_title_current_month": "Dettaglio chiamate dal {{t0}} al {{t1}}", + "telconso_consumption": "Consumo", + "telconso_plan_to": "Forfait a {{t0}}", + "telconso_allowed_outplan": "Extra-forfait autorizzato", + "telconso_service_name_consumption": "Consumo", + "telconso_nb_lines": "Numero di linee:", + "telconso_nb_groups": "Numero di gruppi:", + "telconso_callout": "{{t0}}% di chiamate effettuate ", + "telconso_callin": "{{t0}}% di chiamate ricevute", + "telconso_faxout": "{{t0}}% di fax emessi", + "telconso_faxin": "{{t0}}% di fax ricevuti", + "telconso_to_fixe": "Verso fissi", + "telconso_to_mobiles": "Verso mobili", + "telconso_to_special": "Verso numeri speciali", + "telconso_send_fax": "Invio di fax", + "telconso_fax": "Fax", + "telconso_calls": "Numero di chiamate", + "telconso_faxs": "Numero di fax", + "telconso_anonymous": "Anonimo", + "telconso_in": "Ricevute", + "telconso_out": "Emessa", + "telconso_com_time": "Durata", + "telconso_call_count": "Numero ", + "telconso_line": "Linea", + "telconso_lines": "Linee", + "telconso_price": "Tariffa", + "telconso_outplan": "Extra-forfait (IVA escl.)", + "telconso_group_outplan": "Extra-forfait", + "telconso_group": "Gruppo", + "telconso_all_groups": "Tutti i gruppi", + "telconso_select_group": "Seleziona un gruppo per maggiori informazioni", + "telconso_calls_details": "Dettaglio chiamate", + "telconso_fax_details": "Dettaglio fax", + "telconso_line_myline": "La tua linea {{t0}}", + "telconso_line_include": "Traffico incluso nel forfait", + "telconso_line_outplan": "Traffico extra", + "telconso_next_billing": "Data della prossima fattura:", + "tel_conso_conso_date": "Data", + "tel_conso_conso_num_emit": "Numero chiamante", + "tel_conso_conso_num_recv": "Numero chiamato", + "tel_conso_conso_tranfert": "Reindirizzato verso ", + "tel_conso_conso_time": "Durata", + "tel_conso_conso_include": "Incluso", + "tel_conso_conso_outplan": "Extra-forfait (IVA escl.)", + "tel_conso_conso_included": "Incluso", + "tel_conso_conso_notincluded": "Non incluso", + "tel_conso_calls": "chiamate ", + "tel_conso_tabs_inc": "Ricevute", + "tel_conso_tabs_out": "Emessa", + "tel_conso_tabs_trs": "Trasferiti", + "tel_conso_tabs_incfix": "Da fisso", + "tel_conso_tabs_incmob": "Da mobile", + "tel_conso_tabs_incspe": "Da numeri speciali", + "tel_conso_tabs_outfix": "Verso fissi", + "tel_conso_tabs_outmob": "Verso mobili", + "tel_conso_tabs_outspe": "Verso numeri speciali", + "tel_conso_tabs_trsfix": "Verso fissi", + "tel_conso_tabs_trsmob": "Verso mobili", + "tel_conso_tabs_trsspe": "Verso numeri speciali", + "tel_conso_tabs_sent": "Inviati ", + "tel_conso_tabs_received": "Ricevute", + "tel_conso_error": "si è verificato un errore nel caricamento delle informazioni", + "tel_conso_h": "ora", + "tel_conso_min": "min", + "tel_conso_s": "sec", + "tel_lastconso_title": "Dettaglio traffico mesi precedenti", + "tel_lastconso_month": "Mese", + "tel_lastconso_priceplan": "Importo totale", + "tel_lastconso_outplan": "Extra-forfait", + "tel_lastconso_sheet": "Dettaglio consumi", + "tel_lastconso_sheet_down": "Esegui il download", + "tel_lastconso_sheet_progress": "In corso", + "tel_lastconso_month_date_display": "MMM yyyy", + "fidelity_title": "I miei punti", + "fidelity_get_accounts_error": "Si è verificato un errore durante il caricamento delle informazioni", + "fidelity_header_date": "Data", + "fidelity_header_order": "Transazione", + "fidelity_header_operation": "Operazione", + "fidelity_header_credit": "Credito", + "fidelity_header_debit": "Flusso", + "fidelity_header_balance": "Saldo", + "fidelity_points": "punto(i)", + "fidelity_creditOrder_title": "Ricarica il tuo conto", + "fidelity_creditOrder_step1_msg": "È possibile aggiungere credito sul conto per pagare i propri acquisti o i servizi su cui è attivo il rinnovo manuale. (1 punto = 0,01 {{t0}} +IVA)", + "fidelity_creditOrder_step1_amount": "Credito (in punti)", + "fidelity_creditOrder_step1_erreurformat": "L'importo inserito non è corretto: utilizza solo cifre.", + "fidelity_creditOrder_step1_erreurmin": "Il credito deve essere di almeno {{t0}} punti.", + "fidelity_creditOrder_step1_erreurmax": "Il credito massimo è di {{t0}} punti.", + "fidelity_creditOrder_step2_msg": "Riepilogo del tuo ordine", + "fidelity_creditOrder_step2_credit": "Importo che sarà accreditato:", + "fidelity_creditOrder_step2_error": "Si è verificato un errore durante il caricamento delle informazioni", + "fidelity_creditOrder_step2_success": "Il credito (ordine N° {{t1}}) diventerà effettivo sul tuo conto prepagato alla ricezione del tuo pagamento. ", + "fidelity_no_item": "Nessun elemento da visualizzare", + "fidelity_balance_info": "Situazione al {{t0}}: {{t1}} punto/i", + "fidelity_no_account": "Non hai ancora un conto fedeltà", + "sla_table_head_date": "Data", + "sla_table_head_description": "Descrizione", + "sla_table_head_refund": "Rimborso", + "sla_table_apply": "Applica", + "sla_informations_error": "Si è verificato un errore durante il recupero delle informazioni, ti preghiamo di riprovare.", + "sla_apply_error": "Si è verificato un errore durante la tua richiesta di rimborso:", + "sla_apply_success": "La tua richiesta di rimborso è stata presa in carico e sarà effettiva tra qualche ora.", + "sla_apply_no_data": "Non hai diritto a rimborsi", + "sla_table_head_service_name": "Nome del servizio", + "sla_table_head_service_description": "Descrizione del servizio", + "sla_table_head_service_sla_plan": "SLA contrattuale", + "sla_table_head_service_sla_application": "Credito disponibile", + "sla_table_services_empty": "Nessun servizio", + "sla_informations": "Ecco la lista dei rimborsi ai quali hai diritto. Per usufruirne, clicca su \"Applica\".", + "sla_informations_end": "Hai tempo fino al {{t0}} per inviare la tua richiesta di risarcimento e ottenere il rimborso previsto dagli SLA contrattuali. ", + "sla_informations_applied": "La tua richiesta è stata presa in carico e verrà gestita nel più breve tempo possibile.", + "sla_informations_applied_all": "Le tue richieste sono state prese in carico e verrano gestite nel più breve tempo possibile.", + "sla_informations_status_created": "Creata", + "sla_informations_status_notApplicable": "Non applicabile", + "sla_informations_status_completed": "Convalidata", + "sla_informations_status_requested": "Gestione in corso", + "voucher_table_head_id": "ID", + "voucher_table_head_balance": "Saldo", + "voucher_table_head_voucher_open_date": "Data di apertura", + "voucher_table_head_voucher_last_update": "Ultimo aggiornamento", + "voucher_table_empty": "Nessun voucher", + "voucher_informations_error": "Si è verificato un errore:", + "vouchers_title": "I tuoi voucher", + "vouchers_movements_title": "Movimenti sul voucher {{t0}}", + "voucher_movements_table_head_id": "ID", + "voucher_movements_table_head_description": "Descrizione", + "voucher_movements_table_head_date": "Data", + "voucher_movements_table_head_amount": "Importo", + "voucher_movements_table_head_previous_balance": "Saldo precedente", + "voucher_movements_table_head_balance": "Saldo", + "voucher_movements_table_head_operation": "Operazione", + "voucher_movements_table_head_order": "Ordine", + "voucher_movements_table_empty": "Nessun movimento", + "voucher_movements_operation_type_cancel-credit": "Accredito annullato", + "voucher_movements_operation_type_cancel-debit": "Addebito annullato", + "voucher_movements_operation_type_cancel-pre-debit": "Annullamento dell'autorizzazione di addebito", + "voucher_movements_operation_type_credit": "Credito", + "voucher_movements_operation_type_debit": "Flusso", + "voucher_movements_operation_type_pre-credit": "Convalida di accredito", + "voucher_movements_operation_type_pre-debit": "Autorizzazione di addebito", + "statements_account_automatic_payment_inactive": "Non è possibile eseguire l'addebito automatico per il rinnovo dei tuoi servizi.", + "statements_account_no_default_payment_mean": "Non hai impostato nessuna modalità di pagamento predefinita.", + "statements_account_invalid_default_payment_mean": "La tua modalità di pagamento predefinita non è più valida.", + "statements_account_manage_my_payment_means": "Gestisci i tuoi metodi di pagamento", + "statements_account_pay_debt_button": "Salda subito l'importo dovuto", + "statements_table_caption": "Ordini del tuo account", + "statements_table_header_order": "Ordine", + "statements_table_header_date": "Data", + "statements_table_header_due_date": "Data di scadenza", + "statements_table_no_due_date": "Immediato", + "statements_table_header_amount": "Importo", + "statements_table_header_balance": "Importo dovuto", + "statements_table_header_details": "Dettagli", + "statements_table_no_detail": "Nessun dato disponibile", + "statements_table_invoice_link": "Consulta la fattura {{t0}} in una nuova finestra.", + "statements_table_order_link": "Consulta l'ordine {{t0}} in una nuova finestra.", + "statements_table_detail_label": "Visualizza i dettagli per questa fattura.", + "statements_table_detail_link": "Visualizza i dettagli del debito {{t0}}.", + "statements_table_pay_debt_button": "Salda subito l'importo dovuto", + "statements_summary_error": "Si è verificato un errore durante il caricamento del saldo del tuo account.", + "statements_detail_error": "Si è verificato un errore durante il caricamento dei dettagli del tuo account.", + "statements_single_debt_error": "Si è verificato un errore durante il caricamento dei dettagli della linea {{t0}}. ", + "statements_payment_mean_error": "Si è verificato un errore durante il caricamento delle modalità di pagamento", + "statements_details_summary_title": "Riepilogo dell'ordine", + "statements_details_operations_title": "Storico delle operazioni", + "statements_details_page_loader": "Caricamento delle informatzioni...", + "statements_details_page_operations": "Si è verificato un errore durante il caricamento dello storico delle operazioni.", + "statements_details_return_to_statements": "Ritorna alla pagina precedente", + "statements_details_table_caption": "Elenco delle operzioni sulla fattura", + "statements_details_table_header_date": "Data", + "statements_details_table_header_operation": "Operazione", + "statements_details_table_header_status": "Stato", + "statements_details_table_header_amount": "Importo", + "statements_details_table_header_document": "Documento", + "statements_details_table_order_link": "Apri in una nuova finestra l'ordine associato a questa operazione.", + "statements_details_table_invoice_html_link": "Visualizza la fattura in versione HTML ((nuova finestra).", + "statements_details_table_invoice_pdf_link": "Visualizza la fattura in versione PDF (nuova finestra).", + "statements_operation_status_done": "Completato", + "statements_operation_status_cancelled": "Annullata", + "statements_operation_status_failed": "Fallito", + "statements_operation_status_todo": "In attesa di pagamento", + "statements_operation_status_pending": "Gestione in corso", + "statements_operation_status_paid": "Pagato", + "statements_operation_description_order": "Crea l'ordine", + "statements_operation_description_cancel": "Annulla un'operazione", + "statements_operation_description_creditcard_manual": "Pagamento manuale su carta bancaria", + "statements_operation_description_creditcard_automatic": "Addebito automatico su carta bancaria", + "statements_operation_description_refund_creditcard": "Rimborso su carta bancaria", + "statements_operation_description_unpaid_creditcard": "Addebito rifiutato su carta bancaria", + "statements_operation_description_paypal_manual": "Pagamento manuale su PayPal", + "statements_operation_description_paypal_automatic": "Addebito automatico su conto PayPal", + "statements_operation_description_refund_paypal": "Rimborso su conto PayPal", + "statements_operation_description_unpaid_paypal": "Addebito rifiutato su conto PayPal", + "statements_operation_description_sepa_automatic": "Addebito automatico su conto bancario", + "statements_operation_description_refund_sepa": "Rimborso su conto bancario", + "statements_operation_description_unpaid_sepa": "Addebito rifiutato su conto bancario", + "statements_operation_description_credit_account_automatic": "Addebito automatico sul conto prepagato OVH", + "statements_operation_description_refund_credit_account": "Rimborso su conto prepagato OVH", + "statements_operation_description_unpaid_credit_account": "Annulla un versamento tramite il conto prepagato OVH", + "statements_operation_description_check_manual": "Pagamento tramite assegno", + "statements_operation_description_refund_check": "Rimborso di un bonifico bancario", + "statements_operation_description_unpaid_check": "Assegno rifiutato", + "statements_operation_description_transfer_manual": "Pagamento tramite bonifico bancario", + "statements_operation_description_unpaid_transfer": "Bonifico bancario rifiutato", + "statements_operation_description_warrant_manual": "Pagamento tramite mandato", + "statements_operation_description_refund_warrant": "Rimborso di un mandato", + "statements_operation_description_unpaid_warrant": "Mandato rifiutato", + "statements_operation_description_refund": "Rimborso", + "statements_operation_description_refund_unknown": "Rimborso", + "billing_date_range_choose_custom_date": "Definisci un periodo", + "billing_date_range_text": "Dal {{t0}} al {{t1}}", + "billing_price_ttc_label": "{{price}} IVA incl.", + "billing_guides_header": "Guide", + "billing_guides_header_manage_payment_methods_guides": "Gestisci i tuoi metodi di pagamento", + "billing_guides_header_managing_orders_guides": "Gestire i miei ordini OVHcloud", + "billing_guides_header_purchase_order_guides": "Nozione di numero d’ordine o Purchase Order (PO)", + "billing_guides_header_managing_bills_guides": "Gestire le mie fatture OVHcloud", + "billing_guides_header_automatic_renewal_guides": "Gestire il rinnovo dei miei servizi", + "fidelity_creditOrder_submit_error": "Si è verificato un errore durante l'accredito dei punti.", + "fidelity_creditOrder_submit_success": "Il credito di {{t0}} punti è stato generato correttamente, è possibile procedere con l'ordine nella sezione I miei ordini" +} diff --git a/packages/manager/modules/new-billing/src/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..2f7cd595ca25 --- /dev/null +++ b/packages/manager/modules/new-billing/src/translations/Messages_pl_PL.json @@ -0,0 +1,920 @@ +{ + "billingError": "Wystąpił błąd podczas pobierania informacji ", + "title_from": "od", + "title_to": "do", + "period_tooltip_from": "Wybierz datę rozpoczęcia", + "period_tooltip_to": "Wybierz datę zakończenia", + "table_download_html": "Wyświetl wersję HTML", + "table_download_pdf": "Wyświetl wersję PDF", + "table_download_html_order": "Wyświetl zamówienie w formacie HTML", + "table_download_pdf_order": "Wyświetl zamówienie w formacie PDF", + "table_download_html_invoice": "Wyświetl fakturę w formacie HTML", + "table_download_pdf_invoice": "Wyświetl fakturę w formacie PDF", + "table_download_pdf_beta": "Wyświetl wersję PDF (Beta)", + "todo": "Już wkrótce", + "wizard_order": "Zamów", + "wizard_cancel": "Anuluj", + "wizard_confirm": "Zatwierdź", + "wizard_pay": "Zamów", + "wizard_renew": "Odnów", + "wizard_next": "Dalej", + "wizard_previous": "Wstecz", + "common_order_ascending": "sortuj rosnąco", + "common_order_descending": "sortuj malejąco", + "common_payment_type_cash": "Gotówka", + "common_payment_type_chargeback": "Płatność odrzucona", + "common_payment_type_cheque": "Czek", + "common_payment_type_creditCard": "Karta bankowa", + "common_payment_type_CREDIT_CARD": "Karta bankowa", + "common_payment_type_debtAccount": "Przelew SEPA", + "common_payment_type_DEBT_ACCOUNT": "Przelew SEPA", + "common_payment_type_deferredPaymentAccount": "Konto z odroczoną płatnością", + "common_payment_type_DEFERRED_PAYMENT_ACCOUNT": "Konto z odroczoną płatnością", + "common_payment_type_deposit": "Depozyt", + "common_payment_type_edinar": "e-DINAR", + "common_payment_type_fidelityPoints": "Moje punkty", + "common_payment_type_FIDELITY_POINTS": "Moje punkty", + "common_payment_type_free": "Darmowe", + "common_payment_type_ideal": "iDEAL", + "common_payment_type_mandat": "Przekaz", + "common_payment_type_multibanco": "Multibanco", + "common_payment_type_none": "Żaden", + "common_payment_type_ovhAccount": "Konto prepaid", + "common_payment_type_OVH_ACCOUNT": "Konto prepaid", + "common_payment_type_paymentMandate": "Przekaz", + "common_payment_type_PAYMENT_MANDATE": "Przekaz", + "common_payment_type_paypal": "Paypal", + "common_payment_type_payu": "PayU", + "common_payment_type_platnosci": "Płatności", + "common_payment_type_refund": "Zwrot", + "common_payment_type_transfer": "Przelew", + "common_payment_type_withdrawal": "Pobranie", + "common_payment_type_bankAccount": "Konto bankowe", + "common_payment_type_BANK_ACCOUNT": "Konto bankowe", + "common_payment_type_digitalLaunchPad": "Digital launchpad", + "common_payment_type_DIGITAL_LAUNCH_PAD": "Digital launchpad", + "common_payment_type_unavailable": "Informacja o płatności jest niedostępna.", + "common_payment_type_0": "Wszystkie", + "common_see_another_month": "Sprawdź inny miesiąc", + "common_choose": "Wybierz", + "common_payment_type_creditCard_expiration_date": "Data wygaśnięcia:", + "common_time_period_in_years": "{{t0}} lat(a)", + "common_time_period_one_year": "1 rok", + "common_time_period_in_months": "{{t0}} m-c", + "common_time_period_one_month": "1 m-c", + "pagination_page": "Strona {{ current }} / {{ last }}", + "pagination_display": "Wyświetl", + "pagination_display_all": "Wszystko", + "pagination_go": "Ok", + "history_title2": "Faktury", + "history_table_head_date": "Data wystawienia", + "history_table_head_id": "Opis", + "history_table_head_order_id": "Numer zamówienia", + "history_table_head_product": "Produkt", + "history_table_head_payment": "Sposób płatności", + "history_table_head_payment_select_filter": "Filtruj na podstawie sposobu płatności", + "history_table_head_total_with_VAT": "Wartość brutto", + "history_table_head_total": "Kwota", + "history_table_head_balance_due": "Kwota do zapłacenia", + "history_table_head_due_date": "Termin płatności", + "history_table_head_actions": "Operacje", + "history_table_actions_tooltip": "Więcej szczegółów dotyczących tej faktury", + "history_table_empty": "Nie posiadasz faktur z wybranego miesiąca", + "history_table_information_not_available": "Informacja niedostępna", + "history_table_debt_due_immediately": "Natychmiastowy", + "history_table_debt_paid": "Opłacone", + "payments_error": "Wystąpił błąd. Przepraszamy za niedogodności.", + "payments_title": "Informacje o płatnościach", + "payments_description": "Poniższa lista przedstawia płatności, które zostały wykonane za pomocą domyślnego sposobu płatności. Każda z płatności to kilka faktur lub jedna faktura.", + "payments_table_head_date": "Data płatności", + "payments_table_head_id": "Opis", + "payments_table_head_type": "Sposób płatności", + "payments_table_head_amount": "Razem", + "payments_table_head_actions": "Operacje", + "payments_table_actions_tooltip": "Brak informacji na temat tej płatności", + "payments_table_type_not_available": "Informacja niedostępna", + "payments_table_empty": "Brak płatności w wybranym okresie", + "payments_request_pending": "Płatność należności w toku. Aby uzyskać więcej informacji, kliknij tutaj.", + "payments_details_link": "Sprawdź szczegóły tej płatności", + "payment_details_payment_id": "Opis", + "payment_details_payment_date": "Data", + "payment_details_payment_amount": "Razem", + "payment_details_table_header_id": "Numer faktury", + "payment_details_table_header_date": "Data wystawienia", + "payment_details_table_header_payment": "Kwota operacji", + "payment_details_table_header_document": "Dokument", + "payment_details_title": "Szczegóły płatności", + "payments_details_table_empty": "Brak informacji", + "payment_details_return_to_payments": "Powrót do poprzedniej strony", + "orders_page_title": "Moje zamówienia", + "orders_table_head_date": "Data", + "orders_table_head_id": "Numer zamówienia", + "orders_table_head_status": "Status", + "orders_table_head_total_taxes_included": "Kwota brutto", + "orders_table_head_total": "Kwota", + "orders_table_empty": "Nie masz zamówień.", + "orders_table_empty_with_filter": "Nie posiadasz zamówień odpowiadających tym kryteriom:", + "orders_informations_error": "Wystąpił błąd:", + "orders_order_status_cancelled": "Anulowane", + "orders_order_status_cancelling": "Trwa anulowanie", + "orders_order_status_checking": "Zatwierdzenie", + "orders_order_status_delivered": "Zakończone", + "orders_order_status_delivering": "Dostarczanie w trakcie", + "orders_order_status_documents_requested": "W oczekiwaniu na dokumenty", + "orders_order_status_not_paid": "Brak płatności", + "orders_order_status_unknown": "Nieznany", + "orders_order_bc_expired": "Zamówienie wygasło", + "orders_order_status_filter_progress": "W toku", + "orders_order_status_filter_all": "Wszystkie", + "orders_order_status_filter_terminated": "Zakończone", + "orders_order_status_filter_expired": "Przedawnione", + "orders_order_loading_error": "Wystąpił błąd podczas pobierania tego zamówienia.", + "orders_search_input_title": "Wyszukaj zamówienia na podstawie identyfikatora.", + "orders_table_actions_tooltip": "Więcej informacji na temat tego zamówienia", + "orders_order_action_retract": "Anuluj zamówienie", + "orders_retract_return_to_orders": "Powrót do zamówień", + "orders_retract_title": "Rezygnacja z usługi lub z usług znajdujących się w zamówieniu", + "orders_retract_confirmation": "Czy chcesz anulować zamówienie {{t0}}?", + "orders_retract_confirmation_text": "Tak, chcę anulować to zamówienie.", + "orders_retract_description1": "Konsument dysponuje prawem do odstąpienia od umowy w ciągu 14 dni od daty złożenia zamówienia. W przypadku odstąpienia od umowy zwrot zostanie wykonany w ciągu 30 dni od zlecenia rezygnacji z usługi. Od wpłaconej kwoty zostanie odliczona proporcjonalna kwota za wykorzystane usługi.", + "orders_retract_description2": "Uwaga: rezygnacja za pomocą tego formularza dotyczy wszystkich produktów przypisanych do tego zamówienia. Rezygnacja obowiązuje natychmiastowo.", + "orders_retract_alert": "Potwierdzenie spowoduje automatyczne, natychmiastowe i nieodwracalne usunięcie wszystkich danych przypisanych do tego zamówienia (w tym kopii zapasowych). Przed potwierdzeniem upewnij się, że podjąłeś wszelkie kroki, w celu zachowania danych oraz ciągłości swojej działalności. OVH nie ponosi odpowiedzialności w tym zakresie.", + "orders_retract_success": "Zamówienie {{t0}} zostało anulowane.", + "orders_retract_error": "Wystąpił błąd podczas anulowania zamówienia.", + "refunds_title2": "Moje zwroty", + "refunds_table_head_date": "Data", + "refunds_table_head_id": "Opis", + "refunds_table_head_bill": "Przypisane do faktury", + "refunds_table_head_account": "Przesłany na", + "refunds_table_head_total": "Kwota", + "refunds_table_head_total_with_VAT": "Wartość brutto", + "refunds_table_download": "Pobierz", + "refunds_table_empty": "Nie posiadasz zwrotów za wybrany okres", + "refunds_table_account_no_information": "Informacje niedostępne", + "ovhAccount_partial_error": "Na skutek błędu niektóre operacje nie zostały wyświetlone. Nie dotyczy to wysokości salda.", + "ovhAccount_title2": "Operacje na koncie przedpłaconym", + "ovhAccount_no_account": "Nie posiadasz konta przedpłaconego", + "ovhAccount_balance": "Saldo z", + "ovhAccount_table_head_date": "Data", + "ovhAccount_table_head_id": "Opis", + "ovhAccount_table_head_product": "Produkt", + "ovhAccount_table_head_remaining": "Saldo", + "ovhAccount_table_head_type": "Typ", + "ovhAccount_table_head_debit": "Wykorzystane środki", + "ovhAccount_table_head_credit": "Zasilenie", + "ovhAccount_table_head_crediter": "Zasil", + "ovhAccount_table_head_crediter_none": "To konto nie może zostać zasilone.", + "ovhAccount_table_head_download": "Pobierz", + "ovhAccount_table_empty": "Nie wykonywałeś operacji na tym koncie w wybranym miesiącu.", + "ovhAccount_table_error": "Wystąpił błąd. Nie można wyświetlić informacji", + "ovhAccount_retrieve_account": "Wybierz swoje konto bankowe:", + "ovhAccount_retrieve_amount": "Kwota do przesłania:", + "ovhAccount_retrieve_account_add": "Dodaj konto bankowe", + "ovhAccount_retrieve_amount_disponible": "Dostępna kwota:", + "ovhAccount_retrieve_error": "Na skutek błędu operacja nie mogła zostać wykonana.", + "ovhAccount_retrieve_explanation": "Możesz przesłać wybraną kwotę ze swojego konta OVH na konto bankowe. Dostępne są tylko kwoty pochodzące ze zwrotów.", + "ovhAccount_retrieve_success": "Zlecenie przelewu zostało przetworzone.", + "ovhAccount_retrieve_resume_1": "Potwierdź przelew kwoty", + "ovhAccount_retrieve_resume_2": "z konta przedpłaconego na konto bankowe", + "ovhAccount_retrieve_tips": "Kliknij na \"Zapłać\", aby otworzyć zamówienie. Twoja przeglądarka musi akceptować okna pop-up.", + "ovhAccount_create_alert": "Zdefiniuj alert", + "ovhAccount_create_alert_resume": "Będziesz otrzymywał e-mail, jeśli saldo Twojego konta spadnie poniżej progu alertu.", + "ovhAccount_delete_alert": "Wyłącz alerty dotyczące salda Twojego konta:", + "ovhAccount_create_alert_amount": "Kwota progu alertu:", + "ovhAccount_create_alert_wizard_button": "Zdefiniuj", + "ovhAccount_create_alert_success": "Alert został zarejestrowany.", + "ovhAccount_create_alert_error": "Twój alert nie mógł zostać poprawnie zarejestrowany.", + "ovhAccount_create_alert_amount_resume": "Kwota zdefiniowanego progu alertu: {{t0}}", + "ovhAccount_no_alert": "Brak zdefiniowanych alertów", + "ovhAccount_create_alert_input_error": "Akceptujemy wyłącznie dodatnie liczby całkowite.", + "payment_mean_title": "Moje sposoby płatności", + "payment_mean_back": "Powrót do sposobów płatności", + "payment_mean_loading_error": "Wystąpił błąd podczas ładowania strony", + "payment_mean_no_register": "Nie zarejestrowałeś żadnego sposobu płatności.", + "payment_mean_add": "Dodaj", + "payment_mean_add_title": "Dodaj sposób płatności", + "payment_mean_action_unavailable_for_our_subsidiary": "Ta operacja nie jest obsługiwana dla Twojego kraju.", + "payment_mean_default": "Domyślnie", + "payment_mean_set_default": "Domyślny sposób płatności", + "payment_mean_set_default_after_validation": "Chcę wybrać ten domyślny sposób płatności od chwili jego zatwierdzenia.", + "payment_mean_set_as_default": "Po zatwierdzeniu ta metoda płatności zostanie oznaczona jako domyślna.", + "payment_mean_contact_presentation_reuse_contact": "korzystając z istniejącego kontaktu", + "payment_mean_contact_presentation_create_contact": "tworząc nowy kontakt", + "payment_mean_contact_presentation_billingContactId_title": "Adres przypisany do karty kredytowej ", + "payment_mean_contact_presentation_new_card_title": "Wprowadź nową kartę", + "payment_mean_contact_presentation_update_title_billingContactId": "Zmień adres przypisany do karty kredytowej", + "payment_mean_contact_presentation_update_label": "Zmień", + "payment_mean_contact_presentation_phone_label": "Telefon:", + "payment_mean_contact_presentation_email_label": "E-mail :", + "payment_mean_contact_creation_main_title": "Utworzenie kontaktu", + "payment_mean_contact_creation_mandatory_fields_rules_explained": "Domyślnie wyświetlają się tylko pola obowiązkowe (oznaczone gwiazdką). Skorzystaj z przycisku znajdującego się na początku każdej sekcji, żeby wyświetlić wszystkie dostępne pola.", + "payment_mean_contact_creation_fieldset_GENERAL_INFORMATIONS": "Informacje ogólne", + "payment_mean_contact_creation_fieldset_LEGAL": "Informacje prawne", + "payment_mean_contact_creation_fieldset_PROFILE": "Profil", + "payment_mean_contact_creation_fieldset_CONTACTS": "Kontakt", + "payment_mean_contact_creation_label_gender": "Forma prawna", + "payment_mean_contact_creation_label_firstName": "Imię", + "payment_mean_contact_creation_label_lastName": "Nazwisko", + "payment_mean_contact_creation_label_nationality": "Narodowość", + "payment_mean_contact_creation_label_country": "Kraj", + "payment_mean_contact_creation_label_address_country": "Kraj", + "payment_mean_contact_creation_label_address_province": "Region", + "payment_mean_contact_creation_label_address_state": "Status", + "payment_mean_contact_creation_label_address_area": "Województwo", + "payment_mean_contact_creation_label_legalform": "Status prawny", + "payment_mean_contact_creation_label_email_confirmation": "Potwierdzenie adresu e-mail", + "payment_mean_contact_creation_label_spareEmail": "Email zapasowy", + "payment_mean_contact_creation_label_email": "E-mail", + "payment_mean_contact_creation_label_address_line1": "Adres", + "payment_mean_contact_creation_label_address_line2": "Adres (załącznik 1)", + "payment_mean_contact_creation_label_address_line3": "Adres (załącznik 2)", + "payment_mean_contact_creation_label_address_otherDetails": "Adres (inny)", + "payment_mean_contact_creation_label_address_zip": "Kod pocztowy", + "payment_mean_contact_creation_label_address_city": "Miasto", + "payment_mean_contact_creation_label_birthDay": "Data urodzenia", + "payment_mean_contact_creation_label_phone": "Numer telefonu", + "payment_mean_contact_creation_label_fax": "Faks", + "payment_mean_contact_creation_label_language": "Język", + "payment_mean_contact_creation_label_organisation": "Organizacja", + "payment_mean_contact_creation_label_organisationType": "Typ organizacji", + "payment_mean_contact_creation_label_organisationName": "Nazwa organizacji", + "payment_mean_contact_creation_label_vat": "NIP", + "payment_mean_contact_creation_label_birthCity": "Miejsce urodzenia", + "payment_mean_contact_creation_label_birthZip": "Kod pocztowy miejsca urodzenia", + "payment_mean_contact_creation_label_birthCountry": "Kraj urodzenia", + "payment_mean_contact_creation_label_cellPhone": "Telefon komórkowy", + "payment_mean_contact_creation_label_nationalIdentificationNumber": "NIP", + "payment_mean_contact_creation_label_companyNationalIdentificationNumber": "NIP", + "payment_mean_contact_creation_label_associationNationalIdentificationNumber": "Krajowy numer identyfikacyjny", + "payment_mean_contact_creation_label_optional": "(Opcjonalnie)", + "payment_mean_contact_creation_gender_male": "Mężczyzna", + "payment_mean_contact_creation_gender_female": "Kobieta", + "payment_mean_contact_creation_country_AC": "Ascension Island", + "payment_mean_contact_creation_country_AD": "Andora", + "payment_mean_contact_creation_country_AE": "Zjednoczone Emiraty Arabskie", + "payment_mean_contact_creation_country_AF": "Afganistan", + "payment_mean_contact_creation_country_AG": "Antigua i Barbuda", + "payment_mean_contact_creation_country_AI": "Anguilla", + "payment_mean_contact_creation_country_AL": "Albania", + "payment_mean_contact_creation_country_AM": "Armenia", + "payment_mean_contact_creation_country_AO": "Angola", + "payment_mean_contact_creation_country_AQ": "Antarktyka", + "payment_mean_contact_creation_country_AR": "Argentyna", + "payment_mean_contact_creation_country_AS": "Samoa Amerykańskie", + "payment_mean_contact_creation_country_AT": "Austria", + "payment_mean_contact_creation_country_AU": "Australia", + "payment_mean_contact_creation_country_AW": "Aruba", + "payment_mean_contact_creation_country_AX": "Åland Islands", + "payment_mean_contact_creation_country_AZ": "Azerbejdżan", + "payment_mean_contact_creation_country_BA": "Bośnia i Hercegowina", + "payment_mean_contact_creation_country_BB": "Barbados", + "payment_mean_contact_creation_country_BD": "Bangladesz", + "payment_mean_contact_creation_country_BE": "Belgia", + "payment_mean_contact_creation_country_BF": "Burkina Faso", + "payment_mean_contact_creation_country_BG": "Bułgaria", + "payment_mean_contact_creation_country_BH": "Bahrajn", + "payment_mean_contact_creation_country_BI": "Burundi", + "payment_mean_contact_creation_country_BJ": "Benin", + "payment_mean_contact_creation_country_BL": "Saint Barthelemy", + "payment_mean_contact_creation_country_BM": "Bermudy", + "payment_mean_contact_creation_country_BN": "Brunei Darussalam", + "payment_mean_contact_creation_country_BO": "Wielonarodowe Państwo Boliwia", + "payment_mean_contact_creation_country_BQ": "Bonaire, Saint Eustatius And Saba", + "payment_mean_contact_creation_country_BR": "Brazylia", + "payment_mean_contact_creation_country_BS": "Bahamy", + "payment_mean_contact_creation_country_BT": "Bhutan", + "payment_mean_contact_creation_country_BW": "Botswana", + "payment_mean_contact_creation_country_BY": "Białoruś", + "payment_mean_contact_creation_country_BZ": "Belize", + "payment_mean_contact_creation_country_CA": "Kanada", + "payment_mean_contact_creation_country_CC": "Wyspy Kokosowe", + "payment_mean_contact_creation_country_CD": "Demokratyczna Republika Konga", + "payment_mean_contact_creation_country_CF": "Republika Środkowoafrykańska", + "payment_mean_contact_creation_country_CG": "Republika Konga", + "payment_mean_contact_creation_country_CH": "Szwajcaria", + "payment_mean_contact_creation_country_CI": "Wybrzeże Kości Słoniowej", + "payment_mean_contact_creation_country_CK": "Wyspy Cooka", + "payment_mean_contact_creation_country_CL": "Chile", + "payment_mean_contact_creation_country_CM": "Kamerun", + "payment_mean_contact_creation_country_CN": "Chiny", + "payment_mean_contact_creation_country_CO": "Kolumbia", + "payment_mean_contact_creation_country_CR": "Costa Rica", + "payment_mean_contact_creation_country_CU": "Kuba", + "payment_mean_contact_creation_country_CV": "Republika Zielonego Przylądka", + "payment_mean_contact_creation_country_CW": "Curacao", + "payment_mean_contact_creation_country_CX": "Wyspa Bożego Narodzenia", + "payment_mean_contact_creation_country_CY": "Cypr", + "payment_mean_contact_creation_country_CZ": "Czechy", + "payment_mean_contact_creation_country_DE": "Niemcy", + "payment_mean_contact_creation_country_DG": "Diego Garcia", + "payment_mean_contact_creation_country_DJ": "Dżibuti", + "payment_mean_contact_creation_country_DK": "Dania", + "payment_mean_contact_creation_country_DM": "Dominika", + "payment_mean_contact_creation_country_DO": "Dominikana", + "payment_mean_contact_creation_country_DZ": "Algieria", + "payment_mean_contact_creation_country_EA": "Autonomous City of Ceuta", + "payment_mean_contact_creation_country_EC": "Ekwador", + "payment_mean_contact_creation_country_EE": "Estonia", + "payment_mean_contact_creation_country_EG": "Egipt", + "payment_mean_contact_creation_country_EH": "Zachodnia Sahara", + "payment_mean_contact_creation_country_ER": "Erytrea", + "payment_mean_contact_creation_country_ES": "Hiszpania", + "payment_mean_contact_creation_country_ET": "Etiopia", + "payment_mean_contact_creation_country_FI": "Finlandia", + "payment_mean_contact_creation_country_FJ": "Fidżi", + "payment_mean_contact_creation_country_FK": "Falklandy", + "payment_mean_contact_creation_country_FM": "Mikronezja", + "payment_mean_contact_creation_country_FO": "Wyspy Owcze", + "payment_mean_contact_creation_country_FR": "Francja", + "payment_mean_contact_creation_country_GA": "Gabon", + "payment_mean_contact_creation_country_GB": "Wielka Brytania", + "payment_mean_contact_creation_country_UK": "Wielka Brytania", + "payment_mean_contact_creation_country_GD": "Grenada", + "payment_mean_contact_creation_country_GE": "Gruzja", + "payment_mean_contact_creation_country_GF": "Gujana Francuska", + "payment_mean_contact_creation_country_GG": "Guernsey", + "payment_mean_contact_creation_country_GH": "Ghana", + "payment_mean_contact_creation_country_GI": "Gibraltar", + "payment_mean_contact_creation_country_GL": "Grenlandia", + "payment_mean_contact_creation_country_GM": "Gambia", + "payment_mean_contact_creation_country_GN": "Gwinea", + "payment_mean_contact_creation_country_GP": "Guadelupa", + "payment_mean_contact_creation_country_GQ": "Gwinea Równikowa", + "payment_mean_contact_creation_country_GR": "Grecja", + "payment_mean_contact_creation_country_GS": "South Georgia and the South Sandwich Islands", + "payment_mean_contact_creation_country_GT": "Gwatemala", + "payment_mean_contact_creation_country_GU": "Guam", + "payment_mean_contact_creation_country_GW": "Gwinea Bissau", + "payment_mean_contact_creation_country_GY": "Gujana", + "payment_mean_contact_creation_country_HK": "Hong Kong", + "payment_mean_contact_creation_country_HN": "Honduras", + "payment_mean_contact_creation_country_HR": "Chorwacja", + "payment_mean_contact_creation_country_HT": "Haiti", + "payment_mean_contact_creation_country_HU": "Węgry", + "payment_mean_contact_creation_country_IC": "Wyspy Kanaryjskie", + "payment_mean_contact_creation_country_ID": "Indonezja", + "payment_mean_contact_creation_country_IE": "Irlandia", + "payment_mean_contact_creation_country_IL": "Izrael", + "payment_mean_contact_creation_country_IM": "Wyspa Man", + "payment_mean_contact_creation_country_IN": "Indie", + "payment_mean_contact_creation_country_IO": "Brytyjskie Terytorium Oceanu Indyjskiego", + "payment_mean_contact_creation_country_IQ": "Irak", + "payment_mean_contact_creation_country_IR": "Islamska republika Iranu", + "payment_mean_contact_creation_country_IS": "Islandia", + "payment_mean_contact_creation_country_IT": "Włochy", + "payment_mean_contact_creation_country_JE": "Jersey", + "payment_mean_contact_creation_country_JM": "Jamajka ", + "payment_mean_contact_creation_country_JO": "Jordania", + "payment_mean_contact_creation_country_JP": "Japonia", + "payment_mean_contact_creation_country_KE": "Kenia", + "payment_mean_contact_creation_country_KG": "Kirgistan", + "payment_mean_contact_creation_country_KH": "Kambodża", + "payment_mean_contact_creation_country_KI": "Kiribati", + "payment_mean_contact_creation_country_KM": "Komory", + "payment_mean_contact_creation_country_KN": "Saint Kitts And Nevis", + "payment_mean_contact_creation_country_KP": "Korea Północna", + "payment_mean_contact_creation_country_KR": "Korea Południowa", + "payment_mean_contact_creation_country_KW": "Kuwejt", + "payment_mean_contact_creation_country_KY": "Kajmany", + "payment_mean_contact_creation_country_KZ": "Kazachstan", + "payment_mean_contact_creation_country_LA": "Laos", + "payment_mean_contact_creation_country_LB": "Liban", + "payment_mean_contact_creation_country_LC": "Saint Lucia", + "payment_mean_contact_creation_country_LI": "Liechtenstein", + "payment_mean_contact_creation_country_LK": "Sri Lanka", + "payment_mean_contact_creation_country_LR": "Liberia", + "payment_mean_contact_creation_country_LS": "Lesotho", + "payment_mean_contact_creation_country_LT": "Litwa", + "payment_mean_contact_creation_country_LU": "Luxembourg", + "payment_mean_contact_creation_country_LV": "Łotwa", + "payment_mean_contact_creation_country_LY": "Libia", + "payment_mean_contact_creation_country_MA": "Maroko", + "payment_mean_contact_creation_country_MC": "Monako", + "payment_mean_contact_creation_country_MD": "Mołdawia", + "payment_mean_contact_creation_country_ME": "Czarnogóra", + "payment_mean_contact_creation_country_MF": "Saint Martin", + "payment_mean_contact_creation_country_MG": "Madagaskar", + "payment_mean_contact_creation_country_MH": "Wyspy Marshalla", + "payment_mean_contact_creation_country_MK": "Macedonia", + "payment_mean_contact_creation_country_ML": "Mali", + "payment_mean_contact_creation_country_MM": "Myanmar", + "payment_mean_contact_creation_country_MN": "Mongolia", + "payment_mean_contact_creation_country_MO": "Makao", + "payment_mean_contact_creation_country_MP": "Mariany Północne", + "payment_mean_contact_creation_country_MQ": "Martynika", + "payment_mean_contact_creation_country_MR": "Mauretania", + "payment_mean_contact_creation_country_MS": "Montserrat", + "payment_mean_contact_creation_country_MT": "Malta", + "payment_mean_contact_creation_country_MU": "Mauritius", + "payment_mean_contact_creation_country_MV": "Malediwy", + "payment_mean_contact_creation_country_MW": "Malawi", + "payment_mean_contact_creation_country_MX": "Meksyk", + "payment_mean_contact_creation_country_MY": "Malezja", + "payment_mean_contact_creation_country_MZ": "Mozambik", + "payment_mean_contact_creation_country_NA": "Namibia", + "payment_mean_contact_creation_country_NC": "Nowa Kaledonia", + "payment_mean_contact_creation_country_NE": "Niger", + "payment_mean_contact_creation_country_NF": "Wyspa Norfolk", + "payment_mean_contact_creation_country_NG": "Nigeria", + "payment_mean_contact_creation_country_NI": "Nikaragua", + "payment_mean_contact_creation_country_NL": "Holandia", + "payment_mean_contact_creation_country_NO": "Norwegia", + "payment_mean_contact_creation_country_NP": "Nepal", + "payment_mean_contact_creation_country_NR": "Nauru", + "payment_mean_contact_creation_country_NU": "Niue", + "payment_mean_contact_creation_country_NZ": "Nowa Zelandia", + "payment_mean_contact_creation_country_OM": "Oman", + "payment_mean_contact_creation_country_PA": "Panama", + "payment_mean_contact_creation_country_PE": "Peru", + "payment_mean_contact_creation_country_PF": "Polinezja Francuska", + "payment_mean_contact_creation_country_PG": "Papua Nowa Gwinea", + "payment_mean_contact_creation_country_PH": "Filipiny", + "payment_mean_contact_creation_country_PK": "Pakistan", + "payment_mean_contact_creation_country_PL": "Polska", + "payment_mean_contact_creation_country_PM": "Saint Pierre And Miquelon", + "payment_mean_contact_creation_country_PN": "Pitcairn Islands", + "payment_mean_contact_creation_country_PR": "Puerto Rico", + "payment_mean_contact_creation_country_PS": "Terytorium Palestyńskie", + "payment_mean_contact_creation_country_PT": "Portugalia", + "payment_mean_contact_creation_country_PW": "Palau", + "payment_mean_contact_creation_country_PY": "Paragwaj", + "payment_mean_contact_creation_country_QA": "Katar", + "payment_mean_contact_creation_country_RE": "Reunion", + "payment_mean_contact_creation_country_RO": "Rumunia", + "payment_mean_contact_creation_country_RS": "Serbia", + "payment_mean_contact_creation_country_RU": "Federacja Rosyjska", + "payment_mean_contact_creation_country_RW": "Rwanda", + "payment_mean_contact_creation_country_SA": "Arabia Saudyjska", + "payment_mean_contact_creation_country_SB": "Wyspy Salomona", + "payment_mean_contact_creation_country_SC": "Seszele", + "payment_mean_contact_creation_country_SD": "Sudan", + "payment_mean_contact_creation_country_SE": "Szwecja", + "payment_mean_contact_creation_country_SG": "Singapur", + "payment_mean_contact_creation_country_SH": "Saint Helena, Ascension And Tristan Da Cunha", + "payment_mean_contact_creation_country_SI": "Słowenia", + "payment_mean_contact_creation_country_SJ": "Svalbard And Jan Mayen", + "payment_mean_contact_creation_country_SK": "Słowacja", + "payment_mean_contact_creation_country_SL": "Sierra Leone", + "payment_mean_contact_creation_country_SM": "San Marino", + "payment_mean_contact_creation_country_SN": "Senegal", + "payment_mean_contact_creation_country_SO": "Somalia", + "payment_mean_contact_creation_country_SR": "Surinam", + "payment_mean_contact_creation_country_SS": "Południowy Sudan", + "payment_mean_contact_creation_country_ST": "São Tomé and Príncipe", + "payment_mean_contact_creation_country_SV": "Salwador", + "payment_mean_contact_creation_country_SX": "Sint Maarten", + "payment_mean_contact_creation_country_SY": "Syryjska Republika Arabska", + "payment_mean_contact_creation_country_SZ": "Suazi", + "payment_mean_contact_creation_country_TA": "Tristan dã Cunha", + "payment_mean_contact_creation_country_TC": "Turks And Caicos Islands", + "payment_mean_contact_creation_country_TD": "Czad", + "payment_mean_contact_creation_country_TF": "French Southern Territories", + "payment_mean_contact_creation_country_TG": "Togo", + "payment_mean_contact_creation_country_TH": "Tajlandia", + "payment_mean_contact_creation_country_TJ": "Tadżykistan", + "payment_mean_contact_creation_country_TK": "Tokelau", + "payment_mean_contact_creation_country_TL": "Timor Wschodni", + "payment_mean_contact_creation_country_TM": "Turkmenistan", + "payment_mean_contact_creation_country_TN": "Tunezja", + "payment_mean_contact_creation_country_TO": "Tonga", + "payment_mean_contact_creation_country_TR": "Turcja", + "payment_mean_contact_creation_country_TT": "Trynidad i Tobago", + "payment_mean_contact_creation_country_TV": "Tuvalu", + "payment_mean_contact_creation_country_TW": "Tajwan, Prowincja Chin", + "payment_mean_contact_creation_country_TZ": "Zjednoczona Republika Tanzanii", + "payment_mean_contact_creation_country_UA": "Ukraina", + "payment_mean_contact_creation_country_UG": "Uganda", + "payment_mean_contact_creation_country_UM": "United States Minor Outlying Islands", + "payment_mean_contact_creation_country_US": "Stany Zjednoczone", + "payment_mean_contact_creation_country_UY": "Urugwaj", + "payment_mean_contact_creation_country_UZ": "Uzbekistan", + "payment_mean_contact_creation_country_VA": "Watykan", + "payment_mean_contact_creation_country_VC": "Saint Vincent And The Grenadines", + "payment_mean_contact_creation_country_VE": "Wenezuela", + "payment_mean_contact_creation_country_VG": "Wyspy Dziewicze (Brytyjskie)", + "payment_mean_contact_creation_country_VI": "Wyspy Dziewicze (US)", + "payment_mean_contact_creation_country_VN": "Wietnam", + "payment_mean_contact_creation_country_VU": "Vanuatu", + "payment_mean_contact_creation_country_WF": "Wallis And Futuna", + "payment_mean_contact_creation_country_WS": "Samoa", + "payment_mean_contact_creation_country_XK": "Kosowo", + "payment_mean_contact_creation_country_YE": "Jemen", + "payment_mean_contact_creation_country_YT": "Majotta", + "payment_mean_contact_creation_country_ZA": "Południowa Afryka", + "payment_mean_contact_creation_country_ZM": "Zambia", + "payment_mean_contact_creation_country_ZW": "Zimbabwe", + "payment_mean_contact_creation_country_UNKNOWN": "Mojego kraju nie ma na liście", + "payment_mean_contact_creation_legalform_individual": "Osoba fizyczna", + "payment_mean_contact_creation_legalform_association": "Stowarzyszenie", + "payment_mean_contact_creation_legalform_corporation": "Firma", + "payment_mean_contact_creation_legalform_administration": "Administracja", + "payment_mean_contact_creation_legalform_personalcorporation": "Niezależny pracownik", + "payment_mean_contact_creation_legalform_other": "Inne", + "payment_mean_contact_creation_language_de_DE": "Niemiecki", + "payment_mean_contact_creation_language_en_AU": "Angielski (australijski)", + "payment_mean_contact_creation_language_en_CA": "Angielski (Kanadyjski)", + "payment_mean_contact_creation_language_en_GB": "Angielski", + "payment_mean_contact_creation_language_en_US": "Angielski (Stany Zjednoczone)", + "payment_mean_contact_creation_language_es_ES": "Hiszpański", + "payment_mean_contact_creation_language_fr_CA": "Francuski (Kanadyjski)", + "payment_mean_contact_creation_language_fr_FR": "Francuski", + "payment_mean_contact_creation_language_fr_MA": "Francuski (Maroko)", + "payment_mean_contact_creation_language_fr_SN": "Francuski (Senegal)", + "payment_mean_contact_creation_language_fr_TN": "Francuski (Tunezja)", + "payment_mean_contact_creation_language_pl_PL": "Polski", + "payment_mean_contact_creation_language_cs_CZ": "Czeski", + "payment_mean_contact_creation_language_fi_FI": "Fiński", + "payment_mean_contact_creation_language_en_IE": "Irlandzki", + "payment_mean_contact_creation_language_it_IT": "Włoski", + "payment_mean_contact_creation_language_lt_LT": "Litewski", + "payment_mean_contact_creation_language_nl_NL": "Holenderski", + "payment_mean_contact_creation_language_pt_PT": "Portugalski", + "payment_mean_contact_contact_creation_submit": "Zatwierdź i zapisz", + "payment_mean_contact_contact_creation_cancel": "Anuluj", + "mean_manage_my_services": "Zarządzanie usługami", + "mean_table_head_creation_date": "Data utworzenia", + "mean_table_head_description": "Opis", + "mean_table_head_type": "Typ płatności", + "mean_table_head_options": "Opcje", + "payment_mean_no_description": "Brak opisu", + "payment_mean_description_error": "Wystąpił błąd podczas modyfikowania opisu:", + "payment_mean_default_mean_error": "Wystąpił błąd. Przepraszamy za niedogodności.", + "add_mean_select_title_choose": "Dokonaj wyboru", + "add_mean_select_title_no_choice": "Inny wybór nie jest możliwy.", + "add_mean_unable_to_get_payment_means": "Nie można pobrać dostępnych sposobów płatności.", + "mean_table_head_state": "Status", + "mean_table_head_actions": "Operacje", + "mean_table_head_3d_secure": "3D Secure", + "mean_table_head_3d_secure_true": "Tak", + "mean_table_head_3d_secure_false": "Nie", + "mean_table_tooltip_more_actions": "Więcej operacji dla tej metody płatności", + "deleteMean_title": "Usunięcie sposobu płatności", + "paymentMean_delete_message_paypal": "Uwaga, usuniesz definitywnie sposób płatności zawiązany z kontem paypal:", + "paymentMean_delete_message_bankAccount": "Uwaga, usuniesz definitywnie sposób płatności zawiązany z kontem bankowym:", + "paymentMean_delete_message_creditCard": "Uwaga, usuniesz definitywnie sposób płatności związany z kartą numer:", + "paymentMean_label_creditcard_owner_name": "Nazwisko widniejące na karcie płatniczej", + "paymentMean_label_creditcard_number": "Numer", + "paymentMean_label_creditcard_validation": "Zatwierdzenie", + "paymentMean_label_creditcard_expiration": "Data wygasania", + "paymentMean_label_iban": "IBAN", + "paymentMean_label_bic": "BIC", + "paymentMean_label_addressNumber": "Numer", + "paymentMean_label_addressStreetName": "Ulica", + "paymentMean_label_addressPostalCode": "Kod pocztowy", + "paymentMean_label_addressTown": "Miasto", + "paymentMean_label_ownerName": "Imię i nazwisko właściciela lub nazwa organizacji", + "paymentMean_label_ownerAddress": "Adres siedziby/zamieszkania i pobytu właściciela konta", + "paymentMean_error_bic_bank": "Kod banku jest nieprawidłowy.", + "paymentMean_error_bic_valid": "BIC jest nieprawidłowy.", + "paymentMean_error_required": "To pole jest wymagane.", + "paymentMean_error_iban_base": "baza IBAN jest nieprawidłowa.", + "paymentMean_error_iban_country": "Kraj numeru IBAN jest nieprawidłowy.", + "paymentMean_error_iban_key": "Klucz IBAN jest nieprawidłowy.", + "paymentMean_error_iban_valid": "IBAN jest nieprawidłowy.", + "paymentMean_error_minlength": "Należy podać przynajmniej 5 znaków.", + "paymentMean_error_addressPostalCode_required": "To pole jest wymagane.", + "paymentMean_error_addressPostalCode_min": "Nieprawidłowy kod pocztowy.", + "paymentMean_error_addressPostalCode_max": "Nieprawidłowy kod pocztowy.", + "paymentMean_error_addressPostalCode_pattern": "Kod pocztowy musi składać się z 5 cyfr.", + "paymentMean_error_maxlength": "Tekst musi zawierać mniej niż 255 znaków.", + "paymentType_delete_error": "Błąd podczas usuwania sposobu płatności", + "paymentType_modify_error": "Wystąpił błąd podczas zmiany metody płatności", + "paymentType_delete_success": "Sposób płatności został usunięty", + "paymentMean_add_message_paypal": "Klikając na przycisk \"Dodaj\" będziesz mógł zalogować się na swoje konto Paypal i potwierdzić abonament pozwalający OVH na pobieranie płatności z konta Paypal podczas generowania kolejnych faktur.", + "paymentMean_add_message_creditCard": "W celu zatwierdzenia rejestracji karty bankowej przystąpimy do próby płatności.
Kwota 1 euro zostanie pobrana z Twojego konta po potwierdzeniu przez bank.
Twoja karta zostanie wtedy aktywowana.", + "paymentMean_add_message_creditCard_CA": "OVH wymaga autoryzacji pobrania płatności, co może się pojawić jako operacja w trakcie na Twoim koncie. OVH nie będzie wymagać zakończenia tej autoryzacji. Kwota nie zostanie pobrana lub zostanie zwrócona przez instytucję bankową. ", + "paymentMean_add_message_bankAccount": "Po kliknięciu przycisku \"Dodaj\" rozpocznie się pobieranie dokumentu.
Postępuj zgodnie z procedurą opisaną w tym dokumencie w celu zatwierdzenia sposobu płatności. Twoje konto bankowe zostanie zatwierdzone w ciągu 24-48 godzin od uzyskania upoważnienia do obciążania rachunku.", + "paymentType_status_valid": "Zatwierdzone", + "paymentType_status_expired": "Wygasł", + "paymentType_status_proposedByCustomer": "W oczekiwaniu na zatwierdzenie", + "paymentType_status_tooManyFailures": "Nieprawidłowy (zbyt dużo prób potwierdzania z błędem)", + "paymentType_status_broken": "Nie działa", + "paymentType_status_canceled": "Anulowany", + "paymentType_status_canceling": "W trakcie anulowania", + "paymentType_status_canceledbycustomer": "Anulowane przez klienta", + "paymentType_status_canceled_by_customer": "Anulowane przez klienta", + "paymentType_status_created": "W oczekiwaniu na zatwierdzenie", + "paymentType_status_error": "Błąd", + "paymentType_status_validforcredit": "Termin ważności zasilenia", + "paymentType_add_error": "Błąd podczas dodawania sposobu płatności", + "paymentType_status_pendingValidation": "W trakcie zatwierdzania", + "paymentType_status_waiting_for_documents": "Oczekuje na odbiór", + "payment_mean_add_paypal": "Uruchamiania abonamentu Paypal", + "payement_mean_add_creditCard": "Złóż zamówienie", + "payment_mean_get_validation": "Pobierz procedurę potwierdzania", + "payment_mean_return_by_mail_procedure": "Procedura zwrotu drogą pocztową", + "paymentType_add_validation_description": "Zatwierdź dodanie Twojej metody płatności.", + "paymentType_add_success_url": "Kliknij tutaj , zostaniesz przekierowany na bezpieczną stronę, na której będziesz mógł zakończyć operację.", + "paymentType_bankAccount_add_success_with_download": "Konto bankowe zostało dodane. Będzie ono aktywne po zatwierdzeniu. Zapoznaj się z procedurą opisaną w tym dokumencie w celu zatwierdzenia sposobu płatności. ", + "paymentType_bankAccount_pending_validation": "Dodałeś w panelu klienta konto bankowe. Czekamy na upoważnienie do obciążania rachunku. Należy przesłać je drogą pocztową.", + "paymentType_bankAccount_processing_delay": "Twoje konto bankowe zostanie zatwierdzone w ciągu 24-48 godzin od uzyskania upoważnienia do obciążania rachunku.", + "payment_mean_radio_select_default": "Wskaż ten sposób płatności jako domyślnie automatyczny.", + "payment_mean_select_default": "Ustaw jako domyślną metodę płatności.", + "payment_mean_delete_payment_mean": "Usuń ten sposób płatności", + "payment_mean_description_add": "Dodaj opis.", + "payment_mean_description_edit": "Zmień opis.", + "payment_mean_description_input": "Opis sposobu płatności", + "payment_mean_description_save": "Zapisz opis", + "payment_mean_description_cancel": "Anuluj zmiany dotyczące opisu", + "ovhAccount_table_type_CANCEL_CREDIT": "Anulowanie zasilenia", + "ovhAccount_table_type_CANCEL_CREDIT_BILL": "Anulowanie faktury", + "ovhAccount_table_type_CANCEL_CREDIT_REFUND": "Anulowanie zwrotu", + "ovhAccount_table_type_CANCEL_CREDIT_STATEMENT_INCOME": "Anulowanie zasilenia konta", + "ovhAccount_table_type_CANCEL_CREDIT_STATEMENT_OUTCOME": "Anulowanie płatności przelewem bankowym", + "ovhAccount_table_type_CANCEL_CREDIT_DEPOSIT": "Anulowanie zaliczki", + "ovhAccount_table_type_CANCEL_DEBIT": "Anulowanie pobrania", + "ovhAccount_table_type_CANCEL_DEBIT_BILL": "Anulowanie faktury", + "ovhAccount_table_type_CANCEL_DEBIT_REFUND": "Anulowanie zwrotu", + "ovhAccount_table_type_CANCEL_DEBIT_STATEMENT_INCOME": "Anulowanie zasilenia konta", + "ovhAccount_table_type_CANCEL_DEBIT_STATEMENT_OUTCOME": "Anulowanie płatności przelewem bankowym", + "ovhAccount_table_type_CANCEL_PRE_DEBIT": "Anulowanie pobrania", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_BILL": "Faktura", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_REFUND": "Zwrot", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_STATEMENT_INCOME": "Zasilenie konta", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_STATEMENT_OUTCOME": "Przelew na konto bankowe", + "ovhAccount_table_type_CREDIT": "Zasilenie", + "ovhAccount_table_type_CREDIT_BILL": "Faktura", + "ovhAccount_table_type_CREDIT_DEPOSIT": "Zaliczka", + "ovhAccount_table_type_CREDIT_REFUND": "Zwrot", + "ovhAccount_table_type_CREDIT_STATEMENT_INCOME": "Zasilenie konta", + "ovhAccount_table_type_CREDIT_STATEMENT_OUTCOME": "Przelew na konto bankowe", + "ovhAccount_table_type_DEBIT": "Wykorzystane środki", + "ovhAccount_table_type_DEBIT_BILL": "Faktura", + "ovhAccount_table_type_DEBIT_REFUND": "Zwrot", + "ovhAccount_table_type_DEBIT_STATEMENT_INCOME": "Zasilenie konta", + "ovhAccount_table_type_DEBIT_STATEMENT_OUTCOME": "Przelew na konto bankowe", + "ovhAccount_table_type_DEBIT_WITHDRAWAL": "Wykorzystane środki", + "ovhAccount_table_type_PRE_CREDIT": "Zasilenie", + "ovhAccount_table_type_PRE_CREDIT_BILL": "Faktura", + "ovhAccount_table_type_PRE_CREDIT_REFUND": "Zwrot", + "ovhAccount_table_type_PRE_CREDIT_STATEMENT_INCOME": "Zasilenie konta", + "ovhAccount_table_type_PRE_CREDIT_STATEMENT_OUTCOME": "Przelew na konto bankowe", + "ovhAccount_table_type_PRE_DEBIT": "Wykorzystane środki", + "ovhAccount_table_type_PRE_DEBIT_BILL": "Faktura", + "ovhAccount_table_type_PRE_DEBIT_REFUND": "Zwrot", + "ovhAccount_table_type_PRE_DEBIT_STATEMENT_INCOME": "Zasilenie konta", + "ovhAccount_table_type_PRE_DEBIT_STATEMENT_OUTCOME": "Przelew na konto bankowe", + "ovhAccount_table_head_payment_type": "Sposób płatności", + "ovhAccount_table_type_payment_CASH": "Rodzaj", + "ovhAccount_table_type_payment_CHARGEBACK": "Anulowanie płatności", + "ovhAccount_table_type_payment_CHEQUE": "Czek", + "ovhAccount_table_type_payment_CREDIT_CARD": "Karta bankowa", + "ovhAccount_table_type_payment_DEPOSIT": "Zaliczka", + "ovhAccount_table_type_payment_DEBT_ACCOUNT": "Konto ujemne", + "ovhAccount_table_type_payment_EDINAR": "e-DINAR", + "ovhAccount_table_type_payment_FIDELITY_POINTS": "Moje punkty", + "ovhAccount_table_type_payment_FREE": "Darmowe", + "ovhAccount_table_type_payment_IDEAL": "iDEAL", + "ovhAccount_table_type_payment_MANDAT": "Przekaz", + "ovhAccount_table_type_payment_MULTIBANCO": "Multibanco", + "ovhAccount_table_type_payment_NONE": "Żaden", + "ovhAccount_table_type_payment_OVH_ACCOUNT": "Konto prepaid", + "ovhAccount_table_type_payment_PAYMENT_MANDATE": "Przekaz", + "ovhAccount_table_type_payment_PAYPAL": "Paypal", + "ovhAccount_table_type_payment_PLATNOSCI": "Płatności", + "ovhAccount_table_type_payment_REFUND": "Zwrot", + "ovhAccount_table_type_payment_TRANSFER": "Przelew", + "ovhAccount_table_type_payment_WITHDRAWAL": "Przelew bankowy", + "ovhAccount_table_type_payment_CREDIT_ACCOUNT": "Karta kredytowa", + "ovhAccount_table_type_payment_DIGITAL_LAUNCH_PAD": "Voucher Startup Program", + "ovhAccount_table_type_payment_INCUBATOR_ACCOUNT": "Konto Incubator", + "ovhAccount_table_type_payment_PAYU": "PayU", + "ovhAccount_retrieve_title": "Przelew na konto bankowe", + "ovhAccount_renew_title": "Zasil konto", + "ovhAccount_renew_step1_msg": "Możesz zasilić konto środkami, za pomocą których będziesz mógł płacić za wystawione faktury. ", + "ovhAccount_renew_step1_erreurmin": "Kwota zasilenia nie może być niższa niż 10 {{t0}} a saldo konta musi być pozytywne.", + "ovhAccount_renew_step1_erreurformat": "Wpisana kwota jest nieprawidłowa. Prosimy o używanie jedynie liczb, dla których znakiem oddzielającym jest kropka lub przecinek.", + "ovhAccount_renew_step1_amount": "Kwota ({{t0}}):", + "ovhAccount_renew_step2_msg": "Podsumowanie zamówienia", + "ovhAccount_renew_step2_credit": "Kwota zasilenia:", + "ovhAccount_renew_step2_error": "Wystąpił błąd. Przepraszamy za niedogodności.", + "ovhAccount_renew_step2_success": "Zasilenie (zamówienie nr {{t1}}) zostanie zrealizowane po otrzymaniu płatności.", + "ovhAccount_account_list_error": "Wystąpił błąd podczas pobierania listy kont", + "ovhAccount_account_list_title": "- Konto", + "ovhAccount_account_list_empty": "Brak konto do wyświetlenia", + "telconso_menu_this_month": "Miesiące w trakcie", + "telconso_menu_last_month": "Poprzednie miesiące", + "telconso_search": "Wyszukaj linię", + "telconso_table_empty": "Brak elementów do wyświetlenia.", + "telconso_table_line_empty": "Brak linii do wyświetlenia", + "telconso_title_current_month": "Informacje na temat usługi telefonii od {{t0}} do {{t1}}", + "telconso_consumption": "Zużycie", + "telconso_plan_to": "Oferta z {{t0}}", + "telconso_allowed_outplan": "Dozwolone poza ofertą", + "telconso_service_name_consumption": "Zużycie", + "telconso_nb_lines": "Liczba linii:", + "telconso_nb_groups": "Liczba grup:", + "telconso_callout": "{{t0}} % wykonanych połączeń", + "telconso_callin": "{{t0}} % odebranych połączeń", + "telconso_faxout": "{{t0}} % wysłanych faksów", + "telconso_faxin": "{{t0}} % otrzymanych faksów", + "telconso_to_fixe": "Na numery stacjonarne", + "telconso_to_mobiles": "Na numery komórkowe", + "telconso_to_special": "Na numery specjalne", + "telconso_send_fax": "Wysyłka faksu", + "telconso_fax": "Faks", + "telconso_calls": "Liczba połączeń", + "telconso_faxs": "Liczba faksów", + "telconso_anonymous": "Zastrzeżony", + "telconso_in": "Otrzymane", + "telconso_out": "Wysłane", + "telconso_com_time": "Czas rozmowy", + "telconso_call_count": "Liczba", + "telconso_line": "Linia", + "telconso_lines": "Linie", + "telconso_price": "Cennik", + "telconso_outplan": "Poza abonamentem (netto)", + "telconso_group_outplan": "Poza abonamentem", + "telconso_group": "Grupa", + "telconso_all_groups": "Wszystkie grupy", + "telconso_select_group": "Wybierz grupę, aby otrzymać więcej informacji.", + "telconso_calls_details": "Szczegółowe informacje na temat połączeń", + "telconso_fax_details": "Szczegółowe informacje na temat faksów", + "telconso_line_myline": "Moja linia {{t0}}", + "telconso_line_include": "Zużycie zawarte w abonamencie", + "telconso_line_outplan": "Zużycie poza abonamentem", + "telconso_next_billing": "Data kolejnej faktury:", + "tel_conso_conso_date": "Data", + "tel_conso_conso_num_emit": "Numer dzwoniący", + "tel_conso_conso_num_recv": "Wybierany numer", + "tel_conso_conso_tranfert": "Przekierowanie na", + "tel_conso_conso_time": "Okres", + "tel_conso_conso_include": "Zawarte", + "tel_conso_conso_outplan": "Poza abonamentem (netto)", + "tel_conso_conso_included": "Zawarte", + "tel_conso_conso_notincluded": "Nie zawarte", + "tel_conso_calls": "połączenia", + "tel_conso_tabs_inc": "Otrzymane", + "tel_conso_tabs_out": "Wysłane", + "tel_conso_tabs_trs": "Przeniesione", + "tel_conso_tabs_incfix": "Z numerów stacjonarnych", + "tel_conso_tabs_incmob": "Z numerów komórkowych", + "tel_conso_tabs_incspe": "Z numerów specjalnych", + "tel_conso_tabs_outfix": "Na numery stacjonarne", + "tel_conso_tabs_outmob": "Na numery komórkowe", + "tel_conso_tabs_outspe": "Na numery specjalne", + "tel_conso_tabs_trsfix": "Na numery stacjonarne", + "tel_conso_tabs_trsmob": "Na numery komórkowe", + "tel_conso_tabs_trsspe": "Na numery specjalne", + "tel_conso_tabs_sent": "Wysłane", + "tel_conso_tabs_received": "Otrzymane", + "tel_conso_error": "Wystąpił błąd podczas pobierania informacji", + "tel_conso_h": "godz.", + "tel_conso_min": "min", + "tel_conso_s": "s", + "tel_lastconso_title": "Informacje na temat usługi telefonii z poprzednich miesięcy", + "tel_lastconso_month": "Miesiąc", + "tel_lastconso_priceplan": "Razem", + "tel_lastconso_outplan": "Poza abonamentem", + "tel_lastconso_sheet": "Informacje o wykorzystanych zasobach", + "tel_lastconso_sheet_down": "Pobierz", + "tel_lastconso_sheet_progress": "W toku", + "tel_lastconso_month_date_display": "MMM yyyy", + "fidelity_title": "Moje punkty", + "fidelity_get_accounts_error": "Wystąpił błąd podczas pobierania informacji", + "fidelity_header_date": "Data", + "fidelity_header_order": "Transakcja", + "fidelity_header_operation": "Operacja ", + "fidelity_header_credit": "Zasilenie", + "fidelity_header_debit": "Wykorzystane środki", + "fidelity_header_balance": "Saldo", + "fidelity_points": "punkty", + "fidelity_creditOrder_title": "Zasil konto", + "fidelity_creditOrder_step1_msg": "Podczas „ręcznego” odnowienia usługi możesz zasilić Twoje konto, aby opłacić zamówienia lub odnowić usługi. (1 punkt = 0,01 {{t0}} netto)", + "fidelity_creditOrder_step1_amount": "Kwota (w punktach)", + "fidelity_creditOrder_step1_erreurformat": "Podana kwota jest nieprawidłowa.", + "fidelity_creditOrder_step1_erreurmin": "Minimalna kwota zasilenia to {{t0}} punktów.", + "fidelity_creditOrder_step1_erreurmax": "Maksymalna kwota zasilenia to {{t0}} punktów.", + "fidelity_creditOrder_step2_msg": "Podsumowanie zamówienia", + "fidelity_creditOrder_step2_credit": "Kwota zasilenia:", + "fidelity_creditOrder_step2_error": "Wystąpił błąd podczas pobierania informacji", + "fidelity_creditOrder_step2_success": "Zasilenie (zamówienie nr {{t1}}) zostanie zrealizowane po otrzymaniu płatności.", + "fidelity_no_item": "Brak elementów do wyświetlenia", + "fidelity_balance_info": "Liczba punktów na {{t0}}: {{t1}} ", + "fidelity_no_account": "Nie dysponujesz kontem prepaid", + "sla_table_head_date": "Data", + "sla_table_head_description": "Opis", + "sla_table_head_refund": "Rekompensata", + "sla_table_apply": "Wyślij", + "sla_informations_error": "Wystąpił błąd podczas ładowania informacji. Spróbuj ponownie później:", + "sla_apply_error": "Wystąpił błąd podczas składania wniosku o rekompensatę:", + "sla_apply_success": "Wniosek o rekompensatę został zarejestrowany. Rekompensata zostanie przyznana w ciągu kilku godzin.", + "sla_apply_no_data": "Nie masz uprawnień do rekompensaty.", + "sla_table_head_service_name": "Nazwa usługi", + "sla_table_head_service_description": "Opis usługi", + "sla_table_head_service_sla_plan": "SLA wynikające z umowy", + "sla_table_head_service_sla_application": "Przyznana rekompensata", + "sla_table_services_empty": "Brak usług", + "sla_informations": "Przedstawiamy listę operacji związanych z rekompensatami, do których masz prawo. Aby skorzystać z rekompensaty, kliknij na przycisk \"Zastosuj\".", + "sla_informations_end": "Możesz wnioskować o przyznanie rekompensaty wynikającej z SLA OVH do {{t0}}.", + "sla_informations_applied": "Twój wniosek został zarejestrowany i zostanie przetworzony tak szybko, jak to możliwe.", + "sla_informations_applied_all": "Twoje wnioski zostały zarejestrowane i zostaną przetworzone tak szybko, jak to możliwe.", + "sla_informations_status_created": "Utworzono", + "sla_informations_status_notApplicable": "Nie dotyczy", + "sla_informations_status_completed": "Wniosek zatwierdzony", + "sla_informations_status_requested": "Przetwarzanie Twojego wniosku", + "voucher_table_head_id": "ID", + "voucher_table_head_balance": "Bilans", + "voucher_table_head_voucher_open_date": "Data otwarcia", + "voucher_table_head_voucher_last_update": "Ostatnia aktualizacja", + "voucher_table_empty": "Brak kodu", + "voucher_informations_error": "Wystąpił błąd:", + "vouchers_title": "Moje kody", + "vouchers_movements_title": "Operacje dotyczące kodu {{t0}}", + "voucher_movements_table_head_id": "ID", + "voucher_movements_table_head_description": "Opis", + "voucher_movements_table_head_date": "Data", + "voucher_movements_table_head_amount": "Kwota", + "voucher_movements_table_head_previous_balance": "Poprzedni bilans", + "voucher_movements_table_head_balance": "Bilans", + "voucher_movements_table_head_operation": "Operacja ", + "voucher_movements_table_head_order": "Zamówienie", + "voucher_movements_table_empty": "Brak operacji", + "voucher_movements_operation_type_cancel-credit": "Zasilenie anulowane", + "voucher_movements_operation_type_cancel-debit": "Pobranie anulowane", + "voucher_movements_operation_type_cancel-pre-debit": "Anulowanie wstępnego pobrania", + "voucher_movements_operation_type_credit": "Zasilenie", + "voucher_movements_operation_type_debit": "Wykorzystane środki", + "voucher_movements_operation_type_pre-credit": "Wstępne zasilenie", + "voucher_movements_operation_type_pre-debit": "Wstępne pobranie", + "statements_account_automatic_payment_inactive": "Automatyczne pobranie płatności nie jest możliwe dla odnowienia Twoich usług.", + "statements_account_no_default_payment_mean": "Nie wskazałeś domyślnego sposobu płatności.", + "statements_account_invalid_default_payment_mean": "Twój domyślny sposób płatności utracił ważność.", + "statements_account_manage_my_payment_means": "Zarządzaj sposobami płatności", + "statements_account_pay_debt_button": "Ureguluj saldo teraz", + "statements_table_caption": "Zamówienia na Twoje konto", + "statements_table_header_order": "Zamówienie", + "statements_table_header_date": "Data", + "statements_table_header_due_date": "Data wygaśnięcia", + "statements_table_no_due_date": "Natychmiastowy", + "statements_table_header_amount": "Kwota", + "statements_table_header_balance": "Saldo należne", + "statements_table_header_details": "Szczegóły", + "statements_table_no_detail": "Brak danych", + "statements_table_invoice_link": "Wyświetl fakturę {{t0}} w nowym oknie.", + "statements_table_order_link": "Wyświetl zamówienie {{t0}} w nowym oknie.", + "statements_table_detail_label": "Sprawdź szczegółowe informacje dotyczące tej faktury.", + "statements_table_detail_link": "Wyświetl szczegóły dla tego zadłużenia {{t0}}.", + "statements_table_pay_debt_button": "Ureguluj saldo teraz", + "statements_summary_error": "Wystąpił błąd podczas pobierania stanu konta.", + "statements_detail_error": "Wystąpił błąd podczas pobierania informacji o Twoim koncie.", + "statements_single_debt_error": "Wystąpił błąd podczas pobierania informacji o tej linii {{t0}}.", + "statements_payment_mean_error": "Wystąpił błąd podczas pobierania sposbów płatności.", + "statements_details_summary_title": "Podsumowanie zamówienia", + "statements_details_operations_title": "Historia operacji", + "statements_details_page_loader": "Pobieranie informacji...", + "statements_details_page_operations": "Wystąpił błąd podczas pobierania historii operacji.", + "statements_details_return_to_statements": "Powrót do poprzedniej strony", + "statements_details_table_caption": "Lista operacji dla faktury", + "statements_details_table_header_date": "Data", + "statements_details_table_header_operation": "Operacja ", + "statements_details_table_header_status": "Status", + "statements_details_table_header_amount": "Kwota", + "statements_details_table_header_document": "Dokument", + "statements_details_table_order_link": "Otwórz zamówienie przypisane do tej operacji w nowym oknie.", + "statements_details_table_invoice_html_link": "Sprawdź fakturę w wersji html (w nowym oknie).", + "statements_details_table_invoice_pdf_link": "Sprawdź fakturę w wersji pdf (w nowym oknie).", + "statements_operation_status_done": "Uzupełnione", + "statements_operation_status_cancelled": "Anulowane", + "statements_operation_status_failed": "Nieudane", + "statements_operation_status_todo": "W oczekiwaniu na płatność", + "statements_operation_status_pending": "Przetwarzanie Twojego wniosku", + "statements_operation_status_paid": "Opłacone", + "statements_operation_description_order": "Tworzenie zamówienia", + "statements_operation_description_cancel": "Anulowanie operacji", + "statements_operation_description_creditcard_manual": "Ręczna płatność kartą kredytową", + "statements_operation_description_creditcard_automatic": "Automatyczne pobranie z karty kredytowej", + "statements_operation_description_refund_creditcard": "Zwrot na kartę kredytową", + "statements_operation_description_unpaid_creditcard": "Pobranie z karty kredytowej odrzucone", + "statements_operation_description_paypal_manual": "Ręczna płatność za pomoca konta PayPal", + "statements_operation_description_paypal_automatic": "Automatyczne pobranie z konta PayPal", + "statements_operation_description_refund_paypal": "Zwrot na konto PayPal", + "statements_operation_description_unpaid_paypal": "Pobranie z konta PayPal odrzucone", + "statements_operation_description_sepa_automatic": "Automatyczne pobranie z konta bankowego", + "statements_operation_description_refund_sepa": "Zwrot na konto bankowe", + "statements_operation_description_unpaid_sepa": "Pobranie z konta bankowego odrzucone", + "statements_operation_description_credit_account_automatic": "Automatyczne pobranie z konta prepaid OVH", + "statements_operation_description_refund_credit_account": "Zwrot na konto prepaid OVH", + "statements_operation_description_unpaid_credit_account": "Anulowanie przelewu za pomocą konta prepaid OVH", + "statements_operation_description_check_manual": "Płatność czekiem", + "statements_operation_description_refund_check": "Zwrot przelewu bankowego", + "statements_operation_description_unpaid_check": "Czek odrzucony", + "statements_operation_description_transfer_manual": "Płatność przelewem bankowym", + "statements_operation_description_unpaid_transfer": "Przelew bankowy odrzucony", + "statements_operation_description_warrant_manual": "Płatność przekazem", + "statements_operation_description_refund_warrant": "Zwrot przekazu", + "statements_operation_description_unpaid_warrant": "Przekaz odrzucony", + "statements_operation_description_refund": "Zwrot", + "statements_operation_description_refund_unknown": "Zwrot", + "billing_date_range_choose_custom_date": "Zdefiniuj okres", + "billing_date_range_text": "Od {{t0}} do {{t1}}", + "billing_price_ttc_label": "{{price}} brutto", + "billing_guides_header": "Przewodniki", + "billing_guides_header_manage_payment_methods_guides": "Zarządzaj sposobami płatności", + "billing_guides_header_managing_orders_guides": "Zarządzaj zamówieniami OVHcloud", + "billing_guides_header_purchase_order_guides": "Pojęcie numeru zamówienia lub „purchase order” (PO)", + "billing_guides_header_managing_bills_guides": "Zarządzaj fakturami OVHcloud", + "billing_guides_header_automatic_renewal_guides": "Zarządzaj odnowieniami usług", + "fidelity_creditOrder_submit_error": "Wystąpił błąd podczas naliczania punktów.", + "fidelity_creditOrder_submit_success": "Zasilenie w kwocie {{t0}} punktów zostało wygenerowane. Możesz złożyć zamówienie w zakładce Moje zamówienia" +} diff --git a/packages/manager/modules/new-billing/src/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..d3cfc5334282 --- /dev/null +++ b/packages/manager/modules/new-billing/src/translations/Messages_pt_PT.json @@ -0,0 +1,920 @@ +{ + "billingError": "Ocorreu um erro ao carregar as informações", + "title_from": "de", + "title_to": "a", + "period_tooltip_from": "Selecione uma data de início", + "period_tooltip_to": "Selecione uma data de fim", + "table_download_html": "Ver a versão HTML", + "table_download_pdf": "Ver a versão PDF", + "table_download_html_order": "Ver encomenda em formato HTML", + "table_download_pdf_order": "Ver encomenda em formato PDF", + "table_download_html_invoice": "Ver fatura em formato HTML", + "table_download_pdf_invoice": "Ver fatura em formato PDF", + "table_download_pdf_beta": "Consultar a versão PDF (Beta)", + "todo": "Em breve", + "wizard_order": "Encomendar", + "wizard_cancel": "Anular", + "wizard_confirm": "Validar", + "wizard_pay": "Pagar", + "wizard_renew": "Renovar", + "wizard_next": "Seguinte", + "wizard_previous": "Anterior", + "common_order_ascending": "ordem crescente", + "common_order_descending": "ordem decrescente", + "common_payment_type_cash": "Pagamento em dinheiro", + "common_payment_type_chargeback": "Pagamento recusado", + "common_payment_type_cheque": "Cheque", + "common_payment_type_creditCard": "Cartão bancário", + "common_payment_type_CREDIT_CARD": "Cartão bancário", + "common_payment_type_debtAccount": "Débito SEPA", + "common_payment_type_DEBT_ACCOUNT": "Débito SEPA", + "common_payment_type_deferredPaymentAccount": "Conta de pagamento diferido", + "common_payment_type_DEFERRED_PAYMENT_ACCOUNT": "Conta de pagamento diferido", + "common_payment_type_deposit": "Depósito", + "common_payment_type_edinar": "e-DINAR", + "common_payment_type_fidelityPoints": "Os meus pontos", + "common_payment_type_FIDELITY_POINTS": "Os meus pontos", + "common_payment_type_free": "Grátis", + "common_payment_type_ideal": "iDEAL", + "common_payment_type_mandat": "Mandat cash", + "common_payment_type_multibanco": "Multibanco", + "common_payment_type_none": "Nenhum", + "common_payment_type_ovhAccount": "Conta pré-paga", + "common_payment_type_OVH_ACCOUNT": "Conta pré-paga", + "common_payment_type_paymentMandate": "", + "common_payment_type_PAYMENT_MANDATE": "", + "common_payment_type_paypal": "Paypal", + "common_payment_type_payu": "PayU", + "common_payment_type_platnosci": "Płatności", + "common_payment_type_refund": "Nota de crédito", + "common_payment_type_transfer": "Transferência", + "common_payment_type_withdrawal": "Débito direto", + "common_payment_type_bankAccount": "Conta bancária", + "common_payment_type_BANK_ACCOUNT": "Conta bancária", + "common_payment_type_digitalLaunchPad": "Digital launchpad", + "common_payment_type_DIGITAL_LAUNCH_PAD": "Digital launchpad", + "common_payment_type_unavailable": "Informações sobre pagamento não disponível", + "common_payment_type_0": "Todos", + "common_see_another_month": "Ver outro mês", + "common_choose": "Escolher", + "common_payment_type_creditCard_expiration_date": "Data de expiração:", + "common_time_period_in_years": "{{t0}} anos", + "common_time_period_one_year": "1 ano", + "common_time_period_in_months": "{{t0}} mês(es)", + "common_time_period_one_month": "1 mês", + "pagination_page": "Página {{ current }} / {{ last }}", + "pagination_display": "Mostrar", + "pagination_display_all": "Tudo", + "pagination_go": "Ok", + "history_title2": "Faturas", + "history_table_head_date": "Data de emissão", + "history_table_head_id": "Referência", + "history_table_head_order_id": "Número de encomenda", + "history_table_head_product": "Produto", + "history_table_head_payment": "Métodos de pagamento", + "history_table_head_payment_select_filter": "Filtrar por método de pagamento", + "history_table_head_total_with_VAT": "Montante c/IVA", + "history_table_head_total": "Montante", + "history_table_head_balance_due": "Saldo a pagar", + "history_table_head_due_date": "Data de vencimento", + "history_table_head_actions": "Ações", + "history_table_actions_tooltip": "Mais detalhes sobre esta fatura", + "history_table_empty": "Não possui faturas para o mês selecionado", + "history_table_information_not_available": "Informação não disponível", + "history_table_debt_due_immediately": "Imediato", + "history_table_debt_paid": "Pago", + "payments_error": "Ocorreu um erro. Pedimos desculpa pelo incómodo.", + "payments_title": "Pagamentos", + "payments_description": "A seguinte lista apresenta os pagamentos que foram efetuados com o seu método de pagmaento padrão. Cada um dos pagamentos pode corresponder a uma ou mais faturas.", + "payments_table_head_date": "Data de pagamento", + "payments_table_head_id": "Referência", + "payments_table_head_type": "Métodos de pagamento", + "payments_table_head_amount": "Montante total", + "payments_table_head_actions": "Ações", + "payments_table_actions_tooltip": "Mais detalhes sobre o pagamento", + "payments_table_type_not_available": "Informação não disponível", + "payments_table_empty": "Não existem pagamentos no período selecionado.", + "payments_request_pending": "Um pagamento de fatura está a ser processado. Clique nesta ligação para obter mais informações.", + "payments_details_link": "Ver os detalhes deste pagamento", + "payment_details_payment_id": "Referência", + "payment_details_payment_date": "Data", + "payment_details_payment_amount": "Montante total", + "payment_details_table_header_id": "Referência da fatura", + "payment_details_table_header_date": "Data de emissão", + "payment_details_table_header_payment": "Montante da operação", + "payment_details_table_header_document": "Documento", + "payment_details_title": "Detalhes do pagamento", + "payments_details_table_empty": "Sem detalhes disponíveis.", + "payment_details_return_to_payments": "Voltar à página anterior", + "orders_page_title": "Encomendas", + "orders_table_head_date": "Data", + "orders_table_head_id": "Número de encomenda", + "orders_table_head_status": "Estado", + "orders_table_head_total_taxes_included": "Montante com taxas", + "orders_table_head_total": "Montante", + "orders_table_empty": "Não possui encomendas.", + "orders_table_empty_with_filter": "Não possui encomendas para esses critérios:", + "orders_informations_error": "Ocorreu um erro:", + "orders_order_status_cancelled": "Anulada", + "orders_order_status_cancelling": "Cancelamento em curso", + "orders_order_status_checking": "Validação", + "orders_order_status_delivered": "Concluída", + "orders_order_status_delivering": "Entrega em curso", + "orders_order_status_documents_requested": "Aguardar documentos", + "orders_order_status_not_paid": "Sem pagamento", + "orders_order_status_unknown": "Desconhecido", + "orders_order_bc_expired": "Encomenda expirada", + "orders_order_status_filter_progress": "Em curso", + "orders_order_status_filter_all": "Todas", + "orders_order_status_filter_terminated": "Terminadas", + "orders_order_status_filter_expired": "Expiradas", + "orders_order_loading_error": "Ocorreu um erro durante a recuperação desta encomenda", + "orders_search_input_title": "Procurar as minhas encomendas por identificador.", + "orders_table_actions_tooltip": "Mais detalhes sobre esta encomenda", + "orders_order_action_retract": "Anular a encomenda", + "orders_retract_return_to_orders": "Voltar às minhas encomendas", + "orders_retract_title": "Cancelamento do/dos serviços da encomenda", + "orders_retract_confirmation": "Deseja mesmo anular a sua encomenda {{t0}}?", + "orders_retract_confirmation_text": "Sim, desejo cancelar esta encomenda.", + "orders_retract_description1": "Dispõe de um direito de retratação de 14 dias a contar da data da encomenda. Em caso de retratação, será reembolsado num prazo de 30 dias depois de realizado o pedido de retratação. Do valor a reembolsar, serão descontados os dias correspondentes à utilização do serviço", + "orders_retract_description2": "Atenção, a retratação através deste formulário abrange todos os serviços associados a esta encomenda. A retratação será tomada em conta de imediato.", + "orders_retract_alert": "A confirmação implicará a eliminação automática, imediata e irreversível do conjunto dos dados associados a esta encomenda (incluindo as cópias de segurança e backups). Antes de prosseguir e de confirmar a sua rescisão aos serviços, deve adotar todas as medidas necessárias para que conserve os seus dados e garanta a continuidade da sua atividade. A OVH declina toda a responsabilidade a este respeito.", + "orders_retract_success": "A sua encomenda {{t0}} foi corretamente anulada.", + "orders_retract_error": "Ocorreu um erro aquando da anulação da sua encomenda", + "refunds_title2": "As minhas notas de crédito", + "refunds_table_head_date": "Data", + "refunds_table_head_id": "Referência", + "refunds_table_head_bill": "Associado à fatura", + "refunds_table_head_account": "Creditado em", + "refunds_table_head_total": "Montante", + "refunds_table_head_total_with_VAT": "Montante c/IVA", + "refunds_table_download": "Transferir", + "refunds_table_empty": "Não há nenhuma nota de crédito para o período selecionado", + "refunds_table_account_no_information": "Informações indisponíveis", + "ovhAccount_partial_error": "Devido a um erro, alguns movimentos não podem ser apresentados. O seu saldo não foi afetado.", + "ovhAccount_title2": "Movimentos na minha conta pré-paga", + "ovhAccount_no_account": "Não dispõe de conta pré-paga", + "ovhAccount_balance": "Saldo:", + "ovhAccount_table_head_date": "Data", + "ovhAccount_table_head_id": "Referência", + "ovhAccount_table_head_product": "Produto", + "ovhAccount_table_head_remaining": "Saldo", + "ovhAccount_table_head_type": "Tipo", + "ovhAccount_table_head_debit": "Débito", + "ovhAccount_table_head_credit": "Crédito", + "ovhAccount_table_head_crediter": "Creditar", + "ovhAccount_table_head_crediter_none": "Esta conta não pode ser creditada.", + "ovhAccount_table_head_download": "Transferir", + "ovhAccount_table_empty": "Não possui movimentos na sua conta pré-paga durante o mês selecionado.", + "ovhAccount_table_error": "Ocorreu um erro. É impossível apresentar as informações", + "ovhAccount_retrieve_account": "Selecione a sua conta bancária:", + "ovhAccount_retrieve_amount": "Montante a transferir:", + "ovhAccount_retrieve_account_add": "Adicionar uma conta bancária", + "ovhAccount_retrieve_amount_disponible": "Soma disponível:", + "ovhAccount_retrieve_error": "Devido a um erro a sua operação não pôde ser efetuada.", + "ovhAccount_retrieve_explanation": "Tem a possibilidade de pedir uma transferência de um montante escolhido na sua conta cliente OVH para uma conta bancária. Queira notar que apenas os valores provenientes de reembolsos estão disponíveis.", + "ovhAccount_retrieve_success": "O seu pedido de transferência foi tratado com sucesso.", + "ovhAccount_retrieve_resume_1": "Confirme a transferência de um montante de", + "ovhAccount_retrieve_resume_2": "da sua conta pré-paga para a sua conta bancária", + "ovhAccount_retrieve_tips": "Clique em \"Pagar\" para abrir a nota de encomenda. O seu browser terá de aceitar pop-ups.", + "ovhAccount_create_alert": "Definir um alerta", + "ovhAccount_create_alert_resume": "Irá receber uma notificação por e-mail quando o saldo da sua conta passar o limite definido.", + "ovhAccount_delete_alert": "Desativar os alertas relativos ao saldo da sua conta:", + "ovhAccount_create_alert_amount": "Montante de alerta:", + "ovhAccount_create_alert_wizard_button": "Criar", + "ovhAccount_create_alert_success": "O seu alerta foi guardado com sucesso.", + "ovhAccount_create_alert_error": "O seu alerta não foi corretamente registado devido a um problema.", + "ovhAccount_create_alert_amount_resume": "Montante de alerta definido: {{t0}}", + "ovhAccount_no_alert": "Não existem alertas configurados.", + "ovhAccount_create_alert_input_error": "Somente são aceites números inteiros positivos.", + "payment_mean_title": "Métodos de pagamento", + "payment_mean_back": "Voltar aos meus meios de pagamento", + "payment_mean_loading_error": "Erro durante a atualização da página", + "payment_mean_no_register": "Não tem nenhum método de pagamento registado.", + "payment_mean_add": "Adicionar", + "payment_mean_add_title": "Adicionar um método de pagamento", + "payment_mean_action_unavailable_for_our_subsidiary": "Esta ação não está disponível para o seu país.", + "payment_mean_default": "Predefinido", + "payment_mean_set_default": "Método de pagamento padrão", + "payment_mean_set_default_after_validation": "Eu desejo selecionar este método de pagamento para padrão desde a sua validação.", + "payment_mean_set_as_default": "Este método de pagamento será selecionado por predefinição após a sua validação.", + "payment_mean_contact_presentation_reuse_contact": "ao utilizar um contacto já existente", + "payment_mean_contact_presentation_create_contact": "ao criar um novo contacto", + "payment_mean_contact_presentation_billingContactId_title": "Endereço associado ao cartão de crédito", + "payment_mean_contact_presentation_new_card_title": "Insira um novo cartão", + "payment_mean_contact_presentation_update_title_billingContactId": "Alterar endereço associado ao cartão de crédito", + "payment_mean_contact_presentation_update_label": "Alterar", + "payment_mean_contact_presentation_phone_label": "Telef:", + "payment_mean_contact_presentation_email_label": "E-mail:", + "payment_mean_contact_creation_main_title": "Criação de um contacto", + "payment_mean_contact_creation_mandatory_fields_rules_explained": "A visualização padrão só mostra os campos obrigatórios (marcados com um asterisco). Utilize o botão localizado no início de cada secção para visualizar todos os campos disponíveis para preenchimento", + "payment_mean_contact_creation_fieldset_GENERAL_INFORMATIONS": "Informações gerais", + "payment_mean_contact_creation_fieldset_LEGAL": "Dados jurídicos", + "payment_mean_contact_creation_fieldset_PROFILE": "Perfil", + "payment_mean_contact_creation_fieldset_CONTACTS": "Contactos", + "payment_mean_contact_creation_label_gender": "Estado Civil", + "payment_mean_contact_creation_label_firstName": "Nome", + "payment_mean_contact_creation_label_lastName": "Apelido", + "payment_mean_contact_creation_label_nationality": "Nacionalidade", + "payment_mean_contact_creation_label_country": "País", + "payment_mean_contact_creation_label_address_country": "País", + "payment_mean_contact_creation_label_address_province": "Província ", + "payment_mean_contact_creation_label_address_state": "Estado", + "payment_mean_contact_creation_label_address_area": "Região", + "payment_mean_contact_creation_label_legalform": "Estado jurídico", + "payment_mean_contact_creation_label_email_confirmation": "Confirmação do e-mail", + "payment_mean_contact_creation_label_spareEmail": "E-mail de segurança", + "payment_mean_contact_creation_label_email": "E-mail", + "payment_mean_contact_creation_label_address_line1": "Endereço Postal", + "payment_mean_contact_creation_label_address_line2": "Morada (complemento 1)", + "payment_mean_contact_creation_label_address_line3": "Morada (complemento 2)", + "payment_mean_contact_creation_label_address_otherDetails": "Morada (outros)", + "payment_mean_contact_creation_label_address_zip": "Código postal", + "payment_mean_contact_creation_label_address_city": "Localidade", + "payment_mean_contact_creation_label_birthDay": "Data de aniversário", + "payment_mean_contact_creation_label_phone": "Telefone", + "payment_mean_contact_creation_label_fax": "Fax", + "payment_mean_contact_creation_label_language": "Idioma", + "payment_mean_contact_creation_label_organisation": "Organização", + "payment_mean_contact_creation_label_organisationType": "Tipo de organização", + "payment_mean_contact_creation_label_organisationName": "Nome da organização", + "payment_mean_contact_creation_label_vat": "IVA intra comunitário ", + "payment_mean_contact_creation_label_birthCity": "Local de nascimento", + "payment_mean_contact_creation_label_birthZip": "Código postal", + "payment_mean_contact_creation_label_birthCountry": "País de nascimento", + "payment_mean_contact_creation_label_cellPhone": "Telemóvel", + "payment_mean_contact_creation_label_nationalIdentificationNumber": "Código fiscal", + "payment_mean_contact_creation_label_companyNationalIdentificationNumber": "Código fiscal", + "payment_mean_contact_creation_label_associationNationalIdentificationNumber": "Número de Identificação Fiscal", + "payment_mean_contact_creation_label_optional": "(Opcional)", + "payment_mean_contact_creation_gender_male": "Masculino", + "payment_mean_contact_creation_gender_female": "Feminino", + "payment_mean_contact_creation_country_AC": "Ilha de Ascensão", + "payment_mean_contact_creation_country_AD": "Andorra", + "payment_mean_contact_creation_country_AE": "Emirados Árabes Unidos", + "payment_mean_contact_creation_country_AF": "Afeganistão", + "payment_mean_contact_creation_country_AG": "Antígua e Barbuda", + "payment_mean_contact_creation_country_AI": "Anguila", + "payment_mean_contact_creation_country_AL": "Albânia", + "payment_mean_contact_creation_country_AM": "Arménia", + "payment_mean_contact_creation_country_AO": "Angola", + "payment_mean_contact_creation_country_AQ": "Antártida", + "payment_mean_contact_creation_country_AR": "Argentina", + "payment_mean_contact_creation_country_AS": "American Samoa", + "payment_mean_contact_creation_country_AT": "Áustria", + "payment_mean_contact_creation_country_AU": "Austrália", + "payment_mean_contact_creation_country_AW": "Aruba", + "payment_mean_contact_creation_country_AX": "Åland Islands", + "payment_mean_contact_creation_country_AZ": "Azerbaijão", + "payment_mean_contact_creation_country_BA": "Bósnia e Herzegovina", + "payment_mean_contact_creation_country_BB": "Barbados", + "payment_mean_contact_creation_country_BD": "Bangladeche", + "payment_mean_contact_creation_country_BE": "Bélgica", + "payment_mean_contact_creation_country_BF": "Burquina Faso", + "payment_mean_contact_creation_country_BG": "Bulgária", + "payment_mean_contact_creation_country_BH": "Barém", + "payment_mean_contact_creation_country_BI": "Burundi", + "payment_mean_contact_creation_country_BJ": "Benim", + "payment_mean_contact_creation_country_BL": "São Bartolomeu", + "payment_mean_contact_creation_country_BM": "Bermudas", + "payment_mean_contact_creation_country_BN": "Brunei", + "payment_mean_contact_creation_country_BO": "Bolívia", + "payment_mean_contact_creation_country_BQ": "Bonaire, Saint Eustatius And Saba", + "payment_mean_contact_creation_country_BR": "Brasil", + "payment_mean_contact_creation_country_BS": "Baamas", + "payment_mean_contact_creation_country_BT": "Butão", + "payment_mean_contact_creation_country_BW": "Botsuana", + "payment_mean_contact_creation_country_BY": "Bielorússia", + "payment_mean_contact_creation_country_BZ": "Belize", + "payment_mean_contact_creation_country_CA": "Canadá", + "payment_mean_contact_creation_country_CC": "Cocos (Keeling) Islands", + "payment_mean_contact_creation_country_CD": "República Democrática do Congo", + "payment_mean_contact_creation_country_CF": "República Centro Africana", + "payment_mean_contact_creation_country_CG": "República do Congo", + "payment_mean_contact_creation_country_CH": "Suíça", + "payment_mean_contact_creation_country_CI": "Costa do Marfim", + "payment_mean_contact_creation_country_CK": "Cook Islands", + "payment_mean_contact_creation_country_CL": "Chile", + "payment_mean_contact_creation_country_CM": "Camarões", + "payment_mean_contact_creation_country_CN": "China", + "payment_mean_contact_creation_country_CO": "Colômbia", + "payment_mean_contact_creation_country_CR": "Costa Rica", + "payment_mean_contact_creation_country_CU": "Cuba", + "payment_mean_contact_creation_country_CV": "Cabo Verde", + "payment_mean_contact_creation_country_CW": "Curaçau", + "payment_mean_contact_creation_country_CX": "Ilha do Natal", + "payment_mean_contact_creation_country_CY": "Chipre", + "payment_mean_contact_creation_country_CZ": "República Checa", + "payment_mean_contact_creation_country_DE": "Alemanha", + "payment_mean_contact_creation_country_DG": "Diego Garcia", + "payment_mean_contact_creation_country_DJ": "Djibuti", + "payment_mean_contact_creation_country_DK": "Dinamarca", + "payment_mean_contact_creation_country_DM": "Dominica", + "payment_mean_contact_creation_country_DO": "República Dominicana", + "payment_mean_contact_creation_country_DZ": "Argélia", + "payment_mean_contact_creation_country_EA": "Cidade de Ceuta", + "payment_mean_contact_creation_country_EC": "Equador", + "payment_mean_contact_creation_country_EE": "Estónia", + "payment_mean_contact_creation_country_EG": "Egito", + "payment_mean_contact_creation_country_EH": "Sahara Ocidental", + "payment_mean_contact_creation_country_ER": "Eritreia", + "payment_mean_contact_creation_country_ES": "Espanha", + "payment_mean_contact_creation_country_ET": "Etiópia", + "payment_mean_contact_creation_country_FI": "Finlândia", + "payment_mean_contact_creation_country_FJ": "Fiji", + "payment_mean_contact_creation_country_FK": "Ilhas Falkland (Malvinas)", + "payment_mean_contact_creation_country_FM": "Federated States Of Micronesia", + "payment_mean_contact_creation_country_FO": "Ilhas Faroé", + "payment_mean_contact_creation_country_FR": "França", + "payment_mean_contact_creation_country_GA": "Gabão", + "payment_mean_contact_creation_country_GB": "Reino Unido", + "payment_mean_contact_creation_country_UK": "Reino Unido", + "payment_mean_contact_creation_country_GD": "Granada", + "payment_mean_contact_creation_country_GE": "Geórgia", + "payment_mean_contact_creation_country_GF": "Guiana Francesa", + "payment_mean_contact_creation_country_GG": "Guernsey", + "payment_mean_contact_creation_country_GH": "Gana", + "payment_mean_contact_creation_country_GI": "Gibraltar", + "payment_mean_contact_creation_country_GL": "Gronelândia", + "payment_mean_contact_creation_country_GM": "Gâmbia", + "payment_mean_contact_creation_country_GN": "Guiné", + "payment_mean_contact_creation_country_GP": "Guadalupe", + "payment_mean_contact_creation_country_GQ": "Guiné Equatorial", + "payment_mean_contact_creation_country_GR": "Grécia", + "payment_mean_contact_creation_country_GS": "South Georgia and the South Sandwich Islands", + "payment_mean_contact_creation_country_GT": "Guatemala", + "payment_mean_contact_creation_country_GU": "Guam", + "payment_mean_contact_creation_country_GW": "Guiné-Bissau", + "payment_mean_contact_creation_country_GY": "Guiana", + "payment_mean_contact_creation_country_HK": "Hong Kong", + "payment_mean_contact_creation_country_HN": "Honduras", + "payment_mean_contact_creation_country_HR": "Croácia", + "payment_mean_contact_creation_country_HT": "Haiti", + "payment_mean_contact_creation_country_HU": "Hungria", + "payment_mean_contact_creation_country_IC": "Ilhas Canárias", + "payment_mean_contact_creation_country_ID": "Indonésia", + "payment_mean_contact_creation_country_IE": "Irlanda", + "payment_mean_contact_creation_country_IL": "Israel", + "payment_mean_contact_creation_country_IM": "Isle Of Man", + "payment_mean_contact_creation_country_IN": "Índia", + "payment_mean_contact_creation_country_IO": "British Indian Ocean Territory", + "payment_mean_contact_creation_country_IQ": "Iraque", + "payment_mean_contact_creation_country_IR": "Irão", + "payment_mean_contact_creation_country_IS": "Islândia", + "payment_mean_contact_creation_country_IT": "Itália", + "payment_mean_contact_creation_country_JE": "Jersey", + "payment_mean_contact_creation_country_JM": "Jamaica", + "payment_mean_contact_creation_country_JO": "Jordânia", + "payment_mean_contact_creation_country_JP": "Japão", + "payment_mean_contact_creation_country_KE": "Quénia", + "payment_mean_contact_creation_country_KG": "Quirguistão", + "payment_mean_contact_creation_country_KH": "Cambodja", + "payment_mean_contact_creation_country_KI": "Kiribati", + "payment_mean_contact_creation_country_KM": "Comoros", + "payment_mean_contact_creation_country_KN": "Saint Kitts And Nevis", + "payment_mean_contact_creation_country_KP": "República Democrática da Coreia", + "payment_mean_contact_creation_country_KR": "República da Coreia", + "payment_mean_contact_creation_country_KW": "Koweit", + "payment_mean_contact_creation_country_KY": "Ilhas Caimão", + "payment_mean_contact_creation_country_KZ": "Cazaquistão", + "payment_mean_contact_creation_country_LA": "Laos", + "payment_mean_contact_creation_country_LB": "Líbano", + "payment_mean_contact_creation_country_LC": "Santa Lúcia", + "payment_mean_contact_creation_country_LI": "Liechtenstein", + "payment_mean_contact_creation_country_LK": "Sri Lanka", + "payment_mean_contact_creation_country_LR": "Libéria", + "payment_mean_contact_creation_country_LS": "Lesoto", + "payment_mean_contact_creation_country_LT": "Lituânia", + "payment_mean_contact_creation_country_LU": "Luxemburgo", + "payment_mean_contact_creation_country_LV": "Letónia", + "payment_mean_contact_creation_country_LY": "Líbia", + "payment_mean_contact_creation_country_MA": "Marrocos", + "payment_mean_contact_creation_country_MC": "Mónaco", + "payment_mean_contact_creation_country_MD": "Moldávia", + "payment_mean_contact_creation_country_ME": "Montenegro", + "payment_mean_contact_creation_country_MF": "Saint Martin", + "payment_mean_contact_creation_country_MG": "Madagáscar", + "payment_mean_contact_creation_country_MH": "Ilhas Marshall", + "payment_mean_contact_creation_country_MK": "Macedónia (Antiga Republica da Jusgoslãvia)", + "payment_mean_contact_creation_country_ML": "Mali", + "payment_mean_contact_creation_country_MM": "Birmânia", + "payment_mean_contact_creation_country_MN": "Mongólia", + "payment_mean_contact_creation_country_MO": "Macau", + "payment_mean_contact_creation_country_MP": "Northern Mariana Islands", + "payment_mean_contact_creation_country_MQ": "Martinica", + "payment_mean_contact_creation_country_MR": "Mauritânia", + "payment_mean_contact_creation_country_MS": "Montserrat", + "payment_mean_contact_creation_country_MT": "Malta", + "payment_mean_contact_creation_country_MU": "Maurícias", + "payment_mean_contact_creation_country_MV": "Maldivas", + "payment_mean_contact_creation_country_MW": "Malauí", + "payment_mean_contact_creation_country_MX": "México", + "payment_mean_contact_creation_country_MY": "Malásia", + "payment_mean_contact_creation_country_MZ": "Moçambique", + "payment_mean_contact_creation_country_NA": "Namíbia", + "payment_mean_contact_creation_country_NC": "New Caledonia", + "payment_mean_contact_creation_country_NE": "Níger", + "payment_mean_contact_creation_country_NF": "Norfolk Island", + "payment_mean_contact_creation_country_NG": "Nigéria", + "payment_mean_contact_creation_country_NI": "Nicarágua", + "payment_mean_contact_creation_country_NL": "Holanda", + "payment_mean_contact_creation_country_NO": "Noruega", + "payment_mean_contact_creation_country_NP": "Nepal", + "payment_mean_contact_creation_country_NR": "Nauru", + "payment_mean_contact_creation_country_NU": "Niue", + "payment_mean_contact_creation_country_NZ": "Nova Zelândia", + "payment_mean_contact_creation_country_OM": "Omã", + "payment_mean_contact_creation_country_PA": "Panamá", + "payment_mean_contact_creation_country_PE": "Peru", + "payment_mean_contact_creation_country_PF": "Polinésia Francesa", + "payment_mean_contact_creation_country_PG": "Papua Nova Guinea", + "payment_mean_contact_creation_country_PH": "Filipinas", + "payment_mean_contact_creation_country_PK": "Paquistão", + "payment_mean_contact_creation_country_PL": "Polónia", + "payment_mean_contact_creation_country_PM": "Saint Pierre And Miquelon", + "payment_mean_contact_creation_country_PN": "Pitcairn Islands", + "payment_mean_contact_creation_country_PR": "Porto Rico", + "payment_mean_contact_creation_country_PS": "Palestina", + "payment_mean_contact_creation_country_PT": "Portugal", + "payment_mean_contact_creation_country_PW": "Palau", + "payment_mean_contact_creation_country_PY": "Paraguai", + "payment_mean_contact_creation_country_QA": "Catar", + "payment_mean_contact_creation_country_RE": "Ilha da Reunião", + "payment_mean_contact_creation_country_RO": "Roménia", + "payment_mean_contact_creation_country_RS": "Sérvia", + "payment_mean_contact_creation_country_RU": "Federação Russa", + "payment_mean_contact_creation_country_RW": "Ruanda", + "payment_mean_contact_creation_country_SA": "Arábia Saudita", + "payment_mean_contact_creation_country_SB": "Ilhas Salomão", + "payment_mean_contact_creation_country_SC": "Seicheles", + "payment_mean_contact_creation_country_SD": "Sudão", + "payment_mean_contact_creation_country_SE": "Suécia", + "payment_mean_contact_creation_country_SG": "Singapura", + "payment_mean_contact_creation_country_SH": "Saint Helena, Ascension And Tristan Da Cunha", + "payment_mean_contact_creation_country_SI": "Eslovénia", + "payment_mean_contact_creation_country_SJ": "Svalbard And Jan Mayen", + "payment_mean_contact_creation_country_SK": "Eslováquia", + "payment_mean_contact_creation_country_SL": "Serra Leoa", + "payment_mean_contact_creation_country_SM": "San Marino", + "payment_mean_contact_creation_country_SN": "Senegal", + "payment_mean_contact_creation_country_SO": "Somália", + "payment_mean_contact_creation_country_SR": "Suriname", + "payment_mean_contact_creation_country_SS": "Sudão do Sul", + "payment_mean_contact_creation_country_ST": "São Tomé e Príncipe", + "payment_mean_contact_creation_country_SV": "El Salvador", + "payment_mean_contact_creation_country_SX": "Sint Maarten", + "payment_mean_contact_creation_country_SY": "Síria", + "payment_mean_contact_creation_country_SZ": "Suazilândia", + "payment_mean_contact_creation_country_TA": "Tristão da Cunha", + "payment_mean_contact_creation_country_TC": "Turks And Caicos Islands", + "payment_mean_contact_creation_country_TD": "Chad", + "payment_mean_contact_creation_country_TF": "French Southern Territories", + "payment_mean_contact_creation_country_TG": "Togo", + "payment_mean_contact_creation_country_TH": "Tailandia", + "payment_mean_contact_creation_country_TJ": "Tajiquistão", + "payment_mean_contact_creation_country_TK": "Tokelau", + "payment_mean_contact_creation_country_TL": "Timor-Leste", + "payment_mean_contact_creation_country_TM": "Turquemenistão", + "payment_mean_contact_creation_country_TN": "Tunísia", + "payment_mean_contact_creation_country_TO": "Tonga", + "payment_mean_contact_creation_country_TR": "Turquia", + "payment_mean_contact_creation_country_TT": "Trinidad e Tobago", + "payment_mean_contact_creation_country_TV": "Tuvalu", + "payment_mean_contact_creation_country_TW": "Taiwan", + "payment_mean_contact_creation_country_TZ": "Tanzânia", + "payment_mean_contact_creation_country_UA": "Ucrânia", + "payment_mean_contact_creation_country_UG": "Uganda", + "payment_mean_contact_creation_country_UM": "United States Minor Outlying Islands", + "payment_mean_contact_creation_country_US": "Estados Unidos", + "payment_mean_contact_creation_country_UY": "Uruguai", + "payment_mean_contact_creation_country_UZ": "Usbequistão", + "payment_mean_contact_creation_country_VA": "VAticano", + "payment_mean_contact_creation_country_VC": "Saint Vincent And The Grenadines", + "payment_mean_contact_creation_country_VE": "Venezuela", + "payment_mean_contact_creation_country_VG": "Virgin Islands (British)", + "payment_mean_contact_creation_country_VI": "Virgin Islands (US)", + "payment_mean_contact_creation_country_VN": "Vietname", + "payment_mean_contact_creation_country_VU": "Vanuatu", + "payment_mean_contact_creation_country_WF": "Wallis e Futuna", + "payment_mean_contact_creation_country_WS": "Samoa", + "payment_mean_contact_creation_country_XK": "Kosovo", + "payment_mean_contact_creation_country_YE": "Iémen", + "payment_mean_contact_creation_country_YT": "Mayotte", + "payment_mean_contact_creation_country_ZA": "África do Sul", + "payment_mean_contact_creation_country_ZM": "Zâmbia", + "payment_mean_contact_creation_country_ZW": "Zimbabwe", + "payment_mean_contact_creation_country_UNKNOWN": "O meu país não consta na lista", + "payment_mean_contact_creation_legalform_individual": "Empresa Individual", + "payment_mean_contact_creation_legalform_association": "Associação", + "payment_mean_contact_creation_legalform_corporation": "Empresa", + "payment_mean_contact_creation_legalform_administration": "Administração", + "payment_mean_contact_creation_legalform_personalcorporation": "Trabalhador independente", + "payment_mean_contact_creation_legalform_other": "Outro", + "payment_mean_contact_creation_language_de_DE": "Alemão", + "payment_mean_contact_creation_language_en_AU": "Inglês (Australiano)", + "payment_mean_contact_creation_language_en_CA": "Inglês (Canadiano)", + "payment_mean_contact_creation_language_en_GB": "Inglês", + "payment_mean_contact_creation_language_en_US": "Inglês (Estados Unidos)", + "payment_mean_contact_creation_language_es_ES": "Espanhol", + "payment_mean_contact_creation_language_fr_CA": "Francês (Canadiano)", + "payment_mean_contact_creation_language_fr_FR": "Francês", + "payment_mean_contact_creation_language_fr_MA": "Francês (Marrocos)", + "payment_mean_contact_creation_language_fr_SN": "Francês (Senegal)", + "payment_mean_contact_creation_language_fr_TN": "Francês (Tunísia)", + "payment_mean_contact_creation_language_pl_PL": "Polaco", + "payment_mean_contact_creation_language_cs_CZ": "Checo", + "payment_mean_contact_creation_language_fi_FI": "Finlandês", + "payment_mean_contact_creation_language_en_IE": "Irlandês", + "payment_mean_contact_creation_language_it_IT": "Italiano ", + "payment_mean_contact_creation_language_lt_LT": "Lituano ", + "payment_mean_contact_creation_language_nl_NL": "Holandês", + "payment_mean_contact_creation_language_pt_PT": "Português", + "payment_mean_contact_contact_creation_submit": "Confirmar e registar", + "payment_mean_contact_contact_creation_cancel": "Anular", + "mean_manage_my_services": "Gerir serviços", + "mean_table_head_creation_date": "Data de criação", + "mean_table_head_description": "Descrição ", + "mean_table_head_type": "Tipo de pagamento", + "mean_table_head_options": "Opções", + "payment_mean_no_description": "Nenhuma descrição", + "payment_mean_description_error": "Ocorreu um erro durante a alteração da descrição:", + "payment_mean_default_mean_error": "Ocorreu um erro. Pedimos desculpa pelo incómodo.", + "add_mean_select_title_choose": "Escolha", + "add_mean_select_title_no_choice": "Não tem nenhuma escolha à sua disposição", + "add_mean_unable_to_get_payment_means": "Não é possível obter os métodos de pagamento disponíveis", + "mean_table_head_state": "Estado", + "mean_table_head_actions": "Ações", + "mean_table_head_3d_secure": "3D Secure", + "mean_table_head_3d_secure_true": "Sim", + "mean_table_head_3d_secure_false": "Não", + "mean_table_tooltip_more_actions": "Outras ações para este método de pagamento", + "deleteMean_title": "Eliminação de um método de pagamento", + "paymentMean_delete_message_paypal": "Atenção, irá suprimir definitivamente o método de pagamento associado à seguinte conta Paypal:", + "paymentMean_delete_message_bankAccount": "Atenção, irá suprimir definitivamente o método de pagamento associado à seguinte conta bancária:", + "paymentMean_delete_message_creditCard": "Atenção, irá suprimir definitivamente o método de pagamento associado ao cartão com o número:", + "paymentMean_label_creditcard_owner_name": "Nome no cartão bancário", + "paymentMean_label_creditcard_number": "Número", + "paymentMean_label_creditcard_validation": "Validação", + "paymentMean_label_creditcard_expiration": "Expiração", + "paymentMean_label_iban": "IBAN", + "paymentMean_label_bic": "BIC", + "paymentMean_label_addressNumber": "Número", + "paymentMean_label_addressStreetName": "Nome do caminho", + "paymentMean_label_addressPostalCode": "Código postal", + "paymentMean_label_addressTown": "Localidade", + "paymentMean_label_ownerName": "Nome e apelido do proprietário ou nome da organização proprietária", + "paymentMean_label_ownerAddress": "Endereço do proprietário da conta", + "paymentMean_error_bic_bank": "O código do banco está incorreto.", + "paymentMean_error_bic_valid": "O BIC é inválido.", + "paymentMean_error_required": "Este campo é obrigatório.", + "paymentMean_error_iban_base": "A base do IBAN é inválida.", + "paymentMean_error_iban_country": "O país do IBAN é inválido.", + "paymentMean_error_iban_key": "A chave do IBAN é inválida.", + "paymentMean_error_iban_valid": "O IBAN é inválido.", + "paymentMean_error_minlength": "No mínimo, 5 caracteres são necessários.", + "paymentMean_error_addressPostalCode_required": "Este campo é obrigatório.", + "paymentMean_error_addressPostalCode_min": "Código postal inválido.", + "paymentMean_error_addressPostalCode_max": "Código postal inválido.", + "paymentMean_error_addressPostalCode_pattern": "O código postal deve conter 5 números.", + "paymentMean_error_maxlength": "O texto deve ter mais do que 255 caracteres.", + "paymentType_delete_error": "Erro durante a eliminação de um método de pagamento", + "paymentType_modify_error": "Erro durante a alteração do método de pagamento", + "paymentType_delete_success": "Método de pagamento eliminado", + "paymentMean_add_message_paypal": "Ao clicar no botão \"Adicionar\", queira ligar-se à sua conta Paypal para poder autorizar a OVH a efetuar débitos na sua conta Paypal aquando da emissão das próximas faturas.", + "paymentMean_add_message_creditCard": "Para validar o registo do seu cartão de crédito, vamos simular uma tentativa de pagamento.
O montante de 1 Euro não será debitado da sua conta.
Após a confirmação do banco, o seu cartão de crédito será ativado de imediato.", + "paymentMean_add_message_creditCard_CA": "A OVH efetuará um pedido de autorização de débito que que poderá aparecer na sua conta como movimento em curso, mas não pedirá a finalização dessa autorização. O montante não será debitado, ou será reembolsado pela sua entidade bancária.", + "paymentMean_add_message_bankAccount": "Clique no botão \"Adicionar\", para descarregar o documento com as instruções.
Siga o procedimento para validar o método de pagamento. A sua conta bancária será validada num prazo de 24-48h (dias úteis) após a receção da sua autorização de débito.", + "paymentType_status_valid": "Validado", + "paymentType_status_expired": "Expirado", + "paymentType_status_proposedByCustomer": "A aguardar validação", + "paymentType_status_tooManyFailures": "Inválido (demasiadas tentativas de validação em erro)", + "paymentType_status_broken": "Quebrado", + "paymentType_status_canceled": "Anulado", + "paymentType_status_canceling": "Anulação em curso", + "paymentType_status_canceledbycustomer": "Anulado pelo utilizador", + "paymentType_status_canceled_by_customer": "Anulado pelo utilizador", + "paymentType_status_created": "A aguardar validação", + "paymentType_status_error": "Com erro", + "paymentType_status_validforcredit": "Válido para crédito", + "paymentType_add_error": "Erro ao adicionar o método de pagamento", + "paymentType_status_pendingValidation": "Validação em curso", + "paymentType_status_waiting_for_documents": "Aguardar receção", + "payment_mean_add_paypal": "Ativar débito na conta PayPal", + "payement_mean_add_creditCard": "Gerar uma nota de encomenda", + "payment_mean_get_validation": "Recuperar o procedimento", + "payment_mean_return_by_mail_procedure": "Procedimento a enviar por correio postal", + "paymentType_add_validation_description": "Deve validar a adição do seu método de pagamento.", + "paymentType_add_success_url": "Clique aqui para ser redirecionado para uma página segura e concluir a operação.", + "paymentType_bankAccount_add_success_with_download": "A conta bancária foi adicionada e ficará ativa após a validação. Siga o procedimento descrito neste documento para validar o método de pagamento (a enviar por via postal).", + "paymentType_bankAccount_pending_validation": "Adicionou uma conta bancária para o seu espaço de cliente para o qual estamos aguardar a sua autorização de débito a enviar por correio postal.", + "paymentType_bankAccount_processing_delay": "A sua conta bancária será válida após 24-48h úteis a contar a partir da receção da sua autorização de débito.", + "payment_mean_radio_select_default": "Designar este método de pagamento automático padrão.", + "payment_mean_select_default": "Configurar como método predefinido", + "payment_mean_delete_payment_mean": "Eliminar o meu método de pagamento.", + "payment_mean_description_add": "Adicionar uma descrição.", + "payment_mean_description_edit": "Modificar a descrição", + "payment_mean_description_input": "Descrição do método de pagamento", + "payment_mean_description_save": "Guardar a descrição", + "payment_mean_description_cancel": "Anular as alterações à descrição", + "ovhAccount_table_type_CANCEL_CREDIT": "Anulação de crédito", + "ovhAccount_table_type_CANCEL_CREDIT_BILL": "Anulação de fatura", + "ovhAccount_table_type_CANCEL_CREDIT_REFUND": "Anulação de nota de crédito", + "ovhAccount_table_type_CANCEL_CREDIT_STATEMENT_INCOME": "Cancelamento da recarga da conta pré-paga", + "ovhAccount_table_type_CANCEL_CREDIT_STATEMENT_OUTCOME": "Anulação de transferência bancária", + "ovhAccount_table_type_CANCEL_CREDIT_DEPOSIT": "Anulação do adiantamento", + "ovhAccount_table_type_CANCEL_DEBIT": "Anulação de débito", + "ovhAccount_table_type_CANCEL_DEBIT_BILL": "Anulação de fatura", + "ovhAccount_table_type_CANCEL_DEBIT_REFUND": "Anulação de nota de crédito", + "ovhAccount_table_type_CANCEL_DEBIT_STATEMENT_INCOME": "Cancelamento da recarga da conta pré-paga", + "ovhAccount_table_type_CANCEL_DEBIT_STATEMENT_OUTCOME": "Anulação de transferência bancária", + "ovhAccount_table_type_CANCEL_PRE_DEBIT": "Anulação de débito", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_BILL": "Fatura", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_REFUND": "Nota de crédito", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_STATEMENT_INCOME": "Recarga da sua conta pré-paga", + "ovhAccount_table_type_CANCEL_PRE_DEBIT_STATEMENT_OUTCOME": "Transferência para a sua conta bancária", + "ovhAccount_table_type_CREDIT": "Crédito", + "ovhAccount_table_type_CREDIT_BILL": "Fatura", + "ovhAccount_table_type_CREDIT_DEPOSIT": "Acerto", + "ovhAccount_table_type_CREDIT_REFUND": "Nota de crédito", + "ovhAccount_table_type_CREDIT_STATEMENT_INCOME": "Recarga da sua conta pré-paga", + "ovhAccount_table_type_CREDIT_STATEMENT_OUTCOME": "Transferência para a sua conta bancária", + "ovhAccount_table_type_DEBIT": "Débito", + "ovhAccount_table_type_DEBIT_BILL": "Fatura", + "ovhAccount_table_type_DEBIT_REFUND": "Nota de crédito", + "ovhAccount_table_type_DEBIT_STATEMENT_INCOME": "Recarga da sua conta pré-paga", + "ovhAccount_table_type_DEBIT_STATEMENT_OUTCOME": "Transferência para a sua conta bancária", + "ovhAccount_table_type_DEBIT_WITHDRAWAL": "Débito", + "ovhAccount_table_type_PRE_CREDIT": "Crédito", + "ovhAccount_table_type_PRE_CREDIT_BILL": "Fatura", + "ovhAccount_table_type_PRE_CREDIT_REFUND": "Nota de crédito", + "ovhAccount_table_type_PRE_CREDIT_STATEMENT_INCOME": "Recarga da sua conta pré-paga", + "ovhAccount_table_type_PRE_CREDIT_STATEMENT_OUTCOME": "Transferência para a sua conta bancária", + "ovhAccount_table_type_PRE_DEBIT": "Débito", + "ovhAccount_table_type_PRE_DEBIT_BILL": "Fatura", + "ovhAccount_table_type_PRE_DEBIT_REFUND": "Nota de crédito", + "ovhAccount_table_type_PRE_DEBIT_STATEMENT_INCOME": "Recarga da sua conta pré-paga", + "ovhAccount_table_type_PRE_DEBIT_STATEMENT_OUTCOME": "Transferência para a sua conta bancária", + "ovhAccount_table_head_payment_type": "Métodos de pagamento", + "ovhAccount_table_type_payment_CASH": "Em dinheiro", + "ovhAccount_table_type_payment_CHARGEBACK": "Anulação de pagamento", + "ovhAccount_table_type_payment_CHEQUE": "Cheque", + "ovhAccount_table_type_payment_CREDIT_CARD": "Cartão bancário", + "ovhAccount_table_type_payment_DEPOSIT": "Acerto", + "ovhAccount_table_type_payment_DEBT_ACCOUNT": "Conta com saldo negativo", + "ovhAccount_table_type_payment_EDINAR": "e-DINAR", + "ovhAccount_table_type_payment_FIDELITY_POINTS": "Os meus pontos", + "ovhAccount_table_type_payment_FREE": "Grátis", + "ovhAccount_table_type_payment_IDEAL": "iDEAL", + "ovhAccount_table_type_payment_MANDAT": "Mandato", + "ovhAccount_table_type_payment_MULTIBANCO": "Multibanco", + "ovhAccount_table_type_payment_NONE": "Nenhum", + "ovhAccount_table_type_payment_OVH_ACCOUNT": "Conta pré-paga", + "ovhAccount_table_type_payment_PAYMENT_MANDATE": "Mandato", + "ovhAccount_table_type_payment_PAYPAL": "Paypal", + "ovhAccount_table_type_payment_PLATNOSCI": "Płatności", + "ovhAccount_table_type_payment_REFUND": "Nota de crédito", + "ovhAccount_table_type_payment_TRANSFER": "Transferência", + "ovhAccount_table_type_payment_WITHDRAWAL": "Débito direto", + "ovhAccount_table_type_payment_CREDIT_ACCOUNT": "Conta de crédito", + "ovhAccount_table_type_payment_DIGITAL_LAUNCH_PAD": "Voucher Startup Program", + "ovhAccount_table_type_payment_INCUBATOR_ACCOUNT": "Conta Incubator", + "ovhAccount_table_type_payment_PAYU": "PayU", + "ovhAccount_retrieve_title": "Transferência para uma conta bancária", + "ovhAccount_renew_title": "Recarga da sua conta pré-paga", + "ovhAccount_renew_step1_msg": "Poderá creditar a sua conta para regularizar as suas faturas ou antecipar os pagamentos das faturas seguintes.", + "ovhAccount_renew_step1_erreurmin": "O montante do crédito deve ser no mínimo de 10 {{t0}} e o seu saldo de conta deve ser positivo.", + "ovhAccount_renew_step1_erreurformat": "Se o montante introduzido está incorreto, utilize apenas números e como caractere de separação um 'ponto' ou uma 'vírgula'.", + "ovhAccount_renew_step1_amount": "Montante ({{t0}}):", + "ovhAccount_renew_step2_msg": "Resumo da nota de encomenda", + "ovhAccount_renew_step2_credit": "Montante a ser creditado:", + "ovhAccount_renew_step2_error": "Ocorreu um erro. Pedimos desculpa pelo incómodo.", + "ovhAccount_renew_step2_success": "O crédito (encomenda N° {{t1}}) ficará disponível na conta pré-paga quando tivermos a confirmação do pagamento. ", + "ovhAccount_account_list_error": "Ocorreu um erro durante o carregamento da lista das suas contas", + "ovhAccount_account_list_title": "- Conta", + "ovhAccount_account_list_empty": "Nenhuma conta a apresentar", + "telconso_menu_this_month": "Mês em curso", + "telconso_menu_last_month": "Meses anteriores", + "telconso_search": "Procurar uma linha", + "telconso_table_empty": "Nenhum elemento apresentar", + "telconso_table_line_empty": "Nenhuma linha apresentar", + "telconso_title_current_month": "Detalhes dos meus consumos de telefone de {{t0}} até {{t1}}", + "telconso_consumption": "Consumo", + "telconso_plan_to": "Tarifário a {{t0}}", + "telconso_allowed_outplan": "Valores \"extra tarifário\" autorizados", + "telconso_service_name_consumption": "Consumo", + "telconso_nb_lines": "Número de linhas:", + "telconso_nb_groups": "Número de grupos:", + "telconso_callout": "{{t0}} % de chamadas efetuadas", + "telconso_callin": "{{t0}} % de chamadas recebidas", + "telconso_faxout": "{{t0}} % de faxes enviados", + "telconso_faxin": "{{t0}} % de faxes recebidos", + "telconso_to_fixe": "Para os números fixos", + "telconso_to_mobiles": "Para os números móveis", + "telconso_to_special": "Para os números especiais", + "telconso_send_fax": "Envio de fax", + "telconso_fax": "Fax", + "telconso_calls": "Número de chamadas", + "telconso_faxs": "Número de faxes", + "telconso_anonymous": "Anónimo", + "telconso_in": "Recebidos", + "telconso_out": "Emitida", + "telconso_com_time": "Tempos de com.", + "telconso_call_count": "Número", + "telconso_line": "Linha", + "telconso_lines": "Linhas", + "telconso_price": "Preço", + "telconso_outplan": "Fora do tarifário (s/IVA)", + "telconso_group_outplan": "Fora do tarifário", + "telconso_group": "Grupo", + "telconso_all_groups": "Todos os grupos", + "telconso_select_group": "Selecione um grupo para mais informações", + "telconso_calls_details": "Detalhes das chamadas", + "telconso_fax_details": "Detalhes dos faxes", + "telconso_line_myline": "A minha linha {{t0}}", + "telconso_line_include": "Consumos incluídos no tarifário", + "telconso_line_outplan": "Consumos fora do tarifário", + "telconso_next_billing": "Data da próxima fatura:", + "tel_conso_conso_date": "Data", + "tel_conso_conso_num_emit": "Número a chamar", + "tel_conso_conso_num_recv": "Número contactado", + "tel_conso_conso_tranfert": "Reencaminhado para", + "tel_conso_conso_time": "Duração", + "tel_conso_conso_include": "Incluído", + "tel_conso_conso_outplan": "Fora do tarifário (s/IVA)", + "tel_conso_conso_included": "Incluído", + "tel_conso_conso_notincluded": "Não incluído", + "tel_conso_calls": "chamadas", + "tel_conso_tabs_inc": "Recebidos", + "tel_conso_tabs_out": "Emitida", + "tel_conso_tabs_trs": "Transferidas", + "tel_conso_tabs_incfix": "A partir de números fixos", + "tel_conso_tabs_incmob": "A partir de números móveis", + "tel_conso_tabs_incspe": "A partir de números especiais", + "tel_conso_tabs_outfix": "Para os números fixos", + "tel_conso_tabs_outmob": "Para os números móveis", + "tel_conso_tabs_outspe": "Para os números especiais", + "tel_conso_tabs_trsfix": "Para os números fixos", + "tel_conso_tabs_trsmob": "Para os números móveis", + "tel_conso_tabs_trsspe": "Para os números especiais", + "tel_conso_tabs_sent": "Enviados", + "tel_conso_tabs_received": "Recebidos", + "tel_conso_error": "ocorreu um erro durante ao carregar as informações", + "tel_conso_h": "h", + "tel_conso_min": "min", + "tel_conso_s": "s", + "tel_lastconso_title": "O meu extrato de serviços de telefone dos meses precedentes", + "tel_lastconso_month": "Mês", + "tel_lastconso_priceplan": "Montante total", + "tel_lastconso_outplan": "Fora do tarifário", + "tel_lastconso_sheet": "Extratos de consumos", + "tel_lastconso_sheet_down": "Transferir", + "tel_lastconso_sheet_progress": "Em curso", + "tel_lastconso_month_date_display": "MMM yyyy", + "fidelity_title": "Os meus pontos", + "fidelity_get_accounts_error": "Ocorreu um erro durante o carregamento das informações", + "fidelity_header_date": "Data", + "fidelity_header_order": "Transação", + "fidelity_header_operation": "Operação", + "fidelity_header_credit": "Crédito", + "fidelity_header_debit": "Débito", + "fidelity_header_balance": "Saldo", + "fidelity_points": "ponto(s)", + "fidelity_creditOrder_title": "Creditar a sua conta", + "fidelity_creditOrder_step1_msg": "Pode creditar a sua conta para pagar as suas compras, ou para renovar os seus serviços numa renovação “manual”. (1 ponto = 0,01 {{t0}} s/IVA)", + "fidelity_creditOrder_step1_amount": "Montante (em pontos)", + "fidelity_creditOrder_step1_erreurformat": "O montante introduzido é incorreto; só é possível usar números.", + "fidelity_creditOrder_step1_erreurmin": "O montante do crédito deve ser, no mínimo, {{t0}} pontos.", + "fidelity_creditOrder_step1_erreurmax": "O montante máximo do crédito é de {{t0}} pontos.", + "fidelity_creditOrder_step2_msg": "Resumo da nota de encomenda", + "fidelity_creditOrder_step2_credit": "Montante a ser creditado:", + "fidelity_creditOrder_step2_error": "Ocorreu um erro durante o carregamento das informações", + "fidelity_creditOrder_step2_success": "O crédito (encomenda N° {{t1}}) ficará disponível na conta pré-paga quando tivermos a confirmação do pagamento. ", + "fidelity_no_item": "Nenhum elemento a apresentar.", + "fidelity_balance_info": "Situação em {{t0}}: {{t1}} ponto(s)", + "fidelity_no_account": "Não dispõe de uma conta fidelidade", + "sla_table_head_date": "Data", + "sla_table_head_description": "Descrição ", + "sla_table_head_refund": "Compensação", + "sla_table_apply": "Aplicar", + "sla_informations_error": "Ocorreu um erro durante o processo. Por favor tente mais tarde.", + "sla_apply_error": "Ocorreu um erro no processamento do pedido de compensação:", + "sla_apply_success": "O pedido de compensação foi registado. Esta será efetivada dentro de algumas horas.", + "sla_apply_no_data": "Não tem direito a nenhuma compensação.", + "sla_table_head_service_name": "Designação do serviço", + "sla_table_head_service_description": "Descrição do serviço", + "sla_table_head_service_sla_plan": "Condições SLA", + "sla_table_head_service_sla_application": "Compensação atribuída", + "sla_table_services_empty": "Nenhum serviço", + "sla_informations": "Por favor, verifique a lista dos serviços elegíveis pelas garantias contratuais para indisponibilidade do serviço. Para receber a compensação, por favor clique em acionar garantias.", + "sla_informations_end": "Para receber o reembolso previsto nas condições contratuais(SLA) deverá efetuar o pedido de compensação até {{t0}}.", + "sla_informations_applied": "O seu pedido foi registado e será tratado o mais rapidamente possível.", + "sla_informations_applied_all": "O seu pedido foi registado e será tratado o mais rapidamente possível.", + "sla_informations_status_created": "Criado", + "sla_informations_status_notApplicable": "Não aplicável", + "sla_informations_status_completed": "Validado", + "sla_informations_status_requested": "Em curso", + "voucher_table_head_id": "ID", + "voucher_table_head_balance": "Balanço", + "voucher_table_head_voucher_open_date": "Data de abertura", + "voucher_table_head_voucher_last_update": "Última atualização", + "voucher_table_empty": "Nenhum voucher", + "voucher_informations_error": "Ocorreu um erro:", + "vouchers_title": "Vouchers", + "vouchers_movements_title": "Movimentos associados ao voucher {{t0}}", + "voucher_movements_table_head_id": "ID", + "voucher_movements_table_head_description": "Descrição ", + "voucher_movements_table_head_date": "Data", + "voucher_movements_table_head_amount": "Montante", + "voucher_movements_table_head_previous_balance": "Balanço anterior", + "voucher_movements_table_head_balance": "Balanço", + "voucher_movements_table_head_operation": "Operação", + "voucher_movements_table_head_order": "Comando", + "voucher_movements_table_empty": "Sem movimentos", + "voucher_movements_operation_type_cancel-credit": "Crédito anulado", + "voucher_movements_operation_type_cancel-debit": "Débito anulado", + "voucher_movements_operation_type_cancel-pre-debit": "Anulação pré-debito", + "voucher_movements_operation_type_credit": "Crédito", + "voucher_movements_operation_type_debit": "Débito", + "voucher_movements_operation_type_pre-credit": "Pré-crédito", + "voucher_movements_operation_type_pre-debit": "Pré-débito", + "statements_account_automatic_payment_inactive": "Não é possível a utilização de débito direto para as renovações dos seus serviços.", + "statements_account_no_default_payment_mean": "Não definiu um método de pagamento padrão.", + "statements_account_invalid_default_payment_mean": "O seu método de pagamento padrão deixou de ser válido.", + "statements_account_manage_my_payment_means": "Gerir métodos de pagamento", + "statements_account_pay_debt_button": "Pagar a minha dívida imediatamente", + "statements_table_caption": "Encomendas da sua conta", + "statements_table_header_order": "Comando", + "statements_table_header_date": "Data", + "statements_table_header_due_date": "Data de vencimento", + "statements_table_no_due_date": "Imediato", + "statements_table_header_amount": "Montante", + "statements_table_header_balance": "Saldo pendente", + "statements_table_header_details": "Detalhes", + "statements_table_no_detail": "Nenhum dado disponível", + "statements_table_invoice_link": "Consultar a fatura {{t0}} numa nova janela.", + "statements_table_order_link": "Consultar a encomenda {{t0}} numa nova janela.", + "statements_table_detail_label": "Consultar os detalhes desta fatura.", + "statements_table_detail_link": "Consultar os detalhes da dívida {{t0}}.", + "statements_table_pay_debt_button": "Pagar a minha dívida imediatamente", + "statements_summary_error": "Ocorreu um erro aquando do carregamento do saldo da sua conta.", + "statements_detail_error": "Ocorreu um erro aquando da obtenção dos detalhes da sua conta.", + "statements_single_debt_error": "Ocorreu um erro aquando da obtenção dos detalhes desta linha {{t0}}.", + "statements_payment_mean_error": "Ocorreu um erro aquando da obtenção dos seus métodos de pagamento", + "statements_details_summary_title": "Resumo do pedido", + "statements_details_operations_title": "Historial das operações", + "statements_details_page_loader": "Carregamento das informações ...", + "statements_details_page_operations": "Ocorreu um erro aquando da obtenção do historial das operações.", + "statements_details_return_to_statements": "Voltar à página anterior", + "statements_details_table_caption": "Lista das operações na fatura", + "statements_details_table_header_date": "Data", + "statements_details_table_header_operation": "Operação", + "statements_details_table_header_status": "Estado", + "statements_details_table_header_amount": "Montante", + "statements_details_table_header_document": "Documento", + "statements_details_table_order_link": "Abrir a encomenda associada a esta operação numa nova janela.", + "statements_details_table_invoice_html_link": "Consultar a fatura em versão html (nova janela).", + "statements_details_table_invoice_pdf_link": "Consultar a fatura em versão pdf (nova janela).", + "statements_operation_status_done": "Completo", + "statements_operation_status_cancelled": "Anulada", + "statements_operation_status_failed": "Incompleto", + "statements_operation_status_todo": "Aguardar pagamento", + "statements_operation_status_pending": "Em curso", + "statements_operation_status_paid": "Pago", + "statements_operation_description_order": "Criação da encomenda", + "statements_operation_description_cancel": "Anulação de uma operação", + "statements_operation_description_creditcard_manual": "Pagamento manual num cartão de crédito", + "statements_operation_description_creditcard_automatic": "Débito automático num cartão de crédito", + "statements_operation_description_refund_creditcard": "Reembolso num cartão de crédito", + "statements_operation_description_unpaid_creditcard": "Débito recusado no cartão de crédito", + "statements_operation_description_paypal_manual": "Pagament manual numa conta PayPal", + "statements_operation_description_paypal_automatic": "Débito automático numa conta PayPal", + "statements_operation_description_refund_paypal": "Reembolso numa conta PayPal", + "statements_operation_description_unpaid_paypal": "Débito recusado numa conta PayPal", + "statements_operation_description_sepa_automatic": "Débito automático numa conta bancária", + "statements_operation_description_refund_sepa": "Reembolso numa conta bancária", + "statements_operation_description_unpaid_sepa": "Débito recusado na conta bancária", + "statements_operation_description_credit_account_automatic": "Débito automático numa conta Prépaga OVH", + "statements_operation_description_refund_credit_account": "Reembolso numa conta prépaga OVH", + "statements_operation_description_unpaid_credit_account": "Anulação de um pagamento através da conta prépaga OVH", + "statements_operation_description_check_manual": "Pagamento por cheque", + "statements_operation_description_refund_check": "Reembolso de uma transferência bancária", + "statements_operation_description_unpaid_check": "Cheque recusado", + "statements_operation_description_transfer_manual": "Pagamento por transferência bancária", + "statements_operation_description_unpaid_transfer": "Transferência bancária recusada", + "statements_operation_description_warrant_manual": "Pagamento por mandato", + "statements_operation_description_refund_warrant": "Reembolso de um mandato", + "statements_operation_description_unpaid_warrant": "Mandato recusado", + "statements_operation_description_refund": "Reembolso", + "statements_operation_description_refund_unknown": "Reembolso", + "billing_date_range_choose_custom_date": "Definir um período", + "billing_date_range_text": "De {{t0}} a {{t1}}", + "billing_price_ttc_label": "{{price}} IVA incl.", + "billing_guides_header": "Manuais", + "billing_guides_header_manage_payment_methods_guides": "Gerir métodos de pagamento", + "billing_guides_header_managing_orders_guides": "Gerir as minhas encomendas OVHcloud", + "billing_guides_header_purchase_order_guides": "Conceito de Nº de encomenda ou Purchase Order (PO)", + "billing_guides_header_managing_bills_guides": "Gerir as minhas faturas OVHcloud", + "billing_guides_header_automatic_renewal_guides": "Gerir a renovação dos meus serviços", + "fidelity_creditOrder_submit_error": "Ocorreu um erro aquando do carregamento dos seus pontos.", + "fidelity_creditOrder_submit_success": "O seu crédito de {{t0}} pontos foi gerado com êxito. Pode efetuar a sua encomenda no separador As Minhas Encomendas" +}