Merge branch 'master' of github.com:akaunting/akaunting

This commit is contained in:
Cüneyt Şentürk 2021-05-30 17:23:07 +03:00
commit 7e3b1b600e
40 changed files with 734 additions and 399 deletions

View File

@ -32,7 +32,7 @@ class Permissions extends ApiController
*/ */
public function show(Permission $permission) public function show(Permission $permission)
{ {
return $this->response->item($permission, new Transformer()); return $this->item($permission, new Transformer());
} }
/** /**
@ -45,7 +45,7 @@ class Permissions extends ApiController
{ {
$permission = $this->dispatch(new CreatePermission($request)); $permission = $this->dispatch(new CreatePermission($request));
return $this->response->created(route('api.permissions.show', $permission->id)); return $this->response->created(route('api.permissions.show', $permission->id), $this->item($permission, new Transformer()));
} }
/** /**

View File

@ -32,7 +32,7 @@ class Roles extends ApiController
*/ */
public function show(Role $role) public function show(Role $role)
{ {
return $this->response->item($role, new Transformer()); return $this->item($role, new Transformer());
} }
/** /**
@ -45,7 +45,7 @@ class Roles extends ApiController
{ {
$role = $this->dispatch(new CreateRole($request)); $role = $this->dispatch(new CreateRole($request));
return $this->response->created(route('api.roles.show', $role->id)); return $this->response->created(route('api.roles.show', $role->id), $this->item($role, new Transformer()));
} }
/** /**

View File

@ -39,7 +39,7 @@ class Users extends ApiController
$user = User::with('companies', 'permissions', 'roles')->where('email', $id)->first(); $user = User::with('companies', 'permissions', 'roles')->where('email', $id)->first();
} }
return $this->response->item($user, new Transformer()); return $this->item($user, new Transformer());
} }
/** /**
@ -52,7 +52,7 @@ class Users extends ApiController
{ {
$user = $this->dispatch(new CreateUser($request)); $user = $this->dispatch(new CreateUser($request));
return $this->response->created(route('api.users.show', $user->id)); return $this->response->created(route('api.users.show', $user->id), $this->item($user, new Transformer()));
} }
/** /**

View File

@ -39,7 +39,7 @@ class Accounts extends ApiController
$account = Account::where('number', $id)->first(); $account = Account::where('number', $id)->first();
} }
return $this->response->item($account, new Transformer()); return $this->item($account, new Transformer());
} }
/** /**
@ -52,7 +52,7 @@ class Accounts extends ApiController
{ {
$account = $this->dispatch(new CreateAccount($request)); $account = $this->dispatch(new CreateAccount($request));
return $this->response->created(route('api.accounts.show', $account->id)); return $this->response->created(route('api.accounts.show', $account->id), $this->item($account, new Transformer()));
} }
/** /**

View File

@ -32,7 +32,7 @@ class Reconciliations extends ApiController
*/ */
public function show(Reconciliation $reconciliation) public function show(Reconciliation $reconciliation)
{ {
return $this->response->item($reconciliation, new Transformer()); return $this->item($reconciliation, new Transformer());
} }
/** /**
@ -45,7 +45,7 @@ class Reconciliations extends ApiController
{ {
$reconciliation = $this->dispatch(new CreateReconciliation($request)); $reconciliation = $this->dispatch(new CreateReconciliation($request));
return $this->response->created(route('api.reconciliations.show', $reconciliation->id)); return $this->response->created(route('api.reconciliations.show', $reconciliation->id), $this->item($reconciliation, new Transformer()));
} }
/** /**

View File

@ -32,7 +32,7 @@ class Transactions extends ApiController
*/ */
public function show(Transaction $transaction) public function show(Transaction $transaction)
{ {
return $this->response->item($transaction, new Transformer()); return $this->item($transaction, new Transformer());
} }
/** /**
@ -45,7 +45,7 @@ class Transactions extends ApiController
{ {
$transaction = $this->dispatch(new CreateTransaction($request)); $transaction = $this->dispatch(new CreateTransaction($request));
return $this->response->created(route('api.transactions.show', $transaction->id)); return $this->response->created(route('api.transactions.show', $transaction->id), $this->item($transaction, new Transformer()));
} }
/** /**

View File

@ -62,7 +62,7 @@ class Transfers extends ApiController
*/ */
public function show(Transfer $transfer) public function show(Transfer $transfer)
{ {
return $this->response->item($transfer, new Transformer()); return $this->item($transfer, new Transformer());
} }
/** /**
@ -75,7 +75,7 @@ class Transfers extends ApiController
{ {
$transfer = $this->dispatch(new CreateTransfer($request)); $transfer = $this->dispatch(new CreateTransfer($request));
return $this->response->created(route('api.transfers.show', $transfer->id)); return $this->response->created(route('api.transfers.show', $transfer->id), $this->item($transfer, new Transformer()));
} }
/** /**

View File

@ -40,7 +40,7 @@ class Companies extends ApiController
// Check if user can access company // Check if user can access company
$this->canAccess($company); $this->canAccess($company);
return $this->response->item($company, new Transformer()); return $this->item($company, new Transformer());
} catch (\Exception $e) { } catch (\Exception $e) {
$this->response->errorUnauthorized($e->getMessage()); $this->response->errorUnauthorized($e->getMessage());
} }
@ -56,7 +56,7 @@ class Companies extends ApiController
{ {
$company = $this->dispatch(new CreateCompany($request)); $company = $this->dispatch(new CreateCompany($request));
return $this->response->created(route('api.companies.show', $company->id)); return $this->response->created(route('api.companies.show', $company->id), $this->item($company, new Transformer()));
} }
/** /**

View File

@ -42,7 +42,7 @@ class Contacts extends ApiController
$contact = Contact::where('email', $id)->first(); $contact = Contact::where('email', $id)->first();
} }
return $this->response->item($contact, new Transformer()); return $this->item($contact, new Transformer());
} }
/** /**
@ -55,7 +55,7 @@ class Contacts extends ApiController
{ {
$contact = $this->dispatch(new CreateContact($request)); $contact = $this->dispatch(new CreateContact($request));
return $this->response->created(route('api.contacts.show', $contact->id)); return $this->response->created(route('api.contacts.show', $contact->id), $this->item($contact, new Transformer()));
} }
/** /**

View File

@ -42,7 +42,7 @@ class Dashboards extends ApiController
// Check if user can access dashboard // Check if user can access dashboard
$this->canAccess($dashboard); $this->canAccess($dashboard);
return $this->response->item($dashboard, new Transformer()); return $this->item($dashboard, new Transformer());
} catch (\Exception $e) { } catch (\Exception $e) {
$this->response->errorUnauthorized($e->getMessage()); $this->response->errorUnauthorized($e->getMessage());
} }
@ -58,7 +58,7 @@ class Dashboards extends ApiController
{ {
$dashboard = $this->dispatch(new CreateDashboard($request)); $dashboard = $this->dispatch(new CreateDashboard($request));
return $this->response->created(route('api.dashboards.show', $dashboard->id)); return $this->response->created(route('api.dashboards.show', $dashboard->id), $this->item($dashboard, new Transformer()));
} }
/** /**

View File

@ -34,7 +34,7 @@ class Items extends ApiController
{ {
$item = Item::with('category', 'taxes')->find($id); $item = Item::with('category', 'taxes')->find($id);
return $this->response->item($item, new Transformer()); return $this->item($item, new Transformer());
} }
/** /**
@ -47,7 +47,7 @@ class Items extends ApiController
{ {
$item = $this->dispatch(new CreateItem($request)); $item = $this->dispatch(new CreateItem($request));
return $this->response->created(route('api.items.show', $item->id)); return $this->response->created(route('api.items.show', $item->id), $this->item($item, new Transformer()));
} }
/** /**

View File

@ -32,7 +32,7 @@ class Reports extends ApiController
*/ */
public function show(Report $report) public function show(Report $report)
{ {
return $this->response->item($report, new Transformer()); return $this->item($report, new Transformer());
} }
/** /**
@ -45,7 +45,7 @@ class Reports extends ApiController
{ {
$report = $this->dispatch(new CreateReport($request)); $report = $this->dispatch(new CreateReport($request));
return $this->response->created(route('api.reports.show', $report->id)); return $this->response->created(route('api.reports.show', $report->id), $this->item($report, new Transformer()));
} }
/** /**

View File

@ -48,7 +48,7 @@ class DocumentTransactions extends ApiController
{ {
$transaction = Transaction::documentId($document_id)->find($id); $transaction = Transaction::documentId($document_id)->find($id);
return $this->response->item($transaction, new Transformer()); return $this->item($transaction, new Transformer());
} }
/** /**
@ -64,7 +64,7 @@ class DocumentTransactions extends ApiController
$transaction = $this->dispatch(new CreateBankingDocumentTransaction($document, $request)); $transaction = $this->dispatch(new CreateBankingDocumentTransaction($document, $request));
return $this->response->created(route('api.documents.transactions.show', [$document_id, $transaction->id])); return $this->response->created(route('api.documents.transactions.show', [$document_id, $transaction->id]), $this->item($transaction, new Transformer()));
} }
/** /**

View File

@ -39,7 +39,7 @@ class Documents extends ApiController
$document = Document::where('document_number', $id)->first(); $document = Document::where('document_number', $id)->first();
} }
return $this->response->item($document, new Transformer()); return $this->item($document, new Transformer());
} }
/** /**
@ -53,7 +53,7 @@ class Documents extends ApiController
{ {
$document = $this->dispatch(new CreateDocument($request)); $document = $this->dispatch(new CreateDocument($request));
return $this->response->created(route('api.documents.show', $document->id)); return $this->response->created(route('api.documents.show', $document->id), $this->item($document, new Transformer()));
} }
/** /**
@ -68,7 +68,7 @@ class Documents extends ApiController
{ {
$document = $this->dispatch(new UpdateDocument($document, $request)); $document = $this->dispatch(new UpdateDocument($document, $request));
return $this->response->item($document->fresh(), new Transformer()); return $this->item($document->fresh(), new Transformer());
} }
/** /**

View File

@ -32,7 +32,7 @@ class Categories extends ApiController
*/ */
public function show(Category $category) public function show(Category $category)
{ {
return $this->response->item($category, new Transformer()); return $this->item($category, new Transformer());
} }
/** /**
@ -45,7 +45,7 @@ class Categories extends ApiController
{ {
$category = $this->dispatch(new CreateCategory($request)); $category = $this->dispatch(new CreateCategory($request));
return $this->response->created(route('api.categories.show', $category->id)); return $this->response->created(route('api.categories.show', $category->id), $this->item($category, new Transformer()));
} }
/** /**

View File

@ -39,7 +39,7 @@ class Currencies extends ApiController
$currency = Currency::where('code', $id)->first(); $currency = Currency::where('code', $id)->first();
} }
return $this->response->item($currency, new Transformer()); return $this->item($currency, new Transformer());
} }
/** /**
@ -52,7 +52,7 @@ class Currencies extends ApiController
{ {
$currency = $this->dispatch(new CreateCurrency($request)); $currency = $this->dispatch(new CreateCurrency($request));
return $this->response->created(route('api.currencies.show', $currency->id)); return $this->response->created(route('api.currencies.show', $currency->id), $this->item($currency, new Transformer()));
} }
/** /**

View File

@ -39,7 +39,7 @@ class Settings extends ApiController
$setting = Setting::where('key', $id)->first(); $setting = Setting::where('key', $id)->first();
} }
return $this->response->item($setting, new Transformer()); return $this->item($setting, new Transformer());
} }
/** /**
@ -52,7 +52,7 @@ class Settings extends ApiController
{ {
$setting = Setting::create($request->all()); $setting = Setting::create($request->all());
return $this->response->created(route('api.settings.show', $setting->id)); return $this->response->created(route('api.settings.show', $setting->id), $this->item($setting, new Transformer()));
} }
/** /**
@ -66,7 +66,7 @@ class Settings extends ApiController
{ {
$setting->update($request->all()); $setting->update($request->all());
return $this->response->item($setting->fresh(), new Transformer()); return $this->item($setting->fresh(), new Transformer());
} }
/** /**

View File

@ -32,7 +32,7 @@ class Taxes extends ApiController
*/ */
public function show(Tax $tax) public function show(Tax $tax)
{ {
return $this->response->item($tax, new Transformer()); return $this->item($tax, new Transformer());
} }
/** /**
@ -45,7 +45,7 @@ class Taxes extends ApiController
{ {
$tax = $this->dispatch(new CreateTax($request)); $tax = $this->dispatch(new CreateTax($request));
return $this->response->created(route('api.taxes.show', $tax->id)); return $this->response->created(route('api.taxes.show', $tax->id), $this->item($tax, new Transformer()));
} }
/** /**

View File

@ -125,8 +125,8 @@ class Data extends Controller
$company->api_key = setting('apps.api_key'); $company->api_key = setting('apps.api_key');
$company->financial_start = setting('localisation.financial_start'); $company->financial_start = setting('localisation.financial_start');
if ($company->logo) { if ($company->company_logo) {
$logo = \Plank\Mediable\Media::find($company->logo); $logo = $company->logo;
$logo->path = route('uploads.get', $logo->id); $logo->path = route('uploads.get', $logo->id);

View File

@ -115,129 +115,140 @@ import AkauntingDate from "./../../components/AkauntingDate";
import WizardAction from "./../../mixins/wizardAction"; import WizardAction from "./../../mixins/wizardAction";
export default { export default {
name: "Company", name: "Company",
mixins: [WizardAction],
components: { mixins: [WizardAction],
[Step.name]: Step,
[Steps.name]: Steps, components: {
AkauntingDropzoneFileUpload, [Step.name]: Step,
AkauntingDate, [Steps.name]: Steps,
}, AkauntingDropzoneFileUpload,
props: { AkauntingDate,
company: {
type: [Object, Array],
},
translations: {
type: [Object, Array],
},
url: {
type: String,
default: "text",
},
},
data() {
return {
active: 0,
logo: [],
real_date: "",
};
},
mounted() {
let company_data = this.company;
this.onDataWatch(company_data);
},
watch: {
company: function (company) {
this.onDataWatch(company);
},
},
methods: {
onDataWatch(company) {
if (Object.keys(company).length) {
let logo_arr = [
{
id: company.logo.id,
name: company.logo.filename + "." + company.logo.extension,
path: company.logo.path,
type: company.logo.mime_type,
size: company.logo.size,
downloadPath: false,
},
];
this.logo.push(logo_arr);
this.real_date = company.financial_start;
}
}, },
onEditSave() { props: {
FormData.prototype.appendRecursive = function (data, wrapper = null) { company: {
for (var name in data) { type: [Object, Array],
if (name == "previewElement" || name == "previewTemplate") { },
continue;
}
if (wrapper) {
if (
(typeof data[name] == "object" || Array.isArray(data[name])) &&
data[name] instanceof File != true &&
data[name] instanceof Blob != true
) {
this.appendRecursive(data[name], wrapper + "[" + name + "]");
} else {
this.append(wrapper + "[" + name + "]", data[name]);
}
} else {
if (
(typeof data[name] == "object" || Array.isArray(data[name])) &&
data[name] instanceof File != true &&
data[name] instanceof Blob != true
) {
this.appendRecursive(data[name], name);
} else {
this.append(name, data[name]);
}
}
}
};
const formData = new FormData(this.$refs["form"]); translations: {
let data_name = {}; type: [Object, Array],
},
url: {
type: String,
default: "text",
},
},
data() {
return {
active: 0,
logo: [],
real_date: "",
};
},
mounted() {
let company_data = this.company;
this.onDataWatch(company_data);
},
methods: {
onDataWatch(company) {
if (Object.keys(company).length) {
let logo_arr = [{
id: company.logo.id,
name: company.logo.filename + "." + company.logo.extension,
path: company.logo.path,
type: company.logo.mime_type,
size: company.logo.size,
downloadPath: false,
}];
this.logo.push(logo_arr);
this.real_date = company.financial_start;
}
},
onEditSave() {
FormData.prototype.appendRecursive = function (data, wrapper = null) {
for (var name in data) {
if (name == "previewElement" || name == "previewTemplate") {
continue;
}
if (wrapper) {
if (
(typeof data[name] == "object" || Array.isArray(data[name])) &&
data[name] instanceof File != true &&
data[name] instanceof Blob != true
) {
this.appendRecursive(data[name], wrapper + "[" + name + "]");
} else {
this.append(wrapper + "[" + name + "]", data[name]);
}
} else {
if (
(typeof data[name] == "object" || Array.isArray(data[name])) &&
data[name] instanceof File != true &&
data[name] instanceof Blob != true
) {
this.appendRecursive(data[name], name);
} else {
this.append(name, data[name]);
}
}
}
};
const formData = new FormData(this.$refs["form"]);
let data_name = {};
for (let [key, val] of formData.entries()) { for (let [key, val] of formData.entries()) {
Object.assign(data_name, { Object.assign(data_name, {
[key]: val, [key]: val,
["logo"]: this.$refs.dropzoneWizard.files[1] ["logo"]: this.$refs.dropzoneWizard.files[1]
? this.$refs.dropzoneWizard.files[1] ? this.$refs.dropzoneWizard.files[1]
: this.$refs.dropzoneWizard.files[0], : this.$refs.dropzoneWizard.files[0],
["_prefix"]: "company", ["_prefix"]: "company",
["_token"]: window.Laravel.csrfToken, ["_token"]: window.Laravel.csrfToken,
["_method"]: "POST", ["_method"]: "POST",
}); });
} }
formData.appendRecursive(data_name); formData.appendRecursive(data_name);
window
.axios({ window.axios({
method: "POST", method: "POST",
url: url + "/wizard/companies", url: url + "/wizard/companies",
data: formData, data: formData,
headers: { headers: {
"X-CSRF-TOKEN": window.Laravel.csrfToken, "X-CSRF-TOKEN": window.Laravel.csrfToken,
"X-Requested-With": "XMLHttpRequest", "X-Requested-With": "XMLHttpRequest",
"Content-Type": "multipart/form-data", "Content-Type": "multipart/form-data",
}, },
}) })
.then((response) => { .then((response) => {
this.onSuccessMessage(response); this.onSuccessMessage(response);
this.$router.push("/wizard/currencies"); this.$router.push("/wizard/currencies");
}, this) }, this)
.catch((error) => { .catch((error) => {
}, this); }, this);
},
next() {
if (this.active++ > 2);
this.$router.push("/wizard/currencies");
},
}, },
next() { watch: {
if (this.active++ > 2); company: function (company) {
this.$router.push("/wizard/currencies"); this.onDataWatch(company);
},
}, },
},
}; };
</script> </script>

View File

@ -299,124 +299,133 @@ import MixinsGlobal from "./../../mixins/global";
import WizardAction from "./../../mixins/wizardAction"; import WizardAction from "./../../mixins/wizardAction";
export default { export default {
name: "Currencies", name: "Currencies",
mixins: [MixinsGlobal, WizardAction],
components: { mixins: [MixinsGlobal, WizardAction],
[Step.name]: Step,
[Steps.name]: Steps, components: {
[Select.name]: Select, [Step.name]: Step,
[Option.name]: Option, [Steps.name]: Steps,
AkauntingRadioGroup, [Select.name]: Select,
}, [Option.name]: Option,
props: { AkauntingRadioGroup,
currencies: {
type: [Object, Array],
},
currency_codes: {
type: [Object, Array],
},
translations: {
type: [Object, Array],
},
},
data() {
return {
active: 1,
bulk_action: new BulkAction(url + "/settings/currencies"),
};
},
methods: {
onSwitchUpdate(item) {
this.onStatus(item.id, event);
this.onStatusControl(this.currencies, item.id, event);
}, },
onClickDelete(item) { props: {
this.confirmDelete( currencies: {
`${ type: [Object, Array],
new URL(url).protocol + },
"//" +
location.host + currency_codes: {
location.pathname + type: [Object, Array],
"/" + },
item.id
}`, translations: {
this.translations.currencies.title, type: [Object, Array],
`Confirm Delete <strong>${item.name}</strong> ${this.translations.currencies.title}?`, },
this.translations.currencies.cancel,
this.translations.currencies.delete
);
}, },
onDeleteCurrency(event) { data() {
this.onEjetItem(event, this.currencies, event.currency_id); return {
active: 1,
bulk_action: new BulkAction(url + "/settings/currencies"),
};
}, },
onChangeCodeItem(code) { methods: {
const formData = new FormData(this.$refs["form"]); onSwitchUpdate(item) {
const data = { this.onStatus(item.id, event);
rate: "",
precision: "",
symbol: "",
symbol_first: "",
decimal_mark: "",
thousands_separator: "",
};
for (let [key, val] of formData.entries()) { this.onStatusControl(this.currencies, item.id, event);
Object.assign(data, { },
[key]: val,
});
}
window onClickDelete(item) {
.axios({ this.confirmDelete(
method: "GET", `${
url: url + "/settings/currencies/config", new URL(url).protocol +
params: { "//" +
code: code, location.host +
}, location.pathname +
}) "/" +
.then((response) => { item.id
data.rate = response.data.rate; }`,
data.precision = response.data.precision; this.translations.currencies.title,
data.symbol = response.data.symbol; `Confirm Delete <strong>${item.name}</strong> ${this.translations.currencies.title}?`,
data.symbol_first = response.data.symbol_first; this.translations.currencies.cancel,
data.decimal_mark = response.data.decimal_mark; this.translations.currencies.delete
data.thousands_separator = response.data.thousands_separator; );
this.model.rate = response.data.rate; },
}, this);
onDeleteCurrency(event) {
this.onEjetItem(event, this.currencies, event.currency_id);
},
onChangeCodeItem(code) {
const formData = new FormData(this.$refs["form"]);
const data = {
rate: "",
precision: "",
symbol: "",
symbol_first: "",
decimal_mark: "",
thousands_separator: "",
};
for (let [key, val] of formData.entries()) {
Object.assign(data, {
[key]: val,
});
}
window.axios({
method: "GET",
url: url + "/settings/currencies/config",
params: {
code: code,
},
})
.then((response) => {
data.rate = response.data.rate;
data.precision = response.data.precision;
data.symbol = response.data.symbol;
data.symbol_first = response.data.symbol_first;
data.decimal_mark = response.data.decimal_mark;
data.thousands_separator = response.data.thousands_separator;
this.model.rate = response.data.rate;
}, this);
},
onEditForm(item) {
this.onSubmitEvent(
"PATCH",
url + "/wizard/currencies/" + item.id,
"",
this.currencies,
item.id
);
},
onSubmitForm() {
this.onSubmitEvent(
"POST",
url + "/wizard/currencies",
"",
this.currencies
);
},
prev() {
if (this.active-- > 2);
history.back()
this.$router.push("/wizard/companies");
},
next() {
if (this.active++ > 2);
this.$router.push("/wizard/taxes");
},
}, },
onEditForm(item) {
this.onSubmitEvent(
"PATCH",
url + "/wizard/currencies/" + item.id,
"",
this.currencies,
item.id
);
},
onSubmitForm() {
this.onSubmitEvent(
"POST",
url + "/wizard/currencies",
"",
this.currencies
);
},
prev() {
if (this.active-- > 2);
history.back()
this.$router.push("/wizard/companies");
},
next() {
if (this.active++ > 2);
this.$router.push("/wizard/taxes");
},
},
}; };
</script> </script>

View File

@ -1,5 +1,5 @@
<template> <template>
<div v-if="is_loaded"> <div>
<h1 class="text-white">{{ translations.finish.title }}</h1> <h1 class="text-white">{{ translations.finish.title }}</h1>
<div class="card"> <div class="card">
<div class="card-header wizard-header p-3"> <div class="card-header wizard-header p-3">
@ -87,57 +87,61 @@
import { Step, Steps } from "element-ui"; import { Step, Steps } from "element-ui";
export default { export default {
name: "Finish", name: "Finish",
components: {
[Step.name]: Step, components: {
[Steps.name]: Steps, [Step.name]: Step,
}, [Steps.name]: Steps,
created() { },
window
.axios({ props: {
method: "PATCH", modules: {
url: url + "/wizard/finish", type: [Object, Array],
}) },
.then((response) => {
if (response.status == "200") { translations: {
this.is_loaded = true; type: [Object, Array],
} }
}) },
.catch((error) => {
this.$notify({ data() {
message: this.translations.finish.error_message, return {
timeout: 1000, active: 3,
icon: "fas fa-bell", route_url: url,
type: 0 };
},
created() {
window.axios({
method: "PATCH",
url: url + "/wizard/finish",
})
.then((response) => {
})
.catch((error) => {
this.$notify({
message: this.translations.finish.error_message,
timeout: 1000,
icon: "fas fa-bell",
type: 0
});
this.prev();
}); });
this.prev();
});
},
props: {
modules: {
type: [Object, Array],
},
translations: {
type: [Object, Array],
}
},
data() {
return {
active: 3,
route_url: url,
is_loaded: false
};
},
methods: {
prev() {
if (this.active-- > 2);
this.$router.push("/wizard/taxes");
}, },
finish() { methods: {
window.location.href = url; prev() {
this.active--;
if (this.active > 2) {
this.$router.push("/wizard/taxes");
}
},
finish() {
window.location.href = url;
},
}, },
},
}; };
</script> </script>

View File

@ -229,82 +229,89 @@ import MixinsGlobal from "./../../mixins/global";
import WizardAction from "./../../mixins/wizardAction"; import WizardAction from "./../../mixins/wizardAction";
export default { export default {
name: "Taxes", name: "Taxes",
mixins: [MixinsGlobal, WizardAction],
components: { mixins: [MixinsGlobal, WizardAction],
[Step.name]: Step,
[Steps.name]: Steps, components: {
AkauntingRadioGroup, [Step.name]: Step,
}, [Steps.name]: Steps,
props: { AkauntingRadioGroup,
taxes: {
type: [Object, Array],
},
translations: {
type: [Object, Array],
},
},
data() {
return {
active: 2,
bulk_action: new BulkAction(url + "/settings/taxes"),
};
},
methods: {
onSwitchUpdate(item) {
this.onStatus(item.id, event);
this.onStatusControl(this.taxes, item.id, event);
}, },
onClickDelete(item) { props: {
this.confirmDelete( taxes: {
`${ type: [Object, Array],
new URL(url).protocol + },
"//" +
location.host + translations: {
location.pathname + type: [Object, Array],
"/" + },
item.id
}`,
this.translations.taxes.title,
`${
this.translations.currencies.title +
"&nbsp;" +
this.translations.currencies.delete
} <strong>${item.name}</strong>?`,
this.translations.taxes.cancel,
this.translations.taxes.delete
);
}, },
onDeleteCurrency(event) { data() {
this.onEjetItem(event, this.taxes, event.tax_id); return {
active: 2,
bulk_action: new BulkAction(url + "/settings/taxes"),
};
}, },
onEditForm(item) { methods: {
this.onSubmitEvent( onSwitchUpdate(item) {
"PATCH", this.onStatus(item.id, event);
url + "/wizard/taxes/" + item.id,
"type",
this.taxes,
item.id
);
},
onSubmitForm() { this.onStatusControl(this.taxes, item.id, event);
this.onSubmitEvent("POST", url + "/wizard/taxes", "type", this.taxes); },
},
prev() { onClickDelete(item) {
if (this.active-- > 2); this.confirmDelete(
this.$router.push("/wizard/currencies"); `${
}, new URL(url).protocol +
"//" +
location.host +
location.pathname +
"/" +
item.id
}`,
this.translations.taxes.title,
`${
this.translations.currencies.title +
"&nbsp;" +
this.translations.currencies.delete
} <strong>${item.name}</strong>?`,
this.translations.taxes.cancel,
this.translations.taxes.delete
);
},
next() { onDeleteCurrency(event) {
if (this.active++ > 2); this.onEjetItem(event, this.taxes, event.tax_id);
this.$router.push("/wizard/finish"); },
onEditForm(item) {
this.onSubmitEvent(
"PATCH",
url + "/wizard/taxes/" + item.id,
"type",
this.taxes,
item.id
);
},
onSubmitForm() {
this.onSubmitEvent("POST", url + "/wizard/taxes", "type", this.taxes);
},
prev() {
if (this.active-- > 2);
this.$router.push("/wizard/currencies");
},
next() {
if (this.active++ > 2);
this.$router.push("/wizard/finish");
},
}, },
},
}; };
</script> </script>

View File

@ -7,19 +7,19 @@ return [
'login' => 'Logi sisse', 'login' => 'Logi sisse',
'login_to' => 'Sessiooni alustamiseks logi sisse', 'login_to' => 'Sessiooni alustamiseks logi sisse',
'remember_me' => 'Jäta mind meelde', 'remember_me' => 'Jäta mind meelde',
'forgot_password' => 'Unustasin oma parooli', 'forgot_password' => 'Ma unustasin oma parooli',
'reset_password' => 'Lähtesta parool', 'reset_password' => 'Lähtesta parool',
'enter_email' => 'Sisesta oma e-posti aadress', 'enter_email' => 'Sisesta oma e-posti aadress',
'current_email' => 'Praegune e-mail', 'current_email' => 'Praegune e-kiri',
'reset' => 'Lähesta', 'reset' => 'Lähesta',
'never' => 'mitte kunagi', 'never' => 'mitte kunagi',
'landing_page' => 'Sihtleht', 'landing_page' => 'Sihtleht',
'password' => [ 'password' => [
'current' => 'Parool', 'current' => 'Parool',
'current_confirm' => 'Parooli kinnitus', 'current_confirm' => 'Salasõna kinnitus',
'new' => 'Uus parool', 'new' => 'Uus salasõna',
'new_confirm' => 'Uue parooli kinnitus', 'new_confirm' => 'Uue salasõna kinnitus',
], ],
'error' => [ 'error' => [
@ -28,7 +28,7 @@ return [
'no_company' => 'Viga: teie kontole pole määratud ühtegi ettevõtet. Palun pöörduge süsteemiadministraatori poole.', 'no_company' => 'Viga: teie kontole pole määratud ühtegi ettevõtet. Palun pöörduge süsteemiadministraatori poole.',
], ],
'failed' => 'Need andmed ei klapi meie kirjetega.', 'failed' => 'Andmed ei kattu.',
'disabled' => 'See konto on keelatud. Palun pöörduge süsteemiadministraatori poole.', 'disabled' => 'See konto on keelatud. Palun pöörduge süsteemiadministraatori poole.',
'throttle' => 'Liiga palju sisselogimise katseid. Palun proovi uuesti :seconds sekundi pärast.', 'throttle' => 'Liiga palju sisselogimise katseid. Palun proovi uuesti :seconds sekundi pärast.',

View File

@ -4,7 +4,7 @@ return [
'bill_number' => 'Arve number', 'bill_number' => 'Arve number',
'bill_date' => 'Arve kuupäev', 'bill_date' => 'Arve kuupäev',
'total_price' => 'Koguhind', 'total_price' => 'Hind kokku',
'due_date' => 'Tähtaeg', 'due_date' => 'Tähtaeg',
'order_number' => 'Tellimuse number', 'order_number' => 'Tellimuse number',
'bill_from' => 'Arve saatja', 'bill_from' => 'Arve saatja',
@ -14,17 +14,17 @@ return [
'sub_total' => 'Vahesumma', 'sub_total' => 'Vahesumma',
'discount' => 'Allahindlus', 'discount' => 'Allahindlus',
'item_discount' => 'Rea soodustus', 'item_discount' => 'Rea soodustus',
'tax_total' => 'Maksud kokku', 'tax_total' => 'Käibemaks kokku',
'total' => 'Kokku', 'total' => 'Kokku',
'item_name' => 'Kauba nimi | Kauba nimed', 'item_name' => 'Kauba nimi|Kauba nimed',
'show_discount' => 'Soodustus :discount%', 'show_discount' => ':discount% allahindlus',
'add_discount' => 'Lisa allahindlus', 'add_discount' => 'Lisa allahindlus',
'discount_desc' => 'vahesummast', 'discount_desc' => 'vahesummast',
'payment_due' => 'Makse tähtaeg', 'payment_due' => 'Makse tähtaeg',
'amount_due' => 'Tasumisele kuuluv summa', 'amount_due' => 'Maksmisele kuuluv summa',
'paid' => 'Makstud', 'paid' => 'Makstud',
'histories' => 'Ajalood', 'histories' => 'Ajalood',
'payments' => 'Maksed', 'payments' => 'Maksed',
@ -33,7 +33,7 @@ return [
'mark_received' => 'Makse on saabunud', 'mark_received' => 'Makse on saabunud',
'mark_cancelled' => 'Märgi tühistatuks', 'mark_cancelled' => 'Märgi tühistatuks',
'download_pdf' => 'Laadi alla PDF', 'download_pdf' => 'Laadi alla PDF',
'send_mail' => 'Saada kiri', 'send_mail' => 'Saada e-kiri',
'create_bill' => 'Loo arve', 'create_bill' => 'Loo arve',
'receive_bill' => 'Arve vastuvõtmine', 'receive_bill' => 'Arve vastuvõtmine',
'make_payment' => 'Tee makse', 'make_payment' => 'Tee makse',

View File

@ -16,6 +16,8 @@ return [
'sent' => 'Kas olete kindel, et soovite valitud arve märkida kui <b>saadetud</b>?|Kas soovite kindlasti märkida valitud arved kui <b>saadetud</b>?', 'sent' => 'Kas olete kindel, et soovite valitud arve märkida kui <b>saadetud</b>?|Kas soovite kindlasti märkida valitud arved kui <b>saadetud</b>?',
'received' => 'Kas olete kindel, et soovite valitud arve märkida kui <b>vastuvõetud</b>?|Kas soovite kindlasti märkida valitud arved kui <b>vastuvõetud</b>?', 'received' => 'Kas olete kindel, et soovite valitud arve märkida kui <b>vastuvõetud</b>?|Kas soovite kindlasti märkida valitud arved kui <b>vastuvõetud</b>?',
'cancelled' => 'Kas soovite kindlasti valitud kirje <b>tühistada</b>?|Kas soovite kindlasti valitud kirjed <b>tühistada</b>?', 'cancelled' => 'Kas soovite kindlasti valitud kirje <b>tühistada</b>?|Kas soovite kindlasti valitud kirjed <b>tühistada</b>?',
'reconcile' => 'Kas soovite kindlasti valitud kirje <b>lubada</b>?|Kas soovite kindlasti valitud kirjed <b>lubada</b>?',
'unreconcile' => 'Kas soovite kindlasti valitud kirje <b>lubada</b>?|Kas soovite kindlasti valitud kirjed <b>lubada</b>?',
], ],
]; ];

View File

@ -8,6 +8,7 @@ return [
'decimal_mark' => 'Kümnendmärk', 'decimal_mark' => 'Kümnendmärk',
'thousands_separator' => 'Tuhandeliste eraldaja', 'thousands_separator' => 'Tuhandeliste eraldaja',
'precision' => 'Täpsus', 'precision' => 'Täpsus',
'conversion' => 'Valuutavahetus: :price (:currency_code) :currency_rate',
'symbol' => [ 'symbol' => [
'symbol' => 'Sümbol', 'symbol' => 'Sümbol',
'position' => 'Sümbol seisukoht', 'position' => 'Sümbol seisukoht',

View File

@ -0,0 +1,11 @@
<?php
return [
'error' => [
'not_user_dashboard' => 'Viga: Teil pole lubatud seda töölaudet muuta!',
'delete_last' => 'Viga: viimast töölaudet ei saa kustutada. Palun looge kõigepealt uus!',
'disable_last' => 'Viga: viimast töölaudet ei saa keelata. Palun looge kõigepealt uus!',
],
];

View File

@ -0,0 +1,34 @@
<?php
return [
'accounts' => [
'cash' => 'Sularaha',
],
'categories' => [
'deposit' => 'Hoius',
'sales' => 'Müük',
],
'currencies' => [
'usd' => 'USA Dollar',
'eur' => 'Euro',
'gbp' => 'Inglise nael',
'try' => 'Türgi liir',
],
'offline_payments' => [
'cash' => 'Sularaha',
'bank' => 'Pangaülekanne',
],
'reports' => [
'income' => 'Kuu sissetuleku kokkuvõte kategooriate kaupa.',
'expense' => 'Kuu kulude kokkuvõte kategooriate kaupa.',
'income_expense' => 'Kuu sissetulek vs kulu kategooriate kaupa.',
'tax' => 'Kvartaalne maksu kokkuvõte.',
'profit_loss' => 'Kvartali kasum ja kahjum kategooriate kaupa.',
],
];

View File

@ -0,0 +1,54 @@
<?php
return [
'edit_columns' => 'Redigeeri veerge',
'empty_items' =>'Te pole midagi lisanud.',
'statuses' => [
'draft' => 'Mustand',
'sent' => 'Saadetud',
'expired' => 'Aegunud',
'viewed' => 'Vaadatud',
'approved' => 'Kinnitatud',
'received' => 'Vastuvõetud',
'refused' => 'Tagasi lükatud',
'restored' => 'Taastatud',
'reversed' => 'Tühistatud',
'partial' => 'Osaline',
'paid' => 'Makstud',
'pending' => 'Ootel',
'invoiced' => 'Arve esitatud',
'overdue' => 'Tähtaja ületanud',
'unpaid' => 'Maksmata',
'cancelled' => 'Tühistatud',
'voided' => 'Kehtetu',
'completed' => 'Lõpetatud',
'shipped' => 'Saadetud',
'refunded' => 'Tagasi makstud',
'failed' => 'Ebaõnnestus!',
'denied' => 'Keelatud',
'processed' => 'Töödeldud',
'open' => 'Avatud',
'closed' => 'Suletud ',
'billed' => 'Arve esitatud',
'delivered' => 'Kohaletoimetatud',
'returned' => 'Tagastatud',
'drawn' => 'Tõmmatud',
'not_billed' => 'Arvet pole esitatud',
'issued' => 'Väljastatud',
'not_invoiced' => 'Arvet pole esitatud',
'confirmed' => 'Kinnitatud',
'not_confirmed' => 'Pole kinnitatud',
],
'messages' => [
'email_sent' => ':type e-kiri oli saadetud!',
'marked_as' => ':type märgitud kui :status!',
'marked_sent' => ':type märgitud saadetuks!',
'marked_paid' => ':type märgitud makstuks!',
'marked_viewed' => ':type märgitud vaadatud!',
'marked_cancelled' => ':type märgitud tühistatuks!',
'marked_received' => ':type märgitud et kätte saanud!',
],
];

View File

@ -3,7 +3,7 @@
return [ return [
'import' => 'Impordi', 'import' => 'Impordi',
'title' => 'Import :liik', 'title' => 'Import :type',
'message' => 'Lubatud failitüübid: XLS, XLSX. Palun <a target="_blank" href=":link"><strong>laadi alla</strong></a> näidisfail.', 'message' => 'Lubatud failitüübid: XLS, XLSX. Palun <a target="_blank" href=":link"><strong>laadi alla</strong></a> näidisfail.',
]; ];

View File

@ -2,7 +2,8 @@
return [ return [
'sales_price' => 'Müügihind', 'sales_price' => 'Müügihind',
'purchase_price' => 'Ostuhind', 'purchase_price' => 'Ostuhind',
'enter_item_description' => 'Sisesta ühikku kirjeldus',
]; ];

View File

@ -0,0 +1,9 @@
<?php
return [
'title' => 'Hoolduses',
'message' => 'Vabandust, me oleme hoolduseks maas. Palun proovi hiljem uuesti!',
];

View File

@ -0,0 +1,23 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
'password' => 'Parool peab olema vähemalt 6 tähemärki pikk ja vastama kinnitusele.',
'reset' => 'Sinu parool on lähtestatud!',
'sent' => 'Oleme saatnud sulle e-postiga parooli lähtestamise lingi!',
'token' => 'See parooli lähtestamise tunnus on vigane.',
'user' => "Ei suutnud leida sellise e-posti aadressiga kasutajat.",
'throttle' => 'Palun oodake enne uuesti proovimist.',
];

View File

@ -5,7 +5,7 @@ return [
'recurring' => 'Korduv', 'recurring' => 'Korduv',
'every' => 'Iga', 'every' => 'Iga',
'period' => 'Periood', 'period' => 'Periood',
'times' => 'Korda', 'times' => 'Ajad',
'daily' => 'Iga päev', 'daily' => 'Iga päev',
'weekly' => 'Iganädalane', 'weekly' => 'Iganädalane',
'monthly' => 'Igakuine', 'monthly' => 'Igakuine',

View File

@ -0,0 +1,31 @@
<?php
return [
'years' => 'Aasta | Aastad',
'this_year' => 'Käesolev aasta',
'previous_year' => 'Eelmine aasta',
'this_quarter' => 'See kvartal',
'previous_quarter' => 'Eelmine kvartal',
'last_12_months' => 'Viimased 12 kuud',
'profit_loss' => 'Kasum ja kahjum',
'gross_profit' => 'Bruto',
'net_profit' => 'Puhaskasum',
'total_expenses' => 'Kulud kokku',
'net' => 'Neto',
'income_expense' => 'Sissetulekud ja kulud',
'summary' => [
'income' => 'Sissetulekute kokkuvõte',
'expense' => 'Kulude kokkuvõte',
'income_expense' => 'Sissetulekud versus kulud',
'tax' => 'Maksude kokkuvõte',
],
'charts' => [
'line' => 'Liin',
'bar' => 'Riba',
'pie' => 'Pie',
],
];

View File

@ -0,0 +1,15 @@
<?php
return [
'installed_version' => 'Paigaldatud versioon',
'latest_version' => 'Viimane versioon',
'update' => 'Värskenda Akaunting :version versioonile',
'changelog' => 'Muudatuste logi',
'check' => 'Kontrolli',
'new_core' => 'Saadaval on uuem Akaunting-u versioon.',
'latest_core' => 'Õnnitlused! Kasutad juba viimast Akauntingu versiooni. Tulevased turvaparandused paigaldatakse automaatselt.',
'success' => 'Värskendamine on lõpetatud.',
'error' => 'Värskendamine ebaõnnestus. Palun proovi uuesti.',
];

View File

@ -0,0 +1,123 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
'accepted' => ':attribute tuleb aktsepteerida.',
'active_url' => ':attribute ei ole kehtiv URL.',
'after' => ':attribute peab olema kuupäev pärast :date.',
'after_or_equal' => ':attribute peab olema kuupäev pärast või samastuma :date.',
'alpha' => ':attribute võib sisaldada vaid tähemärke.',
'alpha_dash' => ':attribute võib sisaldada vaid tähti, numbreid ja kriipse.',
'alpha_num' => ':attribute võib sisaldada vaid tähti ja numbreid.',
'array' => ':attribute peab olema massiiv.',
'before' => ':attribute peab olema kuupäev enne :date.',
'before_or_equal' => ':attribute peab olema kuupäev enne või samastuma :date.',
'between' => [
'numeric' => ':attribute peab olema :min ja :max vahel.',
'file' => ':attribute peab olema :min ja :max kilobaidi vahel.',
'string' => ':attribute peab olema :min ja :max tähemärgi vahel.',
'array' => ':attribute peab olema :min ja :max kirje vahel.',
],
'boolean' => ':attribute väli peab olema tõene või väär.',
'confirmed' => ':attribute kinnitus ei vasta.',
'date' => ':attribute pole kehtiv kuupäev.',
'date_format' => ':attribute ei vasta formaadile :format.',
'different' => ':attribute ja :other peavad olema erinevad.',
'digits' => ':attribute peab olema :digits numbrit.',
'digits_between' => ':attribute peab olema :min ja :max numbri vahel.',
'dimensions' => ':attribute on valed pildi suurused.',
'distinct' => ':attribute väljal on topeltväärtus.',
'email' => ':attribute peab olema kehtiv e-posti aadress.',
'ends_with' => ':attribute lubatud on failid laiendiga: :values',
'exists' => 'Valitud :attribute on vigane.',
'file' => ':attribute peab olema fail.',
'filled' => ':attribute väli on nõutav.',
'image' => ':attribute peab olema pilt.',
'in' => 'Valitud :attribute on vigane.',
'in_array' => ':attribute väli ei eksisteeri :other sees.',
'integer' => ':attribute peab olema täisarv.',
'ip' => ':attribute peab olema kehtiv IP aadress.',
'json' => ':attribute peab olema kehtiv JSON string.',
'max' => [
'numeric' => ':attribute ei tohi olla suurem kui :max.',
'file' => ':attribute ei tohi olla suurem kui :max kilobaiti.',
'string' => ':attribute ei tohi olla suurem kui :max tähemärki.',
'array' => ':attribute ei tohi sisaldada rohkem kui :max kirjet.',
],
'mimes' => ':attribute peab olema :values tüüpi.',
'mimetypes' => ':attribute peab olema :values tüüpi.',
'min' => [
'numeric' => ':attribute peab olema vähemalt :min.',
'file' => ':attribute peab olema vähemalt :min kilobaiti.',
'string' => ':attribute peab olema vähemalt :min tähemärki.',
'array' => ':attribute peab olema vähemalt :min kirjet.',
],
'not_in' => 'Valitud :attribute on vigane.',
'numeric' => ':attribute peab olema number.',
'present' => ':attribute väli peab olema esindatud.',
'regex' => ':attribute vorming on vigane.',
'required' => ':attribute väli on nõutud.',
'required_if' => ':attribute väli on nõutud, kui :other on :value.',
'required_unless' => ':attribute väli on nõutud, välja arvatud, kui :other on :values.',
'required_with' => ':attribute väli on nõutud, kui :values on esindatud.',
'required_with_all' => ':attribute väli on nõutud, kui :values on esindatud.',
'required_without' => ':attribute väli on nõutud, kui :values ei ole esindatud.',
'required_without_all' => ':attribute väli on nõutud, kui ükski :values pole esindatud.',
'same' => ':attribute ja :other peavad sobima.',
'size' => [
'numeric' => ':attribute peab olema :size.',
'file' => ':attribute peab olema :size kilobaiti.',
'string' => ':attribute peab olema :size tähemärki.',
'array' => ':attribute peab sisaldama :size kirjet.',
],
'string' => ':attribute peab olema string.',
'timezone' => ':attribute peab olema kehtiv tsoon.',
'unique' => ':attribute on juba hõivatud.',
'uploaded' => ':attribute ei õnnestunud laadida.',
'url' => ':attribute vorming on vigane.',
/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute.rule" to name the lines. This makes it quick to
| specify a specific custom language line for a given attribute rule.
|
*/
'custom' => [
'attribute-name' => [
'rule-name' => 'kohandatud-sõnum',
],
'invalid_currency' => ':attribute kood on vigane.',
'invalid_amount' => 'Kogus :attribute on vigane.',
'invalid_extension' => 'Faililaiend on lubamatu.',
],
/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap attribute place-holders
| with something more reader friendly such as E-Mail Address instead
| of "email". This simply helps us make messages a little cleaner.
|
*/
'attributes' => [],
];

View File

@ -123,7 +123,7 @@ return [
'overdue' => 'Gecikmiş', 'overdue' => 'Gecikmiş',
'partially' => 'Kısmen', 'partially' => 'Kısmen',
'partially_paid' => 'Kısmen Ödenmiş', 'partially_paid' => 'Kısmen Ödenmiş',
'export' => 'Dışa Aktar', 'export' => 'Dışarı Aktar',
'finish' => 'Bitti', 'finish' => 'Bitti',
'wizard' => 'Sihirbaz', 'wizard' => 'Sihirbaz',
'skip' => 'Geç', 'skip' => 'Geç',

View File

@ -2,8 +2,8 @@
return [ return [
'import' => 'İçe Aktar', 'import' => 'İçeri Aktar',
'title' => ':type İçe Aktar', 'title' => ':type İçeri Aktar',
'message' => 'İzin verilen dosya türleri: XLS, XLSX. Lütfen, örnek dosyayı <a target="_blank" href=":link"><strong>indirin</strong></a>.', 'message' => 'İzin verilen dosya türleri: XLS, XLSX. Lütfen, örnek dosyayı <a target="_blank" href=":link"><strong>indirin</strong></a>.',
]; ];