mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-17 05:10:31 +00:00
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:
@@ -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',
|
||||
|
||||
@@ -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',
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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',
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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',
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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: {
|
||||
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user