mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-02-19 13:54:25 +01:00
refactor admin pricing translations mapping
This commit is contained in:
parent
0adb9e29c6
commit
334201e551
@ -56,7 +56,7 @@ Application.Controllers.controller "EditPricingController", ["$scope", "$state",
|
||||
if data?
|
||||
TrainingsPricing.update({ id: trainingsPricing.id }, { trainings_pricing: { amount: data } }).$promise
|
||||
else
|
||||
_t('please_specify_a_number')
|
||||
_t('pricing.please_specify_a_number')
|
||||
|
||||
##
|
||||
# Retrieve a plan from its given identifier and returns it
|
||||
@ -89,13 +89,13 @@ Application.Controllers.controller "EditPricingController", ["$scope", "$state",
|
||||
##
|
||||
$scope.showTrainings = (trainings) ->
|
||||
unless angular.isArray(trainings) and trainings.length > 0
|
||||
return _t('none')
|
||||
return _t('pricing.none')
|
||||
|
||||
selected = []
|
||||
angular.forEach $scope.trainings, (t) ->
|
||||
if trainings.indexOf(t.id) >= 0
|
||||
selected.push t.name
|
||||
return if selected.length then selected.join(' | ') else _t('none')
|
||||
return if selected.length then selected.join(' | ') else _t('pricing.none')
|
||||
|
||||
|
||||
|
||||
@ -110,7 +110,7 @@ Application.Controllers.controller "EditPricingController", ["$scope", "$state",
|
||||
training_credit_nb: newdata.training_credits
|
||||
, angular.noop() # do nothing in case of success
|
||||
, (error) ->
|
||||
growl.error(_t('an_error_occurred_while_saving_the_number_of_credits'))
|
||||
growl.error(_t('pricing.an_error_occurred_while_saving_the_number_of_credits'))
|
||||
|
||||
# save the associated trainings
|
||||
angular.forEach $scope.trainingCreditsGroups, (original, key) ->
|
||||
@ -126,9 +126,9 @@ Application.Controllers.controller "EditPricingController", ["$scope", "$state",
|
||||
$scope.trainingCredits.splice($scope.trainingCredits.indexOf(tc), 1)
|
||||
$scope.trainingCreditsGroups[planId].splice($scope.trainingCreditsGroups[planId].indexOf(tc.id), 1)
|
||||
, (error) ->
|
||||
growl.error(_t('an_error_occurred_while_deleting_credit_with_the_TRAINING', {TRAINING:tc.creditable.name}))
|
||||
growl.error(_t('pricing.an_error_occurred_while_deleting_credit_with_the_TRAINING', {TRAINING:tc.creditable.name}))
|
||||
else
|
||||
growl.error(_t('an_error_occurred_unable_to_find_the_credit_to_revoke'))
|
||||
growl.error(_t('pricing.an_error_occurred_unable_to_find_the_credit_to_revoke'))
|
||||
|
||||
# iterate through the new credits to add
|
||||
angular.forEach newdata.training_ids, (newTrainingId) ->
|
||||
@ -143,7 +143,7 @@ Application.Controllers.controller "EditPricingController", ["$scope", "$state",
|
||||
$scope.trainingCreditsGroups[newTc.plan_id].push(newTc.creditable_id)
|
||||
, (error) -> # failed
|
||||
training = getTrainingFromId(newTrainingId)
|
||||
growl.error(_t('an_error_occurred_while_creating_credit_with_the_TRAINING', {TRAINING: training.name}))
|
||||
growl.error(_t('pricing.an_error_occurred_while_creating_credit_with_the_TRAINING', {TRAINING: training.name}))
|
||||
console.error(error)
|
||||
|
||||
|
||||
@ -177,7 +177,7 @@ Application.Controllers.controller "EditPricingController", ["$scope", "$state",
|
||||
# @param credit {Object} credit object, inherited from $resource
|
||||
##
|
||||
$scope.showCreditableName = (credit) ->
|
||||
selected = _t('not_set')
|
||||
selected = _t('pricing.not_set')
|
||||
if credit and credit.creditable_id
|
||||
angular.forEach $scope.machines, (m)->
|
||||
if m.id == credit.creditable_id
|
||||
@ -195,21 +195,21 @@ Application.Controllers.controller "EditPricingController", ["$scope", "$state",
|
||||
$scope.saveMachineCredit = (data, id) ->
|
||||
for mc in $scope.machineCredits
|
||||
if mc.plan_id == data.plan_id and mc.creditable_id == data.creditable_id and (id == null or mc.id != id)
|
||||
growl.error(_t('error_a_credit_linking_this_machine_with_that_subscription_already_exists'))
|
||||
growl.error(_t('pricing.error_a_credit_linking_this_machine_with_that_subscription_already_exists'))
|
||||
unless id
|
||||
$scope.machineCredits.pop()
|
||||
return false
|
||||
|
||||
if id?
|
||||
Credit.update {id: id}, credit: data, ->
|
||||
growl.success(_t('changes_have_been_successfully_saved'))
|
||||
growl.success(_t('pricing.changes_have_been_successfully_saved'))
|
||||
else
|
||||
data.creditable_type = 'Machine'
|
||||
Credit.save
|
||||
credit: data
|
||||
, (resp) ->
|
||||
$scope.machineCredits[$scope.machineCredits.length-1].id = resp.id
|
||||
growl.success(_t('credit_was_successfully_saved'))
|
||||
growl.success(_t('pricing.credit_was_successfully_saved'))
|
||||
|
||||
|
||||
##
|
||||
@ -242,8 +242,8 @@ Application.Controllers.controller "EditPricingController", ["$scope", "$state",
|
||||
##
|
||||
$scope.getPlanType = (type) ->
|
||||
if type == 'PartnerPlan'
|
||||
return _t('partner')
|
||||
else return _t('standard')
|
||||
return _t('pricing.partner')
|
||||
else return _t('pricing.standard')
|
||||
|
||||
##
|
||||
# Change the plans ordering criterion to the one provided
|
||||
@ -270,7 +270,7 @@ Application.Controllers.controller "EditPricingController", ["$scope", "$state",
|
||||
if data?
|
||||
Price.update({ id: price.id }, { price: { amount: data } }).$promise
|
||||
else
|
||||
_t('please_specify_a_number')
|
||||
_t('pricing.please_specify_a_number')
|
||||
|
||||
##
|
||||
# Delete the specified subcription plan
|
||||
@ -284,17 +284,17 @@ Application.Controllers.controller "EditPricingController", ["$scope", "$state",
|
||||
dialogs.confirm
|
||||
resolve:
|
||||
object: ->
|
||||
title: _t('confirmation_required')
|
||||
msg: _t('do_you_really_want_to_delete_this_subscription_plan')
|
||||
title: _t('pricing.confirmation_required')
|
||||
msg: _t('pricing.do_you_really_want_to_delete_this_subscription_plan')
|
||||
, ->
|
||||
# the admin has confirmed, delete the plan
|
||||
Plan.delete {id: id}, (res) ->
|
||||
growl.success(_t('subscription_plan_was_successfully_deleted'))
|
||||
growl.success(_t('pricing.subscription_plan_was_successfully_deleted'))
|
||||
$scope.plans.splice(findItemIdxById(plans, id), 1)
|
||||
|
||||
, (error) ->
|
||||
console.error('[EditPricingController::deletePlan] Error: '+error.statusText) if error.statusText
|
||||
growl.error(_t('unable_to_delete_the_specified_subscription_an_error_occurred'))
|
||||
growl.error(_t('pricing.unable_to_delete_the_specified_subscription_an_error_occurred'))
|
||||
|
||||
|
||||
|
||||
@ -324,8 +324,8 @@ Application.Controllers.controller "EditPricingController", ["$scope", "$state",
|
||||
dialogs.confirm
|
||||
resolve:
|
||||
object: ->
|
||||
title: _t('confirmation_required')
|
||||
msg: _t('do_you_really_want_to_delete_this_coupon')
|
||||
title: _t('pricing.confirmation_required')
|
||||
msg: _t('pricing.do_you_really_want_to_delete_this_coupon')
|
||||
, ->
|
||||
# the admin has confirmed, delete the coupon
|
||||
Coupon.delete {id: id}, (res) ->
|
||||
@ -335,9 +335,9 @@ Application.Controllers.controller "EditPricingController", ["$scope", "$state",
|
||||
, (error) ->
|
||||
console.error('[EditPricingController::deleteCoupon] Error: '+error.statusText) if error.statusText
|
||||
if error.status == 422
|
||||
growl.error(_t('unable_to_delete_the_specified_coupon_already_in_use'))
|
||||
growl.error(_t('pricing.unable_to_delete_the_specified_coupon_already_in_use'))
|
||||
else
|
||||
growl.error(_t('unable_to_delete_the_specified_coupon_an_unexpected_error_occurred'))
|
||||
growl.error(_t('pricing.unable_to_delete_the_specified_coupon_an_unexpected_error_occurred'))
|
||||
|
||||
|
||||
|
||||
@ -363,10 +363,10 @@ Application.Controllers.controller "EditPricingController", ["$scope", "$state",
|
||||
## Callback to validate sending of the coupon
|
||||
$scope.ok = ->
|
||||
Coupon.send {coupon_code: coupon.code, user_id: $scope.ctrl.member.id}, (res) ->
|
||||
growl.success(_t('coupon_successfully_sent_to_USER', {USER: $scope.ctrl.member.name}))
|
||||
growl.success(_t('pricing.coupon_successfully_sent_to_USER', {USER: $scope.ctrl.member.name}))
|
||||
$uibModalInstance.close({user_id: $scope.ctrl.member.id})
|
||||
, (err) ->
|
||||
growl.error(_t('an_error_occurred_unable_to_send_the_coupon'))
|
||||
growl.error(_t('pricing.an_error_occurred_unable_to_send_the_coupon'))
|
||||
|
||||
## Callback to close the modal and cancel the sending process
|
||||
$scope.cancel = ->
|
||||
|
@ -1,13 +1,13 @@
|
||||
<h2 translate>{{ 'list_of_the_coupons' }}</h2>
|
||||
<h2 translate>{{ 'pricing.list_of_the_coupons' }}</h2>
|
||||
|
||||
<button type="button" class="btn btn-warning m-t-lg m-b" ui-sref="app.admin.coupons_new" translate>{{ 'add_a_new_coupon' }}</button>
|
||||
<button type="button" class="btn btn-warning m-t-lg m-b" ui-sref="app.admin.coupons_new" translate>{{ 'pricing.add_a_new_coupon' }}</button>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th translate>{{ 'name' }}</th>
|
||||
<th translate>{{ 'discount' }}</th>
|
||||
<th translate>{{ 'nb_of_usages' }}</th>
|
||||
<th translate>{{ 'status' }}</th>
|
||||
<th translate>{{ 'pricing.name' }}</th>
|
||||
<th translate>{{ 'pricing.discount' }}</th>
|
||||
<th translate>{{ 'pricing.nb_of_usages' }}</th>
|
||||
<th translate>{{ 'pricing.status' }}</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
@ -19,7 +19,7 @@
|
||||
<span ng-show="coupon.type == 'amount_off'">{{coupon.amount_off}} {{currencySymbol}}</span>
|
||||
</td>
|
||||
<td>{{coupon.usages}}</td>
|
||||
<td translate>{{coupon.status}}</td>
|
||||
<td translate>{{'pricing.'+coupon.status}}</td>
|
||||
<td>
|
||||
<button type="button" class="btn btn-default" ng-click="sendCouponToUser(coupon)"><i class="fa fa-send-o"></i> </button>
|
||||
<button type="button" class="btn btn-default" ui-sref="app.admin.coupons_edit({id:coupon.id})"><i class="fa fa-pencil-square-o"></i></button>
|
||||
|
@ -1,10 +1,10 @@
|
||||
<h2 class="m-t-lg" translate>{{ 'trainings' }}</h2>
|
||||
<h2 class="m-t-lg" translate>{{ 'pricing.trainings' }}</h2>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width:20%" translate>{{ 'subscription' }}</th>
|
||||
<th style="width:10%" translate>{{ 'credits' }}</th>
|
||||
<th style="width:50%" translate>{{ 'related_trainings' }}</th>
|
||||
<th style="width:20%" translate>{{ 'pricing.subscription' }}</th>
|
||||
<th style="width:10%" translate>{{ 'pricing.credits' }}</th>
|
||||
<th style="width:50%" translate>{{ 'pricing.related_trainings' }}</th>
|
||||
<th style="width:20%"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
@ -43,17 +43,17 @@
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2 class="m-t-lg" translate>{{ 'machines' }}</h2>
|
||||
<h2 class="m-t-lg" translate>{{ 'pricing.machines' }}</h2>
|
||||
<div class="btn-group m-t-md m-b-md">
|
||||
<button type="button" class="btn btn-warning" ng-click="addMachineCredit($event)" translate>{{ 'add_a_machine_credit' }}</button>
|
||||
<button type="button" class="btn btn-warning" ng-click="addMachineCredit($event)" translate>{{ 'pricing.add_a_machine_credit' }}</button>
|
||||
</div>
|
||||
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width:20%" translate>{{ 'machine' }}</th>
|
||||
<th style="width:10%" translate>{{ 'hours' }}</th>
|
||||
<th style="width:50%" translate>{{ 'related_subscriptions' }}</th>
|
||||
<th style="width:20%" translate>{{ 'pricing.machine' }}</th>
|
||||
<th style="width:10%" translate>{{ 'pricing.hours' }}</th>
|
||||
<th style="width:50%" translate>{{ 'pricing.related_subscriptions' }}</th>
|
||||
<th style="width:20%"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
@ -7,7 +7,7 @@
|
||||
</div>
|
||||
<div class="col-xs-10 col-sm-10 col-md-8 b-l">
|
||||
<section class="heading-title">
|
||||
<h1 translate>{{ 'pricing_management' }}</h1>
|
||||
<h1 translate>{{ 'pricing.pricing_management' }}</h1>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
@ -21,23 +21,23 @@
|
||||
<div class="col-md-12">
|
||||
<uib-tabset justified="true">
|
||||
|
||||
<uib-tab heading="{{ 'subscriptions' | translate }}">
|
||||
<uib-tab heading="{{ 'pricing.subscriptions' | translate }}">
|
||||
<ng-include src="'<%= asset_path 'admin/pricing/subscriptions.html' %>'"></ng-include>
|
||||
</uib-tab>
|
||||
|
||||
<uib-tab heading="{{ 'trainings' | translate }}">
|
||||
<uib-tab heading="{{ 'pricing.trainings' | translate }}">
|
||||
<ng-include src="'<%= asset_path 'admin/pricing/trainings.html' %>'"></ng-include>
|
||||
</uib-tab>
|
||||
|
||||
<uib-tab heading="{{ 'machine_hours' | translate }}">
|
||||
<uib-tab heading="{{ 'pricing.machine_hours' | translate }}">
|
||||
<ng-include src="'<%= asset_path 'admin/pricing/machine_hours.html' %>'"></ng-include>
|
||||
</uib-tab>
|
||||
|
||||
<uib-tab heading="{{ 'credits' | translate }}">
|
||||
<uib-tab heading="{{ 'pricing.credits' | translate }}">
|
||||
<ng-include src="'<%= asset_path 'admin/pricing/credits.html' %>'"></ng-include>
|
||||
</uib-tab>
|
||||
|
||||
<uib-tab heading="{{ 'coupons' | translate }}">
|
||||
<uib-tab heading="{{ 'pricing.coupons' | translate }}">
|
||||
<ng-include src="'<%= asset_path 'admin/pricing/coupons.html' %>'"></ng-include>
|
||||
</uib-tab>
|
||||
</uib-tabset>
|
||||
|
@ -1,10 +1,10 @@
|
||||
<div class="alert alert-warning m-t">
|
||||
{{ 'these_prices_match_machine_hours_rates_' | translate }} <span class="font-bold" translate>{{ '_without_subscriptions' }}</span>.
|
||||
{{ 'pricing.these_prices_match_machine_hours_rates_' | translate }} <span class="font-bold" translate>{{ 'pricing._without_subscriptions' }}</span>.
|
||||
</div>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width:20%" translate>{{ 'machines' }}</th>
|
||||
<th style="width:20%" translate>{{ 'pricing.machines' }}</th>
|
||||
<th style="width:20%" ng-repeat="group in groups">
|
||||
<span class="text-u-c text-sm">{{group.name}}</span>
|
||||
</th>
|
||||
|
@ -1,11 +1,11 @@
|
||||
<div class="modal-header">
|
||||
<h3 class="text-center red" translate>{{ 'send_a_coupon' }}</h3>
|
||||
<h3 class="text-center red" translate>{{ 'pricing.send_a_coupon' }}</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<select-member></select-member>
|
||||
<div class="widget panel b-a m">
|
||||
<div class="panel-heading b-b small">
|
||||
<h3 class="panel-title" translate>{{ 'coupon' }}</h3>
|
||||
<h3 class="panel-title" translate>{{ 'pricing.coupon' }}</h3>
|
||||
</div>
|
||||
<div class="widget-content no-bg auto wrapper">
|
||||
<table>
|
||||
@ -13,12 +13,12 @@
|
||||
<tr><th style="width:60%"></th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td translate>{{'code'}}</td> <td>{{coupon.code}}</td></tr>
|
||||
<tr><td translate>{{'discount'}}</td> <td><span ng-show="coupon.type == 'percent_off'">{{coupon.percent_off}} %</span><span ng-show="coupon.type == 'amount_off'">{{coupon.amount_off}} {{currencySymbol}}</span></td></tr>
|
||||
<tr><td translate>{{'validity_per_user'}}</td> <td translate>{{coupon.validity_per_user}}</td></tr>
|
||||
<tr><td translate>{{'valid_until'}}</td> <td>{{coupon.valid_until | amDateFormat:'L'}}</td></tr>
|
||||
<tr><td translate>{{'usages'}}</td> <td>{{coupon.usages}} / {{coupon.max_usages | maxCount}}</td></tr>
|
||||
<tr><td translate>{{'enabled'}}</td> <td>{{coupon.active | booleanFormat}}</td></tr>
|
||||
<tr><td translate>{{'pricing.code'}}</td> <td>{{coupon.code}}</td></tr>
|
||||
<tr><td translate>{{'pricing.discount'}}</td> <td><span ng-show="coupon.type == 'percent_off'">{{coupon.percent_off}} %</span><span ng-show="coupon.type == 'amount_off'">{{coupon.amount_off}} {{currencySymbol}}</span></td></tr>
|
||||
<tr><td translate>{{'pricing.validity_per_user'}}</td> <td translate>{{'pricing.'+coupon.validity_per_user}}</td></tr>
|
||||
<tr><td translate>{{'pricing.valid_until'}}</td> <td>{{coupon.valid_until | amDateFormat:'L'}}</td></tr>
|
||||
<tr><td translate>{{'pricing.usages'}}</td> <td>{{coupon.usages}} / {{coupon.max_usages | maxCount}}</td></tr>
|
||||
<tr><td translate>{{'pricing.enabled'}}</td> <td>{{coupon.active | booleanFormat}}</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
@ -1,21 +1,21 @@
|
||||
<h2 translate>{{ 'list_of_the_subscription_plans' }}</h2>
|
||||
<h2 translate>{{ 'pricing.list_of_the_subscription_plans' }}</h2>
|
||||
|
||||
<div ng-show="fablabWithoutPlans" class="alert alert-warning m-t">
|
||||
{{ 'beware_the_subscriptions_are_disabled_on_this_application' | translate }}
|
||||
{{ 'you_can_create_some_but_they_wont_be_available_until_the_project_is_redeployed_by_the_server_manager' | translate }}
|
||||
<br>{{ 'for_safety_reasons_please_dont_create_subscriptions_if_you_dont_want_intend_to_use_them_later' | translate }}
|
||||
{{ 'pricing.beware_the_subscriptions_are_disabled_on_this_application' | translate }}
|
||||
{{ 'pricing.you_can_create_some_but_they_wont_be_available_until_the_project_is_redeployed_by_the_server_manager' | translate }}
|
||||
<br>{{ 'pricing.for_safety_reasons_please_dont_create_subscriptions_if_you_dont_want_intend_to_use_them_later' | translate }}
|
||||
</div>
|
||||
|
||||
<button type="button" class="btn btn-warning m-t-lg m-b" ui-sref="app.admin.plans.new" translate>{{ 'add_a_new_subscription_plan' }}</button>
|
||||
<button type="button" class="btn btn-warning m-t-lg m-b" ui-sref="app.admin.plans.new" translate>{{ 'pricing.add_a_new_subscription_plan' }}</button>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><a href="" ng-click="setOrderPlans('type')">{{ 'type' | translate }} <i class="fa fa-arrows-v" ng-class="{'fa fa-sort-alpha-asc': orderPlans=='type', 'fa fa-sort-alpha-desc': orderPlans=='-type', 'fa fa-arrows-v': orderPlans }"></i></a></th>
|
||||
<th><a href="" ng-click="setOrderPlans('name')">{{ 'name' | translate }} <i class="fa fa-arrows-v" ng-class="{'fa fa-sort-alpha-asc': orderPlans=='name', 'fa fa-sort-alpha-desc': orderPlans=='-name', 'fa fa-arrows-v': orderPlans }"></i></a></th>
|
||||
<th><a href="" ng-click="setOrderPlans('interval')">{{ 'duration' | translate }} <i class="fa fa-arrows-v" ng-class="{'fa fa-sort-amount-asc': orderPlans=='interval', 'fa fa-sort-amount-desc': orderPlans=='-interval', 'fa fa-arrows-v': orderPlans }"></i></a></th>
|
||||
<th><a href="" ng-click="setOrderPlans('group_id')">{{ 'group' | translate }} <i class="fa fa-arrows-v" ng-class="{'fa fa-sort-alpha-asc': orderPlans=='group_id', 'fa fa-sort-alpha-desc': orderPlans=='-group_id', 'fa fa-arrows-v': orderPlans }"></i></a></th>
|
||||
<th class="hidden-xs"><a href="" ng-click="setOrderPlans('ui_weight')">{{ 'prominence' | translate }} <i class="fa fa-arrows-v" ng-class="{'fa fa-sort-numeric-asc': orderPlans=='ui_weight', 'fa fa-sort-numeric-desc': orderPlans=='-ui_weight', 'fa fa-arrows-v': orderPlans }"></i></a></th>
|
||||
<th><a href="" ng-click="setOrderPlans('amount')">{{ 'price' | translate }} <i class="fa fa-arrows-v" ng-class="{'fa fa-sort-numeric-asc': orderPlans=='amount', 'fa fa-sort-numeric-desc': orderPlans=='-amount', 'fa fa-arrows-v': orderPlans }"></i></a></th>
|
||||
<th><a href="" ng-click="setOrderPlans('type')">{{ 'pricing.type' | translate }} <i class="fa fa-arrows-v" ng-class="{'fa fa-sort-alpha-asc': orderPlans=='type', 'fa fa-sort-alpha-desc': orderPlans=='-type', 'fa fa-arrows-v': orderPlans }"></i></a></th>
|
||||
<th><a href="" ng-click="setOrderPlans('name')">{{ 'pricing.name' | translate }} <i class="fa fa-arrows-v" ng-class="{'fa fa-sort-alpha-asc': orderPlans=='name', 'fa fa-sort-alpha-desc': orderPlans=='-name', 'fa fa-arrows-v': orderPlans }"></i></a></th>
|
||||
<th><a href="" ng-click="setOrderPlans('interval')">{{ 'pricing.duration' | translate }} <i class="fa fa-arrows-v" ng-class="{'fa fa-sort-amount-asc': orderPlans=='interval', 'fa fa-sort-amount-desc': orderPlans=='-interval', 'fa fa-arrows-v': orderPlans }"></i></a></th>
|
||||
<th><a href="" ng-click="setOrderPlans('group_id')">{{ 'pricing.group' | translate }} <i class="fa fa-arrows-v" ng-class="{'fa fa-sort-alpha-asc': orderPlans=='group_id', 'fa fa-sort-alpha-desc': orderPlans=='-group_id', 'fa fa-arrows-v': orderPlans }"></i></a></th>
|
||||
<th class="hidden-xs"><a href="" ng-click="setOrderPlans('pricing.ui_weight')">{{ 'pricing.prominence' | translate }} <i class="fa fa-arrows-v" ng-class="{'fa fa-sort-numeric-asc': orderPlans=='ui_weight', 'fa fa-sort-numeric-desc': orderPlans=='-ui_weight', 'fa fa-arrows-v': orderPlans }"></i></a></th>
|
||||
<th><a href="" ng-click="setOrderPlans('amount')">{{ 'pricing.price' | translate }} <i class="fa fa-arrows-v" ng-class="{'fa fa-sort-numeric-asc': orderPlans=='amount', 'fa fa-sort-numeric-desc': orderPlans=='-amount', 'fa fa-arrows-v': orderPlans }"></i></a></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width:20%" translate>{{ 'trainings' }}</th>
|
||||
<th style="width:20%" translate>{{ 'pricing.trainings' }}</th>
|
||||
<th style="width:20%" ng-repeat="group in groups">
|
||||
<span class="text-u-c text-sm">{{group.name}}</span>
|
||||
</th>
|
||||
|
@ -132,55 +132,73 @@ en:
|
||||
|
||||
pricing:
|
||||
# subscriptions, prices, credits and coupons management
|
||||
pricing_management: "Pricing management"
|
||||
list_of_the_subscription_plans: "List of the subscription plans"
|
||||
beware_the_subscriptions_are_disabled_on_this_application: "Beware, the subscriptions are disabled on this application."
|
||||
you_can_create_some_but_they_wont_be_available_until_the_project_is_redeployed_by_the_server_manager: "You can create some but they won't be available until the project is redeployed by the server manager."
|
||||
for_safety_reasons_please_dont_create_subscriptions_if_you_dont_want_intend_to_use_them_later: "For safety reasons, please don't create subscriptions if you don't intend to use them later."
|
||||
add_a_new_subscription_plan: "Add a new subscription plan"
|
||||
duration: "Duration"
|
||||
prominence: "Prominence"
|
||||
machine_hours: "Machine hours"
|
||||
these_prices_match_machine_hours_rates_: "These prices match machine hours rates"
|
||||
_without_subscriptions: "without subscriptions"
|
||||
credits: "Credits"
|
||||
related_trainings: "Related trainings"
|
||||
add_a_machine_credit: "Add a machine credit"
|
||||
machine: "Machine"
|
||||
hours: "Hours"
|
||||
related_subscriptions: "Related subscriptions"
|
||||
please_specify_a_number: "Please specify a number."
|
||||
none: "None" # grammar note: concordance with "training".
|
||||
an_error_occurred_while_saving_the_number_of_credits: "An error occurred while saving the number of credits."
|
||||
an_error_occurred_while_deleting_credit_with_the_TRAINING: "An error occurred while deleting credit with the {{TRAINING}}." # angular interpolation
|
||||
an_error_occurred_unable_to_find_the_credit_to_revoke: "An error occurred : unable to find the credit to revoke."
|
||||
an_error_occurred_while_creating_credit_with_the_TRAINING: "An error occurred while creating credit with the {{TRAINING}}." # angular interpolation
|
||||
not_set: "Not set"
|
||||
error_a_credit_linking_this_machine_with_that_subscription_already_exists: "Error : a credit linking this machine with that subscription already exists."
|
||||
changes_have_been_successfully_saved: "Changes have been successfully saved."
|
||||
credit_was_successfully_saved: "Credit was successfully saved."
|
||||
do_you_really_want_to_delete_this_subscription_plan: "Do you really want to delete this subscription plan?"
|
||||
subscription_plan_was_successfully_deleted: "Subscription plan was successfully deleted."
|
||||
unable_to_delete_the_specified_subscription_an_error_occurred: "Unable to delete the specified subscription, an error occurred."
|
||||
coupons: "Coupons"
|
||||
list_of_the_coupons: "List of the coupons"
|
||||
discount: "Discount"
|
||||
nb_of_usages: "Number of usages"
|
||||
status: "Status"
|
||||
add_a_new_coupon: "Add a new coupon"
|
||||
disabled: "Disabled"
|
||||
expired: "Expired"
|
||||
sold_out: "Sold out"
|
||||
active: "Active"
|
||||
do_you_really_want_to_delete_this_coupon: "Do you really want to delete this coupon?"
|
||||
coupon_was_successfully_deleted: "Coupon was successfully deleted."
|
||||
unable_to_delete_the_specified_coupon_already_in_use: "Unable to delete the specified coupon: it is already used with some invoices."
|
||||
unable_to_delete_the_specified_coupon_an_unexpected_error_occurred: "Unable to delete the specified coupon: an unexpected error occurred."
|
||||
send_a_coupon: "Send a coupon"
|
||||
coupon: "Coupon"
|
||||
usages: "Usages"
|
||||
coupon_successfully_sent_to_USER: "Coupon successfully sent to {{USER}}" # angular interpolation
|
||||
an_error_occurred_unable_to_send_the_coupon: "An unexpected error prevent from sending the coupon."
|
||||
pricing:
|
||||
pricing_management: "Pricing management"
|
||||
subscriptions: "Subscriptions"
|
||||
trainings: "Trainings"
|
||||
list_of_the_subscription_plans: "List of the subscription plans"
|
||||
beware_the_subscriptions_are_disabled_on_this_application: "Beware, the subscriptions are disabled on this application."
|
||||
you_can_create_some_but_they_wont_be_available_until_the_project_is_redeployed_by_the_server_manager: "You can create some but they won't be available until the project is redeployed by the server manager."
|
||||
for_safety_reasons_please_dont_create_subscriptions_if_you_dont_want_intend_to_use_them_later: "For safety reasons, please don't create subscriptions if you don't intend to use them later."
|
||||
add_a_new_subscription_plan: "Add a new subscription plan"
|
||||
type: "Type"
|
||||
partner: "Partner"
|
||||
standard: "Standard"
|
||||
name: "Name"
|
||||
duration: "Duration"
|
||||
group: "Group"
|
||||
prominence: "Prominence"
|
||||
price: "Price"
|
||||
machine_hours: "Machine hours"
|
||||
these_prices_match_machine_hours_rates_: "These prices match machine hours rates"
|
||||
_without_subscriptions: "without subscriptions"
|
||||
machines: "Machines"
|
||||
credits: "Credits"
|
||||
subscription: "Subscription"
|
||||
related_trainings: "Related trainings"
|
||||
add_a_machine_credit: "Add a machine credit"
|
||||
machine: "Machine"
|
||||
hours: "Hours"
|
||||
related_subscriptions: "Related subscriptions"
|
||||
please_specify_a_number: "Please specify a number."
|
||||
none: "None" # grammar note: concordance with "training".
|
||||
an_error_occurred_while_saving_the_number_of_credits: "An error occurred while saving the number of credits."
|
||||
an_error_occurred_while_deleting_credit_with_the_TRAINING: "An error occurred while deleting credit with the {{TRAINING}}." # angular interpolation
|
||||
an_error_occurred_unable_to_find_the_credit_to_revoke: "An error occurred : unable to find the credit to revoke."
|
||||
an_error_occurred_while_creating_credit_with_the_TRAINING: "An error occurred while creating credit with the {{TRAINING}}." # angular interpolation
|
||||
not_set: "Not set"
|
||||
error_a_credit_linking_this_machine_with_that_subscription_already_exists: "Error : a credit linking this machine with that subscription already exists."
|
||||
changes_have_been_successfully_saved: "Changes have been successfully saved."
|
||||
credit_was_successfully_saved: "Credit was successfully saved."
|
||||
do_you_really_want_to_delete_this_subscription_plan: "Do you really want to delete this subscription plan?"
|
||||
subscription_plan_was_successfully_deleted: "Subscription plan was successfully deleted."
|
||||
unable_to_delete_the_specified_subscription_an_error_occurred: "Unable to delete the specified subscription, an error occurred."
|
||||
coupons: "Coupons"
|
||||
list_of_the_coupons: "List of the coupons"
|
||||
discount: "Discount"
|
||||
nb_of_usages: "Number of usages"
|
||||
status: "Status"
|
||||
add_a_new_coupon: "Add a new coupon"
|
||||
disabled: "Disabled"
|
||||
expired: "Expired"
|
||||
sold_out: "Sold out"
|
||||
active: "Active"
|
||||
confirmation_required: "Confirmation required"
|
||||
do_you_really_want_to_delete_this_coupon: "Do you really want to delete this coupon?"
|
||||
coupon_was_successfully_deleted: "Coupon was successfully deleted."
|
||||
unable_to_delete_the_specified_coupon_already_in_use: "Unable to delete the specified coupon: it is already used with some invoices."
|
||||
unable_to_delete_the_specified_coupon_an_unexpected_error_occurred: "Unable to delete the specified coupon: an unexpected error occurred."
|
||||
send_a_coupon: "Send a coupon"
|
||||
coupon: "Coupon"
|
||||
usages: "Usages"
|
||||
coupon_successfully_sent_to_USER: "Coupon successfully sent to {{USER}}" # angular interpolation
|
||||
an_error_occurred_unable_to_send_the_coupon: "An unexpected error prevent from sending the coupon."
|
||||
code: "Code"
|
||||
enabled: "Enabled"
|
||||
validity_per_user: "Validity per user"
|
||||
once: "Just once"
|
||||
forever: "Each use"
|
||||
valid_until: "Valid until (included)"
|
||||
|
||||
coupons_new:
|
||||
# ajouter un code promotionnel
|
||||
|
@ -132,55 +132,73 @@ fr:
|
||||
|
||||
pricing:
|
||||
# gestion des abonnements, des tarifs, des crédits et des codes promo
|
||||
pricing_management: "Gestion de la tarification"
|
||||
list_of_the_subscription_plans: "Liste des formules d'abonnements"
|
||||
beware_the_subscriptions_are_disabled_on_this_application: "Attention, les abonnements sont désactivés sur cette application."
|
||||
you_can_create_some_but_they_wont_be_available_until_the_project_is_redeployed_by_the_server_manager: "Vous pouvez tout de même en créer mais ils ne seront disponibles qu'après un redéploiement du projet par le responsable du serveur."
|
||||
for_safety_reasons_please_dont_create_subscriptions_if_you_dont_want_intend_to_use_them_later: "Pour des raisons de sécurité, veuillez ne pas créer d'abonnements si vous ne comptez pas les utiliser par la suite."
|
||||
add_a_new_subscription_plan: "Ajouter une nouvelle formule d'abonnement"
|
||||
duration: "Durée"
|
||||
prominence: "Importance"
|
||||
machine_hours: "Heures machines"
|
||||
these_prices_match_machine_hours_rates_: "Ces tarifs correspondent au prix d'une heure machine"
|
||||
_without_subscriptions: "sans abonnement"
|
||||
credits: "Crédits"
|
||||
related_trainings: "Formations associées"
|
||||
add_a_machine_credit: "Ajouter un crédit Machine"
|
||||
machine: "Machine"
|
||||
hours: "Heures"
|
||||
related_subscriptions: "Abonnements associés"
|
||||
please_specify_a_number: "Veuillez spécifier un nombre."
|
||||
none: "Aucune" # grammar note: concordance with "training".
|
||||
an_error_occurred_while_saving_the_number_of_credits: "Une erreur est survenue lors de l'enregistrement du nombre de crédits."
|
||||
an_error_occurred_while_deleting_credit_with_the_TRAINING: "Une erreur est survenue lors de la suppression du crédit avec la {{TRAINING}}." # angular interpolation
|
||||
an_error_occurred_unable_to_find_the_credit_to_revoke: "Une erreur est survenue : impossible de retrouver le crédit à enlever."
|
||||
an_error_occurred_while_creating_credit_with_the_TRAINING: "Une erreur est survenue lors de la création du crédit avec la {{TRAINING}}." # angular interpolation
|
||||
not_set: "Non défini"
|
||||
error_a_credit_linking_this_machine_with_that_subscription_already_exists: "Erreur : un crédit associant cette machine et cet abonnement existe déjà."
|
||||
changes_have_been_successfully_saved: "Les modifications ont bien été enregistrées."
|
||||
credit_was_successfully_saved: "Le crédit a bien été enregistré."
|
||||
do_you_really_want_to_delete_this_subscription_plan: "Êtes-vous sûr(e) de vouloir supprimer cette formule d'abonnement ?"
|
||||
subscription_plan_was_successfully_deleted: "La formule d'abonnement a bien été supprimée."
|
||||
unable_to_delete_the_specified_subscription_an_error_occurred: "Impossible de supprimer l'abonnement spécifié, une erreur s'est produite."
|
||||
coupons: "Codes promotionnels"
|
||||
list_of_the_coupons: "Liste des codes promotionnels"
|
||||
discount: "Réduction"
|
||||
nb_of_usages: "Nombre d'utilisations"
|
||||
status: "Statut"
|
||||
add_a_new_coupon: "Ajouter un code promotionnel"
|
||||
disabled: "Désactivé"
|
||||
expired: "Expiré"
|
||||
sold_out: "Épuisé"
|
||||
active: "Actif"
|
||||
do_you_really_want_to_delete_this_coupon: "Êtes-vous sûr(e) de vouloir supprimer ce code promotionnel ?"
|
||||
coupon_was_successfully_deleted: "Le code promotionnel a bien été supprimé."
|
||||
unable_to_delete_the_specified_coupon_already_in_use: "Impossible de supprimer le code promotionnel : il est utilisé dans des factures."
|
||||
unable_to_delete_the_specified_coupon_an_unexpected_error_occurred: "Impossible de supprimer le code promotionnel : une erreur inattendue s'est produite."
|
||||
send_a_coupon: "Envoyer un code promo"
|
||||
coupon: "Code promo"
|
||||
usages: "Utilisations"
|
||||
coupon_successfully_sent_to_USER: "Le code promotionnel a bien été envoyé à {{USER}}" # angular interpolation
|
||||
an_error_occurred_unable_to_send_the_coupon: "Une erreur inattendue a empêché l'envoi du code promotionnel."
|
||||
pricing:
|
||||
pricing_management: "Gestion de la tarification"
|
||||
subscriptions: "Abonnements"
|
||||
trainings: "Formations"
|
||||
list_of_the_subscription_plans: "Liste des formules d'abonnements"
|
||||
beware_the_subscriptions_are_disabled_on_this_application: "Attention, les abonnements sont désactivés sur cette application."
|
||||
you_can_create_some_but_they_wont_be_available_until_the_project_is_redeployed_by_the_server_manager: "Vous pouvez tout de même en créer mais ils ne seront disponibles qu'après un redéploiement du projet par le responsable du serveur."
|
||||
for_safety_reasons_please_dont_create_subscriptions_if_you_dont_want_intend_to_use_them_later: "Pour des raisons de sécurité, veuillez ne pas créer d'abonnements si vous ne comptez pas les utiliser par la suite."
|
||||
add_a_new_subscription_plan: "Ajouter une nouvelle formule d'abonnement"
|
||||
type: "Type"
|
||||
partner: "Partenaire"
|
||||
standard: "Standard"
|
||||
name: "Nom"
|
||||
duration: "Durée"
|
||||
group: "Groupe"
|
||||
prominence: "Importance"
|
||||
price: "Prix"
|
||||
machine_hours: "Heures machines"
|
||||
these_prices_match_machine_hours_rates_: "Ces tarifs correspondent au prix d'une heure machine"
|
||||
_without_subscriptions: "sans abonnement"
|
||||
machines: "Machines"
|
||||
credits: "Crédits"
|
||||
subscription: "Abonnement"
|
||||
related_trainings: "Formations associées"
|
||||
add_a_machine_credit: "Ajouter un crédit Machine"
|
||||
machine: "Machine"
|
||||
hours: "Heures"
|
||||
related_subscriptions: "Abonnements associés"
|
||||
please_specify_a_number: "Veuillez spécifier un nombre."
|
||||
none: "Aucune" # grammar note: concordance with "training".
|
||||
an_error_occurred_while_saving_the_number_of_credits: "Une erreur est survenue lors de l'enregistrement du nombre de crédits."
|
||||
an_error_occurred_while_deleting_credit_with_the_TRAINING: "Une erreur est survenue lors de la suppression du crédit avec la {{TRAINING}}." # angular interpolation
|
||||
an_error_occurred_unable_to_find_the_credit_to_revoke: "Une erreur est survenue : impossible de retrouver le crédit à enlever."
|
||||
an_error_occurred_while_creating_credit_with_the_TRAINING: "Une erreur est survenue lors de la création du crédit avec la {{TRAINING}}." # angular interpolation
|
||||
not_set: "Non défini"
|
||||
error_a_credit_linking_this_machine_with_that_subscription_already_exists: "Erreur : un crédit associant cette machine et cet abonnement existe déjà."
|
||||
changes_have_been_successfully_saved: "Les modifications ont bien été enregistrées."
|
||||
credit_was_successfully_saved: "Le crédit a bien été enregistré."
|
||||
do_you_really_want_to_delete_this_subscription_plan: "Êtes-vous sûr(e) de vouloir supprimer cette formule d'abonnement ?"
|
||||
subscription_plan_was_successfully_deleted: "La formule d'abonnement a bien été supprimée."
|
||||
unable_to_delete_the_specified_subscription_an_error_occurred: "Impossible de supprimer l'abonnement spécifié, une erreur s'est produite."
|
||||
coupons: "Codes promotionnels"
|
||||
list_of_the_coupons: "Liste des codes promotionnels"
|
||||
discount: "Réduction"
|
||||
nb_of_usages: "Nombre d'utilisations"
|
||||
status: "Statut"
|
||||
add_a_new_coupon: "Ajouter un code promotionnel"
|
||||
disabled: "Désactivé"
|
||||
expired: "Expiré"
|
||||
sold_out: "Épuisé"
|
||||
active: "Actif"
|
||||
confirmation_required: "Confirmation requise"
|
||||
do_you_really_want_to_delete_this_coupon: "Êtes-vous sûr(e) de vouloir supprimer ce code promotionnel ?"
|
||||
coupon_was_successfully_deleted: "Le code promotionnel a bien été supprimé."
|
||||
unable_to_delete_the_specified_coupon_already_in_use: "Impossible de supprimer le code promotionnel : il est utilisé dans des factures."
|
||||
unable_to_delete_the_specified_coupon_an_unexpected_error_occurred: "Impossible de supprimer le code promotionnel : une erreur inattendue s'est produite."
|
||||
send_a_coupon: "Envoyer un code promo"
|
||||
coupon: "Code promo"
|
||||
usages: "Utilisations"
|
||||
coupon_successfully_sent_to_USER: "Le code promotionnel a bien été envoyé à {{USER}}" # angular interpolation
|
||||
an_error_occurred_unable_to_send_the_coupon: "Une erreur inattendue a empêché l'envoi du code promotionnel."
|
||||
code: "Code"
|
||||
enabled: "Activé"
|
||||
validity_per_user: "Validité par utilisateur"
|
||||
once: "Une seule fois"
|
||||
forever: "À chaque utilisation"
|
||||
valid_until: "Valable jusqu'au (inclus)"
|
||||
|
||||
coupons_new:
|
||||
# ajouter un code promotionnel
|
||||
|
Loading…
x
Reference in New Issue
Block a user