feat(contacts): auto-complete contacts.

feat(items): auto-complete items.
feat(resources): resource columns feat.
feat(contacts): retrieve specific contact details.
This commit is contained in:
a.bouhuolia
2021-03-03 11:35:42 +02:00
parent d51d9a5038
commit ce875ccf4e
37 changed files with 693 additions and 219 deletions

View File

@@ -215,19 +215,11 @@ export default class Account extends TenantModel {
label: 'Account name',
column: 'name',
columnType: 'string',
fieldType: 'text',
},
type: {
label: 'Account type',
column: 'account_type_id',
relation: 'account_types.id',
relationColumn: 'account_types.key',
fieldType: 'options',
optionsResource: 'AccountType',
optionsKey: 'key',
optionsLabel: 'label',
column: 'account_type',
},
description: {
label: 'Description',

View File

@@ -74,13 +74,11 @@ export default class BillPayment extends TenantModel {
};
}
/**
* Resource fields.
*/
static get fields() {
return {
created_at: {
label: 'Created at',
column: 'created_at',
columnType: 'date',
},
vendor: {
lable: "Vendor name",
column: 'vendor_id',
@@ -96,7 +94,7 @@ export default class BillPayment extends TenantModel {
payment_account: {
label: "Payment account",
column: "payment_account_id",
relation: "accounts",
relation: "accounts.id",
relationColumn: "accounts.name",
fieldType: 'options',
@@ -116,7 +114,7 @@ export default class BillPayment extends TenantModel {
columnType: 'date',
fieldType: 'date',
},
reference: {
reference_no: {
label: "Reference No.",
column: "reference",
columnType: 'string',
@@ -127,7 +125,12 @@ export default class BillPayment extends TenantModel {
column: "description",
columnType: 'string',
fieldType: 'text',
}
},
created_at: {
label: 'Created at',
column: 'created_at',
columnType: 'date',
},
}
}
}

View File

@@ -165,12 +165,6 @@ export default class Expense extends TenantModel {
label: "Published",
column: "published",
},
user: {
label: "User",
column: "user_id",
relation: "users.id",
relationColumn: "users.id",
},
created_at: {
label: "Created at",
column: "created_at",

View File

@@ -79,4 +79,54 @@ export default class InventoryAdjustment extends TenantModel {
},
};
}
/**
* Model defined fields.
*/
static get fields() {
return {
date: {
label: 'Date',
column: 'date',
columnType: 'date',
},
type: {
label: 'Adjustment type',
column: 'type',
options: [
{ key: 'increment', label: 'Increment', },
{ key: 'decrement', label: 'Decrement' },
],
},
adjustment_account: {
column: 'adjustment_account_id',
},
reason: {
label: 'Reason',
column: 'reason',
},
reference_no: {
label: 'Reference No.',
column: 'reference_no',
},
description: {
label: 'Description',
column: 'description',
},
user: {
label: 'User',
column: 'user_id',
},
published_at: {
label: 'Published at',
column: 'published_at'
},
created_at: {
label: 'Created at',
column: 'created_at',
columnType: 'date',
fieldType: 'date',
},
};
}
}

View File

@@ -140,16 +140,19 @@ export default class Item extends TenantModel {
label: 'Cost account',
column: 'cost_account_id',
relation: 'accounts.id',
relationColumn: 'accounts.name',
},
sell_account: {
label: 'Sell account',
column: 'sell_account_id',
relation: 'accounts.id',
relationColumn: 'accounts.name',
},
inventory_account: {
label: "Inventory account",
column: 'inventory_account_id',
relation: 'accounts.id',
relationColumn: 'accounts.name',
},
sell_description: {
label: "Sell description",
@@ -170,18 +173,21 @@ export default class Item extends TenantModel {
category: {
label: "Category",
column: 'category_id',
relation: 'categories.id',
},
user: {
label: 'User',
column: 'user_id',
relation: 'users.id',
relationColumn: 'users.id',
relation: 'items_categories.id',
relationColumn: 'items_categories.name',
},
// user: {
// label: 'User',
// column: 'user_id',
// relation: 'users.id',
// relationColumn: 'users.',
// },
created_at: {
label: 'Created at',
column: 'created_at',
}
columnType: 'date',
fieldType: 'date',
},
};
}
}

View File

@@ -91,6 +91,11 @@ export default class ItemCategory extends TenantModel {
}],
columnType: 'string',
},
count: {
label: 'Count',
column: 'count',
sortQuery: this.sortCountQuery
},
created_at: {
label: 'Created at',
column: 'created_at',
@@ -98,4 +103,8 @@ export default class ItemCategory extends TenantModel {
},
};
}
static sortCountQuery(query, role) {
query.orderBy('count', role.order);
}
}

View File

@@ -1,5 +1,6 @@
import { Model } from 'objection';
import TenantModel from 'models/TenantModel';
import { query } from 'winston';
export default class ManualJournal extends TenantModel {
/**
@@ -20,9 +21,7 @@ export default class ManualJournal extends TenantModel {
* Virtual attributes.
*/
static get virtualAttributes() {
return [
'isPublished',
];
return ['isPublished'];
}
/**
@@ -33,6 +32,17 @@ export default class ManualJournal extends TenantModel {
return !!this.publishedAt;
}
/**
* Model modifiers.
*/
static get modifiers() {
return {
sortByStatus(query, order) {
query.orderByRaw(`PUBLISHED_AT IS NULL ${order}`);
},
};
}
/**
* Relationship mapping.
*/
@@ -51,7 +61,7 @@ export default class ManualJournal extends TenantModel {
},
filter(query) {
query.orderBy('index', 'ASC');
}
},
},
transactions: {
relation: Model.HasManyRelation,
@@ -77,8 +87,8 @@ export default class ManualJournal extends TenantModel {
},
filter(query) {
query.where('model_name', 'ManualJournal');
}
}
},
},
};
}
@@ -102,9 +112,10 @@ export default class ManualJournal extends TenantModel {
column: 'reference',
columnType: 'string',
},
status: {
label: 'Status',
column: 'status',
journal_type: {
label: 'Journal type',
column: 'journal_type',
columnType: 'string',
},
amount: {
label: 'Amount',
@@ -116,15 +127,12 @@ export default class ManualJournal extends TenantModel {
column: 'description',
columnType: 'string',
},
user: {
label: 'User',
column: 'user_id',
relation: 'users.id',
relationColumn: 'users.id',
},
journal_type: {
label: 'Journal type',
column: 'journal_type',
status: {
label: 'Status',
column: 'status',
sortQuery(query, role) {
query.modify('sortByStatus', role.order);
},
},
created_at: {
label: 'Created at',

View File

@@ -3,7 +3,7 @@ import TenantModel from 'models/TenantModel';
export default class PaymentReceive extends TenantModel {
/**
* Table name
* Table name.
*/
static get tableName() {
return 'payment_receives';
@@ -16,11 +16,14 @@ export default class PaymentReceive extends TenantModel {
return ['created_at', 'updated_at'];
}
/**
* Resourcable model.
*/
static get resourceable() {
return true;
}
/**
/*
* Relationship mapping.
*/
static get relationMappings() {
@@ -79,6 +82,9 @@ export default class PaymentReceive extends TenantModel {
customer: {
label: 'Customer',
column: 'customer_id',
relation: 'contacts.id',
relationColumn: 'contacts.displayName',
fieldType: 'options',
optionsResource: 'customers',
optionsKey: 'id',
@@ -102,10 +108,11 @@ export default class PaymentReceive extends TenantModel {
columnType: 'string',
fieldType: 'text',
},
deposit_acount: {
deposit_account: {
column: 'deposit_account_id',
lable: 'Deposit account',
relation: "accounts.id",
relationColumn: 'accounts.name',
optionsResource: "account",
},
payment_receive_no: {
@@ -125,9 +132,6 @@ export default class PaymentReceive extends TenantModel {
column: 'created_at',
columnType: 'date',
},
user: {
},
};
}
}

View File

@@ -175,6 +175,9 @@ export default class SaleEstimate extends TenantModel {
customer: {
label: 'Customer',
column: 'customer_id',
relation: 'contacts.id',
relationColumn: 'contacts.displayName',
fieldType: 'options',
optionsResource: 'customers',
optionsKey: 'id',

View File

@@ -3,6 +3,7 @@ import moment from 'moment';
import TenantModel from 'models/TenantModel';
import { defaultToTransform } from 'utils';
import { QueryBuilder } from 'knex';
import { query } from 'winston';
export default class SaleInvoice extends TenantModel {
/**
@@ -198,6 +199,18 @@ export default class SaleInvoice extends TenantModel {
*/
fromDate(query, fromDate) {
query.where('invoice_date', '<=', fromDate)
},
/**
* Sort the sale invoices by full-payment invoices.
*/
sortByStatus(query, order) {
query.orderByRaw(`PAYMENT_AMOUNT = BALANCE ${order}`);
},
/**
* Sort the sale invoices by the due amount.
*/
sortByDueAmount(query, order) {
query.orderByRaw(`BALANCE - PAYMENT_AMOUNT ${order}`)
}
};
}
@@ -293,6 +306,9 @@ export default class SaleInvoice extends TenantModel {
customer: {
label: 'Customer',
column: 'customer_id',
relation: 'contacts.id',
relationColumn: 'contacts.displayName',
fieldType: 'options',
optionsResource: 'customers',
optionsKey: 'id',
@@ -351,6 +367,9 @@ export default class SaleInvoice extends TenantModel {
column: 'due_amount',
columnType: 'number',
fieldType: 'number',
sortQuery(query, role) {
query.modify('sortByDueAmount', role.order);
}
},
created_at: {
label: 'Created at',
@@ -389,6 +408,9 @@ export default class SaleInvoice extends TenantModel {
break;
}
},
sortQuery(query, role) {
query.modify('sortByStatus', role.order);
}
}
};
}