71 lines
1.4 KiB
TypeScript
71 lines
1.4 KiB
TypeScript
import TenantModel from 'models/TenantModel';
|
|
import { Model } from 'objection';
|
|
|
|
export class BankRule extends TenantModel {
|
|
id!: number;
|
|
name!: string;
|
|
order!: number;
|
|
applyIfAccountId!: number;
|
|
applyIfTransactionType!: string;
|
|
assignCategory!: string;
|
|
assignAccountId!: number;
|
|
assignPayee!: string;
|
|
assignMemo!: string;
|
|
conditionsType!: string;
|
|
|
|
/**
|
|
* Table name
|
|
*/
|
|
static get tableName() {
|
|
return 'bank_rules';
|
|
}
|
|
|
|
/**
|
|
* Timestamps columns.
|
|
*/
|
|
get timestamps() {
|
|
return ['created_at', 'updated_at'];
|
|
}
|
|
|
|
/**
|
|
* Virtual attributes.
|
|
*/
|
|
static get virtualAttributes() {
|
|
return [];
|
|
}
|
|
|
|
/**
|
|
* Relationship mapping.
|
|
*/
|
|
static get relationMappings() {
|
|
const { BankRuleCondition } = require('models/BankRuleCondition');
|
|
const Account = require('models/Account');
|
|
|
|
return {
|
|
/**
|
|
* Sale invoice associated entries.
|
|
*/
|
|
conditions: {
|
|
relation: Model.HasManyRelation,
|
|
modelClass: BankRuleCondition,
|
|
join: {
|
|
from: 'bank_rules.id',
|
|
to: 'bank_rule_conditions.ruleId',
|
|
},
|
|
},
|
|
|
|
/**
|
|
* Bank rule may associated to the assign account.
|
|
*/
|
|
assignAccount: {
|
|
relation: Model.BelongsToOneRelation,
|
|
modelClass: Account.default,
|
|
join: {
|
|
from: 'bank_rules.assignAccountId',
|
|
to: 'accounts.id',
|
|
},
|
|
},
|
|
};
|
|
}
|
|
}
|