fix: resource advanced view filter.

This commit is contained in:
Ahmed Bouhuolia
2020-09-16 21:41:09 +02:00
parent a22c8395f3
commit ca92c925a9
72 changed files with 997 additions and 2324 deletions

View File

@@ -1,11 +0,0 @@
exports.up = function (knex) {
return knex.schema.createTable('resources', (table) => {
table.increments();
table.string('name');
});
};
exports.down = function (knex) {
return knex.schema.dropTable('resources');
};

View File

@@ -1,21 +0,0 @@
exports.up = function (knex) {
return knex.schema.createTable('resource_fields', (table) => {
table.increments();
table.string('label_name');
table.string('key');
table.string('data_type');
table.string('help_text');
table.string('default');
table.boolean('active');
table.boolean('predefined');
table.boolean('builtin').defaultTo(false);
table.boolean('columnable');
table.integer('index');
table.string('data_resource');
table.json('options');
table.integer('resource_id').unsigned();
}).raw('ALTER TABLE `RESOURCE_FIELDS` AUTO_INCREMENT = 1000');
};
exports.down = (knex) => knex.schema.dropTableIfExists('resource_fields');

View File

@@ -3,7 +3,7 @@ exports.up = function (knex) {
return knex.schema.createTable('view_has_columns', (table) => {
table.increments();
table.integer('view_id').unsigned();
table.integer('field_id').unsigned();
table.string('field_key');
table.integer('index').unsigned();
}).raw('ALTER TABLE `ITEMS_CATEGORIES` AUTO_INCREMENT = 1000');
};

View File

@@ -0,0 +1,13 @@
exports.up = function (knex) {
return knex.schema.createTable('view_roles', (table) => {
table.increments();
table.integer('index');
table.string('field_key');
table.string('comparator');
table.string('value');
table.integer('view_id').unsigned();
}).raw('ALTER TABLE `VIEW_ROLES` AUTO_INCREMENT = 1000');
};
exports.down = (knex) => knex.schema.dropTableIfExists('view_roles');

View File

@@ -4,7 +4,7 @@ exports.up = function (knex) {
table.increments();
table.string('name');
table.boolean('predefined');
table.integer('resource_id').unsigned().references('id').inTable('resources');
table.string('resource_model');
table.boolean('favourite');
table.string('roles_logic_expression');
table.timestamps();

View File

@@ -1,14 +0,0 @@
exports.up = function(knex) {
return knex.schema.createTable('resource_custom_fields_metadata', (table) => {
table.increments();
table.integer('resource_id').unsigned();
table.integer('resource_item_id').unsigned();
table.string('key');
table.string('value');
});
};
exports.down = function(knex) {
return knex.schema.dropTableIfExists('resource_custom_fields_metadata');
};

View File

@@ -0,0 +1,37 @@
exports.up = (knex) => {
// Deletes ALL existing entries
return knex('views').del()
.then(() => {
// Inserts seed entries
return knex('views').insert([
// Accounts
{ id: 15, name: 'Inactive', roles_logic_expression: '1', resource_model: 'Account', predefined: true },
{ id: 1, name: 'Assets', roles_logic_expression: '1', resource_model: 'Account', predefined: true },
{ id: 2, name: 'Liabilities', roles_logic_expression: '1', resource_model: 'Account', predefined: true },
{ id: 3, name: 'Equity', roles_logic_expression: '1', resource_model: 'Account', predefined: true },
{ id: 4, name: 'Income', roles_logic_expression: '1', resource_model: 'Account', predefined: true },
{ id: 5, name: 'Expenses', roles_logic_expression: '1', resource_model: 'Account', predefined: true },
// Items
// { id: 6, name: 'Services', roles_logic_expression: '1', resource_id: 2, predefined: true },
// { id: 7, name: 'Inventory', roles_logic_expression: '1', resource_id: 2, predefined: true },
// { id: 8, name: 'Non-Inventory', roles_logic_expression: '1', resource_id: 2, predefined: true },
// // Manual Journals
// { id: 9, name: 'Journal', roles_logic_expression: '1', resource_id: 4, predefined: true },
// { id: 10, name: 'Credit', roles_logic_expression: '1', resource_id: 4, predefined: true },
// { id: 11, name: 'Reconciliation', roles_logic_expression: '1', resource_id: 4, predefined: true },
// // Expenses
// { id: 12, name: 'Interest', roles_logic_expression: '1', resource_id: 3, predefined: false, },
// { id: 13, name: 'Depreciation', roles_logic_expression: '1', resource_id: 3, predefined: false, },
// { id: 14, name: 'Payroll', roles_logic_expression: '1', resource_id: '3', predefined: false },
]);
});
};
exports.down = (knex) => {
};

View File

@@ -0,0 +1,34 @@
exports.up = (knex) => {
// Deletes ALL existing entries
return knex('view_roles').del()
.then(() => {
// Inserts seed entries
return knex('view_roles').insert([
// Accounts
{ id: 1, field_key: 'type', index: 1, comparator: 'equals', value: 'asset', view_id: 1 },
{ id: 2, field_key: 'type', index: 1, comparator: 'equals', value: 'liability', view_id: 2 },
{ id: 3, field_key: 'type', index: 1, comparator: 'equals', value: 'equity', view_id: 3 },
{ id: 4, field_key: 'type', index: 1, comparator: 'equals', value: 'income', view_id: 4 },
{ id: 5, field_key: 'type', index: 1, comparator: 'equals', value: 'expense', view_id: 5 },
{ id: 12, field_key: 'active', index: 1, comparator: 'is', value: 1, view_id: 15 },
// Items.
// { id: 6, field_id: 12, index: 1, comparator: 'equals', value: 'service', view_id: 6 },
// { id: 7, field_id: 12, index: 1, comparator: 'equals', value: 'inventory', view_id: 7 },
// { id: 8, field_id: 12, index: 1, comparator: 'equals', value: 'non-inventory', view_id: 8 },
// // Manual Journals.
// { id: 9, field_id: 26, index: 1, comparator: 'equals', value: 'Journal', view_id: 9 },
// { id: 10, field_id: 26, index: 1, comparator: 'equals', value: 'CreditNote', view_id: 10 },
// { id: 11, field_id: 26, index: 1, comparator: 'equals', value: 'Reconciliation', view_id: 11 },
// Expenses
// { id: 12, field_id: index: }
]);
});
};
exports.down = (knex) => {
}

View File

@@ -1,177 +0,0 @@
exports.seed = (knex) => {
console.log(knex.tenantId);
// Deletes ALL existing entries
return knex('accounts').del()
.then(() => {
// Inserts seed entries
return knex('accounts').insert([
{
id: 1,
name: 'Petty Cash',
slug: 'petty-cash',
account_type_id: 2,
parent_account_id: null,
code: '1000',
description: '',
active: 1,
index: 1,
predefined: 1,
},
{
id: 2,
name: 'Bank',
slug: 'bank',
account_type_id: 2,
parent_account_id: null,
code: '2000',
description: '',
active: 1,
index: 1,
predefined: 1,
},
{
id: 3,
name: 'Other Income',
slug: 'other-income',
account_type_id: 7,
parent_account_id: null,
code: '1000',
description: '',
active: 1,
index: 1,
predefined: 1,
},
{
id: 4,
name: 'Interest Income',
slug: 'interest-income',
account_type_id: 7,
parent_account_id: null,
code: '1000',
description: '',
active: 1,
index: 1,
predefined: 1,
},
{
id: 5,
name: 'Opening Balance',
slug: 'opening-balance',
account_type_id: 5,
parent_account_id: null,
code: '1000',
description: '',
active: 1,
index: 1,
predefined: 1,
},
{
id: 6,
name: 'Depreciation Expense',
slug: 'depreciation-expense',
account_type_id: 6,
parent_account_id: null,
code: '1000',
description: '',
active: 1,
index: 1,
predefined: 1,
},
{
id: 7,
name: 'Interest Expense',
slug: 'interest-expense',
account_type_id: 6,
parent_account_id: null,
code: '1000',
description: '',
active: 1,
index: 1,
predefined: 1,
},
{
id: 8,
name: 'Payroll Expenses',
slug: 'payroll-expenses',
account_type_id: 6,
parent_account_id: null,
code: '1000',
description: '',
active: 1,
index: 1,
predefined: 1,
},
{
id: 9,
name: 'Other Expenses',
slug: 'other-expenses',
account_type_id: 6,
parent_account_id: null,
code: '1000',
description: '',
active: 1,
index: 1,
predefined: 1,
},
{
id: 10,
name: 'Accounts Receivable',
slug: 'accounts-receivable',
account_type_id: 8,
parent_account_id: null,
code: '1000',
description: '',
active: 1,
index: 1,
predefined: 1,
},
{
id: 11,
name: 'Accounts Payable',
slug: 'accounts-payable',
account_type_id: 9,
parent_account_id: null,
code: '1000',
description: '',
active: 1,
index: 1,
predefined: 1,
},
{
id: 12,
name: 'Cost of Goods Sold (COGS)',
slug: 'cost-of-goods-sold',
account_type_id: 12,
predefined: 1,
parent_account_id: null,
index: 1,
active: 1,
description: 1,
},
{
id: 13,
name: 'Inventory Asset',
slug: 'inventory-asset',
account_type_id: 14,
predefined: 1,
parent_account_id: null,
index: 1,
active: 1,
description: '',
},
{
id: 14,
name: 'Sales of Product Income',
slug: 'sales-of-product-income',
account_type_id: 7,
predefined: 1,
parent_account_id: null,
index: 1,
active: 1,
description: '',
}
]);
});
};

View File

@@ -1,67 +0,0 @@
exports.seed = function (knex) {
// Deletes ALL existing entries
return knex('resource_fields')
.del()
.then(() => {
// Inserts seed entries
return knex('resource_fields').insert([
{
id: 1,
label_name: 'Name',
key: 'name',
data_type: '',
active: 1,
predefined: 1,
},
{
id: 2,
label_name: 'Code',
key: 'code',
data_type: '',
active: 1,
predefined: 1,
},
{
id: 3,
label_name: 'Account Type',
key: 'type',
data_type: '',
active: 1,
predefined: 1,
data_resource_id: 8,
},
{
id: 4,
label_name: 'Description',
key: 'description',
data_type: '',
active: 1,
predefined: 1,
},
{
id: 5,
label_name: 'Account Normal',
key: 'normal',
data_type: 'string',
active: 1,
predefined: 1,
},
{
id: 6,
label_name: 'Root Account Type',
key: 'root_type',
data_type: 'string',
active: 1,
predefined: 1,
},
{
id: 7,
label_name: 'Active',
key: 'active',
data_type: 'boolean',
active: 1,
predefined: 1,
},
]);
});
};

View File

@@ -1,25 +0,0 @@
exports.seed = (knex) => {
// Deletes ALL existing entries
return knex('resources').del()
.then(() => {
// Inserts seed entries
return knex('resources').insert([
{ id: 1, name: 'accounts' },
{ id: 8, name: 'accounts_types' },
{ id: 2, name: 'items' },
{ id: 3, name: 'expenses' },
{ id: 4, name: 'manual_journals' },
{ id: 5, name: 'items_categories' },
{ id: 6, name: 'customers' },
{ id: 7, name: 'vendors' },
{ id: 9, name: 'sales_estimates' },
{ id: 10, name: 'sales_receipts' },
{ id: 11, name: 'sales_invoices' },
{ id: 12, name: 'sales_payment_receives' },
{ id: 13, name: 'bills' },
{ id: 14, name: 'bill_payments' },
{ id: 16, name: 'payment_receives' },
]);
});
};

View File

@@ -1,424 +0,0 @@
exports.seed = (knex) => {
return knex('resource_fields').del()
.then(() => {
return knex('resource_fields').insert([
// Accounts
{
id: 1,
resource_id: 1,
label_name: 'Account Name',
key: 'name',
data_type: 'textbox',
predefined: 1,
columnable: true,
},
{
id: 2,
resource_id: 1,
label_name: 'Code',
key: 'code',
data_type: 'textbox',
predefined: 1,
columnable: true,
},
{
id: 3,
resource_id: 1,
label_name: 'Type',
key: 'type',
data_type: 'options',
predefined: 1,
columnable: true,
data_resource: 'accounts_types',
},
{
id: 5,
resource_id: 1,
label_name: 'Description',
data_type: 'textarea',
key: 'description',
predefined: 1,
columnable: true,
},
{
id: 6,
resource_id: 1,
label_name: 'Root type',
data_type: 'textbox',
key: 'root_type',
predefined: 1,
columnable: true,
},
{
id: 16,
resource_id: 1,
label_name: 'Created at',
data_type: 'date',
key: 'created_at',
predefined: 1,
columnable: true,
},
{
id: 17,
resource_id: 1,
data_type: 'boolean',
label_name: 'Active',
key: 'active',
predefined: 1,
columnable: true,
},
{
id: 31,
resource_id: 1,
data_type: 'numeric',
label_name: 'Balance',
key: 'balance',
predefined: 1,
columnable: true,
},
{
id: 32,
resource_id: 1,
data_type: 'options',
label_name: 'Currency',
key: 'currency',
predefined: 1,
columnable: true,
data_resource: 'currencies',
},
{
id: 33,
resource_id: 1,
data_type: 'options',
label_name: 'Normal',
key: 'normal',
predefined: 1,
columnable: true,
options: JSON.stringify([
{ key: 'credit', label: 'Credit' },
{ key: 'debit', label: 'Debit' },
])
},
// Manual Journals
{
id: 18,
resource_id: 4,
data_type: 'date',
label_name: 'Date',
key: 'date',
predefined: 1,
columnable: true,
},
{
id: 19,
resource_id: 4,
data_type: 'date',
label_name: 'Created At',
key: 'created_at',
predefined: 1,
columnable: true,
},
{
id: 20,
resource_id: 4,
data_type: 'textbox',
label_name: 'Journal Number',
key: 'journal_number',
predefined: 1,
columnable: true,
},
{
id: 21,
resource_id: 4,
data_type: 'boolean',
label_name: 'Active',
key: 'status',
predefined: 1,
columnable: true,
},
{
id: 22,
resource_id: 4,
data_type: 'textbox',
label_name: 'Reference',
key: 'reference',
predefined: 1,
columnable: true,
},
{
id: 23,
resource_id: 4,
data_type: 'textbox',
label_name: 'Description',
key: 'description',
predefined: 1,
columnable: true,
},
{
id: 24,
resource_id: 4,
data_type: 'numeric',
label_name: 'Amount',
key: 'amount',
predefined: 1,
columnable: true,
},
{
id: 25,
resource_id: 4,
data_type: 'optons',
label_name: 'User',
key: 'user',
predefined: 1,
columnable: true,
data_resource: 'users',
},
{
id: 26,
resource_id: 4,
data_type: 'textbox',
label_name: 'Journal Type',
key: 'journal_type',
predefined: 1,
columnable: true,
},
// Expenses
{
id: 7,
resource_id: 3,
label_name: 'Payment Date',
key: 'payment_date',
data_type: 'date',
predefined: 1,
columnable: true,
},
{
id: 9,
resource_id: 3,
key: 'payment_account',
label_name: 'Payment Account',
data_type: 'options',
predefined: 1,
columnable: true,
data_resource: 'accounts',
},
{
id: 10,
resource_id: 3,
key: 'total_amount',
label_name: 'Amount',
data_type: 'numeric',
predefined: 1,
columnable: true,
},
{
id: 27,
resource_id: 3,
label_name: 'Reference No.',
key: 'reference_no',
data_type: 'textbox',
predefined: 1,
columnable: true,
},
{
id: 28,
resource_id: 3,
key: 'description',
label_name: 'Description',
data_type: 'textbox',
predefined: 1,
columnable: true,
},
{
id: 29,
resource_id: 3,
key: 'published',
label_name: 'Published',
data_type: 'checkbox',
predefined: 1,
columnable: true,
},
{
id: 30,
resource_id: 3,
key: 'user',
data_type: 'options',
label_name: 'User',
predefined: 1,
columnable: true,
data_resource: 'users',
},
// Items
{
id: 11,
resource_id: 2,
label_name: 'Name',
key: 'name',
data_type: 'textbox',
predefined: 1,
columnable: true,
},
{
id: 12,
resource_id: 2,
label_name: 'Type',
key: 'type',
data_type: 'textbox',
predefined: 1,
columnable: true,
},
// Sales Estimates
{
label_name: 'Customer name',
key: 'customer_name',
},
{
label_name: 'Amount',
key: 'amount',
},
{
label_name: 'Estimate number',
key: 'estimate_number',
},
{
label_name: 'Estimate date',
key: 'estimate_date',
},
{
label_name: 'Expiration date',
key: 'expiration_date',
},
{
label_name: 'Reference',
key: 'reference',
},
{
label_name: 'Terms and conditions',
key: 'terms_conditions',
},
{
label_name: 'Note',
key: 'note',
},
// Sales invoices
// {
// label_name: 'Customer name',
// ley: 'customer_name',
// },
// {
// label_name: 'Amount',
// ley: 'amount',
// },
// {
// label_name: 'Invoice number',
// ley: 'invoice_no',
// },
// {
// label_name: 'Invoice date',
// ley: 'invoice_date',
// },
// {
// label_name: 'Reference',
// ley: 'reference',
// },
// {
// label_name: 'Payment amount',
// ley: 'payment_amount',
// },
// {
// label_name: 'Invoice message',
// ley: 'invoice_no',
// },
// {
// label_name: 'Terms and conditions',
// key: 'terms_conditions',
// },
// // Sales receipts
// {
// label_name: 'Deposit account',
// key: 'deposit_account',
// },
// {
// label_name: 'Customer name',
// key: 'customer_name',
// },
// {
// label_name: 'Receipt date',
// key: 'receipt_date',
// },
// {
// label_name: 'Reference No',
// key: 'reference',
// },
// {
// label_name: 'Receipt message',
// key: 'receipt_message',
// },
// {
// label_name: 'Sent to email',
// key: 'email_send_to',
// },
// // Payment Receives
// {
// label_name: 'Customer name',
// key: 'customer_name',
// },
// {
// label_name: 'Payment date',
// key: 'payment_date',
// },
// {
// label_name: 'Amount',
// key: 'amount',
// },
// {
// label_name: 'Reference No',
// key: 'reference',
// },
// {
// label_name: 'Deposit account',
// key: 'deposit_account',
// },
// {
// label_name: 'Payment receive no.',
// key: 'payment_receive_no',
// },
// // Purchases bills.
// {
// label_name: 'Bill number',
// key: 'bill_number'
// },
// {
// label_name: 'Bill date',
// key: 'bill_date'
// },
// {
// label_name: 'Amount',
// key: 'amount'
// },
// {
// label_name: 'Vendor name',
// key: 'vendor_name'
// },
// {
// label_name: 'Due date',
// key: 'due_date'
// },
// {
// label_name: 'Note',
// key: 'note'
// },
]);
});
};

View File

@@ -1,18 +0,0 @@
exports.seed = (knex) => {
return knex('users').del()
.then(() => {
return knex('users').insert([
{
first_name: 'Ahmed',
last_name: 'Mohamed',
email: 'admin@admin.com',
phone_number: '0920000000',
password: '$2b$10$LGSMrezP8IHBb/cNMlc1ZOKA59Fc9rY0IEk2u.iuF/y6yS2YlGP7i', // test
active: 1,
language: 'ar',
created_at: new Date(),
},
]);
});
};

View File

@@ -1,32 +0,0 @@
exports.seed = (knex) => {
// Deletes ALL existing entries
return knex('views').del()
.then(() => {
// Inserts seed entries
return knex('views').insert([
// Accounts
{ id: 15, name: 'Inactive', roles_logic_expression: '1', resource_id: 1, predefined: true },
{ id: 1, name: 'Assets', roles_logic_expression: '1', resource_id: 1, predefined: true },
{ id: 2, name: 'Liabilities', roles_logic_expression: '1', resource_id: 1, predefined: true },
{ id: 3, name: 'Equity', roles_logic_expression: '1', resource_id: 1, predefined: true },
{ id: 4, name: 'Income', roles_logic_expression: '1', resource_id: 1, predefined: true },
{ id: 5, name: 'Expenses', roles_logic_expression: '1', resource_id: 1, predefined: true },
// Items
{ id: 6, name: 'Services', roles_logic_expression: '1', resource_id: 2, predefined: true },
{ id: 7, name: 'Inventory', roles_logic_expression: '1', resource_id: 2, predefined: true },
{ id: 8, name: 'Non-Inventory', roles_logic_expression: '1', resource_id: 2, predefined: true },
// Manual Journals
{ id: 9, name: 'Journal', roles_logic_expression: '1', resource_id: 4, predefined: true },
{ id: 10, name: 'Credit', roles_logic_expression: '1', resource_id: 4, predefined: true },
{ id: 11, name: 'Reconciliation', roles_logic_expression: '1', resource_id: 4, predefined: true },
// Expenses
{ id: 12, name: 'Interest', roles_logic_expression: '1', resource_id: 3, predefined: false, },
{ id: 13, name: 'Depreciation', roles_logic_expression: '1', resource_id: 3, predefined: false, },
{ id: 14, name: 'Payroll', roles_logic_expression: '1', resource_id: '3', predefined: false },
]);
});
};

View File

@@ -1,30 +0,0 @@
exports.seed = (knex) => {
// Deletes ALL existing entries
return knex('view_roles').del()
.then(() => {
// Inserts seed entries
return knex('view_roles').insert([
// Accounts
{ id: 1, field_id: 6, index: 1, comparator: 'equals', value: 'asset', view_id: 1 },
{ id: 2, field_id: 6, index: 1, comparator: 'equals', value: 'liability', view_id: 2 },
{ id: 3, field_id: 6, index: 1, comparator: 'equals', value: 'equity', view_id: 3 },
{ id: 4, field_id: 6, index: 1, comparator: 'equals', value: 'income', view_id: 4 },
{ id: 5, field_id: 6, index: 1, comparator: 'equals', value: 'expense', view_id: 5 },
{ id: 12, field_id: 17, index: 1, comparator: 'is', value: 1, view_id: 15 },
// Items.
{ id: 6, field_id: 12, index: 1, comparator: 'equals', value: 'service', view_id: 6 },
{ id: 7, field_id: 12, index: 1, comparator: 'equals', value: 'inventory', view_id: 7 },
{ id: 8, field_id: 12, index: 1, comparator: 'equals', value: 'non-inventory', view_id: 8 },
// Manual Journals.
{ id: 9, field_id: 26, index: 1, comparator: 'equals', value: 'Journal', view_id: 9 },
{ id: 10, field_id: 26, index: 1, comparator: 'equals', value: 'CreditNote', view_id: 10 },
{ id: 11, field_id: 26, index: 1, comparator: 'equals', value: 'Reconciliation', view_id: 11 },
// Expenses
// { id: 12, field_id: index: }
]);
});
};