|
|
@@ -5,501 +5,434 @@ Page 'Mon abonnement'
|
|
|
-->
|
|
|
<template>
|
|
|
<LayoutContainer>
|
|
|
- <v-col cols="12" sm="12" md="12">
|
|
|
- <v-expansion-panels v-model="openedPanels" :multiple="true">
|
|
|
- <UiExpansionPanel title="informations" icon="fas fa-info">
|
|
|
- <v-container fluid class="container">
|
|
|
- <v-row>
|
|
|
- <v-table>
|
|
|
- <tbody>
|
|
|
- <tr>
|
|
|
- <td v-if="smAndUp">{{ $t('client_id') }}</td>
|
|
|
- <td class="py-2">
|
|
|
- <h5
|
|
|
- v-if="!smAndUp"
|
|
|
- class="text-decoration-underline py-2"
|
|
|
- >
|
|
|
- {{ $t('client_id') }}
|
|
|
- </h5>
|
|
|
- <span>{{
|
|
|
- dolibarrAccount ? dolibarrAccount.clientNumber : '-'
|
|
|
- }}</span>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td v-if="smAndUp">{{ $t('version') }}</td>
|
|
|
- <td class="py-2">
|
|
|
- <h5
|
|
|
- v-if="!smAndUp"
|
|
|
- class="text-decoration-underline py-2"
|
|
|
- >
|
|
|
- {{ $t('version') }}
|
|
|
- </h5>
|
|
|
- <span>{{
|
|
|
- dolibarrAccount ? $t(dolibarrAccount.product) : '-'
|
|
|
- }}</span>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr v-if="dolibarrAccount && dolibarrAccount.contract">
|
|
|
- <td v-if="smAndUp">{{ $t('services') }}</td>
|
|
|
- <td class="py-2">
|
|
|
- <h5
|
|
|
- v-if="!smAndUp"
|
|
|
- class="text-decoration-underline py-2"
|
|
|
- >
|
|
|
- {{ $t('services') }}
|
|
|
- </h5>
|
|
|
- <div
|
|
|
- v-for="line in dolibarrAccount.contract.lines"
|
|
|
- :key="line.id"
|
|
|
- >
|
|
|
- {{ line.serviceLabel }} - {{ $t('until') }} :
|
|
|
- {{ $d(line.dateEnd) }}
|
|
|
- </div>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr v-if="ability.can('manage', 'texto')">
|
|
|
- <td v-if="smAndUp">{{ $t('remaining_sms_credit') }}</td>
|
|
|
- <td class="py-2">
|
|
|
- <h5
|
|
|
- v-if="!smAndUp"
|
|
|
- class="text-decoration-underline py-2"
|
|
|
- >
|
|
|
- {{ $t('remaining_sms_credit') }}
|
|
|
- </h5>
|
|
|
- <span
|
|
|
- v-if="
|
|
|
- !mobytPending &&
|
|
|
- mobytStatus !== null &&
|
|
|
- mobytStatus.active
|
|
|
- "
|
|
|
- >
|
|
|
- {{
|
|
|
- mobytStatus.money.toLocaleString($i18n.locale, {
|
|
|
- style: 'currency',
|
|
|
- currency: 'EUR',
|
|
|
- })
|
|
|
- }}
|
|
|
- {{
|
|
|
- i18n.t('convert_price_to_sms', {
|
|
|
- nb_sms: mobytStatus.amount,
|
|
|
- })
|
|
|
- }}
|
|
|
- </span>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- </tbody>
|
|
|
- </v-table>
|
|
|
- </v-row>
|
|
|
- </v-container>
|
|
|
- </UiExpansionPanel>
|
|
|
-
|
|
|
- <UiExpansionPanel
|
|
|
- v-if="showDolibarrPanel"
|
|
|
- title="bills"
|
|
|
- icon="fas fa-file"
|
|
|
- >
|
|
|
- <v-container :fluid="true" class="container">
|
|
|
- <v-row>
|
|
|
- <v-table v-if="dolibarrAccount !== null">
|
|
|
- <thead>
|
|
|
- <tr>
|
|
|
- <th>{{ $t('reference') }}</th>
|
|
|
- <th>{{ $t('date') }}</th>
|
|
|
- <th>{{ $t('taxExcludedAmount') }}</th>
|
|
|
- <th>{{ $t('status') }}</th>
|
|
|
- </tr>
|
|
|
- </thead>
|
|
|
- <tbody>
|
|
|
- <tr v-for="bill in dolibarrAccount.bills" :key="bill.id">
|
|
|
- <td>{{ bill.ref }}</td>
|
|
|
- <td>{{ $d(bill.date) }}</td>
|
|
|
- <td>
|
|
|
- {{
|
|
|
- bill.taxExcludedAmount.toLocaleString($i18n.locale, {
|
|
|
- style: 'currency',
|
|
|
- currency: 'EUR',
|
|
|
- })
|
|
|
- }}
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- {{ bill.paid === true ? $t('paid') : $t('unpaid') }}
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- </tbody>
|
|
|
- </v-table>
|
|
|
- </v-row>
|
|
|
- </v-container>
|
|
|
- </UiExpansionPanel>
|
|
|
-
|
|
|
- <UiExpansionPanel title="more_features" icon="fas fa-plus">
|
|
|
- <v-container id="products-section" :fluid="true" class="container">
|
|
|
- <v-row>
|
|
|
- <!-- Opentalent Artist Premium -->
|
|
|
- <v-col
|
|
|
- v-if="organizationProfile.isArtistProduct"
|
|
|
- :cols="colWidth"
|
|
|
+ <v-expansion-panels v-model="openedPanels" :multiple="true">
|
|
|
+ <UiExpansionPanel title="subscription_page" icon="fas fa-info">
|
|
|
+ <v-container fluid class="container">
|
|
|
+ <v-row>
|
|
|
+ <v-col cols="12" lg="6" sm="12">
|
|
|
+ {{ $t('version') }} :
|
|
|
+ <strong>{{
|
|
|
+ dolibarrAccount ? $t(dolibarrAccount.product) : '-'
|
|
|
+ }}</strong>
|
|
|
+ </v-col>
|
|
|
+ <v-col cols="12" lg="6" sm="12">
|
|
|
+ {{ $t('client_id') }} :
|
|
|
+ {{ dolibarrAccount ? dolibarrAccount.clientNumber : '-' }}
|
|
|
+ </v-col>
|
|
|
+ </v-row>
|
|
|
+ </v-container>
|
|
|
+ </UiExpansionPanel>
|
|
|
+
|
|
|
+ <UiExpansionPanel
|
|
|
+ title="service_detail"
|
|
|
+ icon="fas fa-info"
|
|
|
+ v-if="dolibarrAccount && dolibarrAccount.contract"
|
|
|
+ >
|
|
|
+ <v-container fluid class="container">
|
|
|
+ <v-row>
|
|
|
+ <v-col
|
|
|
+ cols="12"
|
|
|
+ lg="12"
|
|
|
+ v-for="line in dolibarrAccount.contract.lines"
|
|
|
+ :key="line.id"
|
|
|
+ >
|
|
|
+ <strong>{{ line.serviceLabel }}</strong> - {{ $t('until') }} :
|
|
|
+ {{ $d(line.dateEnd) }}
|
|
|
+ </v-col>
|
|
|
+
|
|
|
+ <v-col cols="12" lg="12" v-if="ability.can('manage', 'texto')">
|
|
|
+ <strong>{{ $t('remaining_sms_credit') }}</strong> -
|
|
|
+ <span
|
|
|
+ v-if="
|
|
|
+ !mobytPending && mobytStatus !== null && mobytStatus.active
|
|
|
+ "
|
|
|
>
|
|
|
- <v-row>
|
|
|
- {{ $t('PRODUCT_ARTIST_PREMIUM') }}
|
|
|
- </v-row>
|
|
|
- <v-row class="align-end">
|
|
|
- <nuxt-img src="/images/Opentalent_Artist.png" />
|
|
|
- </v-row>
|
|
|
- <v-row>
|
|
|
- <p>
|
|
|
- {{ $t('get_more_functionalities_with_version') }}
|
|
|
- <b>{{ $t('PRODUCT_ARTIST_PREMIUM') }}</b>
|
|
|
- </p>
|
|
|
-
|
|
|
- <!-- Cmf member -->
|
|
|
- <div v-if="organizationProfile.isCmf">
|
|
|
- <p>
|
|
|
- <b
|
|
|
- >{{
|
|
|
- i18n.t('for_only_x_eur_ttc_by_month', {
|
|
|
- price: formatCurrency(7.5, 'EUR'),
|
|
|
- })
|
|
|
- }} *</b
|
|
|
- >
|
|
|
- </p>
|
|
|
- <div>
|
|
|
- <i
|
|
|
- >* {{
|
|
|
- i18n.t('yearly_paid_giving_x_eur_ttc_per_year', {
|
|
|
- price: formatCurrency(90.0, 'EUR'),
|
|
|
- })
|
|
|
- }}</i
|
|
|
- >
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <i
|
|
|
- >{{ $t('only_for_cmf_members') }} ({{
|
|
|
- i18n.t('public_price_x_ttc_a_year', {
|
|
|
- price: formatCurrency(216.0, 'EUR'),
|
|
|
- })
|
|
|
- }})</i
|
|
|
- >
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <!-- Not a cmf member -->
|
|
|
- <div v-else>
|
|
|
- <p>
|
|
|
- <b
|
|
|
- >{{
|
|
|
- i18n.t('for_only_x_eur_ttc_by_month', {
|
|
|
- price: formatCurrency(18.0, 'EUR'),
|
|
|
- })
|
|
|
- }} *</b
|
|
|
- >
|
|
|
- </p>
|
|
|
- <p>
|
|
|
- <i>
|
|
|
- * {{
|
|
|
- i18n.t('yearly_paid_giving_x_eur_ttc_per_year', {
|
|
|
- price: formatCurrency(216.0, 'EUR'),
|
|
|
- })
|
|
|
- }}
|
|
|
- </i>
|
|
|
- </p>
|
|
|
- </div>
|
|
|
-
|
|
|
- <p class="mt-3">
|
|
|
+ {{
|
|
|
+ mobytStatus.money.toLocaleString($i18n.locale, {
|
|
|
+ style: 'currency',
|
|
|
+ currency: 'EUR',
|
|
|
+ })
|
|
|
+ }}
|
|
|
+ {{
|
|
|
+ i18n.t('convert_price_to_sms', {
|
|
|
+ nb_sms: mobytStatus.amount,
|
|
|
+ })
|
|
|
+ }}
|
|
|
+ </span>
|
|
|
+ </v-col>
|
|
|
+ </v-row>
|
|
|
+ </v-container>
|
|
|
+ </UiExpansionPanel>
|
|
|
+
|
|
|
+ <UiExpansionPanel
|
|
|
+ v-if="showDolibarrPanel"
|
|
|
+ title="bills"
|
|
|
+ icon="fas fa-file"
|
|
|
+ >
|
|
|
+ <v-container :fluid="true" class="container">
|
|
|
+ <v-row>
|
|
|
+ <v-table v-if="dolibarrAccount !== null">
|
|
|
+ <thead>
|
|
|
+ <tr>
|
|
|
+ <th>{{ $t('reference') }}</th>
|
|
|
+ <th>{{ $t('date') }}</th>
|
|
|
+ <th>{{ $t('taxExcludedAmount') }}</th>
|
|
|
+ <th>{{ $t('status') }}</th>
|
|
|
+ <th></th>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+ <tbody>
|
|
|
+ <tr v-for="bill in dolibarrAccount.bills" :key="bill.id">
|
|
|
+ <td>{{ bill.ref }}</td>
|
|
|
+ <td>{{ $d(bill.date) }}</td>
|
|
|
+ <td>
|
|
|
+ {{
|
|
|
+ bill.taxExcludedAmount.toLocaleString($i18n.locale, {
|
|
|
+ style: 'currency',
|
|
|
+ currency: 'EUR',
|
|
|
+ })
|
|
|
+ }}
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ {{ bill.paid === true ? $t('paid') : $t('unpaid') }}
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
<a
|
|
|
- :href="
|
|
|
- runtimeConfig.public.fileStorageBaseUrl +
|
|
|
- '/Fiche_produit/Fiche_produit_Opentalent_Artist.pdf'
|
|
|
- "
|
|
|
- target="_blank"
|
|
|
+ @click="downloadDolibarrBill(bill.ref)"
|
|
|
+ class="clickable"
|
|
|
>
|
|
|
- {{ $t('product_sheet') }}
|
|
|
- {{ $t('PRODUCT_ARTIST_PREMIUM') }}
|
|
|
+ {{ $t('download') }}
|
|
|
</a>
|
|
|
- </p>
|
|
|
-
|
|
|
- <p v-if="organizationProfile.isCmf" class="mt-3">
|
|
|
- <a
|
|
|
- :href="
|
|
|
- runtimeConfig.public.fileStorageBaseUrl +
|
|
|
- '/Bon_de_commande/Opentalent_Artist_CMF.pdf'
|
|
|
- "
|
|
|
- target="_blank"
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </v-table>
|
|
|
+ </v-row>
|
|
|
+ </v-container>
|
|
|
+ </UiExpansionPanel>
|
|
|
+
|
|
|
+ <UiExpansionPanel
|
|
|
+ title="opentalent_offers"
|
|
|
+ icon="fas fa-plus"
|
|
|
+ v-if="!organizationProfile.isManagerProduct"
|
|
|
+ >
|
|
|
+ <v-container fluid class="container">
|
|
|
+ <v-row
|
|
|
+ class="offer_title"
|
|
|
+ v-if="!md && mdAndUp && !organizationProfile.isSchool"
|
|
|
+ >
|
|
|
+ <v-col
|
|
|
+ cols="12"
|
|
|
+ :lg="
|
|
|
+ organizationProfile.isArtistPremiumProduct &&
|
|
|
+ !organizationProfile.isTrialActive
|
|
|
+ ? 4
|
|
|
+ : 8
|
|
|
+ "
|
|
|
+ sm="12"
|
|
|
+ >
|
|
|
+ <span class="theme-artist"
|
|
|
+ >Pour les orchestres, chorales, <br />compagnies et troupes
|
|
|
+ artistiques</span
|
|
|
+ >
|
|
|
+ </v-col>
|
|
|
+ <v-col cols="12" lg="4" sm="12">
|
|
|
+ <span class="theme-school"
|
|
|
+ >Pour les établissements d'enseignements <br />
|
|
|
+ artistiques*</span
|
|
|
+ >
|
|
|
+ </v-col>
|
|
|
+ </v-row>
|
|
|
+
|
|
|
+ <v-row class="card-container">
|
|
|
+ <v-col
|
|
|
+ lg="4"
|
|
|
+ sm="12"
|
|
|
+ md="6"
|
|
|
+ v-if="
|
|
|
+ organizationProfile.isArtistProduct ||
|
|
|
+ organizationProfile.isTrialActive
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <LayoutPagesSubscriptionCard
|
|
|
+ class="artistCard"
|
|
|
+ title="Logiciel Artist Standard"
|
|
|
+ :extraHeader="
|
|
|
+ organizationProfile.isArtistProduct
|
|
|
+ ? 'Votre version actuelle'
|
|
|
+ : undefined
|
|
|
+ "
|
|
|
+ color="artist"
|
|
|
+ :list="listCheck.artist"
|
|
|
+ >
|
|
|
+ <template #card.subTitle>
|
|
|
+ <div class="priceBlock">
|
|
|
+ <span v-if="organizationProfile.isCmf"
|
|
|
+ ><strong>{{ $t('price_include_cmf') }}*</strong></span
|
|
|
>
|
|
|
- <b>{{ $t('download_cmf_order_form') }}</b>
|
|
|
- </a>
|
|
|
- </p>
|
|
|
- <p v-else class="mt-3">
|
|
|
- <a
|
|
|
- :href="
|
|
|
- runtimeConfig.public.fileStorageBaseUrl +
|
|
|
- '/Bon_de_commande/Opentalent_Artist_Public.pdf'
|
|
|
+ <span v-else
|
|
|
+ ><span class="price">{{
|
|
|
+ formatCurrency(14.0, 'EUR')
|
|
|
+ }}</span>
|
|
|
+ TTC/mois*</span
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template #card.action>
|
|
|
+ <v-row>
|
|
|
+ <v-col
|
|
|
+ cols="12"
|
|
|
+ v-if="
|
|
|
+ !organizationProfile.isArtistProduct &&
|
|
|
+ !organizationProfile.isTrialActive
|
|
|
"
|
|
|
- target="_blank"
|
|
|
>
|
|
|
- <b>{{ $t('download_order_form') }}</b>
|
|
|
- </a>
|
|
|
- </p>
|
|
|
- </v-row>
|
|
|
- </v-col>
|
|
|
-
|
|
|
- <!-- Opentalent School Premium -->
|
|
|
- <v-col v-if="organizationProfile.isArtist" :cols="colWidth">
|
|
|
- <v-row>
|
|
|
- {{ $t('PRODUCT_SCHOOL') }}
|
|
|
- </v-row>
|
|
|
- <v-row class="align-end">
|
|
|
- <nuxt-img src="/images/Opentalent_School.png" />
|
|
|
- </v-row>
|
|
|
- <v-row>
|
|
|
- <p>
|
|
|
- {{ $t('switch_to_version') }}
|
|
|
- <b>{{ $t('PRODUCT_SCHOOL_PREMIUM') }}</b>
|
|
|
- {{ $t('and_benefit') }} :
|
|
|
- </p>
|
|
|
-
|
|
|
- <ul class="mb-2">
|
|
|
- <li>{{ $t('of_accounts_for_teachers_and_students') }}</li>
|
|
|
- <li>{{ $t('of_a_complete_website') }}</li>
|
|
|
- </ul>
|
|
|
-
|
|
|
- <!-- Cmf member -->
|
|
|
- <div v-if="organizationProfile.isCmf">
|
|
|
- <p>
|
|
|
- <b
|
|
|
- >{{
|
|
|
- i18n.t('starting_from_x_eur_ttc_per_month', {
|
|
|
- price: formatCurrency(30.5, 'EUR'),
|
|
|
- })
|
|
|
- }} *</b
|
|
|
- >
|
|
|
- </p>
|
|
|
- <div>
|
|
|
- <i
|
|
|
- >*
|
|
|
- {{
|
|
|
- i18n.t('yearly_paid_giving_x_eur_ttc_per_year', {
|
|
|
- price: formatCurrency(366.0, 'EUR'),
|
|
|
- })
|
|
|
- }}</i
|
|
|
- >
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <i>{{
|
|
|
- i18n.t('version_x_up_to_x_students', {
|
|
|
- product: $t('PRODUCT_SCHOOL_PREMIUM'),
|
|
|
- max_students: '69',
|
|
|
- })
|
|
|
- }}</i>
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <i>{{ $t('excluding_license_and_training_fees') }}.</i>
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <i
|
|
|
- >{{ $t('only_for_cmf_members') }} ({{
|
|
|
- i18n.t('public_price_x_ttc_a_year', {
|
|
|
- price: formatCurrency(607.2, 'EUR'),
|
|
|
- })
|
|
|
- }})</i
|
|
|
+ <v-btn
|
|
|
+ class="theme-artist btn"
|
|
|
+ href="https://logiciels.opentalent.fr/opentalent-artist"
|
|
|
+ target="_blank"
|
|
|
>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <!-- Not cmf member -->
|
|
|
- <div v-else>
|
|
|
- <p>
|
|
|
- {{
|
|
|
- i18n.t('starting_from_x_eur_ttc_per_month', {
|
|
|
- price: formatCurrency(50.6, 'EUR'),
|
|
|
- })
|
|
|
- }} *
|
|
|
- </p>
|
|
|
- <div>
|
|
|
- <i
|
|
|
- >* {{
|
|
|
- i18n.t('yearly_paid_giving_x_eur_ttc_per_year', {
|
|
|
- price: formatCurrency(607.2, 'EUR'),
|
|
|
- })
|
|
|
- }}</i
|
|
|
+ {{ $t('to_know_more') }}
|
|
|
+ <i class="fa-solid fa-greater-than small"></i>
|
|
|
+ </v-btn>
|
|
|
+ </v-col>
|
|
|
+ <v-col cols="12">
|
|
|
+ <span
|
|
|
+ v-if="organizationProfile.isCmf"
|
|
|
+ class="special_conditions"
|
|
|
>
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <i>{{
|
|
|
- i18n.t('version_x_up_to_x_students', {
|
|
|
- product: $t('PRODUCT_SCHOOL_PREMIUM'),
|
|
|
- max_students: '69',
|
|
|
- })
|
|
|
- }}</i>
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <i>{{ $t('excluding_license_and_training_fees') }}.</i>
|
|
|
- </div>
|
|
|
+ *En cas de non-réadhésion, il reste accessible au tarif
|
|
|
+ public de 14€ TTC/mois (Tarif 2025. Abonnement payable
|
|
|
+ annuellement).
|
|
|
+ </span>
|
|
|
+ <span v-else class="special_conditions">
|
|
|
+ *Tarif public 2025. Abonnement payable annuellement.
|
|
|
+ </span>
|
|
|
+ </v-col>
|
|
|
+ </v-row>
|
|
|
+ </template>
|
|
|
+ </LayoutPagesSubscriptionCard>
|
|
|
+ </v-col>
|
|
|
+
|
|
|
+ <v-col lg="4" sm="12" md="6" v-if="organizationProfile.isArtist">
|
|
|
+ <LayoutPagesSubscriptionCard
|
|
|
+ class="artistCard"
|
|
|
+ title="Logiciel Artist Premium*"
|
|
|
+ :extraHeader="
|
|
|
+ organizationProfile.isArtistPremiumProduct
|
|
|
+ ? organizationProfile.isTrialActive
|
|
|
+ ? `Version en cours d'essai J-${organizationProfile.trialCountDown}`
|
|
|
+ : 'Votre version actuelle'
|
|
|
+ : '1 mois d\'essai offert'
|
|
|
+ "
|
|
|
+ color="artist"
|
|
|
+ :list="listCheck.artistPremium"
|
|
|
+ >
|
|
|
+ <template #card.subTitle>
|
|
|
+ <div
|
|
|
+ class="priceBlock"
|
|
|
+ v-if="
|
|
|
+ !organizationProfile.isArtistPremiumProduct ||
|
|
|
+ organizationProfile.isTrialActive
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <span class="price">{{
|
|
|
+ organizationProfile.isCmf
|
|
|
+ ? formatCurrency(7.5, 'EUR')
|
|
|
+ : formatCurrency(18.0, 'EUR')
|
|
|
+ }}</span>
|
|
|
+ TTC/mois**
|
|
|
</div>
|
|
|
-
|
|
|
- <p class="mt-4">
|
|
|
- <a
|
|
|
- :href="
|
|
|
- runtimeConfig.public.fileStorageBaseUrl +
|
|
|
- '/Fiche_produit/Fiche_produit_Opentalent_School.pdf'
|
|
|
+ </template>
|
|
|
+ <template #card.action>
|
|
|
+ <v-row>
|
|
|
+ <v-col
|
|
|
+ cols="12"
|
|
|
+ v-if="
|
|
|
+ !organizationProfile.isArtistPremiumProduct &&
|
|
|
+ (accessProfileStore.isAdmin ||
|
|
|
+ accessProfileStore.isCaMember)
|
|
|
"
|
|
|
- target="_blank"
|
|
|
>
|
|
|
- {{ $t('product_sheet') }} {{ $t('PRODUCT_SCHOOL') }}
|
|
|
- </a>
|
|
|
- </p>
|
|
|
-
|
|
|
- <p>
|
|
|
- {{ $t('contact_us_at') }}
|
|
|
- <a href="tel:+33972126017">0 972 126 017</a>,
|
|
|
- {{ $t('or_by_mail_at') }}
|
|
|
- <a href="mailto:contact@opentalent.fr"
|
|
|
- >contact@opentalent.fr</a
|
|
|
+ <v-btn class="btn trialBtn" @click="startTrial">
|
|
|
+ {{ $t('try_premium_version') }}
|
|
|
+ <i class="fa-solid fa-greater-than small"></i>
|
|
|
+ </v-btn>
|
|
|
+ </v-col>
|
|
|
+ <v-col
|
|
|
+ cols="12"
|
|
|
+ v-if="
|
|
|
+ (!organizationProfile.isArtistPremiumProduct ||
|
|
|
+ organizationProfile.isTrialActive) &&
|
|
|
+ (accessProfileStore.isAdmin ||
|
|
|
+ accessProfileStore.isCaMember)
|
|
|
+ "
|
|
|
>
|
|
|
- </p>
|
|
|
- </v-row>
|
|
|
- </v-col>
|
|
|
-
|
|
|
- <!-- SMS -->
|
|
|
- <v-col :cols="colWidth">
|
|
|
- <v-row>
|
|
|
- {{ $t('sms') }}
|
|
|
- </v-row>
|
|
|
- <v-row class="align-end">
|
|
|
- <nuxt-img src="/images/sms.png" :height="140" :width="175" />
|
|
|
- </v-row>
|
|
|
- <v-row>
|
|
|
- <p>
|
|
|
- <b
|
|
|
- >{{ $t('send_sms') }}
|
|
|
- {{ $t('to_your_members_from_app') }}</b
|
|
|
+ <v-btn class="theme-artist btn" @click="subscription">
|
|
|
+ {{ $t('subscribe_to_the_offer') }}
|
|
|
+ <i class="fa-solid fa-greater-than small"></i>
|
|
|
+ </v-btn>
|
|
|
+ </v-col>
|
|
|
+
|
|
|
+ <v-col
|
|
|
+ cols="12"
|
|
|
+ v-if="
|
|
|
+ organizationProfile.isTrialActive &&
|
|
|
+ (accessProfileStore.isAdmin ||
|
|
|
+ accessProfileStore.isCaMember)
|
|
|
+ "
|
|
|
>
|
|
|
- </p>
|
|
|
-
|
|
|
- <!-- Cmf member -->
|
|
|
- <div v-if="organizationProfile.isCmf">
|
|
|
- <p>
|
|
|
- <b
|
|
|
- >{{
|
|
|
- i18n.t('starting_from_x_eur_ttc_per_sms', {
|
|
|
- price: formatCurrency(0.11, 'EUR'),
|
|
|
- })
|
|
|
- }} *</b
|
|
|
- >
|
|
|
- </p>
|
|
|
- <p>
|
|
|
- <i
|
|
|
- >* {{ i18n.t('for_x_sms', { amount: '5000' }) }}</i
|
|
|
- >
|
|
|
- </p>
|
|
|
-
|
|
|
- <p>
|
|
|
- <b>
|
|
|
- <a
|
|
|
- :href="
|
|
|
- runtimeConfig.public.fileStorageBaseUrl +
|
|
|
- '/Bon_de_commande/Achat_SMS_CMF.pdf'
|
|
|
+ <v-btn class="stop_btn" @click="showStopTrialDialog">
|
|
|
+ {{ $t('stop_trial') }}
|
|
|
+ </v-btn>
|
|
|
+ </v-col>
|
|
|
+ <v-col cols="12">
|
|
|
+ <span class="special_conditions">
|
|
|
+ *Convient aux petites écoles sans besoins spécifiques de
|
|
|
+ gestion pédagogique, de facturation, etc. Pour une
|
|
|
+ solution complète optez pour Opentalent School
|
|
|
+ <span
|
|
|
+ v-if="
|
|
|
+ !organizationProfile.isArtistPremiumProduct ||
|
|
|
+ organizationProfile.isTrialActive
|
|
|
"
|
|
|
- target="_blank"
|
|
|
>
|
|
|
- {{ i18n.t('download_cmf_order_form') }}
|
|
|
- </a>
|
|
|
- </b>
|
|
|
- </p>
|
|
|
- </div>
|
|
|
- <!-- Not cmf member -->
|
|
|
- <div v-else>
|
|
|
- <p>
|
|
|
- <b
|
|
|
- >{{
|
|
|
- i18n.t('starting_from_x_eur_ttc_per_sms', {
|
|
|
- price: formatCurrency(0.13, 'EUR'),
|
|
|
- })
|
|
|
- }} *</b
|
|
|
- >
|
|
|
- </p>
|
|
|
- <p>
|
|
|
- <i
|
|
|
- >* {{ i18n.t('for_x_sms', { amount: '5000' }) }}</i
|
|
|
- >
|
|
|
- </p>
|
|
|
-
|
|
|
- <p>
|
|
|
- <a
|
|
|
- :href="
|
|
|
- runtimeConfig.public.fileStorageBaseUrl +
|
|
|
- '/Bon_de_commande/Achat_SMS_Public.pdf'
|
|
|
- "
|
|
|
- target="_blank"
|
|
|
- >
|
|
|
- <b>{{ $t('download_order_form') }}</b>
|
|
|
- </a>
|
|
|
- </p>
|
|
|
- </div>
|
|
|
- </v-row>
|
|
|
- </v-col>
|
|
|
-
|
|
|
- <!-- Custom domain -->
|
|
|
- <v-col :cols="colWidth">
|
|
|
- <v-row>
|
|
|
- {{ $t('website') }}
|
|
|
- </v-row>
|
|
|
- <v-row class="align-end">
|
|
|
- <nuxt-img src="/images/nom_de_domaine.png" :height="160" />
|
|
|
- </v-row>
|
|
|
- <v-row>
|
|
|
- <v-col>
|
|
|
- <p>
|
|
|
- <b>{{
|
|
|
- i18n.t(
|
|
|
- 'get_your_own_domain_and_up_to_five_emails_for_only_x_eur_ttc_per_year',
|
|
|
- { price: formatCurrency(46.8, 'EUR') },
|
|
|
- )
|
|
|
- }}</b>
|
|
|
- </p>
|
|
|
-
|
|
|
- <p>{{ $t('example') }} :</p>
|
|
|
-
|
|
|
- <table>
|
|
|
- <tbody>
|
|
|
- <tr>
|
|
|
- <td class="pa-2" style="width: 190px">
|
|
|
- {{ $t('domain_name') }} :
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <i>{{ $t('dummy_domain_name') }}</i>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="pa-2">
|
|
|
- {{ $t('associated_mail_address') }} :
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <i>{{ $t('dummy_email_address') }}</i>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- </tbody>
|
|
|
- </table>
|
|
|
-
|
|
|
- <p>
|
|
|
- <a
|
|
|
- :href="
|
|
|
- runtimeConfig.public.fileStorageBaseUrl +
|
|
|
- '/Bon_de_commande/Nom_de_domaine.pdf'
|
|
|
- "
|
|
|
+ <br />
|
|
|
+ **Tarif
|
|
|
+ <span v-if="organizationProfile.isCmf"
|
|
|
+ >adhérent CMF</span
|
|
|
+ ><span v-else>public</span> 2025. Abonnement payable
|
|
|
+ annuellement.
|
|
|
+ </span>
|
|
|
+
|
|
|
+ </span>
|
|
|
+ </v-col>
|
|
|
+ </v-row>
|
|
|
+ </template>
|
|
|
+ </LayoutPagesSubscriptionCard>
|
|
|
+ </v-col>
|
|
|
+
|
|
|
+ <v-col
|
|
|
+ lg="4"
|
|
|
+ sm="12"
|
|
|
+ md="6"
|
|
|
+ :offset="
|
|
|
+ !md && mdAndUp ? (organizationProfile.isSchool ? 4 : 0) : 0
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <LayoutPagesSubscriptionCard
|
|
|
+ class="schoolCard"
|
|
|
+ :title="
|
|
|
+ !organizationProfile.isSchool
|
|
|
+ ? 'Logiciel School Standard / Premium'
|
|
|
+ : organizationProfile.isSchoolPremiumProduct
|
|
|
+ ? 'Logiciel School Premium'
|
|
|
+ : 'Logiciel School Standard'
|
|
|
+ "
|
|
|
+ :subTitle="!organizationProfile.isSchool ? 'Sur devis' : ''"
|
|
|
+ :extraHeader="
|
|
|
+ organizationProfile.isSchool
|
|
|
+ ? 'Votre version actuelle'
|
|
|
+ : undefined
|
|
|
+ "
|
|
|
+ color="school"
|
|
|
+ :list="listCheck.school"
|
|
|
+ >
|
|
|
+ <template #card.action>
|
|
|
+ <v-row>
|
|
|
+ <v-col cols="12">
|
|
|
+ <v-btn
|
|
|
+ v-if="!organizationProfile.isSchool"
|
|
|
+ class="theme-school btn"
|
|
|
+ href="https://logiciels.opentalent.fr/opentalent-school"
|
|
|
target="_blank"
|
|
|
>
|
|
|
- <b>{{ $t('download_order_form') }}</b>
|
|
|
- </a>
|
|
|
- </p>
|
|
|
- </v-col>
|
|
|
- </v-row>
|
|
|
- </v-col>
|
|
|
- </v-row>
|
|
|
- </v-container>
|
|
|
- </UiExpansionPanel>
|
|
|
- </v-expansion-panels>
|
|
|
- </v-col>
|
|
|
+ {{ $t('to_know_more') }}
|
|
|
+ <i class="fa-solid fa-greater-than small"></i>
|
|
|
+ </v-btn>
|
|
|
+ </v-col>
|
|
|
+ <v-col cols="12">
|
|
|
+ <span class="special_conditions">
|
|
|
+ *Extranet disponible uniquement dans la version
|
|
|
+ Opentalent School Premium
|
|
|
+ </span>
|
|
|
+ </v-col>
|
|
|
+ </v-row>
|
|
|
+ </template>
|
|
|
+ </LayoutPagesSubscriptionCard>
|
|
|
+ </v-col>
|
|
|
+ </v-row>
|
|
|
+ </v-container>
|
|
|
+ </UiExpansionPanel>
|
|
|
+
|
|
|
+ <UiExpansionPanel title="opentalent_options" icon="fas fa-plus">
|
|
|
+ <v-container fluid class="container card-container">
|
|
|
+ <v-row cols="12">
|
|
|
+ <v-col lg="3" sm="12" md="6">
|
|
|
+ <LayoutPagesSubscriptionCard
|
|
|
+ class="optionsCard"
|
|
|
+ title="SMS"
|
|
|
+ sub-title="Option payante"
|
|
|
+ color="primary"
|
|
|
+ :list="listCheck.sms"
|
|
|
+ >
|
|
|
+ <template #card.action>
|
|
|
+ <v-btn
|
|
|
+ class="theme-primary btn"
|
|
|
+ :href="
|
|
|
+ runtimeConfig.public.fileStorageBaseUrl +
|
|
|
+ (organizationProfile.isCmf
|
|
|
+ ? '/Bon_de_commande/Achat_SMS_CMF.pdf'
|
|
|
+ : '/Bon_de_commande/Achat_SMS_Public.pdf')
|
|
|
+ "
|
|
|
+ target="_blank"
|
|
|
+ >
|
|
|
+ acheter des credits SMS
|
|
|
+ <i class="fa-solid fa-greater-than small"></i>
|
|
|
+ </v-btn>
|
|
|
+ </template>
|
|
|
+ </LayoutPagesSubscriptionCard>
|
|
|
+ </v-col>
|
|
|
+
|
|
|
+ <v-col lg="3" sm="12" md="6">
|
|
|
+ <LayoutPagesSubscriptionCard
|
|
|
+ class="optionsCard"
|
|
|
+ title="Nom de domaine"
|
|
|
+ sub-title="Option payante"
|
|
|
+ color="primary"
|
|
|
+ :list="listCheck.domain"
|
|
|
+ >
|
|
|
+ <template #card.action>
|
|
|
+ <v-btn
|
|
|
+ class="theme-primary btn"
|
|
|
+ :href="
|
|
|
+ runtimeConfig.public.fileStorageBaseUrl +
|
|
|
+ '/Bon_de_commande/Nom_de_domaine.pdf'
|
|
|
+ "
|
|
|
+ target="_blank"
|
|
|
+ >
|
|
|
+ souscrire à l'option
|
|
|
+ <i class="fa-solid fa-greater-than small"></i>
|
|
|
+ </v-btn>
|
|
|
+ </template>
|
|
|
+ </LayoutPagesSubscriptionCard>
|
|
|
+ </v-col>
|
|
|
+ </v-row>
|
|
|
+ </v-container>
|
|
|
+ </UiExpansionPanel>
|
|
|
+ </v-expansion-panels>
|
|
|
</LayoutContainer>
|
|
|
+
|
|
|
+ <LayoutDialogTrialAlreadyDid
|
|
|
+ :show="showDialogTrialAllReadyDid"
|
|
|
+ @closeDialog="showDialogTrialAllReadyDid = false"
|
|
|
+ />
|
|
|
+
|
|
|
+ <LayoutDialogTrialStopConfirmation
|
|
|
+ :show="showDialogTrialStopConfirmation"
|
|
|
+ @closeDialog="showDialogTrialStopConfirmation = false"
|
|
|
+ @stopTrial="stopTrial"
|
|
|
+ />
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
@@ -511,130 +444,262 @@ import { useOrganizationProfileStore } from '~/stores/organizationProfile'
|
|
|
import { useEntityFetch } from '~/composables/data/useEntityFetch'
|
|
|
import DolibarrAccount from '~/models/Organization/DolibarrAccount'
|
|
|
import MobytUserStatus from '~/models/Organization/MobytUserStatus'
|
|
|
+import UrlUtils from '~/services/utils/urlUtils'
|
|
|
+import { useDownloadFromRoute } from '~/composables/utils/useDownloadFromRoute'
|
|
|
+import { useApiLegacyRequestService } from '~/composables/data/useApiLegacyRequestService'
|
|
|
+import { usePageStore } from '~/stores/page'
|
|
|
|
|
|
-const ability = useAbility()
|
|
|
-
|
|
|
-const runtimeConfig = useRuntimeConfig()
|
|
|
-
|
|
|
+//meta
|
|
|
definePageMeta({
|
|
|
name: 'subscription_page',
|
|
|
})
|
|
|
|
|
|
+//Get composables
|
|
|
+const ability = useAbility()
|
|
|
+const runtimeConfig = useRuntimeConfig()
|
|
|
+const { mdAndUp, md } = useDisplay()
|
|
|
+const { fetch } = useEntityFetch()
|
|
|
+const i18n = useI18n()
|
|
|
+const { apiRequestService } = useApiLegacyRequestService()
|
|
|
+
|
|
|
+//Init ref
|
|
|
+const showDialogTrialAllReadyDid: Ref<boolean> = ref(false)
|
|
|
+const showDialogTrialStopConfirmation: Ref<boolean> = ref(false)
|
|
|
+const openedPanels: Ref<Array<string>> = initPanel()
|
|
|
+const organizationProfile = getOrganizationProfile()
|
|
|
+const accessProfileStore = useAccessProfileStore()
|
|
|
+const { mobytStatus, mobytPending } = getMobytInformations()
|
|
|
+
|
|
|
+const { data: dolibarrAccount, pending: dolibarrPending } = fetch(
|
|
|
+ DolibarrAccount,
|
|
|
+ organizationProfile.id,
|
|
|
+)
|
|
|
+
|
|
|
const showDolibarrPanel = computed(
|
|
|
() =>
|
|
|
!dolibarrPending.value &&
|
|
|
dolibarrAccount.value &&
|
|
|
dolibarrAccount.value.bills.length > 0,
|
|
|
)
|
|
|
-
|
|
|
-const { smAndUp } = useDisplay()
|
|
|
-
|
|
|
-// On déplie les expansion panels dans le onMounted en attendant la résolution du bug : https://github.com/vuetifyjs/vuetify/issues/16427#issuecomment-1380927133
|
|
|
-// TODO: quand le bug ci dessus est résolu, remplacer par `const openedPanels: Ref<Array<string>> = ref(['informations', 'bills', 'more_features'])`
|
|
|
-const openedPanels: Ref<Array<string>> = ref([])
|
|
|
-onMounted(() => {
|
|
|
- openedPanels.value = ['informations', 'bills', 'more_features']
|
|
|
-})
|
|
|
-
|
|
|
-const i18n = useI18n()
|
|
|
-const organizationProfile = useOrganizationProfileStore()
|
|
|
-if (organizationProfile.id === null) {
|
|
|
- throw new Error("Missing organization's id")
|
|
|
+const formatCurrency = (value: number, currency: string): string => {
|
|
|
+ return value.toLocaleString(i18n.locale.value, {
|
|
|
+ style: 'currency',
|
|
|
+ currency,
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
-const { fetch } = useEntityFetch()
|
|
|
+const listCheck: Record<string, Array<string>> = {
|
|
|
+ artist: [
|
|
|
+ '100 Mo de stockage',
|
|
|
+ '75 comptes utilisateurs',
|
|
|
+ 'Gestion de la structure',
|
|
|
+ 'Site internet restreint',
|
|
|
+ 'Options disponibles',
|
|
|
+ ],
|
|
|
+ artistPremium: [
|
|
|
+ '1Go de stockage',
|
|
|
+ '150 comptes utilisateurs',
|
|
|
+ 'Gestion de la structure',
|
|
|
+ 'Module de communication',
|
|
|
+ 'Site internet illimité',
|
|
|
+ 'Options disponibles',
|
|
|
+ ],
|
|
|
+ school: [
|
|
|
+ '500 Mo ou 1Go de stockage',
|
|
|
+ '3 comptes administrateurs',
|
|
|
+ 'Extranet élèves, tuteurs, professeurs*',
|
|
|
+ 'Gestion de la structure',
|
|
|
+ 'Suivi pédagogique, facturation, ...',
|
|
|
+ 'Site internet complet',
|
|
|
+ 'Options adaptées à chaque structure',
|
|
|
+ ],
|
|
|
+ sms: [
|
|
|
+ 'Envoyez des SMS depuis votre logiciel',
|
|
|
+ 'Choisissez le nombre de crédits',
|
|
|
+ ],
|
|
|
+ domain: [
|
|
|
+ 'Bénéficiez de votre propre nom de domaine',
|
|
|
+ "Et d'une adresse mail personnalisée",
|
|
|
+ ],
|
|
|
+}
|
|
|
|
|
|
-const { data: dolibarrAccount, pending: dolibarrPending } = fetch(
|
|
|
- DolibarrAccount,
|
|
|
- organizationProfile.id,
|
|
|
-)
|
|
|
+/**
|
|
|
+ * Initialisation des panels ouverts
|
|
|
+ */
|
|
|
+function initPanel(): Ref<Array<string>> {
|
|
|
+ // On déplie les expansion panels dans le onMounted en attendant la résolution du bug : https://github.com/vuetifyjs/vuetify/issues/16427#issuecomment-1380927133
|
|
|
+ // TODO: quand le bug ci dessus est résolu, remplacer par `const openedPanels: Ref<Array<string>> = ref([...])`
|
|
|
+ const openedPanels: Ref<Array<string>> = ref([])
|
|
|
+ onMounted(() => {
|
|
|
+ openedPanels.value = [
|
|
|
+ 'subscription_page',
|
|
|
+ 'service_detail',
|
|
|
+ 'bills',
|
|
|
+ 'opentalent_offers',
|
|
|
+ 'opentalent_options',
|
|
|
+ ]
|
|
|
+ })
|
|
|
+ return openedPanels
|
|
|
+}
|
|
|
|
|
|
-let mobytStatus: Ref<MobytUserStatus | null>
|
|
|
-let mobytPending: Ref<boolean>
|
|
|
+/**
|
|
|
+ * Récupération de l'organization profile
|
|
|
+ */
|
|
|
+function getOrganizationProfile() {
|
|
|
+ const organizationProfile = useOrganizationProfileStore()
|
|
|
+ if (organizationProfile.id === null) {
|
|
|
+ throw new Error("Missing organization's id")
|
|
|
+ }
|
|
|
+ return organizationProfile
|
|
|
+}
|
|
|
|
|
|
-if (ability.can('manage', 'texto')) {
|
|
|
- const fetchMobytStatus = () => {
|
|
|
+/**
|
|
|
+ * Récupération des informations Mobyt
|
|
|
+ */
|
|
|
+function getMobytInformations(): {
|
|
|
+ mobytStatus: Ref<MobytUserStatus | null>
|
|
|
+ mobytPending: Ref<boolean>
|
|
|
+} {
|
|
|
+ let mobytStatus: Ref<MobytUserStatus | null> = ref(null)
|
|
|
+ let mobytPending: Ref<boolean> = ref(false)
|
|
|
+
|
|
|
+ if (ability.can('manage', 'texto')) {
|
|
|
const { data, pending } = fetch(
|
|
|
MobytUserStatus,
|
|
|
organizationProfile!.id!,
|
|
|
) as AsyncData<MobytUserStatus | null, Error | null>
|
|
|
-
|
|
|
mobytStatus = data
|
|
|
mobytPending = pending
|
|
|
}
|
|
|
- fetchMobytStatus()
|
|
|
-} else {
|
|
|
- mobytStatus = ref(null)
|
|
|
- mobytPending = ref(false)
|
|
|
+
|
|
|
+ return { mobytStatus, mobytPending }
|
|
|
}
|
|
|
|
|
|
-const formatCurrency = (value: number, currency: string): string => {
|
|
|
- return value.toLocaleString(i18n.locale.value, {
|
|
|
- style: 'currency',
|
|
|
- currency,
|
|
|
+/**
|
|
|
+ * Action lorsque l'on souhaite démarrer l'essai
|
|
|
+ */
|
|
|
+async function startTrial() {
|
|
|
+ try {
|
|
|
+ await apiRequestService.get('/trial/is_available')
|
|
|
+ const v1BaseURL =
|
|
|
+ runtimeConfig.baseUrlAdminLegacy ||
|
|
|
+ runtimeConfig.public.baseUrlAdminLegacy
|
|
|
+ await navigateTo(UrlUtils.join(v1BaseURL, '#', 'trial'), {
|
|
|
+ external: true,
|
|
|
+ })
|
|
|
+ } catch (error) {
|
|
|
+ showDialogTrialAllReadyDid.value = true
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * Action lorsque l'on souhaite souscrire à artist premium
|
|
|
+ */
|
|
|
+async function subscription() {
|
|
|
+ const v1BaseURL =
|
|
|
+ runtimeConfig.baseUrlAdminLegacy || runtimeConfig.public.baseUrlAdminLegacy
|
|
|
+ await navigateTo(UrlUtils.join(v1BaseURL, '#', 'subscribe'), {
|
|
|
+ external: true,
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-// Compute the number of columns of the more_features pannel
|
|
|
-const nbCols =
|
|
|
- 2 +
|
|
|
- (organizationProfile.isArtist ? 1 : 0) +
|
|
|
- (organizationProfile.isArtistProduct ? 1 : 0)
|
|
|
-const colWidth = 12 / nbCols
|
|
|
-</script>
|
|
|
+/**
|
|
|
+ * Action lorsque l'on souhaite afficher la modal de confirmation pour stopper
|
|
|
+ */
|
|
|
+function showStopTrialDialog() {
|
|
|
+ showDialogTrialStopConfirmation.value = true
|
|
|
+}
|
|
|
|
|
|
-<style scoped lang="scss">
|
|
|
-#products-section {
|
|
|
- width: 100%;
|
|
|
-
|
|
|
- .v-col {
|
|
|
- min-width: 260px;
|
|
|
- border: solid 1px rgb(var(--v-theme-on-primary));
|
|
|
-
|
|
|
- .v-row:nth-child(1) {
|
|
|
- //background: rgb(var(--v-theme-neutral-soft));
|
|
|
- height: 64px;
|
|
|
- color: rgb(var(--v-theme-on-neutral-soft));
|
|
|
- //font-size: 15px;
|
|
|
- font-weight: bold;
|
|
|
- border-bottom: solid 1px rgb(var(--v-theme-neutral));
|
|
|
- }
|
|
|
+/**
|
|
|
+ * Action lorsque l'on souhaite stopper l'essai
|
|
|
+ */
|
|
|
+async function stopTrial() {
|
|
|
+ usePageStore().loading = true
|
|
|
+ await apiRequestService.post('/trial/stop')
|
|
|
+ const v1BaseURL =
|
|
|
+ runtimeConfig.baseUrlAdminLegacy || runtimeConfig.public.baseUrlAdminLegacy
|
|
|
+ await navigateTo(UrlUtils.join(v1BaseURL, '#', 'dashboard'), {
|
|
|
+ external: true,
|
|
|
+ })
|
|
|
+}
|
|
|
|
|
|
- .v-row:nth-child(2) {
|
|
|
- height: 230px;
|
|
|
- display: flex;
|
|
|
- justify-content: center;
|
|
|
- border-bottom: solid 1px rgb(var(--v-theme-neutral));
|
|
|
- }
|
|
|
+const downloadDolibarrBill = (ref: string): void => {
|
|
|
+ const route = UrlUtils.join('api/dolibarr/download/invoice', ref)
|
|
|
|
|
|
- .v-row:nth-child(3) {
|
|
|
- }
|
|
|
- }
|
|
|
+ useDownloadFromRoute(route, `${ref}.pdf`)
|
|
|
+}
|
|
|
+</script>
|
|
|
|
|
|
- .v-col:not(:first-child) {
|
|
|
- border-left: none;
|
|
|
- }
|
|
|
+<style scoped lang="scss">
|
|
|
+.clickable {
|
|
|
+ cursor: pointer;
|
|
|
+ text-decoration: underline;
|
|
|
+}
|
|
|
|
|
|
- img {
|
|
|
- max-height: 90%;
|
|
|
- max-width: 90%;
|
|
|
+.offer_title {
|
|
|
+ span {
|
|
|
+ border-radius: 5px;
|
|
|
+ display: block;
|
|
|
+ font-weight: bold;
|
|
|
+ text-align: center;
|
|
|
+ padding: 5px;
|
|
|
}
|
|
|
+}
|
|
|
|
|
|
+.card-container {
|
|
|
.v-row {
|
|
|
- padding: 12px 18px;
|
|
|
- vertical-align: top;
|
|
|
- border-bottom: solid 1px rgb(var(--v-theme-on-primary));
|
|
|
+ display: -webkit-box;
|
|
|
+ display: -webkit-flex;
|
|
|
+ display: -ms-flexbox;
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
}
|
|
|
- .v-row:last-child {
|
|
|
- border: none;
|
|
|
+ .v-row > [class*='v-col-'] {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
}
|
|
|
-
|
|
|
- p {
|
|
|
- margin-bottom: 12px;
|
|
|
+ .small {
|
|
|
+ font-size: 6px;
|
|
|
+ padding-top: 5px;
|
|
|
+ padding-left: 5px;
|
|
|
+ }
|
|
|
+ .priceBlock {
|
|
|
+ font-size: 15px;
|
|
|
+ font-weight: normal;
|
|
|
+ text-transform: none;
|
|
|
+ .price {
|
|
|
+ text-transform: uppercase;
|
|
|
+ font-size: 30px;
|
|
|
+ font-weight: bold;
|
|
|
+ }
|
|
|
}
|
|
|
+}
|
|
|
+
|
|
|
+.special_conditions {
|
|
|
+ font-size: 10px;
|
|
|
+ font-style: italic;
|
|
|
+}
|
|
|
|
|
|
- ul {
|
|
|
- padding-left: 24px;
|
|
|
+.trialBtn {
|
|
|
+ color: #000;
|
|
|
+ border: 1px solid rgb(var(--v-theme-artist));
|
|
|
+}
|
|
|
+
|
|
|
+.btn{
|
|
|
+ font-size: 12px;
|
|
|
+}
|
|
|
+
|
|
|
+.optionsCard {
|
|
|
+ :deep(.margin-sup) {
|
|
|
+ margin-top: 0;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+.stop_btn {
|
|
|
+ color: rgb(var(--v-theme-danger));
|
|
|
+}
|
|
|
+
|
|
|
+.plus_btn {
|
|
|
+ color: rgb(var(--v-theme-on-neutral));
|
|
|
+}
|
|
|
</style>
|