1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-12-01 12:24:28 +01:00

interface to customize accounting codes and labels

This commit is contained in:
Sylvain 2019-07-30 16:06:35 +02:00
parent f772bc3509
commit a9ea4057f3
12 changed files with 469 additions and 31 deletions

View File

@ -76,6 +76,86 @@ Application.Controllers.controller('InvoicesController', ['$scope', '$state', 'I
}
};
// Accounting codes
$scope.settings = {
journalCode: {
name: 'accounting_journal_code',
value: settings['accounting_journal_code']
},
clientCode: {
name: 'accounting_client_code',
value: settings['accounting_client_code']
},
clientLabel: {
name: 'accounting_client_label',
value: settings['accounting_client_label']
},
walletCode: {
name: 'accounting_wallet_code',
value: settings['accounting_wallet_code']
},
walletLabel: {
name: 'accounting_wallet_label',
value: settings['accounting_wallet_label']
},
vatCode: {
name: 'accounting_VAT_code',
value: settings['accounting_VAT_code']
},
vatLabel: {
name: 'accounting_VAT_label',
value: settings['accounting_VAT_label']
},
subscriptionCode: {
name: 'accounting_subscription_code',
value: settings['accounting_subscription_code']
},
subscriptionLabel: {
name: 'accounting_subscription_label',
value: settings['accounting_subscription_label']
},
machineCode: {
name: 'accounting_Machine_code',
value: settings['accounting_Machine_code']
},
machineLabel: {
name: 'accounting_Machine_label',
value: settings['accounting_Machine_label']
},
trainingCode: {
name: 'accounting_Training_code',
value: settings['accounting_Training_code']
},
trainingLabel: {
name: 'accounting_Training_label',
value: settings['accounting_Training_label']
},
eventCode: {
name: 'accounting_Event_code',
value: settings['accounting_Event_code']
},
eventLabel: {
name: 'accounting_Event_label',
value: settings['accounting_Event_label']
},
spaceCode: {
name: 'accounting_Space_code',
value: settings['accounting_Space_code']
},
spaceLabel: {
name: 'accounting_Space_label',
value: settings['accounting_Space_label']
},
couponCode: {
name: 'accounting_coupon_code',
value: settings['accounting_coupon_code']
},
couponLabel: {
name: 'accounting_coupon_label',
value: settings['accounting_coupon_label']
}
};
// Placeholding date for the invoice creation
$scope.today = moment();
@ -432,6 +512,14 @@ Application.Controllers.controller('InvoicesController', ['$scope', '$state', 'I
});
}
$scope.toggleExportModal = function() {
$uibModal.open({
templateUrl: '<%= asset_path "admin/invoices/accountingExportModal.html" %>',
controller: 'AccountingExportModalController',
size: 'lg'
});
}
/**
* Test if the given date is within a closed accounting period
* @param date {Date} date to test
@ -446,6 +534,19 @@ Application.Controllers.controller('InvoicesController', ['$scope', '$state', 'I
return false;
}
/**
* Callback to save the setting value to the database
* @param setting {{value:*, name:string}} note that the value will be stringified
*/
$scope.save = function(setting) {
Setting.update(
{ name: setting.name },
{ value: setting.value },
function () { growl.success(_t('invoices.customization_of_SETTING_successfully_saved', { SETTING: _t(`invoices.${setting.name}`) })); },
function (error) { console.log(error); }
);
}
/* PRIVATE SCOPE */
/**
@ -791,7 +892,7 @@ Application.Controllers.controller('ClosePeriodModalController', ['$scope', '$ui
};
/**
* Cancel the refund, dismiss the modal window
* Just dismiss the modal window
*/
$scope.cancel = function () { $uibModalInstance.dismiss('cancel'); };
@ -803,3 +904,17 @@ Application.Controllers.controller('ClosePeriodModalController', ['$scope', '$ui
}
}
]);
Application.Controllers.controller('AccountingExportModalController', ['$scope', '$uibModalInstance', function ($scope, $uibModalInstance) {
/**
* Validate the close period creation
*/
$scope.ok = function () {
console.log('ok');
};
/**
* Just dismiss the modal window
*/
$scope.cancel = function () { $uibModalInstance.dismiss('cancel'); };
}]);

View File

@ -899,15 +899,12 @@ angular.module('application.router', ['ui.router'])
resolve: {
settings: ['Setting', function (Setting) {
return Setting.query({
names: `['invoice_legals', \
'invoice_text', \
'invoice_VAT-rate', \
'invoice_VAT-active', \
'invoice_order-nb', \
'invoice_code-value', \
'invoice_code-active', \
'invoice_reference', \
'invoice_logo']` }).$promise;
names: `['invoice_legals', 'invoice_text', 'invoice_VAT-rate', 'invoice_VAT-active', 'invoice_order-nb', 'invoice_code-value', \
'invoice_code-active', 'invoice_reference', 'invoice_logo', 'accounting_journal_code', 'accounting_client_code' \
'accounting_client_label', 'accounting_wallet_code', 'accounting_wallet_label', 'accounting_VAT_code', 'accounting_VAT_label', \
'accounting_subscription_code', 'accounting_subscription_label', 'accounting_Machine_code', 'accounting_Machine_label' \
'accounting_Training_code', 'accounting_Training_label', 'accounting_Event_code', 'accounting_Event_label' \
'accounting_Space_code', 'accounting_Space_label', 'accounting_coupon_code', 'accounting_coupon_label']` }).$promise;
}],
invoices: [ 'Invoice', function (Invoice) {
return Invoice.list({

View File

@ -276,3 +276,11 @@ table.scrollable-3-cols {
input.form-control.as-writable {
background-color: white;
}
.accounting-codes .row {
margin-top: 2rem;
button {
margin-top: 1em;
}
}

View File

@ -0,0 +1,10 @@
<div class="modal-header">
<h3 class="text-center red" translate>{{ 'invoices.export_accounting_data' }}</h3>
</div>
<div class="modal-body">
<h4>hello</h4>
</div>
<div class="modal-footer">
<button class="btn btn-warning" ng-click="ok()" translate>{{ 'confirm' }}</button>
<button class="btn btn-default" ng-click="cancel()" translate>{{ 'cancel' }}</button>
</div>

View File

@ -12,6 +12,7 @@
</div>
<div class="col-xs-12 col-sm-12 col-md-3 b-t hide-b-md">
<section class="heading-actions wrapper">
<a class="btn btn-default rounded m-t-sm" ng-click="toggleExportModal()"><i class="fa fa-book"></i></a>
<a class="btn btn-lg btn-default rounded m-t-sm text-sm" ng-click="closeAnAccountingPeriod()"><i class="fa fa-calendar-check-o"></i> {{ 'invoices.accounting_periods' | translate }}</a>
</section>
</div>
@ -201,6 +202,131 @@
</div>
</form>
</uib-tab>
<uib-tab heading="{{ 'invoices.accounting_codes' | translate }}">
<div class="panel panel-default m-t-md accounting-codes">
<div class="panel-body">
<div class="row">
<div class="col-md-6">
<label for="journalCode" translate>{{ 'invoices.accounting_journal_code' }}</label>
<input type="text" id="journalCode" ng-model="settings.journalCode.value" class="form-control" placeholder="{{ 'invoices.general_journal_code' | translate }}"/>
<button name="button" class="btn btn-warning" ng-click="save(settings.journalCode)" translate>{{ 'save' }}</button>
</div>
</div>
<div class="row">
<div class="col-md-4">
<label for="clientCode" translate>{{ 'invoices.accounting_client_code' }}</label>
<input type="text" id="clientCode" ng-model="settings.clientCode.value" class="form-control" placeholder="{{ 'invoices.general_client_code' | translate }}" />
<button name="button" class="btn btn-warning" ng-click="save(settings.clientCode)" translate>{{ 'save' }}</button>
</div>
<div class="col-md-4">
<label for="clientLabel" translate>{{ 'invoices.accounting_client_label' }}</label>
<input type="text" id="clientLabel" ng-model="settings.clientLabel.value" class="form-control" placeholder="{{ 'invoices.general_client_label' | translate }}"/>
<button name="button" class="btn btn-warning" ng-click="save(settings.clientLabel)" translate>{{ 'save' }}</button>
</div>
</div>
<div class="row">
<div class="col-md-4">
<label for="walletCode" translate>{{ 'invoices.accounting_wallet_code' }}</label>
<input type="text" id="walletCode" ng-model="settings.walletCode.value" class="form-control" placeholder="{{ 'invoices.general_wallet_code' | translate }}" />
<button name="button" class="btn btn-warning" ng-click="save(settings.walletCode)" translate>{{ 'save' }}</button>
</div>
<div class="col-md-4">
<label for="walletLabel" translate>{{ 'invoices.accounting_wallet_label' }}</label>
<input type="text" id="walletLabel" ng-model="settings.walletLabel.value" class="form-control" placeholder="{{ 'invoices.general_wallet_label' | translate }}"/>
<button name="button" class="btn btn-warning" ng-click="save(settings.walletLabel)" translate>{{ 'save' }}</button>
</div>
</div>
<div class="row">
<div class="col-md-4">
<label for="vatCode" translate>{{ 'invoices.accounting_vat_code' }}</label>
<input type="text" id="vatCode" ng-model="settings.vatCode.value" class="form-control" placeholder="{{ 'invoices.general_vat_code' | translate }}"/>
<button name="button" class="btn btn-warning" ng-click="save(settings.vatCode)" translate>{{ 'save' }}</button>
</div>
<div class="col-md-4">
<label for="vatLabel" translate>{{ 'invoices.accounting_vat_label' }}</label>
<input type="text" id="vatLabel" ng-model="settings.vatLabel.value" class="form-control" placeholder="{{ 'invoices.general_vat_label' | translate }}"/>
<button name="button" class="btn btn-warning" ng-click="save(settings.vatLabel)" translate>{{ 'save' }}</button>
</div>
</div>
<div class="row">
<div class="col-md-4">
<label for="subscriptionCode" translate>{{ 'invoices.accounting_subscription_code' }}</label>
<input type="text" id="subscriptionCode" ng-model="settings.subscriptionCode.value" class="form-control" placeholder="{{ 'invoices.general_subscription_code' | translate }}" />
<button name="button" class="btn btn-warning" ng-click="save(settings.subscriptionCode)" translate>{{ 'save' }}</button>
</div>
<div class="col-md-4">
<label for="subscriptionLabel" translate>{{ 'invoices.accounting_subscription_label' }}</label>
<input type="text" id="subscriptionLabel" ng-model="settings.subscriptionLabel.value" class="form-control" placeholder="{{ 'invoices.general_subscription_label' | translate }}"/>
<button name="button" class="btn btn-warning" ng-click="save(settings.subscriptionLabel)" translate>{{ 'save' }}</button>
</div>
</div>
<div class="row">
<div class="col-md-4">
<label for="machineCode" translate>{{ 'invoices.accounting_machine_code' }}</label>
<input type="text" id="machineCode" ng-model="settings.machineCode.value" class="form-control" placeholder="{{ 'invoices.general_machine_code' | translate }}"/>
<button name="button" class="btn btn-warning" ng-click="save(settings.machineCode)" translate>{{ 'save' }}</button>
</div>
<div class="col-md-4">
<label for="machineLabel" translate>{{ 'invoices.accounting_machine_label' }}</label>
<input type="text" id="machineLabel" ng-model="settings.machineLabel.value" class="form-control" placeholder="{{ 'invoices.general_machine_label' | translate }}"/>
<button name="button" class="btn btn-warning" ng-click="save(settings.machineLabel)" translate>{{ 'save' }}</button>
</div>
</div>
<div class="row">
<div class="col-md-4">
<label for="trainingCode" translate>{{ 'invoices.accounting_training_code' }}</label>
<input type="text" id="trainingCode" ng-model="settings.trainingCode.value" class="form-control" placeholder="{{ 'invoices.general_training_code' | translate }}" />
<button name="button" class="btn btn-warning" ng-click="save(settings.trainingCode)" translate>{{ 'save' }}</button>
</div>
<div class="col-md-4">
<label for="trainingLabel" translate>{{ 'invoices.accounting_training_label' }}</label>
<input type="text" id="trainingLabel" ng-model="settings.trainingLabel.value" class="form-control" placeholder="{{ 'invoices.general_training_label' | translate }}"/>
<button name="button" class="btn btn-warning" ng-click="save(settings.trainingLabel)" translate>{{ 'save' }}</button>
</div>
</div>
<div class="row">
<div class="col-md-4">
<label for="eventCode" translate>{{ 'invoices.accounting_event_code' }}</label>
<input type="text" id="eventCode" ng-model="settings.eventCode.value" class="form-control" placeholder="{{ 'invoices.general_event_code' | translate }}"/>
<button name="button" class="btn btn-warning" ng-click="save(settings.eventCode)" translate>{{ 'save' }}</button>
</div>
<div class="col-md-4">
<label for="eventLabel" translate>{{ 'invoices.accounting_event_label' }}</label>
<input type="text" id="eventLabel" ng-model="settings.eventLabel.value" class="form-control" placeholder="{{ 'invoices.general_event_label' | translate }}"/>
<button name="button" class="btn btn-warning" ng-click="save(settings.eventLabel)" translate>{{ 'save' }}</button>
</div>
</div>
<div class="row">
<div class="col-md-4">
<label for="spaceCode" translate>{{ 'invoices.accounting_space_code' }}</label>
<input type="text" id="spaceCode" ng-model="settings.spaceCode.value" class="form-control" placeholder="{{ 'invoices.general_space_code' | translate }}" />
<button name="button" class="btn btn-warning" ng-click="save(settings.spaceCode)" translate>{{ 'save' }}</button>
</div>
<div class="col-md-4">
<label for="spaceLabel" translate>{{ 'invoices.accounting_space_label' }}</label>
<input type="text" id="spaceLabel" ng-model="settings.spaceLabel.value" class="form-control" placeholder="{{ 'invoices.general_space_label' | translate }}"/>
<button name="button" class="btn btn-warning" ng-click="save(settings.spaceLabel)" translate>{{ 'save' }}</button>
</div>
</div>
<div class="row">
<div class="col-md-4">
<label for="couponCode" translate>{{ 'invoices.accounting_coupon_code' }}</label>
<input type="text" id="couponCode" ng-model="settings.couponCode.value" class="form-control" placeholder="{{ 'invoices.general_coupon_code' | translate }}"/>
<button name="button" class="btn btn-warning" ng-click="save(settings.couponCode)" translate>{{ 'save' }}</button>
</div>
<div class="col-md-4">
<label for="couponLabel" translate>{{ 'invoices.accounting_coupon_label' }}</label>
<input type="text" id="couponLabel" ng-model="settings.couponLabel.value" class="form-control" placeholder="{{ 'invoices.general_coupon_label' | translate }}"/>
<button name="button" class="btn btn-warning" ng-click="save(settings.couponLabel)" translate>{{ 'save' }}</button>
</div>
</div>
</div>
</div>
</uib-tab>
</uib-tabset>
</div>
</div>

View File

@ -40,7 +40,26 @@ class Setting < ActiveRecord::Base
visibility_yearly
visibility_others
display_name_enable
machines_sort_by] }
machines_sort_by
accounting_journal_code
accounting_client_code
accounting_client_label
accounting_wallet_code
accounting_wallet_label
accounting_VAT_code
accounting_VAT_label
accounting_subscription_code
accounting_subscription_label
accounting_Machine_code
accounting_Machine_label
accounting_Training_code
accounting_Training_label
accounting_Event_code
accounting_Event_label
accounting_Space_code
accounting_Space_label
accounting_coupon_code
accounting_coupon_label] }
after_update :update_stylesheet, :notify_privacy_policy_changed if :value_changed?

View File

@ -2,19 +2,18 @@
# Provides the routine to export the accounting data to an external accounting software
class AccountingExportService
attr_reader :file, :encoding, :format, :separator, :log_code, :date_format
attr_reader :encoding, :format, :separator, :journal_code, :date_format
def initialize(file, columns, encoding = 'UTF-8', format = 'CSV', separator = ';')
@file = file
def initialize(columns, encoding = 'UTF-8', format = 'CSV', separator = ';', date_format = '%d/%m/%Y')
@encoding = encoding
@format = format
@separator = separator
@log_code = Setting.find_by(name: 'accounting-export_log-code').value
@date_format = Setting.find_by(name: 'accounting-export_date-format').value
@journal_code = Setting.find_by(name: 'accounting-export_journal-code').value
@date_format = date_format
@columns = columns
end
def export(start_date, end_date)
def export(start_date, end_date, file)
# build CVS content
content = ''
invoices = Invoice.where('created_at >= ? AND created_at <= ?', start_date, end_date).order('created_at ASC')
@ -47,8 +46,8 @@ class AccountingExportService
row = ''
columns.each do |column|
case column
when :log_code
row << log_code
when :journal_code
row << journal_code
when :date
row << invoice.created_at.strftime(date_format)
when :account_code
@ -81,8 +80,8 @@ class AccountingExportService
row = ''
columns.each do |column|
case column
when :log_code
row << log_code
when :journal_code
row << journal_code
when :date
row << invoice.created_at.strftime(date_format)
when :account_code
@ -116,8 +115,8 @@ class AccountingExportService
row = ''
columns.each do |column|
case column
when :log_code
row << log_code
when :journal_code
row << journal_code
when :date
row << invoice.created_at.strftime(date_format)
when :account_code
@ -152,8 +151,8 @@ class AccountingExportService
row = ''
columns.each do |column|
case column
when :log_code
row << log_code
when :journal_code
row << journal_code
when :date
row << invoice.created_at.strftime(date_format)
when :account_code
@ -183,17 +182,17 @@ class AccountingExportService
def account(invoice, account, type = :code)
case account
when :client
Setting.find_by(name: "accounting-export_client-account-#{type}").value
Setting.find_by(name: "accounting_client_#{type}").value
when :vat
Setting.find_by(name: "accounting-export_VAT-account-#{type}").value
Setting.find_by(name: "accounting_VAT_#{type}").value
when :subscription
return if invoice.invoiced_type != 'Subscription'
Setting.find_by(name: "accounting-export_subscription-account-#{type}").value
Setting.find_by(name: "accounting_subscription_#{type}").value
when :reservation
return if invoice.invoiced_type != 'Reservation'
Setting.find_by(name: "accounting-export_#{invoice.invoiced.reservable_type}-account-#{type}").value
Setting.find_by(name: "accounting_#{invoice.invoiced.reservable_type}_#{type}").value
else
puts "Unsupported account #{account}"
end

View File

@ -10,9 +10,9 @@ class AccountingExportWorker
raise SecurityError, 'Not allowed to export' unless export.user.admin?
data = JSON.parse(export.query)
service = AccountingExportService.new(export.file, data['columns'], data['encoding'], export.extension, export.key)
service = AccountingExportService.new(data['columns'], data['encoding'], export.extension, export.key, data['date_format'])
service.export(data['start_date'], data['end_date'])
service.export(data['start_date'], data['end_date'], export.file)
NotificationCenter.call type: :notify_admin_export_complete,
receiver: export.user,

View File

@ -432,6 +432,47 @@ en:
period_START_END_closed_success: "The accounting period from {{START}} to {{END}} has been successfully closed. Archive generation is running, you'll be notified when it's done."
failed_to_close_period: "An error occurred, unable to close the accounting period"
no_periods: "No closings for now"
accounting_codes: "Accounting codes"
accounting_journal_code: "Journal code"
general_journal_code: "Journal code"
accounting_client_code: "Customers code"
general_client_code: "Accounting code for all customers"
accounting_client_label: "Customers label"
general_client_label: "Account label for all customers"
accounting_wallet_code: "Wallet code"
general_wallet_code: "Accounting code for wallet credit"
accounting_wallet_label: "Wallet label"
general_wallet_label: "Account label for wallet credit"
accounting_vat_code: "VAT code"
general_vat_code: "Accounting code for VAT"
accounting_vat_label: "VAT label"
general_vat_label: "VAT account label"
accounting_subscription_code: "Subscriptions code"
general_subscription_code: "Accounting code for all subscriptions"
accounting_subscription_label: "Subscriptions label"
general_subscription_label: "Account label for all subscriptions"
accounting_machine_code: "Machines code"
general_machine_code: "Accounting code for all machines"
accounting_machine_label: "Machine label"
general_machine_label: "Account label for all machines"
accounting_training_code: "Trainings code"
general_training_code: "Accounting code for all trainings"
accounting_training_label: "Trainings label"
general_training_label: "Account label for all trainings"
accounting_event_code: "Events code"
general_event_code: "Accounting code for all events"
accounting_event_label: "Events label"
general_event_label: "Account label for all events"
accounting_space_code: "Space code"
general_space_code: "Accounting code for all spaces"
accounting_space_label: "Spaces label"
general_space_label: "Account label for all spaces"
accounting_coupon_code: "Coupons code"
general_coupon_code: "Accounting code for all coupons"
accounting_coupon_label: "Coupons label"
general_coupon_label: "Account label for all coupons"
customization_of_SETTING_successfully_saved: "Customization of the {{SETTING}} successfully saved." # angular interpolation
export_accounting_data: "Export accounting data"
members:
# management of users, labels, groups, and so on

View File

@ -432,6 +432,47 @@ es:
period_START_END_closed_success: "The accounting period from {{START}} to {{END}} has been successfully closed. Archive generation is running, you'll be notified when it's done." # translation_missing
failed_to_close_period: "An error occurred, unable to close the accounting period" # translation_missing
no_periods: "No closings for now" # translation_missing
accounting_codes: "Accounting codes" # translation_missing
accounting_journal_code: "Journal code" # translation_missing
general_journal_code: "Journal code" # translation_missing
accounting_client_code: "Customers code" # translation_missing
general_client_code: "Accounting code for all customers" # translation_missing
accounting_client_label: "Customers label" # translation_missing
general_client_label: "Account label for all customers" # translation_missing
accounting_wallet_code: "Wallet code" # translation_missing
general_wallet_code: "Accounting code for wallet credit" # translation_missing
accounting_wallet_label: "Wallet label" # translation_missing
general_wallet_label: "Account label for wallet credit" # translation_missing
accounting_vat_code: "VAT code" # translation_missing
general_vat_code: "Accounting code for VAT" # translation_missing
accounting_vat_label: "VAT label" # translation_missing
general_vat_label: "VAT account label" # translation_missing
accounting_subscription_code: "Subscriptions code" # translation_missing
general_subscription_code: "Accounting code for all subscriptions" # translation_missing
accounting_subscription_label: "Subscriptions label" # translation_missing
general_subscription_label: "Account label for all subscriptions" # translation_missing
accounting_machine_code: "Machines code" # translation_missing
general_machine_code: "Accounting code for all machines" # translation_missing
accounting_machine_label: "Machine label" # translation_missing
general_machine_label: "Account label for all machines" # translation_missing
accounting_training_code: "Trainings code" # translation_missing
general_training_code: "Accounting code for all trainings" # translation_missing
accounting_training_label: "Trainings label" # translation_missing
general_training_label: "Account label for all trainings" # translation_missing
accounting_event_code: "Events code" # translation_missing
general_event_code: "Accounting code for all events" # translation_missing
accounting_event_label: "Events label" # translation_missing
general_event_label: "Account label for all events" # translation_missing
accounting_space_code: "Space code" # translation_missing
general_space_code: "Accounting code for all spaces" # translation_missing
accounting_space_label: "Spaces label" # translation_missing
general_space_label: "Account label for all spaces" # translation_missing
accounting_coupon_code: "Coupons code" # translation_missing
general_coupon_code: "Accounting code for all coupons" # translation_missing
accounting_coupon_label: "Coupons label" # translation_missing
general_coupon_label: "Account label for all coupons" # translation_missing
customization_of_SETTING_successfully_saved: "Customization of the {{SETTING}} successfully saved." # angular interpolation # translation_missing
export_accounting_data: "Export accounting data" # translation_missing
members:
# management of users, labels, groups, and so on

View File

@ -432,6 +432,47 @@ fr:
period_START_END_closed_success: "La période comptable du {{START}} au {{END}} a bien été clôturée. La génération de l'archive est en cours, vous serez prévenu lorsque celle-ci sera terminée."
failed_to_close_period: "Une erreur est survenue, impossible de clôturer la période comptable"
no_periods: "Aucune clôture pour le moment"
accounting_codes: "Codes comptables"
accounting_journal_code: "Code journal"
general_journal_code: "Code journal"
accounting_client_code: "Code clients"
general_client_code: "Code comptable pour tous les clients"
accounting_client_label: "Libellé client"
general_client_label: "Libellé du compte pour tous les clients"
accounting_wallet_code: "Code porte-monnaie"
general_wallet_code: "Code comptable pour le crédit du porte-monnaie"
accounting_wallet_label: "Libellé porte-monnaie"
general_wallet_label: "Libellé du compte pour le crédit du porte-monnaie"
accounting_vat_code: "Code TVA"
general_vat_code: "Code comptable pour la TVA"
accounting_vat_label: "Libellé TVA"
general_vat_label: "Libellé du compte TVA"
accounting_subscription_code: "Code abonnements"
general_subscription_code: "Code comptable pour tous les abonnements"
accounting_subscription_label: "Libellé abonnements"
general_subscription_label: "Libellé du compte pour tous les abonnements"
accounting_machine_code: "Code machines"
general_machine_code: "Code comptable pour toutes les machines"
accounting_machine_label: "Libellé machine"
general_machine_label: "Libellé du compte pour toutes les machines"
accounting_training_code: "Code formations"
general_training_code: "Code comptable pour toutes les formations"
accounting_training_label: "Libellé formations"
general_training_label: "Libellé du compte pour toutes les formations"
accounting_event_code: "Code évènements"
general_event_code: "Code comptable pour tous les évènements"
accounting_event_label: "Libellé évènements"
general_event_label: "Libellé du compte pour tous les évènements"
accounting_space_code: "Code espaces"
general_space_code: "Code comptable pour tous les espaces"
accounting_space_label: "Libellé espaces"
general_space_label: "Libellé du compte pour tous les espaces"
accounting_coupon_code: "Code pour codes promo"
general_coupon_code: "Code comptable pour tous les codes promo"
accounting_coupon_label: "Libellé codes promo"
general_coupon_label: "Libellé du compte pour tous les codes promo"
customization_of_SETTING_successfully_saved: "La personnalisation de {{SETTING}} a bien été enregistrée." # angular interpolation
export_accounting_data: "Exporter les données comptables"
members:
# gestion des utilisateurs, des groupes, des étiquettes, etc.

View File

@ -432,6 +432,47 @@ pt:
period_START_END_closed_success: "The accounting period from {{START}} to {{END}} has been successfully closed. Archive generation is running, you'll be notified when it's done." # translation_missing
failed_to_close_period: "An error occurred, unable to close the accounting period" # translation_missing
no_periods: "No closings for now" # translation_missing
accounting_codes: "Accounting codes" # translation_missing
accounting_journal_code: "Journal code" # translation_missing
general_journal_code: "Journal code" # translation_missing
accounting_client_code: "Customers code" # translation_missing
general_client_code: "Accounting code for all customers" # translation_missing
accounting_client_label: "Customers label" # translation_missing
general_client_label: "Account label for all customers" # translation_missing
accounting_wallet_code: "Wallet code" # translation_missing
general_wallet_code: "Accounting code for wallet credit" # translation_missing
accounting_wallet_label: "Wallet label" # translation_missing
general_wallet_label: "Account label for wallet credit" # translation_missing
accounting_vat_code: "VAT code" # translation_missing
general_vat_code: "Accounting code for VAT" # translation_missing
accounting_vat_label: "VAT label" # translation_missing
general_vat_label: "VAT account label" # translation_missing
accounting_subscription_code: "Subscriptions code" # translation_missing
general_subscription_code: "Accounting code for all subscriptions" # translation_missing
accounting_subscription_label: "Subscriptions label" # translation_missing
general_subscription_label: "Account label for all subscriptions" # translation_missing
accounting_machine_code: "Machines code" # translation_missing
general_machine_code: "Accounting code for all machines" # translation_missing
accounting_machine_label: "Machine label" # translation_missing
general_machine_label: "Account label for all machines" # translation_missing
accounting_training_code: "Trainings code" # translation_missing
general_training_code: "Accounting code for all trainings" # translation_missing
accounting_training_label: "Trainings label" # translation_missing
general_training_label: "Account label for all trainings" # translation_missing
accounting_event_code: "Events code" # translation_missing
general_event_code: "Accounting code for all events" # translation_missing
accounting_event_label: "Events label" # translation_missing
general_event_label: "Account label for all events" # translation_missing
accounting_space_code: "Space code" # translation_missing
general_space_code: "Accounting code for all spaces" # translation_missing
accounting_space_label: "Spaces label" # translation_missing
general_space_label: "Account label for all spaces" # translation_missing
accounting_coupon_code: "Coupons code" # translation_missing
general_coupon_code: "Accounting code for all coupons" # translation_missing
accounting_coupon_label: "Coupons label" # translation_missing
general_coupon_label: "Account label for all coupons" # translation_missing
customization_of_SETTING_successfully_saved: "Customization of the {{SETTING}} successfully saved." # angular interpolation # translation_missing
export_accounting_data: "Export accounting data" # translation_missing
members:
# management of users, labels, groups, and so on