feat: localize resource fields.

This commit is contained in:
a.bouhuolia
2021-08-23 10:25:07 +02:00
parent 360e333276
commit 0be9f591b0
20 changed files with 613 additions and 219 deletions

View File

@@ -47,9 +47,11 @@ export default class ResourceController extends BaseController {
tenantId,
resourceModel
);
return res
.status(200)
.send({ resource_meta: this.transfromToResponse(resourceMeta) });
return res.status(200).send({
resource_meta: this.transfromToResponse(
resourceMeta,
),
});
} catch (error) {
next(error);
}

View File

@@ -23,7 +23,7 @@
"Other Liability": "التزمات اخري",
"Equity": "حقوق الملكية",
"Expense": "مصروف",
"Income": خل",
"Income": "إيراد",
"Accounts Receivable (A/R)": "الذمم المدينة",
"Accounts Receivable": "الذمم المدينة",
"Accounts Payable (A/P)": "الذمم الدائنة",
@@ -76,7 +76,7 @@
"Journal type": "نوع القيد",
"Date": "تاريخ",
"Asset": "أصل",
"Liability": "مسؤلية",
"Liability": "التزام",
"First-in first-out (FIFO)": "الوارد أولاً يصرف أولاً (FIFO)",
"Last-in first-out (LIFO)": "الوارد أخيرًا يصرف أولاً (LIFO)",
"Average rate": "المعدل المتوسط",
@@ -187,5 +187,181 @@
"receipt.paper.receipt_number": "رقم الإيصال",
"receipt.paper.conditions_title": "الشروط والأحكام",
"receipt.paper.notes_title": "ملاحظات",
"receipt.paper.receipt_amount": "قيمة الإيصال"
"receipt.paper.receipt_amount": "قيمة الإيصال",
"account.field.name": "إسم الحساب",
"account.field.description": "الوصف",
"account.field.slug": "Account slug",
"account.field.code": "رقم الحساب",
"account.field.root_type": "جذر الحساب",
"account.field.normal": "طبيعة الحساب",
"account.field.normal.credit": "دائن",
"account.field.normal.debit": "مدين",
"account.field.type": "نوع الحساب",
"account.field.active": "Activity",
"account.field.balance": "الرصيد",
"account.field.created_at": "أنشئت في",
"item.field.type": "نوع الصنف",
"item.field.type.inventory": "مخزون",
"item.field.type.service": "خدمة",
"item.field.type.non-inventory": "Non inventory",
"item.field.name": "اسم الصنف",
"item.field.code": "رمز الصنف",
"item.field.sellable": "قابل للبيع",
"item.field.purchasable": "قابل للشراء",
"item.field.cost_price": "سعر التكلفة",
"item.field.cost_account": "حساب التكلفة",
"item.field.sell_account": "حساب البيع",
"item.field.sell_description": "وصف البيع",
"item.field.inventory_account": "حساب المخزون",
"item.field.purchase_description": "وصف الشراء",
"item.field.quantity_on_hand": "الكمية",
"item.field.note": "ملاحظة",
"item.field.category": "التصنيف",
"item.field.active": "Active",
"item.field.created_at": "أنشئت في",
"item_category.field.name": "الاسم",
"item_category.field.description": "الوصف",
"item_category.field.count": "العدد",
"item_category.field.created_at": "أنشئت في",
"invoice.field.customer": "الزبون",
"invoice.field.invoice_date": "تاريخ الفاتورة",
"invoice.field.due_date": "تاريخ الاستحقاق",
"invoice.field.invoice_no": "رقم الفاتورة",
"invoice.field.reference_no": "رقم الإشاري",
"invoice.field.invoice_message": "رسالة الفاتورة",
"invoice.field.terms_conditions": "الشروط والأحكام",
"invoice.field.amount": "القيمة",
"invoice.field.payment_amount": "القيمة المدفوعة",
"invoice.field.due_amount": "القيمة المستحقة",
"invoice.field.status": "الحالة",
"invoice.field.status.paid": "مدفوعة",
"invoice.field.status.partially-paid": "المدفوعة جزئيا",
"invoice.field.status.overdue": "متأخرة",
"invoice.field.status.unpaid": "غير مدفوعة",
"invoice.field.status.delivered": "تم تسليمها",
"invoice.field.status.draft": "مسودة",
"invoice.field.created_at": "أنشئت في",
"estimate.field.amount": "القيمة",
"estimate.field.estimate_number": "رقم العرض",
"estimate.field.customer": "الزبون",
"estimate.field.estimate_date": "تاريخ العرض",
"estimate.field.expiration_date": "تاريخ انتهاء الصلاحية",
"estimate.field.reference_no": "رقم الإشاري",
"estimate.field.note": "ملاحظة",
"estimate.field.terms_conditions": "الشروط والأحكام",
"estimate.field.status": "الحالة",
"estimate.field.status.delivered": "تم تسليمها",
"estimate.field.status.rejected": "مرفوضة",
"estimate.field.status.approved": "تم الموافقة",
"estimate.field.status.draft": "مسودة",
"estimate.field.created_at": "أنشئت في",
"payment_receive.field.customer": "الزبون",
"payment_receive.field.payment_date": "تاريخ الدفع",
"payment_receive.field.amount": "القيمة",
"payment_receive.field.reference_no": "رقم الإشاري",
"payment_receive.field.deposit_account": "حساب الإيداع",
"payment_receive.field.payment_receive_no": "رقم عملية الدفع",
"payment_receive.field.statement": "البيان",
"payment_receive.field.created_at": "أنشئت في",
"bill_payment.field.vendor": "المورد",
"bill_payment.field.amount": "القيمة",
"bill_payment.field.due_amount": "قيمة المستحقة",
"bill_payment.field.payment_account": "حساب الدفع",
"bill_payment.field.payment_number": "قيمة الدفع",
"bill_payment.field.payment_date": "تاريخ الدفع",
"bill_payment.field.reference_no": "رقم الإشاري",
"bill_payment.field.description": "الوصف",
"bill_payment.field.created_at": "أنشئت في",
"bill.field.vendor": "المورد",
"bill.field.bill_number": "رقم الفاتورة",
"bill.field.bill_date": "تاريخ الفاتورة",
"bill.field.due_date": "تاريخ الاستحقاق",
"bill.field.reference_no": "رقم الإشاري",
"bill.field.status": "الحالة",
"bill.field.status.paid": "مدفوعة",
"bill.field.status.partially-paid": "مدفوعة جزئيا",
"bill.field.status.unpaid": "غير مدفوعة",
"bill.field.status.opened": "مفتوحة",
"bill.field.status.draft": "مسودة",
"bill.field.status.overdue": "متأخرة",
"bill.field.amount": "القيمة",
"bill.field.payment_amount": "قيم الدفع",
"bill.field.note": "ملاحظة",
"bill.field.created_at": "أنشئت في",
"inventory_adjustment.field.date": "التاريخ",
"inventory_adjustment.field.type": "النوع",
"inventory_adjustment.field.type.increment": "زيادة",
"inventory_adjustment.field.type.decrement": "نقصان",
"inventory_adjustment.field.adjustment_account": "حساب التسوية",
"inventory_adjustment.field.reason": "السبب",
"inventory_adjustment.field.reference_no": "رقم الإشاري",
"inventory_adjustment.field.description": "الوصف",
"inventory_adjustment.field.published_at": "نشرت في",
"inventory_adjustment.field.created_at": "أنشئت في",
"expense.field.payment_date": "تاريخ الدفع",
"expense.field.payment_account": "حساب الدفع",
"expense.field.amount": "القيمة",
"expense.field.reference_no": "رقم الإشاري",
"expense.field.description": "الوصف",
"expense.field.published": "Published",
"expense.field.status": "الحالة",
"expense.field.status.draft": "مسودة",
"expense.field.status.published": "نشرت",
"expense.field.created_at": "أنشئت في",
"manual_journal.field.date": "التاريخ",
"manual_journal.field.journal_number": "رقم القيد",
"manual_journal.field.reference": "رقم الإشاري",
"manual_journal.field.journal_type": "نوع القيد",
"manual_journal.field.amount": "القيمة",
"manual_journal.field.description": "الوصف",
"manual_journal.field.status": "الحالة",
"manual_journal.field.created_at": "أنشئت في",
"receipt.field.amount": "القيمة",
"receipt.field.deposit_account": "حساب الإيداع",
"receipt.field.customer": "الزبون",
"receipt.field.receipt_date": "تاريخ الإيصال",
"receipt.field.receipt_number": "رقم الإيصال",
"receipt.field.reference_no": "رقم الإشاري",
"receipt.field.receipt_message": "رسالة الإيصال",
"receipt.field.statement": "البيان",
"receipt.field.created_at": "أنشئت في",
"receipt.field.status": "الحالة",
"receipt.field.status.draft": "مسودة",
"receipt.field.status.closed": "مغلقة",
"customer.field.first_name": "الاسم الأول",
"customer.field.last_name": "الاسم الاخير",
"customer.field.display_name": "اسم العرض",
"customer.field.email": "بريد الالكتروني",
"customer.field.work_phone": "هاتف عمل",
"customer.field.personal_phone": "هاتف شخصي",
"customer.field.company_name": "اسم الشركة",
"customer.field.website": "موقع الكتروني",
"customer.field.opening_balance_at": "الرصيد الافتتاحي في",
"customer.field.opening_balance": "الرصيد الافتتاحي",
"customer.field.created_at": "أنشئت في",
"customer.field.balance": "الرصيد",
"customer.field.status": "الحالة",
"customer.field.currency": "العملة",
"customer.field.status.active": "مفعل",
"customer.field.status.inactive": "غير مفعل",
"customer.field.status.overdue": "متأخر",
"customer.field.status.unpaid": "غير دافع",
"vendor.field.first_name": "الاسم الأول",
"vendor.field.last_name": "الاسم الاخير",
"vendor.field.display_name": "اسم العرض",
"vendor.field.email": "بريد الالكتروني",
"vendor.field.work_phone": "هاتف عمل",
"vendor.field.personal_phone": "هاتف شخصي",
"vendor.field.company_name": "اسم الشركة",
"vendor.field.website": "موقع الكتروني",
"vendor.field.opening_balance_at": "الرصيد الافتتاحي في",
"vendor.field.opening_balance": "الرصيد الافتتاحي",
"vendor.field.created_at": "أنشئت في",
"vendor.field.balance": "الرصيد",
"vendor.field.status": "الحالة",
"vendor.field.currency": "العملة",
"vendor.field.status.active": "مفعل",
"vendor.field.status.inactive": "غير مفعل",
"vendor.field.status.overdue": "متأخر",
"vendor.field.status.unpaid": "غير دافع"
}

View File

@@ -187,5 +187,181 @@
"receipt.paper.expiration_date": "Expiration date",
"receipt.paper.conditions_title": "Conditions & terms",
"receipt.paper.notes_title": "Notes",
"receipt.paper.receipt_amount": "Receipt amount"
"receipt.paper.receipt_amount": "Receipt amount",
"account.field.name": "Account name",
"account.field.description": "Description",
"account.field.slug": "Account slug",
"account.field.code": "Account code",
"account.field.root_type": "Root type",
"account.field.normal": "Account normal",
"account.field.normal.credit": "Credit",
"account.field.normal.debit": "Debit",
"account.field.type": "Type",
"account.field.active": "Activity",
"account.field.balance": "Balance",
"account.field.created_at": "Created at",
"item.field.type": "Item type",
"item.field.type.inventory": "Inventory",
"item.field.type.service": "Service",
"item.field.type.non-inventory": "Non inventory",
"item.field.name": "Name",
"item.field.code": "Code",
"item.field.sellable": "Sellable",
"item.field.purchasable": "Purchasable",
"item.field.cost_price": "Cost price",
"item.field.cost_account": "Cost account",
"item.field.sell_account": "Sell account",
"item.field.sell_description": "Sell description",
"item.field.inventory_account": "Inventory account",
"item.field.purchase_description": "Purchase description",
"item.field.quantity_on_hand": "Quantity on hand",
"item.field.note": "Note",
"item.field.category": "Category",
"item.field.active": "Active",
"item.field.created_at": "Created at",
"item_category.field.name": "Name",
"item_category.field.description": "Description",
"item_category.field.count": "Count",
"item_category.field.created_at": "Created at",
"invoice.field.customer": "Customer",
"invoice.field.invoice_date": "Invoice date",
"invoice.field.due_date": "Due date",
"invoice.field.invoice_no": "Invoice No.",
"invoice.field.reference_no": "Reference No.",
"invoice.field.invoice_message": "Invoice message",
"invoice.field.terms_conditions": "Terms & conditions",
"invoice.field.amount": "Amount",
"invoice.field.payment_amount": "Payment amount",
"invoice.field.due_amount": "Due amount",
"invoice.field.status": "Status",
"invoice.field.status.paid": "Paid",
"invoice.field.status.partially-paid": "Partially paid",
"invoice.field.status.overdue": "Overdue",
"invoice.field.status.unpaid": "Unpaid",
"invoice.field.status.delivered": "Delivered",
"invoice.field.status.draft": "Draft",
"invoice.field.created_at": "Created at",
"estimate.field.amount": "Amount",
"estimate.field.estimate_number": "Estimate number",
"estimate.field.customer": "Customer",
"estimate.field.estimate_date": "Estimate date",
"estimate.field.expiration_date": "Expiration date",
"estimate.field.reference_no": "Reference No.",
"estimate.field.note": "Note",
"estimate.field.terms_conditions": "Terms & conditions",
"estimate.field.status": "Status",
"estimate.field.status.delivered": "Delivered",
"estimate.field.status.rejected": "Rejected",
"estimate.field.status.approved": "Approved",
"estimate.field.status.draft": "Draft",
"estimate.field.created_at": "Created at",
"payment_receive.field.customer": "Customer",
"payment_receive.field.payment_date": "Payment date",
"payment_receive.field.amount": "Amount",
"payment_receive.field.reference_no": "Reference No.",
"payment_receive.field.deposit_account": "Deposit account",
"payment_receive.field.payment_receive_no": "Payment receive No.",
"payment_receive.field.statement": "Statement",
"payment_receive.field.created_at": "Created at",
"bill_payment.field.vendor": "Vendor",
"bill_payment.field.amount": "Amount",
"bill_payment.field.due_amount": "Due amount",
"bill_payment.field.payment_account": "Payment account",
"bill_payment.field.payment_number": "Payment number",
"bill_payment.field.payment_date": "Payment date",
"bill_payment.field.reference_no": "Reference No.",
"bill_payment.field.description": "Description",
"bill_payment.field.created_at": "Created at",
"bill.field.vendor": "Vendor",
"bill.field.bill_number": "Bill number",
"bill.field.bill_date": "Bill date",
"bill.field.due_date": "Due date",
"bill.field.reference_no": "Reference No.",
"bill.field.status": "Status",
"bill.field.status.paid": "Paid",
"bill.field.status.partially-paid": "Partially paid",
"bill.field.status.unpaid": "Unpaid",
"bill.field.status.opened": "Opened",
"bill.field.status.draft": "Draft",
"bill.field.status.overdue": "overdue",
"bill.field.amount": "Amount",
"bill.field.payment_amount": "Payment amount",
"bill.field.note": "Note",
"bill.field.created_at": "Created at",
"inventory_adjustment.field.date": "Date",
"inventory_adjustment.field.type": "Type",
"inventory_adjustment.field.type.increment": "Increment",
"inventory_adjustment.field.type.decrement": "Decrement",
"inventory_adjustment.field.adjustment_account": "Adjustment account",
"inventory_adjustment.field.reason": "Reason",
"inventory_adjustment.field.reference_no": "Reference No.",
"inventory_adjustment.field.description": "Description",
"inventory_adjustment.field.published_at": "Published at",
"inventory_adjustment.field.created_at": "Created at",
"expense.field.payment_date": "Payment date",
"expense.field.payment_account": "Payment account",
"expense.field.amount": "Amount",
"expense.field.reference_no": "Reference No.",
"expense.field.description": "Description",
"expense.field.published": "Published",
"expense.field.status": "Status",
"expense.field.status.draft": "Draft",
"expense.field.status.published": "Published",
"expense.field.created_at": "Created at",
"manual_journal.field.date": "Date",
"manual_journal.field.journal_number": "Journal number",
"manual_journal.field.reference": "Reference No.",
"manual_journal.field.journal_type": "Journal type",
"manual_journal.field.amount": "Amount",
"manual_journal.field.description": "Description",
"manual_journal.field.status": "Status",
"manual_journal.field.created_at": "Created at",
"receipt.field.amount": "Amount",
"receipt.field.deposit_account": "Deposit account",
"receipt.field.customer": "Customer",
"receipt.field.receipt_date": "Receipt date",
"receipt.field.receipt_number": "Receipt number",
"receipt.field.reference_no": "Reference No.",
"receipt.field.receipt_message": "Receipt message",
"receipt.field.statement": "Statement",
"receipt.field.created_at": "Created at",
"receipt.field.status": "Status",
"receipt.field.status.draft": "Draft",
"receipt.field.status.closed": "Closed",
"customer.field.first_name": "First name",
"customer.field.last_name": "Last name",
"customer.field.display_name": "Display name",
"customer.field.email": "Email",
"customer.field.work_phone": "Work phone",
"customer.field.personal_phone": "Personal phone",
"customer.field.company_name": "Company name",
"customer.field.website": "Website",
"customer.field.opening_balance_at": "Opening balance at",
"customer.field.opening_balance": "Opening balance",
"customer.field.created_at": "Created at",
"customer.field.balance": "Balance",
"customer.field.status": "Status",
"customer.field.currency": "Curreny",
"customer.field.status.active": "Active",
"customer.field.status.inactive": "Inactive",
"customer.field.status.overdue": "Overdue",
"customer.field.status.unpaid": "Unpaid",
"vendor.field.first_name": "First name",
"vendor.field.last_name": "Last name",
"vendor.field.display_name": "Display name",
"vendor.field.email": "Email",
"vendor.field.work_phone": "Work phone",
"vendor.field.personal_phone": "Personal phone",
"vendor.field.company_name": "Company name",
"vendor.field.website": "Website",
"vendor.field.opening_balance_at": "Opening balance at",
"vendor.field.opening_balance": "Opening balance",
"vendor.field.created_at": "Created at",
"vendor.field.balance": "Balance",
"vendor.field.status": "Status",
"vendor.field.currency": "Curreny",
"vendor.field.status.active": "Active",
"vendor.field.status.inactive": "Inactive",
"vendor.field.status.overdue": "Overdue",
"vendor.field.status.unpaid": "Unpaid"
}

View File

@@ -1,4 +1,3 @@
import { IModelMeta } from 'interfaces';
import { ACCOUNT_TYPES } from 'data/AccountTypes';
export default {
@@ -9,29 +8,29 @@ export default {
},
fields: {
name: {
name: 'Account name',
name: 'account.field.name',
column: 'name',
fieldType: 'text',
},
description: {
name: 'Description',
name: 'account.field.description',
column: 'description',
fieldType: 'text',
},
slug: {
name: 'Account slug',
name: 'account.field.slug',
column: 'slug',
fieldType: 'text',
columnable: false,
filterable: false,
},
code: {
name: 'Account code',
name: 'account.field.code',
column: 'code',
fieldType: 'text',
},
root_type: {
name: 'Root type',
name: 'account.field.root_type',
fieldType: 'enumeration',
options: [
{ key: 'asset', label: 'Asset' },
@@ -44,17 +43,17 @@ export default {
sortable: false,
},
normal: {
name: 'Account normal',
name: 'account.field.normal',
fieldType: 'enumeration',
options: [
{ key: 'debit', label: 'Debit' },
{ key: 'credit', label: 'Credit' },
{ key: 'debit', label: 'account.field.normal.debit' },
{ key: 'credit', label: 'account.field.normal.credit' },
],
filterCustomQuery: NormalTypeFieldFilterQuery,
sortable: false,
},
type: {
name: 'Type',
name: 'account.field.type',
column: 'account_type',
fieldType: 'enumeration',
options: ACCOUNT_TYPES.map((accountType) => ({
@@ -63,24 +62,24 @@ export default {
})),
},
active: {
name: 'Active',
name: 'account.field.active',
column: 'active',
fieldType: 'boolean',
filterable: false,
},
balance: {
name: 'Account balance',
name: 'account.field.balance',
column: 'amount',
fieldType: 'number',
},
currency: {
name: 'Currency',
name: 'account.field.currency',
column: 'currency_code',
fieldType: 'text',
filterable: false,
},
created_at: {
name: 'Created at',
name: 'account.field.created_at',
column: 'created_at',
fieldType: 'date',
},

View File

@@ -9,7 +9,7 @@ export default {
},
fields: {
vendor: {
name: 'Vendor',
name: 'bill.field.vendor',
column: 'vendor_id',
fieldType: 'relation',
@@ -20,61 +20,61 @@ export default {
relationEntityKey: 'id',
},
bill_number: {
name: 'Bill number',
name: 'bill.field.bill_number',
column: 'bill_number',
columnable: true,
fieldType: 'text',
},
bill_date: {
name: 'Bill date',
name: 'bill.field.bill_date',
column: 'bill_date',
columnable: true,
fieldType: 'date',
},
due_date: {
name: 'Due date',
name: 'bill.field.due_date',
column: 'due_date',
columnable: true,
fieldType: 'date',
},
reference_no: {
name: 'Reference No.',
name: 'bill.field.reference_no',
column: 'reference_no',
columnable: true,
fieldType: 'text',
},
status: {
name: 'Status',
name: 'bill.field.status',
fieldType: 'enumeration',
columnable: true,
options: [
{ label: 'Paid', key: 'paid' },
{ label: 'Partially paid', key: 'partially-paid' },
{ label: 'Overdue', key: 'overdue' },
{ label: 'Unpaid', key: 'unpaid' },
{ label: 'Opened', key: 'opened' },
{ label: 'Draft', key: 'draft' },
{ label: 'bill.field.status.paid', key: 'paid' },
{ label: 'bill.field.status.partially-paid', key: 'partially-paid' },
{ label: 'bill.field.status.overdue', key: 'overdue' },
{ label: 'bill.field.status.unpaid', key: 'unpaid' },
{ label: 'bill.field.status.opened', key: 'opened' },
{ label: 'bill.field.status.draft', key: 'draft' },
],
filterCustomQuery: StatusFieldFilterQuery,
sortCustomQuery: StatusFieldSortQuery,
},
amount: {
name: 'Amount',
name: 'bill.field.amount',
column: 'amount',
fieldType: 'number',
},
payment_amount: {
name: 'Payment amount',
name: 'bill.field.payment_amount',
column: 'payment_amount',
fieldType: 'number',
},
note: {
name: 'Note',
name: 'bill.field.note',
column: 'note',
fieldType: 'text',
},
created_at: {
name: 'Created at',
name: 'bill.field.created_at',
column: 'created_at',
fieldType: 'date',
},

View File

@@ -1,4 +1,3 @@
export default {
defaultFilterField: 'vendor',
defaultSort: {
@@ -6,8 +5,8 @@ export default {
sortField: 'bill_date',
},
fields: {
'vendor': {
name: 'Vendor name',
vendor: {
name: 'bill_payment.field.vendor',
column: 'vendor_id',
fieldType: 'relation',
@@ -17,18 +16,18 @@ export default {
relationEntityLabel: 'display_name',
relationEntityKey: 'id',
},
'amount': {
name: 'Amount',
amount: {
name: 'bill_payment.field.amount',
column: 'amount',
fieldType: 'number',
},
'due_amount': {
name: 'Due amount',
due_amount: {
name: 'bill_payment.field.due_amount',
column: 'due_amount',
fieldType: 'number',
},
'payment_account': {
name: 'Payment account',
payment_account: {
name: 'bill_payment.field.payment_account',
column: 'payment_account_id',
fieldType: 'relation',
@@ -38,28 +37,28 @@ export default {
relationLabelField: 'name',
relationKeyField: 'slug',
},
'payment_number': {
name: 'Payment number',
payment_number: {
name: 'bill_payment.field.payment_number',
column: 'payment_number',
fieldType: 'number',
},
'payment_date': {
name: 'Payment date',
payment_date: {
name: 'bill_payment.field.payment_date',
column: 'payment_date',
fieldType: 'date',
},
'reference_no': {
name: 'Reference No.',
reference_no: {
name: 'bill_payment.field.reference_no',
column: 'reference',
fieldType: 'text',
},
'description': {
name: 'Description',
description: {
name: 'bill_payment.field.description',
column: 'description',
fieldType: 'text',
},
'created_at': {
name: 'Created at',
created_at: {
name: 'bill_payment.field.created_at',
column: 'created_at',
fieldType: 'date',
},

View File

@@ -1,79 +1,79 @@
export default {
fields: {
first_name: {
name: 'First name',
name: 'customer.field.first_name',
column: 'first_name',
fieldType: 'text',
},
last_name: {
name: 'Last name',
name: 'customer.field.last_name',
column: 'last_name',
fieldType: 'text',
},
display_name: {
name: 'Display name',
name: 'customer.field.display_name',
column: 'display_name',
fieldType: 'text',
},
email: {
name: 'Email',
name: 'customer.field.email',
column: 'email',
fieldType: 'text',
},
work_phone: {
name: 'Work phone',
name: 'customer.field.work_phone',
column: 'work_phone',
fieldType: 'text',
},
personal_phone: {
name: 'Personal phone',
name: 'customer.field.personal_phone',
column: 'personal_phone',
fieldType: 'text',
},
company_name: {
name: 'Company name',
name: 'customer.field.company_name',
column: 'company_name',
fieldType: 'text',
},
website: {
name: 'Website',
name: 'customer.field.website',
column: 'website',
fieldType: 'text',
},
created_at: {
name: 'Created at',
name: 'customer.field.created_at',
column: 'created_at',
fieldType: 'date',
},
balance: {
name: 'Balance',
name: 'customer.field.balance',
column: 'balance',
fieldType: 'number',
},
opening_balance: {
name: 'Opening balance',
name: 'customer.field.opening_balance',
column: 'opening_balance',
fieldType: 'number',
},
opening_balance_at: {
name: 'Opening balance at',
name: 'customer.field.opening_balance_at',
column: 'opening_balance_at',
filterable: false,
fieldType: 'date',
},
currency_code: {
name: 'Curreny',
name: 'customer.field.currency',
column: 'currency_code',
fieldType: 'text',
},
status: {
name: 'Status',
name: 'customer.field.status',
fieldType: 'enumeration',
options: [
{ key: 'active', label: 'Active' },
{ key: 'inactive', label: 'Inactive' },
{ key: 'overdue', label: 'Overdue' },
{ key: 'unpaid', label: 'Unpaid' },
{ key: 'active', label: 'customer.field.status.active' },
{ key: 'inactive', label: 'customer.field.status.inactive' },
{ key: 'overdue', label: 'customer.field.status.overdue' },
{ key: 'unpaid', label: 'customer.field.status.unpaid' },
],
filterCustomQuery: statusFieldFilterQuery,
},

View File

@@ -9,12 +9,12 @@ export default {
},
fields: {
'payment_date': {
name: 'Payment date',
name: 'expense.field.payment_date',
column: 'payment_date',
fieldType: 'date',
},
'payment_account': {
name: 'Payment account',
name: 'expense.field.payment_account',
column: 'payment_account_id',
fieldType: 'relation',
@@ -25,37 +25,37 @@ export default {
relationEntityKey: 'slug',
},
'amount': {
name: 'Amount',
name: 'expense.field.amount',
column: 'total_amount',
fieldType: 'number',
},
'reference_no': {
name: 'Reference No.',
name: 'expense.field.reference_no',
column: 'reference_no',
fieldType: 'text',
},
'description': {
name: 'Description',
name: 'expense.field.description',
column: 'description',
fieldType: 'text',
},
'published': {
name: 'Published',
name: 'expense.field.published',
column: 'published_at',
fieldType: 'date',
},
'status': {
name: 'Status',
name: 'expense.field.status',
fieldType: 'enumeration',
options: [
{ key: 'draft', label: 'Draft' },
{ key: 'published', label: 'Published' },
{ label: 'expense.field.status.draft', key: 'draft' },
{ label: 'expense.field.status.published', key: 'published' },
],
filterCustomQuery: StatusFieldFilterQuery,
sortCustomQuery: StatusFieldSortQuery,
},
'created_at': {
name: 'Created at',
name: 'expense.field.created_at',
column: 'created_at',
fieldType: 'date',
},

View File

@@ -5,22 +5,22 @@ export default {
sortField: 'date',
},
fields: {
'date': {
name: 'Date',
date: {
name: 'inventory_adjustment.field.date',
column: 'date',
fieldType: 'date',
},
'type': {
name: 'Adjustment type',
type: {
name: 'inventory_adjustment.field.type',
column: 'type',
fieldType: 'enumeration',
options: [
{ key: 'increment', name: 'Increment' },
{ key: 'decrement', name: 'Decrement' },
{ key: 'increment', name: 'inventory_adjustment.field.type.increment' },
{ key: 'decrement', name: 'inventory_adjustment.field.type.decrement' },
],
},
'adjustment_account': {
name: 'Adjustment account',
adjustment_account: {
name: 'inventory_adjustment.field.adjustment_account',
column: 'adjustment_account_id',
fieldType: 'relation',
@@ -30,28 +30,28 @@ export default {
relationEntityLabel: 'name',
relationEntityKey: 'slug',
},
'reason': {
name: 'Reason',
reason: {
name: 'inventory_adjustment.field.reason',
column: 'reason',
fieldType: 'text',
},
'reference_no': {
name: 'Reference No.',
reference_no: {
name: 'inventory_adjustment.field.reference_no',
column: 'reference_no',
fieldType: 'text',
},
'description': {
name: 'Description',
description: {
name: 'inventory_adjustment.field.description',
column: 'description',
fieldType: 'text',
},
'published_at': {
name: 'Published at',
published_at: {
name: 'inventory_adjustment.field.published_at',
column: 'published_at',
fieldType: 'date',
},
'created_at': {
name: 'Created at',
created_at: {
name: 'inventory_adjustment.field.created_at',
column: 'created_at',
fieldType: 'date',
},

View File

@@ -6,47 +6,47 @@ export default {
},
fields: {
'type': {
name: 'Item type',
name: 'item.field.type',
column: 'type',
fieldType: 'enumeration',
options: [
{ key: 'inventory', label: 'Inventory', },
{ key: 'service', label: 'Service' },
{ key: 'non-inventory', label: 'Non Inventory', },
{ key: 'inventory', label: 'item.field.type.inventory', },
{ key: 'service', label: 'item.field.type.service' },
{ key: 'non-inventory', label: 'item.field.type.non-inventory', },
],
},
'name': {
name: 'Name',
name: 'item.field.name',
column: 'name',
fieldType: 'text',
},
'code': {
name: 'Code',
name: 'item.field.code',
column: 'code',
fieldType: 'text',
},
'sellable': {
name: 'Sellable',
name: 'item.field.sellable',
column: 'sellable',
fieldType: 'boolean',
},
'purchasable': {
name: 'Purchasable',
name: 'item.field.purchasable',
column: 'purchasable',
fieldType: 'boolean',
},
'sell_price': {
name: 'Sell price',
name: 'item.field.cost_price',
column: 'sell_price',
fieldType: 'number',
},
'cost_price': {
name: 'Cost price',
name: 'item.field.cost_account',
column: 'cost_price',
fieldType: 'number',
},
'cost_account': {
name: 'Cost account',
name: 'item.field.sell_account',
column: 'cost_account_id',
fieldType: 'relation',
@@ -57,7 +57,7 @@ export default {
relationEntityKey: 'slug',
},
'sell_account': {
name: 'Sell account',
name: 'item.field.sell_description',
column: 'sell_account_id',
fieldType: 'relation',
@@ -68,7 +68,7 @@ export default {
relationEntityKey: 'slug',
},
'inventory_account': {
name: 'Inventory account',
name: 'item.field.inventory_account',
column: 'inventory_account_id',
relationType: 'enumeration',
@@ -88,17 +88,17 @@ export default {
fieldType: 'text',
},
'quantity_on_hand': {
name: 'Quantity on hand',
name: 'item.field.quantity_on_hand',
column: 'quantity_on_hand',
fieldType: 'number',
},
'note': {
name: 'Note',
name: 'item.field.note',
column: 'note',
fieldType: 'text',
},
'category': {
name: 'Category',
name: 'item.field.category',
column: 'category_id',
relationType: 'enumeration',
@@ -108,13 +108,13 @@ export default {
relationEntityKey: 'id',
},
'active': {
name: 'Active',
name: 'item.field.active',
column: 'active',
fieldType: 'boolean',
filterable: false,
},
'created_at': {
name: 'Created at',
name: 'item.field.created_at',
column: 'created_at',
columnType: 'date',
fieldType: 'date',

View File

@@ -6,23 +6,23 @@ export default {
},
fields: {
name: {
name: 'Name',
name: 'item_category.field.name',
column: 'name',
fieldType: 'text',
},
description: {
name: 'Description',
name: 'item_category.field.description',
column: 'description',
fieldType: 'text',
},
count: {
name: 'Count',
name: 'item_category.field.count',
column: 'count',
fieldType: 'number',
virtualColumn: true,
},
created_at: {
name: 'Created at',
name: 'item_category.field.created_at',
column: 'created_at',
columnType: 'date',
},

View File

@@ -6,37 +6,37 @@ export default {
},
fields: {
'date': {
name: 'Date',
name: 'manual_journal.field.date',
column: 'date',
fieldType: 'date',
},
'journal_number': {
name: 'Journal number',
name: 'manual_journal.field.journal_number',
column: 'journal_number',
fieldType: 'text',
},
'reference': {
name: 'Reference No.',
name: 'manual_journal.field.reference',
column: 'reference',
fieldType: 'text',
},
'journal_type': {
name: 'Journal type',
name: 'manual_journal.field.journal_type',
column: 'journal_type',
fieldType: 'text',
},
'amount': {
name: 'Amount',
name: 'manual_journal.field.amount',
column: 'amount',
fieldType: 'number',
},
'description': {
name: 'Description',
name: 'manual_journal.field.description',
column: 'description',
fieldType: 'text',
},
'status': {
name: 'Status',
name: 'manual_journal.field.status',
column: 'status',
fieldType: 'enumeration',
options: [
@@ -46,7 +46,7 @@ export default {
sortCustomQuery: StatusFieldSortQuery,
},
'created_at': {
name: 'Created at',
name: 'manual_journal.field.created_at',
column: 'created_at',
fieldType: 'date',
},

View File

@@ -2,7 +2,7 @@
export default {
fields: {
customer: {
name: 'Customer',
name: 'payment_receive.field.customer',
column: 'customer_id',
fieldType: 'relation',
@@ -13,22 +13,22 @@ export default {
relationEntityKey: 'id',
},
payment_date: {
name: 'Payment date',
name: 'payment_receive.field.payment_date',
column: 'payment_date',
fieldType: 'date',
},
amount: {
name: 'Amount',
name: 'payment_receive.field.amount',
column: 'amount',
fieldType: 'number',
},
reference_no: {
name: 'Reference No.',
name: 'payment_receive.field.reference_no',
column: 'reference_no',
fieldType: 'text',
},
deposit_account: {
name: 'Deposit account',
name: 'payment_receive.field.deposit_account',
column: 'deposit_account_id',
fieldType: 'relation',
@@ -39,17 +39,17 @@ export default {
relationEntityKey: 'slug',
},
payment_receive_no: {
name: 'Payment receive No.',
name: 'payment_receive.field.payment_receive_no',
column: 'payment_receive_no',
fieldType: 'text',
},
statement: {
name: 'Statement',
name: 'payment_receive.field.statement',
column: 'statement',
fieldType: 'text',
},
created_at: {
name: 'Created at',
name: 'payment_receive.field.created_at',
column: 'created_at',
fieldDate: 'date',
},

View File

@@ -6,17 +6,17 @@ export default {
},
fields: {
'amount': {
name: 'Amount',
name: 'estimate.field.amount',
column: 'amount',
fieldType: 'number',
},
'estimate_number': {
name: 'Estimate number',
name: 'estimate.field.estimate_number',
column: 'estimate_number',
fieldType: 'text',
},
'customer': {
name: 'Customer',
name: 'estimate.field.customer',
column: 'customer_id',
fieldType: 'relation',
@@ -27,45 +27,44 @@ export default {
relationEntityKey: 'id',
},
'estimate_date': {
name: 'Estimate date',
name: 'estimate.field.estimate_date',
column: 'estimate_date',
fieldType: 'date',
},
'expiration_date': {
name: 'Expiration date',
name: 'estimate.field.expiration_date',
column: 'expiration_date',
fieldType: 'date',
},
'reference_no': {
name: 'Reference No.',
name: 'estimate.field.reference_no',
column: 'reference',
fieldType: 'text',
},
'note': {
name: 'Note',
name: 'estimate.field.note',
column: 'note',
fieldType: 'text',
},
'terms_conditions': {
name: 'Terms & conditions',
name: 'estimate.field.terms_conditions',
column: 'terms_conditions',
fieldType: 'text',
},
'status': {
name: 'Status',
name: 'estimate.field.status',
fieldType: 'enumeration',
options: [
{ label: 'Delivered', key: 'delivered' },
{ label: 'Rejected', key: 'rejected' },
{ label: 'Approved', key: 'approved' },
{ label: 'Delivered', key: 'delivered' },
{ label: 'Draft', key: 'draft' },
{ label: 'estimate.field.status.delivered', key: 'delivered' },
{ label: 'estimate.field.status.rejected', key: 'rejected' },
{ label: 'estimate.field.status.approved', key: 'approved' },
{ label: 'estimate.field.status.draft', key: 'draft' },
],
filterCustomQuery: StatusFieldFilterQuery,
sortCustomQuery: StatusFieldSortQuery,
},
'created_at': {
name: 'Created at',
name: 'estimate.field.created_at',
column: 'created_at',
columnType: 'date',
},

View File

@@ -6,7 +6,7 @@ export default {
},
fields: {
customer: {
name: 'Customer',
name: 'invoice.field.customer',
column: 'customer_id',
fieldType: 'relation',
@@ -17,70 +17,71 @@ export default {
relationEntityKey: 'id',
},
invoice_date: {
name: 'Invoice date',
name: 'invoice.field.invoice_date',
column: 'invoice_date',
fieldType: 'date',
},
due_date: {
name: 'Due date',
name: 'invoice.field.due_date',
column: 'due_date',
fieldType: 'date',
},
invoice_no: {
name: 'Invoice No.',
name: 'invoice.field.invoice_no',
column: 'invoice_no',
fieldType: 'text',
},
reference_no: {
name: 'Reference No.',
name: 'invoice.field.reference_no',
column: 'reference_no',
fieldType: 'text',
},
invoice_message: {
name: 'Invoice message',
name: 'invoice.field.invoice_message',
column: 'invoice_message',
fieldType: 'text',
},
terms_conditions: {
name: 'Terms & conditions',
name: 'invoice.field.terms_conditions',
column: 'terms_conditions',
fieldType: 'text',
},
amount: {
name: 'Invoice amount',
name: 'invoice.field.amount',
column: 'balance',
fieldType: 'number',
},
payment_amount: {
name: 'Payment amount',
name: 'invoice.field.payment_amount',
column: 'payment_amount',
fieldType: 'number',
},
due_amount: { // calculated.
name: 'Due amount',
due_amount: {
// calculated.
name: 'invoice.field.due_amount',
column: 'due_amount',
fieldType: 'number',
virtualColumn: true,
},
status: {
name: 'Status',
name: 'invoice.field.status',
fieldType: 'enumeration',
options: [
{ key: 'draft', label: 'Draft' },
{ key: 'delivered', label: 'Delivered' },
{ key: 'unpaid', label: 'Unpaid' },
{ key: 'overdue', label: 'Overdue' },
{ key: 'partially-paid', label: 'Partially paid' },
{ key: 'paid', label: 'Paid' },
{ key: 'draft', label: 'invoice.field.status.draft' },
{ key: 'delivered', label: 'invoice.field.status.delivered' },
{ key: 'unpaid', label: 'invoice.field.status.unpaid' },
{ key: 'overdue', label: 'invoice.field.status.overdue' },
{ key: 'partially-paid', label: 'invoice.field.status.partially-paid' },
{ key: 'paid', label: 'invoice.field.status.paid' },
],
filterCustomQuery: StatusFieldFilterQuery,
sortCustomQuery: StatusFieldSortQuery,
},
created_at: {
name: 'Created at',
name: 'invoice.field.created_at',
column: 'created_at',
fieldType: 'date',
},
},
},
};

View File

@@ -6,13 +6,13 @@ export default {
},
fields: {
'amount': {
name: 'Amount',
name: 'receipt.field.amount',
column: 'amount',
fieldType: 'number',
},
'deposit_account': {
column: 'deposit_account_id',
name: 'Deposit account',
name: 'receipt.field.deposit_account',
fieldType: 'relation',
relationType: 'enumeration',
@@ -22,8 +22,8 @@ export default {
relationEntityKey: 'slug',
},
'customer': {
label: 'Customer',
name: 'customer_id',
name: 'receipt.field.customer',
column: 'customer_id',
fieldType: 'relation',
relationType: 'enumeration',
@@ -33,42 +33,42 @@ export default {
relationEntityKey: 'id',
},
'receipt_date': {
name: 'Receipt date',
name: 'receipt.field.receipt_date',
column: 'receipt_date',
fieldType: 'date',
},
'receipt_number': {
name: 'Receipt No.',
name: 'receipt.field.receipt_number',
column: 'receipt_number',
fieldType: 'text',
},
'reference_no': {
name: 'Reference No.',
name: 'receipt.field.reference_no',
column: 'reference_no',
fieldType: 'text',
},
'receipt_message': {
name: 'Receipt message',
name: 'receipt.field.receipt_message',
column: 'receipt_message',
fieldType: 'text',
},
'statement': {
name: 'Statement',
name: 'receipt.field.statement',
column: 'statement',
fieldType: 'text',
},
'created_at': {
name: 'Created at',
name: 'receipt.field.created_at',
column: 'created_at',
fieldType: 'date',
},
'status': {
name: 'Status',
name: 'receipt.field.status',
fieldType: 'enumeration',
options: [
{ key: 'draft', label: 'Draft' },
{ key: 'closed', label: 'Closed' },
{ key: 'draft', label: 'receipt.field.status.draft' },
{ key: 'closed', label: 'receipt.field.status.closed' },
],
filterCustomQuery: StatusFieldFilterQuery,
sortCustomQuery: StatusFieldSortQuery,

View File

@@ -6,76 +6,76 @@ export default {
},
fields: {
first_name: {
name: 'First name',
name: 'vendor.field.first_name',
column: 'first_name',
fieldType: 'text',
},
last_name: {
name: 'Last name',
name: 'vendor.field.last_name',
column: 'last_name',
fieldType: 'text',
},
'display_name': {
name: 'Display name',
display_name: {
name: 'vendor.field.display_name',
column: 'display_name',
fieldType: 'text',
},
'email': {
name: 'Email',
email: {
name: 'vendor.field.email',
column: 'email',
fieldType: 'text',
},
'work_phone': {
name: 'Work phone',
work_phone: {
name: 'vendor.field.work_phone',
column: 'work_phone',
fieldType: 'text',
},
'personal_phone': {
name: 'Personal phone',
personal_phone: {
name: 'vendor.field.personal_pone',
column: 'personal_phone',
fieldType: 'text',
},
'company_name': {
name: 'Company name',
company_name: {
name: 'vendor.field.company_name',
column: 'company_name',
fieldType: 'text',
},
'website': {
name: 'Website',
website: {
name: 'vendor.field.website',
column: 'website',
fieldType: 'text',
},
'created_at': {
name: 'Created at',
created_at: {
name: 'vendor.field.created_at',
column: 'created_at',
fieldType: 'date',
},
'balance': {
name: 'Balance',
balance: {
name: 'vendor.field.balance',
column: 'balance',
fieldType: 'number',
},
'opening_balance': {
name: 'Opening balance',
opening_balance: {
name: 'vendor.field.opening_balance',
column: 'opening_balance',
fieldType: 'number',
},
'opening_balance_at': {
name: 'Opening balance at',
opening_balance_at: {
name: 'vendor.field.opening_balance_at',
column: 'opening_balance_at',
fieldType: 'date',
},
'currency_code': {
name: 'Currency code',
currency_code: {
name: 'vendor.field.currency',
column: 'currency_code',
fieldType: 'text',
},
'status': {
name: 'Status',
status: {
name: 'vendor.field.status',
type: 'enumeration',
options: [
{ key: 'overdue', label: 'Overdue' },
{ key: 'unpaid', label: 'Unpaid' },
{ key: 'overdue', label: 'vendor.field.status.overdue' },
{ key: 'unpaid', label: 'vendor.field.status.unpaid' },
],
filterCustomQuery: (query, role) => {
switch (role.value) {

View File

@@ -1,3 +1,5 @@
import * as R from 'ramda';
import * as qim from 'qim';
import HasTenancyService from 'services/Tenancy/TenancyService';
import { Service, Inject } from 'typedi';
@@ -44,4 +46,19 @@ export default class I18nService {
};
});
}
public i18nApply(
paths: (string|Function)[][],
data: Array<any>,
tenantId: number,
) {
const i18n = this.tenancy.i18n(tenantId);
const applyCurry = R.curryN(3, qim.apply);
const transform = (value) => i18n.__(value) || value;
const curriedCallbacks = paths.map((path) => applyCurry(path, transform));
return R.compose(...curriedCallbacks)(data);
}
}

View File

@@ -1,10 +1,12 @@
import { Service, Inject } from 'typedi';
import { camelCase, upperFirst } from 'lodash';
import * as qim from 'qim';
import pluralize from 'pluralize';
import { buildFilter } from 'objection-filter';
import { IModel, IModelMeta } from 'interfaces';
import { IModelMeta } from 'interfaces';
import TenancyService from 'services/Tenancy/TenancyService';
import { ServiceError } from 'exceptions';
import I18nService from 'services/I18n/I18nService';
import { tenantKnexConfig } from 'config/knexConfig';
const ERRORS = {
RESOURCE_MODEL_NOT_FOUND: 'RESOURCE_MODEL_NOT_FOUND',
@@ -15,6 +17,9 @@ export default class ResourceService {
@Inject()
tenancy: TenancyService;
@Inject()
i18nService: I18nService;
/**
* Transform resource to model name.
* @param {string} resourceName
@@ -50,6 +55,25 @@ export default class ResourceService {
metakey?: string
): IModelMeta {
const resourceModel = this.getResourceModel(tenantId, modelName);
return resourceModel.getMeta(metakey);
// Retrieve the resource meta.
const resourceMeta = resourceModel.getMeta(metakey);
// Localization the fields names.
return this.getResourceMetaLocalized(resourceMeta, tenantId);
}
/**
* Retrieve the resource meta localized based on the current user language.
*/
public getResourceMetaLocalized(meta, tenantId) {
const $enumerationType = (field) =>
field.fieldType === 'enumeration' ? field : undefined;
const naviagations = [
['fields', qim.$each, 'name'],
['fields', qim.$each, $enumerationType, 'options', qim.$each, 'label'],
];
return this.i18nService.i18nApply(naviagations, meta, tenantId);
}
}