309 lines
7.1 KiB
TypeScript
309 lines
7.1 KiB
TypeScript
export const ItemMeta = {
|
|
importable: true,
|
|
exportable: true,
|
|
defaultFilterField: 'name',
|
|
defaultSort: {
|
|
sortField: 'name',
|
|
sortOrder: 'DESC',
|
|
},
|
|
print: {
|
|
pageTitle: 'Items',
|
|
},
|
|
fields: {
|
|
type: {
|
|
name: 'item.field.type',
|
|
column: 'type',
|
|
fieldType: 'enumeration',
|
|
options: [
|
|
{ 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: 'item.field.name',
|
|
column: 'name',
|
|
fieldType: 'text',
|
|
},
|
|
code: {
|
|
name: 'item.field.code',
|
|
column: 'code',
|
|
fieldType: 'text',
|
|
},
|
|
sellable: {
|
|
name: 'item.field.sellable',
|
|
column: 'sellable',
|
|
fieldType: 'boolean',
|
|
},
|
|
purchasable: {
|
|
name: 'item.field.purchasable',
|
|
column: 'purchasable',
|
|
fieldType: 'boolean',
|
|
},
|
|
sell_price: {
|
|
name: 'item.field.sell_price',
|
|
column: 'sell_price',
|
|
fieldType: 'number',
|
|
},
|
|
cost_price: {
|
|
name: 'item.field.cost_price',
|
|
column: 'cost_price',
|
|
fieldType: 'number',
|
|
},
|
|
cost_account: {
|
|
name: 'item.field.cost_account',
|
|
column: 'cost_account_id',
|
|
fieldType: 'relation',
|
|
|
|
relationType: 'enumeration',
|
|
relationKey: 'costAccount',
|
|
|
|
relationEntityLabel: 'name',
|
|
relationEntityKey: 'slug',
|
|
},
|
|
sell_account: {
|
|
name: 'item.field.sell_account',
|
|
column: 'sell_account_id',
|
|
fieldType: 'relation',
|
|
|
|
relationType: 'enumeration',
|
|
relationKey: 'sellAccount',
|
|
|
|
relationEntityLabel: 'name',
|
|
relationEntityKey: 'slug',
|
|
},
|
|
inventory_account: {
|
|
name: 'item.field.inventory_account',
|
|
column: 'inventory_account_id',
|
|
|
|
relationType: 'enumeration',
|
|
relationKey: 'inventoryAccount',
|
|
|
|
relationEntityLabel: 'name',
|
|
relationEntityKey: 'slug',
|
|
},
|
|
sell_description: {
|
|
name: 'Sell description',
|
|
column: 'sell_description',
|
|
fieldType: 'text',
|
|
},
|
|
purchase_description: {
|
|
name: 'Purchase description',
|
|
column: 'purchase_description',
|
|
fieldType: 'text',
|
|
},
|
|
quantity_on_hand: {
|
|
name: 'item.field.quantity_on_hand',
|
|
column: 'quantity_on_hand',
|
|
fieldType: 'number',
|
|
},
|
|
note: {
|
|
name: 'item.field.note',
|
|
column: 'note',
|
|
fieldType: 'text',
|
|
},
|
|
category: {
|
|
name: 'item.field.category',
|
|
column: 'category_id',
|
|
|
|
relationType: 'enumeration',
|
|
relationKey: 'category',
|
|
|
|
relationEntityLabel: 'name',
|
|
relationEntityKey: 'id',
|
|
},
|
|
active: {
|
|
name: 'item.field.active',
|
|
column: 'active',
|
|
fieldType: 'boolean',
|
|
filterable: false,
|
|
},
|
|
created_at: {
|
|
name: 'item.field.created_at',
|
|
column: 'created_at',
|
|
columnType: 'date',
|
|
fieldType: 'date',
|
|
},
|
|
},
|
|
columns: {
|
|
type: {
|
|
name: 'item.field.type',
|
|
type: 'text',
|
|
exportable: true,
|
|
accessor: 'typeFormatted',
|
|
},
|
|
name: {
|
|
name: 'item.field.name',
|
|
type: 'text',
|
|
exportable: true,
|
|
},
|
|
code: {
|
|
name: 'item.field.code',
|
|
type: 'text',
|
|
exportable: true,
|
|
},
|
|
sellable: {
|
|
name: 'item.field.sellable',
|
|
type: 'boolean',
|
|
exportable: true,
|
|
printable: false,
|
|
},
|
|
purchasable: {
|
|
name: 'item.field.purchasable',
|
|
type: 'boolean',
|
|
exportable: true,
|
|
printable: false,
|
|
},
|
|
sellPrice: {
|
|
name: 'item.field.sell_price',
|
|
type: 'number',
|
|
exportable: true,
|
|
},
|
|
costPrice: {
|
|
name: 'item.field.cost_price',
|
|
type: 'number',
|
|
exportable: true,
|
|
},
|
|
costAccount: {
|
|
name: 'item.field.cost_account',
|
|
type: 'text',
|
|
accessor: 'costAccount.name',
|
|
exportable: true,
|
|
printable: false,
|
|
},
|
|
sellAccount: {
|
|
name: 'item.field.sell_account',
|
|
type: 'text',
|
|
accessor: 'sellAccount.name',
|
|
exportable: true,
|
|
printable: false,
|
|
},
|
|
inventoryAccount: {
|
|
name: 'item.field.inventory_account',
|
|
type: 'text',
|
|
accessor: 'inventoryAccount.name',
|
|
exportable: true,
|
|
},
|
|
sellDescription: {
|
|
name: 'Sell description',
|
|
type: 'text',
|
|
exportable: true,
|
|
printable: false,
|
|
},
|
|
purchaseDescription: {
|
|
name: 'Purchase description',
|
|
type: 'text',
|
|
exportable: true,
|
|
printable: false,
|
|
},
|
|
quantityOnHand: {
|
|
name: 'item.field.quantity_on_hand',
|
|
type: 'number',
|
|
exportable: true,
|
|
},
|
|
note: {
|
|
name: 'item.field.note',
|
|
type: 'text',
|
|
exportable: true,
|
|
},
|
|
category: {
|
|
name: 'item.field.category',
|
|
type: 'text',
|
|
accessor: 'category.name',
|
|
exportable: true,
|
|
},
|
|
active: {
|
|
name: 'item.field.active',
|
|
fieldType: 'boolean',
|
|
exportable: true,
|
|
printable: false,
|
|
},
|
|
createdAt: {
|
|
name: 'item.field.created_at',
|
|
type: 'date',
|
|
exportable: true,
|
|
printable: false,
|
|
},
|
|
},
|
|
fields2: {
|
|
type: {
|
|
name: 'item.field.type',
|
|
fieldType: 'enumeration',
|
|
options: [
|
|
{ key: 'inventory', label: 'item.field.type.inventory' },
|
|
{ key: 'service', label: 'item.field.type.service' },
|
|
{ key: 'non-inventory', label: 'item.field.type.non-inventory' },
|
|
],
|
|
required: true,
|
|
},
|
|
name: {
|
|
name: 'item.field.name',
|
|
fieldType: 'text',
|
|
required: true,
|
|
},
|
|
code: {
|
|
name: 'item.field.code',
|
|
fieldType: 'text',
|
|
},
|
|
sellable: {
|
|
name: 'item.field.sellable',
|
|
fieldType: 'boolean',
|
|
},
|
|
purchasable: {
|
|
name: 'item.field.purchasable',
|
|
fieldType: 'boolean',
|
|
},
|
|
sellPrice: {
|
|
name: 'item.field.sell_price',
|
|
fieldType: 'number',
|
|
},
|
|
costPrice: {
|
|
name: 'item.field.cost_price',
|
|
fieldType: 'number',
|
|
},
|
|
costAccountId: {
|
|
name: 'item.field.cost_account',
|
|
fieldType: 'relation',
|
|
relationModel: 'Account',
|
|
relationImportMatch: ['name', 'code'],
|
|
importHint: 'Matches the account name or code.',
|
|
},
|
|
sellAccountId: {
|
|
name: 'item.field.sell_account',
|
|
fieldType: 'relation',
|
|
relationModel: 'Account',
|
|
relationImportMatch: ['name', 'code'],
|
|
importHint: 'Matches the account name or code.',
|
|
},
|
|
inventoryAccountId: {
|
|
name: 'item.field.inventory_account',
|
|
fieldType: 'relation',
|
|
relationModel: 'Account',
|
|
relationImportMatch: ['name', 'code'],
|
|
importHint: 'Matches the account name or code.',
|
|
},
|
|
sellDescription: {
|
|
name: 'Sell Description',
|
|
fieldType: 'text',
|
|
},
|
|
purchaseDescription: {
|
|
name: 'Purchase Description',
|
|
fieldType: 'text',
|
|
},
|
|
note: {
|
|
name: 'item.field.note',
|
|
fieldType: 'text',
|
|
},
|
|
categoryId: {
|
|
name: 'item.field.category',
|
|
fieldType: 'relation',
|
|
relationModel: 'ItemCategory',
|
|
relationImportMatch: ['name'],
|
|
importHint: 'Matches the category name.',
|
|
},
|
|
active: {
|
|
name: 'item.field.active',
|
|
fieldType: 'boolean',
|
|
},
|
|
},
|
|
}; |