feat: flatten the nested columns of exported data

This commit is contained in:
Ahmed Bouhuolia
2024-05-02 15:38:57 +02:00
parent 55aab76c9b
commit 83a5010dc5
21 changed files with 392 additions and 97 deletions

View File

@@ -5,6 +5,7 @@ export default {
sortField: 'bill_date',
},
importable: true,
exportFlattenOn: 'entries',
exportable: true,
importAggregator: 'group',
importAggregateOn: 'entries',
@@ -121,7 +122,7 @@ export default {
},
paidAmount: {
name: 'Paid Amount',
accessor: 'formattedPaymentAmount'
accessor: 'formattedPaymentAmount',
},
note: {
name: 'Note',
@@ -131,6 +132,33 @@ export default {
name: 'Open',
type: 'boolean',
},
entries: {
name: 'Entries',
accessor: 'entries',
type: 'collection',
collectionOf: 'object',
columns: {
itemName: {
name: 'Item Name',
accessor: 'item.name',
},
rate: {
name: 'Item Rate',
accessor: 'rateFormatted',
},
quantity: {
name: 'Item Quantity',
accessor: 'quantityFormatted',
},
description: {
name: 'Item Description',
},
amount: {
name: 'Item Amount',
accessor: 'totalFormatted',
},
},
},
},
fields2: {
billNumber: {

View File

@@ -13,10 +13,13 @@ export default {
sortField: 'name',
},
exportable: true,
exportFlattenOn: 'entries',
importable: true,
importAggregator: 'group',
importAggregateOn: 'entries',
importAggregateBy: 'creditNoteNumber',
fields: {
customer: {
name: 'credit_note.field.customer',
@@ -116,6 +119,32 @@ export default {
name: 'Open',
type: 'boolean',
},
entries: {
name: 'Entries',
type: 'collection',
collectionOf: 'object',
columns: {
itemName: {
name: 'Item Name',
accessor: 'item.name',
},
rate: {
name: 'Item Rate',
accessor: 'rateFormatted',
},
quantity: {
name: 'Item Quantity',
accessor: 'quantityFormatted',
},
description: {
name: 'Item Description',
},
amount: {
name: 'Item Amount',
accessor: 'totalFormatted',
},
},
},
},
fields2: {
customerId: {

View File

@@ -95,157 +95,132 @@ export default {
firstName: {
name: 'vendor.field.first_name',
type: 'text',
exportable: true,
},
lastName: {
name: 'vendor.field.last_name',
type: 'text',
exportable: true,
},
displayName: {
name: 'vendor.field.display_name',
type: 'text',
exportable: true,
},
email: {
name: 'vendor.field.email',
type: 'text',
exportable: true,
},
workPhone: {
name: 'vendor.field.work_phone',
type: 'text',
exportable: true,
},
personalPhone: {
name: 'vendor.field.personal_pone',
name: 'vendor.field.personal_phone',
type: 'text',
exportable: true,
},
companyName: {
name: 'vendor.field.company_name',
type: 'text',
exportable: true,
},
website: {
name: 'vendor.field.website',
type: 'text',
exportable: true,
},
createdAt: {
name: 'vendor.field.created_at',
type: 'date',
exportable: true,
},
balance: {
name: 'vendor.field.balance',
type: 'number',
exportable: true,
},
openingBalance: {
name: 'vendor.field.opening_balance',
type: 'number',
exportable: true,
},
openingBalanceAt: {
name: 'vendor.field.opening_balance_at',
type: 'date',
exportable: true,
},
currencyCode: {
name: 'vendor.field.currency',
type: 'text',
exportable: true,
},
status: {
name: 'vendor.field.status',
exportable: true,
},
note: {
name: 'vendor.field.note',
},
// Billing Address
billingAddress1: {
name: 'Billing Address 1',
column: 'billing_address1',
type: 'text',
exportable: true,
},
billingAddress2: {
name: 'Billing Address 2',
column: 'billing_address2',
type: 'text',
exportable: true,
},
billingAddressCity: {
name: 'Billing Address City',
column: 'billing_address_city',
type: 'text',
exportable: true,
},
billingAddressCountry: {
name: 'Billing Address Country',
column: 'billing_address_country',
type: 'text',
exportable: true,
},
billingAddressPostcode: {
name: 'Billing Address Postcode',
column: 'billing_address_postcode',
type: 'text',
exportable: true,
},
billingAddressState: {
name: 'Billing Address State',
column: 'billing_address_state',
type: 'text',
exportable: true,
},
billingAddressPhone: {
name: 'Billing Address Phone',
column: 'billing_address_phone',
type: 'text',
exportable: true,
},
// Shipping Address
shippingAddress1: {
name: 'Shipping Address 1',
column: 'shipping_address1',
type: 'text',
exportable: true,
},
shippingAddress2: {
name: 'Shipping Address 2',
column: 'shipping_address2',
type: 'text',
exportable: true,
},
shippingAddressCity: {
name: 'Shipping Address City',
column: 'shipping_address_city',
type: 'text',
exportable: true,
},
shippingAddressCountry: {
name: 'Shipping Address Country',
column: 'shipping_address_country',
type: 'text',
exportable: true,
},
shippingAddressPostcode: {
name: 'Shipping Address Postcode',
column: 'shipping_address_postcode',
type: 'text',
exportable: true,
},
shippingAddressPhone: {
name: 'Shipping Address Phone',
column: 'shipping_address_phone',
type: 'text',
exportable: true,
},
shippingAddressState: {
name: 'Shipping Address State',
column: 'shipping_address_state',
type: 'text',
exportable: true,
},
createdAt: {
name: 'vendor.field.created_at',
type: 'date',
},
},
fields2: {

View File

@@ -8,6 +8,7 @@ export default {
sortField: 'name',
},
importable: true,
exportFlattenOn: 'categories',
exportable: true,
fields: {
payment_date: {
@@ -66,42 +67,50 @@ export default {
paymentReceive: {
name: 'expense.field.payment_account',
type: 'text',
exportable: true,
accessor: 'paymentAccount.name'
},
referenceNo: {
name: 'expense.field.reference_no',
type: 'text',
exportable: true,
},
paymentDate: {
name: 'expense.field.payment_date',
type: 'date',
exportable: true,
},
currencyCode: {
name: 'expense.field.currency_code',
type: 'text',
exportable: true,
},
exchangeRate: {
name: 'expense.field.exchange_rate',
type: 'number',
exportable: true,
},
description: {
name: 'expense.field.description',
type: 'text',
exportable: true,
},
categories: {
name: 'expense.field.categories',
type: 'collection',
exportable: true,
collectionOf: 'object',
columns: {
expenseAccount: {
name: 'expense.field.expense_account',
accessor: 'expenseAccount.name',
},
amount: {
name: 'expense.field.amount',
accessor: 'amountFormatted',
},
description: {
name: 'expense.field.line_description',
type: 'text',
},
},
},
publish: {
name: 'expense.field.publish',
type: 'boolean',
exportable: true,
},
},
fields2: {

View File

@@ -5,6 +5,8 @@ export default {
sortField: 'name',
},
importable: true,
exportFlattenOn: 'entries',
exportable: true,
importAggregator: 'group',
importAggregateOn: 'entries',
@@ -61,42 +63,70 @@ export default {
date: {
name: 'manual_journal.field.date',
type: 'date',
exportable: true,
},
journalNumber: {
name: 'manual_journal.field.journal_number',
type: 'text',
exportable: true,
},
reference: {
name: 'manual_journal.field.reference',
type: 'text',
exportable: true,
},
journalType: {
name: 'manual_journal.field.journal_type',
type: 'text',
exportable: true,
},
amount: {
name: 'Amount',
accessor: 'formattedAmount',
},
currencyCode: {
name: 'manual_journal.field.currency',
type: 'text',
exportable: true,
},
exchange_rate: {
exchangeRate: {
name: 'manual_journal.field.exchange_rate',
type: 'number',
exportable: true,
},
description: {
name: 'manual_journal.field.description',
type: 'text',
exportable: true,
},
publish: {
name: 'Publish',
type: 'boolean',
exportable: true,
entries: {
name: 'Entries',
type: 'collection',
collectionOf: 'object',
columns: {
credit: {
name: 'Credit',
type: 'text',
},
debit: {
name: 'Debit',
type: 'text',
},
account: {
name: 'Account',
accessor: 'account.name',
},
contact: {
name: 'Contact',
accessor: 'contact.displayName',
},
note: {
name: 'Note',
},
},
publish: {
name: 'Publish',
type: 'boolean',
},
publishedAt: {
name: 'Published At',
},
},
createdAt: {
name: 'Created At',
},
},
fields2: {

View File

@@ -5,6 +5,8 @@ export default {
sortField: 'estimate_date',
},
exportable: true,
exportFlattenOn: 'entries',
importable: true,
importAggregator: 'group',
importAggregateOn: 'entries',
@@ -131,6 +133,33 @@ export default {
type: 'boolean',
exportable: true,
},
entries: {
name: 'Entries',
accessor: 'entries',
type: 'collection',
collectionOf: 'object',
columns: {
itemName: {
name: 'Item Name',
accessor: 'item.name',
},
rate: {
name: 'Item Rate',
accessor: 'rateFormatted',
},
quantity: {
name: 'Item Quantity',
accessor: 'quantityFormatted',
},
description: {
name: 'Item Description',
},
amount: {
name: 'Item Amount',
accessor: 'totalFormatted',
},
},
},
},
fields2: {
customerId: {
@@ -191,7 +220,7 @@ export default {
relationModel: 'Item',
relationImportMatch: ['name', 'code'],
required: true,
importHint: "Matches the item name or code."
importHint: 'Matches the item name or code.',
},
rate: {
name: 'invoice.field.rate',

View File

@@ -5,6 +5,8 @@ export default {
sortField: 'created_at',
},
exportable: true,
exportFlattenOn: 'entries',
importable: true,
importAggregator: 'group',
importAggregateOn: 'entries',
@@ -125,7 +127,7 @@ export default {
},
paidAmount: {
name: 'Paid Amount',
accessor: 'paymentAmountFormatted'
accessor: 'paymentAmountFormatted',
},
dueAmount: {
name: 'Due Amount',
@@ -143,6 +145,33 @@ export default {
name: 'invoice.field.delivered',
type: 'boolean',
},
entries: {
name: 'Entries',
accessor: 'entries',
type: 'collection',
collectionOf: 'object',
columns: {
itemName: {
name: 'Item Name',
accessor: 'item.name',
},
rate: {
name: 'Item Rate',
accessor: 'rateFormatted',
},
quantity: {
name: 'Item Quantity',
accessor: 'quantityFormatted',
},
description: {
name: 'Item Description',
},
amount: {
name: 'Item Amount',
accessor: 'totalFormatted',
},
},
},
},
fields2: {
invoiceDate: {

View File

@@ -5,6 +5,8 @@ export default {
sortField: 'created_at',
},
exportable: true,
exportFlattenOn: 'entries',
importable: true,
importAggregator: 'group',
importAggregateOn: 'entries',
@@ -117,10 +119,6 @@ export default {
name: 'receipt.field.statement',
type: 'text',
},
createdAt: {
name: 'receipt.field.created_at',
type: 'date',
},
status: {
name: 'receipt.field.status',
type: 'enumeration',
@@ -130,6 +128,37 @@ export default {
],
exportable: true,
},
entries: {
name: 'Entries',
accessor: 'entries',
type: 'collection',
collectionOf: 'object',
columns: {
itemName: {
name: 'Item Name',
accessor: 'item.name',
},
rate: {
name: 'Item Rate',
accessor: 'rateFormatted',
},
quantity: {
name: 'Item Quantity',
accessor: 'quantityFormatted',
},
description: {
name: 'Item Description',
},
amount: {
name: 'Item Amount',
accessor: 'totalFormatted',
},
},
},
createdAt: {
name: 'receipt.field.created_at',
type: 'date',
},
},
fields2: {
receiptDate: {

View File

@@ -95,71 +95,57 @@ export default {
firstName: {
name: 'vendor.field.first_name',
type: 'text',
exportable: true,
},
lastName: {
name: 'vendor.field.last_name',
type: 'text',
exportable: true,
},
displayName: {
name: 'vendor.field.display_name',
type: 'text',
exportable: true,
},
email: {
name: 'vendor.field.email',
type: 'text',
exportable: true,
},
workPhone: {
name: 'vendor.field.work_phone',
type: 'text',
exportable: true,
},
personalPhone: {
name: 'vendor.field.personal_phone',
type: 'text',
exportable: true,
},
companyName: {
name: 'vendor.field.company_name',
type: 'text',
exportable: true,
},
website: {
name: 'vendor.field.website',
type: 'text',
exportable: true,
},
createdAt: {
name: 'vendor.field.created_at',
type: 'date',
exportable: true,
},
balance: {
name: 'vendor.field.balance',
type: 'number',
exportable: true,
},
openingBalance: {
name: 'vendor.field.opening_balance',
type: 'number',
exportable: true,
},
openingBalanceAt: {
name: 'vendor.field.opening_balance_at',
type: 'date',
exportable: true,
},
currencyCode: {
name: 'vendor.field.currency',
type: 'text',
exportable: true,
},
status: {
name: 'vendor.field.status',
exportable: true,
},
note: {
name: 'vendor.field.note',
type: 'text',
},
// Billing Address
billingAddress1: {
@@ -246,7 +232,12 @@ export default {
column: 'shipping_address_phone',
type: 'text',
exportable: true,
}
},
createdAt: {
name: 'vendor.field.created_at',
type: 'date',
exportable: true,
},
},
fields2: {
firstName: {

View File

@@ -13,10 +13,13 @@ export default {
sortField: 'name',
},
exportable: true,
exportFlattenOn: 'entries',
importable: true,
importAggregator: 'group',
importAggregateOn: 'entries',
importAggregateBy: 'vendorCreditNumber',
fields: {
vendor: {
name: 'vendor_credit.field.vendor',
@@ -99,6 +102,22 @@ export default {
name: 'Vendor Credit Date',
type: 'date',
},
amount: {
name: 'Amount',
accessor: 'formattedAmount',
},
creditRemaining: {
name: 'Credits Remaining',
accessor: 'formattedCreditsRemaining',
},
refundedAmount: {
name: 'Refunded Amount',
accessor: 'refundedAmount',
},
invoicedAmount: {
name: 'Invoiced Amount',
accessor: 'formattedInvoicedAmount',
},
note: {
name: 'Note',
type: 'text',
@@ -107,6 +126,32 @@ export default {
name: 'Open',
type: 'boolean',
},
entries: {
name: 'Entries',
type: 'collection',
collectionOf: 'object',
columns: {
itemName: {
name: 'Item Name',
accessor: 'item.name',
},
rate: {
name: 'Item Rate',
accessor: 'rateFormatted',
},
quantity: {
name: 'Item Quantity',
accessor: 'quantityFormatted',
},
description: {
name: 'Item Description',
},
amount: {
name: 'Item Amount',
accessor: 'totalFormatted',
},
},
},
},
fields2: {
vendorId: {