1776 lines
53 KiB
Dart
1776 lines
53 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:built_collection/built_collection.dart';
|
|
import 'package:built_value/built_value.dart';
|
|
import 'package:built_value/serializer.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:invoiceninja_flutter/constants.dart';
|
|
import 'package:invoiceninja_flutter/data/models/company_gateway_model.dart';
|
|
import 'package:invoiceninja_flutter/data/models/entities.dart';
|
|
import 'package:invoiceninja_flutter/data/models/group_model.dart';
|
|
import 'package:invoiceninja_flutter/data/models/models.dart';
|
|
import 'package:invoiceninja_flutter/data/models/task_model.dart';
|
|
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
|
import 'package:invoiceninja_flutter/.env.dart';
|
|
|
|
part 'company_model.g.dart';
|
|
|
|
abstract class CompanyEntity extends Object
|
|
with BaseEntity
|
|
implements Built<CompanyEntity, CompanyEntityBuilder> {
|
|
factory CompanyEntity() {
|
|
return _$CompanyEntity._(
|
|
id: '',
|
|
updatedAt: 0,
|
|
companyKey: '',
|
|
plan: '',
|
|
settings: SettingsEntity(),
|
|
appUrl: '',
|
|
enabledModules: 0,
|
|
firstMonthOfYear: '0',
|
|
firstDayOfWeek: '0',
|
|
updateProducts: true,
|
|
fillProducts: true,
|
|
enableProductCost: false,
|
|
enableProductQuantity: true,
|
|
enableInvoiceQuantity: true,
|
|
defaultQuantity: true,
|
|
convertProductExchangeRate: false,
|
|
enableCustomSurchargeTaxes1: false,
|
|
enableCustomSurchargeTaxes2: false,
|
|
enableCustomSurchargeTaxes3: false,
|
|
enableCustomSurchargeTaxes4: false,
|
|
groups: BuiltList<GroupEntity>(),
|
|
taxRates: BuiltList<TaxRateEntity>(),
|
|
taskStatuses: BuiltList<TaskStatusEntity>(),
|
|
taskStatusMap: BuiltMap<String, TaskStatusEntity>(),
|
|
companyGateways: BuiltList<CompanyGatewayEntity>(),
|
|
expenseCategories: BuiltList<ExpenseCategoryEntity>(),
|
|
expenseCategoryMap: BuiltMap<String, ExpenseCategoryEntity>(),
|
|
users: BuiltList<UserEntity>(),
|
|
userMap: BuiltMap<String, UserEntity>(),
|
|
customFields: BuiltMap<String, String>(),
|
|
activities: BuiltList<ActivityEntity>(),
|
|
clients: BuiltList<ClientEntity>(),
|
|
products: BuiltList<ProductEntity>(),
|
|
invoices: BuiltList<InvoiceEntity>(),
|
|
payments: BuiltList<PaymentEntity>(),
|
|
quotes: BuiltList<InvoiceEntity>(),
|
|
credits: BuiltList<InvoiceEntity>(),
|
|
tasks: BuiltList<TaskEntity>(),
|
|
expenses: BuiltList<ExpenseEntity>(),
|
|
projects: BuiltList<ProjectEntity>(),
|
|
vendors: BuiltList<VendorEntity>(),
|
|
);
|
|
}
|
|
|
|
CompanyEntity._();
|
|
|
|
@BuiltValueField(wireName: 'custom_surcharge_taxes1')
|
|
bool get enableCustomSurchargeTaxes1;
|
|
|
|
@BuiltValueField(wireName: 'custom_surcharge_taxes2')
|
|
bool get enableCustomSurchargeTaxes2;
|
|
|
|
@BuiltValueField(wireName: 'custom_surcharge_taxes3')
|
|
bool get enableCustomSurchargeTaxes3;
|
|
|
|
@BuiltValueField(wireName: 'custom_surcharge_taxes4')
|
|
bool get enableCustomSurchargeTaxes4;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'size_id')
|
|
String get sizeId;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'industry_id')
|
|
String get industryId;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'subdomain')
|
|
String get subdomain;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'portal_mode')
|
|
String get portalMode;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'portal_domain')
|
|
String get portalDomain;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'update_products')
|
|
bool get updateProducts;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'convert_products')
|
|
bool get convertProductExchangeRate;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'fill_products')
|
|
bool get fillProducts;
|
|
|
|
@BuiltValueField(wireName: 'enable_product_cost')
|
|
bool get enableProductCost;
|
|
|
|
@BuiltValueField(wireName: 'enable_product_quantity')
|
|
bool get enableProductQuantity;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'enable_invoice_quantity')
|
|
bool get enableInvoiceQuantity;
|
|
|
|
@BuiltValueField(wireName: 'default_quantity')
|
|
bool get defaultQuantity;
|
|
|
|
// TODO remove this
|
|
@nullable
|
|
String get plan;
|
|
|
|
@BuiltValueField(wireName: 'company_key')
|
|
String get companyKey;
|
|
|
|
// TODO remove this
|
|
@nullable
|
|
@BuiltValueField(wireName: 'default_url')
|
|
String get appUrl;
|
|
|
|
// TODO remove this
|
|
@nullable
|
|
@BuiltValueField(wireName: 'first_day_of_week')
|
|
String get firstDayOfWeek;
|
|
|
|
// TODO remove this
|
|
@nullable
|
|
@BuiltValueField(wireName: 'first_month_of_year')
|
|
String get firstMonthOfYear;
|
|
|
|
BuiltList<GroupEntity> get groups;
|
|
|
|
BuiltList<ActivityEntity> get activities;
|
|
|
|
// TODO remove this
|
|
@nullable
|
|
@BuiltValueField(wireName: 'tax_rates')
|
|
BuiltList<TaxRateEntity> get taxRates;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'task_statuses')
|
|
BuiltList<TaskStatusEntity> get taskStatuses;
|
|
|
|
BuiltMap<String, TaskStatusEntity> get taskStatusMap;
|
|
|
|
// TODO remove this
|
|
@nullable
|
|
@BuiltValueField(wireName: 'company_gateways')
|
|
BuiltList<CompanyGatewayEntity> get companyGateways;
|
|
|
|
// TODO remove this
|
|
@nullable
|
|
@BuiltValueField(wireName: 'expense_categories')
|
|
BuiltList<ExpenseCategoryEntity> get expenseCategories;
|
|
|
|
// TODO remove this
|
|
@nullable
|
|
BuiltMap<String, ExpenseCategoryEntity> get expenseCategoryMap;
|
|
|
|
// TODO remove this
|
|
@nullable
|
|
@BuiltValueField(wireName: 'users')
|
|
BuiltList<UserEntity> get users;
|
|
|
|
// TODO remove this
|
|
@nullable
|
|
@BuiltValueField(wireName: 'clients')
|
|
BuiltList<ClientEntity> get clients;
|
|
|
|
// TODO remove this
|
|
@nullable
|
|
@BuiltValueField(wireName: 'products')
|
|
BuiltList<ProductEntity> get products;
|
|
|
|
// TODO remove this
|
|
@nullable
|
|
@BuiltValueField(wireName: 'invoices')
|
|
BuiltList<InvoiceEntity> get invoices;
|
|
|
|
// TODO remove this
|
|
@nullable
|
|
@BuiltValueField(wireName: 'payments')
|
|
BuiltList<PaymentEntity> get payments;
|
|
|
|
// TODO remove this
|
|
@nullable
|
|
@BuiltValueField(wireName: 'quotes')
|
|
BuiltList<InvoiceEntity> get quotes;
|
|
|
|
// TODO remove this
|
|
@nullable
|
|
@BuiltValueField(wireName: 'credits')
|
|
BuiltList<InvoiceEntity> get credits;
|
|
|
|
// TODO remove this
|
|
@nullable
|
|
@BuiltValueField(wireName: 'tasks')
|
|
BuiltList<TaskEntity> get tasks;
|
|
|
|
// TODO remove this
|
|
@nullable
|
|
@BuiltValueField(wireName: 'projects')
|
|
BuiltList<ProjectEntity> get projects;
|
|
|
|
// TODO remove this
|
|
@nullable
|
|
@BuiltValueField(wireName: 'expenses')
|
|
BuiltList<ExpenseEntity> get expenses;
|
|
|
|
// TODO remove this
|
|
@nullable
|
|
@BuiltValueField(wireName: 'vendors')
|
|
BuiltList<VendorEntity> get vendors;
|
|
|
|
// TODO remove this
|
|
@nullable
|
|
BuiltMap<String, UserEntity> get userMap;
|
|
|
|
@BuiltValueField(wireName: 'custom_fields')
|
|
BuiltMap<String, String> get customFields;
|
|
|
|
SettingsEntity get settings;
|
|
|
|
// TODO remove this
|
|
@nullable
|
|
@BuiltValueField(wireName: 'enabled_modules')
|
|
int get enabledModules;
|
|
|
|
//@BuiltValueField(wireName: 'custom_messages')
|
|
|
|
String get displayName => settings.name ?? '';
|
|
|
|
@override
|
|
bool matchesFilter(String filter) => false;
|
|
|
|
@override
|
|
String matchesFilterValue(String filter) => null;
|
|
|
|
@override
|
|
double get listDisplayAmount => null;
|
|
|
|
@override
|
|
FormatNumberType get listDisplayAmountType => null;
|
|
|
|
@override
|
|
String get listDisplayName => null;
|
|
|
|
List<String> getInvoiceDesigns() {
|
|
var designs = kInvoiceDesigns.keys.toList();
|
|
|
|
if (!isProPlan) {
|
|
designs = designs.sublist(0, 4);
|
|
}
|
|
|
|
return designs;
|
|
}
|
|
|
|
bool hasCustomField(String field) => getCustomFieldLabel(field).isNotEmpty;
|
|
|
|
String getCustomFieldLabel(String field) {
|
|
if (customFields.containsKey(field)) {
|
|
return customFields[field].split('|').first;
|
|
} else {
|
|
return '';
|
|
}
|
|
}
|
|
|
|
String getCustomFieldType(String field) {
|
|
if ((customFields[field] ?? '').contains('|')) {
|
|
final value = customFields[field].split('|').last;
|
|
if ([kFieldTypeSingleLineText, kFieldTypeDate, kFieldTypeSwitch]
|
|
.contains(value)) {
|
|
return value;
|
|
} else {
|
|
return kFieldTypeDropdown;
|
|
}
|
|
} else {
|
|
return kFieldTypeMultiLineText;
|
|
}
|
|
}
|
|
|
|
List<String> getCustomFieldValues(String field, {bool excludeBlank = false}) {
|
|
final values = customFields[field];
|
|
|
|
if (values == null || !values.contains('|')) {
|
|
return [];
|
|
} else {
|
|
final data = values.split('|').last.split(',');
|
|
|
|
if (data.length == 1) {
|
|
final first = data.first;
|
|
if (first == kFieldTypeSwitch || first == kFieldTypeDate) {
|
|
return [];
|
|
}
|
|
}
|
|
|
|
if (excludeBlank) {
|
|
return data.where((data) => data.isNotEmpty).toList();
|
|
} else {
|
|
return data;
|
|
}
|
|
}
|
|
}
|
|
|
|
bool get isSelfHost {
|
|
if (!kReleaseMode || Config.DEMO_MODE) {
|
|
return true;
|
|
}
|
|
|
|
return appUrl != null && appUrl.isNotEmpty && appUrl != kAppUrl;
|
|
}
|
|
|
|
bool get isHosted => !isSelfHost;
|
|
|
|
bool get isProPlan => isSelfHost || plan == kPlanPro;
|
|
|
|
bool get isEnterprisePlan => isSelfHost || plan == kPlanEnterprise;
|
|
|
|
List<String> get invoiceDesignIds {
|
|
var designIds = kInvoiceDesigns.keys.toList();
|
|
|
|
if (!(settings.hasCustomDesign1 ?? true)) {
|
|
designIds.remove(kDesignCustom1);
|
|
}
|
|
if (!(settings.hasCustomDesign2 ?? true)) {
|
|
designIds.remove(kDesignCustom2);
|
|
}
|
|
if (!(settings.hasCustomDesign3 ?? true)) {
|
|
designIds.remove(kDesignCustom3);
|
|
}
|
|
if (!isProPlan) {
|
|
designIds = designIds.sublist(0, 4);
|
|
}
|
|
|
|
return designIds;
|
|
}
|
|
|
|
bool isModuleEnabled(EntityType entityType) {
|
|
if (Config.DEMO_MODE) {
|
|
if ([
|
|
//EntityType.recurringInvoice,
|
|
//EntityType.credit,
|
|
EntityType.project,
|
|
EntityType.task,
|
|
EntityType.expense,
|
|
EntityType.vendor,
|
|
].contains(entityType)) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
// TODO remove this
|
|
if ([
|
|
EntityType.recurringInvoice,
|
|
EntityType.credit,
|
|
EntityType.project,
|
|
EntityType.task,
|
|
EntityType.expense,
|
|
EntityType.vendor,
|
|
].contains(entityType)) {
|
|
return false;
|
|
}
|
|
|
|
/*
|
|
if (entityType == EntityType.recurringInvoice &&
|
|
enabledModules & kModuleRecurringInvoice == 0) {
|
|
return false;
|
|
} else if (entityType == EntityType.credit &&
|
|
enabledModules & kModuleCredit == 0) {
|
|
return false;
|
|
} else if (entityType == EntityType.quote &&
|
|
enabledModules & kModuleQuote == 0) {
|
|
return false;
|
|
} else if ([EntityType.task, EntityType.project].contains(entityType) &&
|
|
enabledModules & kModuleTask == 0) {
|
|
return false;
|
|
} else if ([EntityType.expense, EntityType.vendor].contains(entityType) &&
|
|
enabledModules & kModuleExpense == 0) {
|
|
return false;
|
|
}
|
|
*/
|
|
|
|
return true;
|
|
}
|
|
|
|
String get currencyId => settings.currencyId ?? kDefaultCurrencyId;
|
|
|
|
static Serializer<CompanyEntity> get serializer => _$companyEntitySerializer;
|
|
}
|
|
|
|
abstract class PaymentTermEntity extends Object
|
|
with SelectableEntity
|
|
implements Built<PaymentTermEntity, PaymentTermEntityBuilder> {
|
|
factory PaymentTermEntity() {
|
|
return _$PaymentTermEntity._(
|
|
id: BaseEntity.nextId,
|
|
numDays: 0,
|
|
);
|
|
}
|
|
|
|
PaymentTermEntity._();
|
|
|
|
static Serializer<PaymentTermEntity> get serializer =>
|
|
_$paymentTermEntitySerializer;
|
|
|
|
String getPaymentTerm(String netLabel) {
|
|
if (numDays == 0) {
|
|
return '';
|
|
} else if (numDays == -1) {
|
|
return '$netLabel 0';
|
|
} else {
|
|
return '$netLabel $numDays';
|
|
}
|
|
}
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'num_days')
|
|
int get numDays;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'archived_at')
|
|
int get archivedAt;
|
|
}
|
|
|
|
abstract class GatewayEntity extends Object
|
|
with SelectableEntity
|
|
implements Built<GatewayEntity, GatewayEntityBuilder> {
|
|
factory GatewayEntity() {
|
|
return _$GatewayEntity._(
|
|
id: BaseEntity.nextId,
|
|
name: '',
|
|
sortOrder: 0,
|
|
fields: '',
|
|
defaultGatewayTypeId: kGatewayTypeCreditCard,
|
|
);
|
|
}
|
|
|
|
GatewayEntity._();
|
|
|
|
static Serializer<GatewayEntity> get serializer => _$gatewayEntitySerializer;
|
|
|
|
@override
|
|
@nullable
|
|
@BuiltValueField(wireName: 'key')
|
|
String get id;
|
|
|
|
String get name;
|
|
|
|
@BuiltValueField(wireName: 'sort_order')
|
|
int get sortOrder;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'default_gateway_type_id')
|
|
String get defaultGatewayTypeId;
|
|
|
|
//bool get recommended;
|
|
//bool get visible;
|
|
|
|
String get fields;
|
|
|
|
Map<String, dynamic> get parsedFields =>
|
|
fields.isEmpty ? <String, dynamic>{} : jsonDecode(fields);
|
|
|
|
int compareTo(GatewayEntity gateway, String sortField, bool sortAscending) {
|
|
int response = 0;
|
|
final GatewayEntity gatewayA = sortAscending ? this : gateway;
|
|
final GatewayEntity gatewayB = sortAscending ? gateway : this;
|
|
|
|
switch (sortField) {
|
|
case CreditFields.amount:
|
|
response = gatewayA.name.compareTo(gatewayB.name);
|
|
}
|
|
|
|
return response;
|
|
}
|
|
|
|
@override
|
|
bool matchesFilter(String filter) {
|
|
if (filter == null || filter.isEmpty) {
|
|
return true;
|
|
}
|
|
|
|
return name.toLowerCase().contains(filter);
|
|
}
|
|
|
|
@override
|
|
String matchesFilterValue(String filter) {
|
|
if (filter == null || filter.isEmpty) {
|
|
return null;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
@override
|
|
String get listDisplayName => name;
|
|
|
|
@override
|
|
double get listDisplayAmount => null;
|
|
|
|
@override
|
|
FormatNumberType get listDisplayAmountType => null;
|
|
}
|
|
|
|
abstract class UserCompanyEntity
|
|
implements Built<UserCompanyEntity, UserCompanyEntityBuilder> {
|
|
factory UserCompanyEntity() {
|
|
return _$UserCompanyEntity._(
|
|
isAdmin: false,
|
|
isOwner: false,
|
|
permissions: '',
|
|
settings: UserSettingsEntity(),
|
|
company: CompanyEntity(),
|
|
user: UserEntity(),
|
|
token: TokenEntity(),
|
|
);
|
|
}
|
|
|
|
UserCompanyEntity._();
|
|
|
|
@BuiltValueField(wireName: 'is_admin')
|
|
bool get isAdmin;
|
|
|
|
@BuiltValueField(wireName: 'is_owner')
|
|
bool get isOwner;
|
|
|
|
String get permissions;
|
|
|
|
@nullable
|
|
CompanyEntity get company;
|
|
|
|
@nullable
|
|
UserEntity get user;
|
|
|
|
@nullable
|
|
TokenEntity get token;
|
|
|
|
@nullable
|
|
UserSettingsEntity get settings;
|
|
|
|
bool can(UserPermission permission, EntityType entityType) {
|
|
if (entityType == null) {
|
|
return false;
|
|
}
|
|
|
|
// TODO remove this once task/expenses are supported
|
|
if (!Config.DEMO_MODE &&
|
|
[
|
|
EntityType.vendor,
|
|
EntityType.expense,
|
|
EntityType.task,
|
|
EntityType.project,
|
|
].contains(entityType)) {
|
|
return false;
|
|
}
|
|
|
|
if (isAdmin ?? false) {
|
|
return true;
|
|
}
|
|
|
|
return permissions.contains('${permission}_all') ||
|
|
permissions.contains('${permission}_$entityType');
|
|
}
|
|
|
|
bool canView(EntityType entityType) => can(UserPermission.view, entityType);
|
|
|
|
bool canEdit(EntityType entityType) => can(UserPermission.edit, entityType);
|
|
|
|
bool canCreate(EntityType entityType) =>
|
|
can(UserPermission.create, entityType);
|
|
|
|
bool canViewOrCreate(EntityType entityType) =>
|
|
canView(entityType) || canCreate(entityType);
|
|
|
|
bool canEditEntity(BaseEntity entity) {
|
|
if (entity == null) {
|
|
return false;
|
|
}
|
|
|
|
if (entity.isNew) {
|
|
return canCreate(entity.entityType);
|
|
} else {
|
|
return canEdit(entity.entityType) || user.canEdit(entity);
|
|
}
|
|
}
|
|
|
|
static Serializer<UserCompanyEntity> get serializer =>
|
|
_$userCompanyEntitySerializer;
|
|
}
|
|
|
|
abstract class UserSettingsEntity
|
|
implements Built<UserSettingsEntity, UserSettingsEntityBuilder> {
|
|
factory UserSettingsEntity() {
|
|
return _$UserSettingsEntity._(
|
|
accentColor: kDefaultAccentColor,
|
|
);
|
|
}
|
|
|
|
UserSettingsEntity._();
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'accent_color')
|
|
String get accentColor;
|
|
|
|
static Serializer<UserSettingsEntity> get serializer =>
|
|
_$userSettingsEntitySerializer;
|
|
}
|
|
|
|
abstract class TokenEntity implements Built<TokenEntity, TokenEntityBuilder> {
|
|
factory TokenEntity() {
|
|
return _$TokenEntity._(
|
|
token: '',
|
|
name: '',
|
|
);
|
|
}
|
|
|
|
TokenEntity._();
|
|
|
|
String get token;
|
|
|
|
String get name;
|
|
|
|
static Serializer<TokenEntity> get serializer => _$tokenEntitySerializer;
|
|
}
|
|
|
|
abstract class SettingsEntity
|
|
implements Built<SettingsEntity, SettingsEntityBuilder> {
|
|
factory SettingsEntity({
|
|
SettingsEntity companySettings,
|
|
SettingsEntity groupSettings,
|
|
SettingsEntity clientSettings,
|
|
}) {
|
|
return _$SettingsEntity._(
|
|
timezoneId: clientSettings?.timezoneId ??
|
|
groupSettings?.timezoneId ??
|
|
companySettings?.timezoneId,
|
|
dateFormatId: clientSettings?.dateFormatId ??
|
|
groupSettings?.dateFormatId ??
|
|
companySettings?.dateFormatId,
|
|
enableMilitaryTime: clientSettings?.enableMilitaryTime ??
|
|
groupSettings?.enableMilitaryTime ??
|
|
companySettings?.enableMilitaryTime,
|
|
languageId: clientSettings?.languageId ??
|
|
groupSettings?.languageId ??
|
|
companySettings?.languageId,
|
|
showCurrencyCode: clientSettings?.showCurrencyCode ??
|
|
groupSettings?.showCurrencyCode ??
|
|
companySettings?.showCurrencyCode,
|
|
currencyId: clientSettings?.currencyId ??
|
|
groupSettings?.currencyId ??
|
|
companySettings?.currencyId,
|
|
customValue1: clientSettings?.customValue1 ??
|
|
groupSettings?.customValue1 ??
|
|
companySettings?.customValue1,
|
|
customValue2: clientSettings?.customValue2 ??
|
|
groupSettings?.customValue2 ??
|
|
companySettings?.customValue2,
|
|
customValue3: clientSettings?.customValue3 ??
|
|
groupSettings?.customValue3 ??
|
|
companySettings?.customValue3,
|
|
customValue4: clientSettings?.customValue4 ??
|
|
groupSettings?.customValue4 ??
|
|
companySettings?.customValue4,
|
|
defaultPaymentTerms: clientSettings?.defaultPaymentTerms ??
|
|
groupSettings?.defaultPaymentTerms ??
|
|
companySettings?.defaultPaymentTerms,
|
|
companyGatewayIds: clientSettings?.companyGatewayIds ??
|
|
groupSettings?.companyGatewayIds ??
|
|
companySettings?.companyGatewayIds,
|
|
defaultTaskRate: clientSettings?.defaultTaskRate ??
|
|
groupSettings?.defaultTaskRate ??
|
|
companySettings?.defaultTaskRate,
|
|
sendReminders: clientSettings?.sendReminders ??
|
|
groupSettings?.sendReminders ??
|
|
companySettings?.sendReminders,
|
|
enablePortal: clientSettings?.enablePortal ??
|
|
groupSettings?.enablePortal ??
|
|
companySettings?.enablePortal,
|
|
enablePortalDashboard: clientSettings?.enablePortalDashboard ??
|
|
groupSettings?.enablePortalDashboard ??
|
|
companySettings?.enablePortalDashboard,
|
|
enablePortalTasks: clientSettings?.enablePortalTasks ??
|
|
groupSettings?.enablePortalTasks ??
|
|
companySettings?.enablePortalTasks,
|
|
emailStyle: clientSettings?.emailStyle ??
|
|
groupSettings?.emailStyle ??
|
|
companySettings?.emailStyle,
|
|
replyToEmail: clientSettings?.replyToEmail ??
|
|
groupSettings?.replyToEmail ??
|
|
companySettings?.replyToEmail,
|
|
bccEmail: clientSettings?.bccEmail ??
|
|
groupSettings?.bccEmail ??
|
|
companySettings?.bccEmail,
|
|
pdfEmailAttachment: clientSettings?.pdfEmailAttachment ??
|
|
groupSettings?.pdfEmailAttachment ??
|
|
companySettings?.pdfEmailAttachment,
|
|
ublEmailAttachment: clientSettings?.ublEmailAttachment ??
|
|
groupSettings?.ublEmailAttachment ??
|
|
companySettings?.ublEmailAttachment,
|
|
documentEmailAttachment: clientSettings?.documentEmailAttachment ??
|
|
groupSettings?.documentEmailAttachment ??
|
|
companySettings?.documentEmailAttachment,
|
|
emailStyleCustom: clientSettings?.emailStyleCustom ??
|
|
groupSettings?.emailStyleCustom ??
|
|
companySettings?.emailStyleCustom,
|
|
customMessageDashboard: clientSettings?.customMessageDashboard ??
|
|
groupSettings?.customMessageDashboard ??
|
|
companySettings?.customMessageDashboard,
|
|
customMessageUnpaidInvoice: clientSettings?.customMessageUnpaidInvoice ??
|
|
groupSettings?.customMessageUnpaidInvoice ??
|
|
companySettings?.customMessageUnpaidInvoice,
|
|
customMessagePaidInvoice: clientSettings?.customMessagePaidInvoice ??
|
|
groupSettings?.customMessagePaidInvoice ??
|
|
companySettings?.customMessagePaidInvoice,
|
|
customMessageUnapprovedQuote:
|
|
clientSettings?.customMessageUnapprovedQuote ??
|
|
groupSettings?.customMessageUnapprovedQuote ??
|
|
companySettings?.customMessageUnapprovedQuote,
|
|
lockSentInvoices: clientSettings?.lockSentInvoices ??
|
|
groupSettings?.lockSentInvoices ??
|
|
companySettings?.lockSentInvoices,
|
|
autoArchiveInvoice: clientSettings?.autoArchiveInvoice ??
|
|
groupSettings?.autoArchiveInvoice ??
|
|
companySettings?.autoArchiveInvoice,
|
|
autoArchiveQuote: clientSettings?.autoArchiveQuote ??
|
|
groupSettings?.autoArchiveQuote ??
|
|
companySettings?.autoArchiveQuote,
|
|
autoEmailInvoice: clientSettings?.autoEmailInvoice ??
|
|
groupSettings?.autoEmailInvoice ??
|
|
companySettings?.autoEmailInvoice,
|
|
autoConvertQuote: clientSettings?.autoConvertQuote ??
|
|
groupSettings?.autoConvertQuote ??
|
|
companySettings?.autoConvertQuote,
|
|
enableInclusiveTaxes: clientSettings?.enableInclusiveTaxes ??
|
|
groupSettings?.enableInclusiveTaxes ??
|
|
companySettings?.enableInclusiveTaxes,
|
|
translations: clientSettings?.translations ??
|
|
groupSettings?.translations ??
|
|
companySettings?.translations,
|
|
taskNumberPattern: clientSettings?.taskNumberPattern ??
|
|
groupSettings?.taskNumberPattern ??
|
|
companySettings?.taskNumberPattern,
|
|
taskNumberCounter: clientSettings?.taskNumberCounter ??
|
|
groupSettings?.taskNumberCounter ??
|
|
companySettings?.taskNumberCounter,
|
|
expenseNumberPattern: clientSettings?.expenseNumberPattern ??
|
|
groupSettings?.expenseNumberPattern ??
|
|
companySettings?.expenseNumberPattern,
|
|
expenseNumberCounter: clientSettings?.expenseNumberCounter ??
|
|
groupSettings?.expenseNumberCounter ??
|
|
companySettings?.expenseNumberCounter,
|
|
vendorNumberPattern: clientSettings?.vendorNumberPattern ??
|
|
groupSettings?.vendorNumberPattern ??
|
|
companySettings?.vendorNumberPattern,
|
|
vendorNumberCounter: clientSettings?.vendorNumberCounter ??
|
|
groupSettings?.vendorNumberCounter ??
|
|
companySettings?.vendorNumberCounter,
|
|
ticketNumberPattern: clientSettings?.ticketNumberPattern ??
|
|
groupSettings?.ticketNumberPattern ??
|
|
companySettings?.ticketNumberPattern,
|
|
ticketNumberCounter: clientSettings?.ticketNumberCounter ??
|
|
groupSettings?.ticketNumberCounter ??
|
|
companySettings?.ticketNumberCounter,
|
|
paymentNumberPattern: clientSettings?.paymentNumberPattern ??
|
|
groupSettings?.paymentNumberPattern ??
|
|
companySettings?.paymentNumberPattern,
|
|
paymentNumberCounter: clientSettings?.paymentNumberCounter ??
|
|
groupSettings?.paymentNumberCounter ??
|
|
companySettings?.paymentNumberCounter,
|
|
invoiceNumberPattern: clientSettings?.invoiceNumberPattern ??
|
|
groupSettings?.invoiceNumberPattern ??
|
|
companySettings?.invoiceNumberPattern,
|
|
invoiceNumberCounter: clientSettings?.invoiceNumberCounter ??
|
|
groupSettings?.invoiceNumberCounter ??
|
|
companySettings?.invoiceNumberCounter,
|
|
quoteNumberPattern: clientSettings?.quoteNumberPattern ??
|
|
groupSettings?.quoteNumberPattern ??
|
|
companySettings?.quoteNumberPattern,
|
|
quoteNumberCounter: clientSettings?.quoteNumberCounter ??
|
|
groupSettings?.quoteNumberCounter ??
|
|
companySettings?.quoteNumberCounter,
|
|
clientNumberPattern: clientSettings?.clientNumberPattern ??
|
|
groupSettings?.clientNumberPattern ??
|
|
companySettings?.clientNumberPattern,
|
|
clientNumberCounter: clientSettings?.clientNumberCounter ??
|
|
groupSettings?.clientNumberCounter ??
|
|
companySettings?.clientNumberCounter,
|
|
creditNumberPattern: clientSettings?.creditNumberPattern ??
|
|
groupSettings?.creditNumberPattern ??
|
|
companySettings?.creditNumberPattern,
|
|
creditNumberCounter: clientSettings?.creditNumberCounter ??
|
|
groupSettings?.creditNumberCounter ??
|
|
companySettings?.creditNumberCounter,
|
|
recurringNumberPrefix: clientSettings?.recurringNumberPrefix ??
|
|
groupSettings?.recurringNumberPrefix ??
|
|
companySettings?.recurringNumberPrefix,
|
|
resetCounterFrequencyId: clientSettings?.resetCounterFrequencyId ??
|
|
groupSettings?.resetCounterFrequencyId ??
|
|
companySettings?.resetCounterFrequencyId,
|
|
resetCounterDate: clientSettings?.resetCounterDate ??
|
|
groupSettings?.resetCounterDate ??
|
|
companySettings?.resetCounterDate,
|
|
counterPadding: clientSettings?.counterPadding ??
|
|
groupSettings?.counterPadding ??
|
|
companySettings?.counterPadding,
|
|
sharedInvoiceQuoteCounter: clientSettings?.sharedInvoiceQuoteCounter ??
|
|
groupSettings?.sharedInvoiceQuoteCounter ??
|
|
companySettings?.sharedInvoiceQuoteCounter,
|
|
defaultInvoiceTerms: clientSettings?.defaultInvoiceTerms ??
|
|
groupSettings?.defaultInvoiceTerms ??
|
|
companySettings?.defaultInvoiceTerms,
|
|
defaultQuoteTerms: clientSettings?.defaultQuoteTerms ??
|
|
groupSettings?.defaultQuoteTerms ??
|
|
companySettings?.defaultQuoteTerms,
|
|
defaultQuoteFooter: clientSettings?.defaultQuoteFooter ??
|
|
groupSettings?.defaultQuoteFooter ??
|
|
companySettings?.defaultQuoteFooter,
|
|
numberOfInvoiceTaxRates: clientSettings?.numberOfInvoiceTaxRates ??
|
|
groupSettings?.numberOfInvoiceTaxRates ??
|
|
companySettings?.numberOfInvoiceTaxRates,
|
|
numberOfItemTaxRates: clientSettings?.numberOfItemTaxRates ??
|
|
groupSettings?.numberOfItemTaxRates ??
|
|
companySettings?.numberOfItemTaxRates,
|
|
defaultInvoiceDesignId: clientSettings?.defaultInvoiceDesignId ??
|
|
groupSettings?.defaultInvoiceDesignId ??
|
|
companySettings?.defaultInvoiceDesignId,
|
|
defaultQuoteDesignId: clientSettings?.defaultQuoteDesignId ??
|
|
groupSettings?.defaultQuoteDesignId ??
|
|
companySettings?.defaultQuoteDesignId,
|
|
defaultInvoiceFooter: clientSettings?.defaultInvoiceFooter ??
|
|
groupSettings?.defaultInvoiceFooter ??
|
|
companySettings?.defaultInvoiceFooter,
|
|
invoiceLabels: clientSettings?.invoiceLabels ??
|
|
groupSettings?.invoiceLabels ??
|
|
companySettings?.invoiceLabels,
|
|
defaultTaxName1: clientSettings?.defaultTaxName1 ??
|
|
groupSettings?.defaultTaxName1 ??
|
|
companySettings?.defaultTaxName1,
|
|
defaultTaxRate1: clientSettings?.defaultTaxRate1 ??
|
|
groupSettings?.defaultTaxRate1 ??
|
|
companySettings?.defaultTaxRate1,
|
|
defaultTaxName2: clientSettings?.defaultTaxName2 ??
|
|
groupSettings?.defaultTaxName2 ??
|
|
companySettings?.defaultTaxName2,
|
|
defaultTaxRate2: clientSettings?.defaultTaxRate2 ??
|
|
groupSettings?.defaultTaxRate2 ??
|
|
companySettings?.defaultTaxRate2,
|
|
defaultTaxName3: clientSettings?.defaultTaxName3 ??
|
|
groupSettings?.defaultTaxName3 ??
|
|
companySettings?.defaultTaxName3,
|
|
defaultTaxRate3: clientSettings?.defaultTaxRate3 ??
|
|
groupSettings?.defaultTaxRate3 ??
|
|
companySettings?.defaultTaxRate3,
|
|
defaultPaymentTypeId: clientSettings?.defaultPaymentTypeId ??
|
|
groupSettings?.defaultPaymentTypeId ??
|
|
companySettings?.defaultPaymentTypeId,
|
|
invoiceFields: clientSettings?.invoiceFields ??
|
|
groupSettings?.invoiceFields ??
|
|
companySettings?.invoiceFields,
|
|
emailFooter: clientSettings?.emailFooter ??
|
|
groupSettings?.emailFooter ??
|
|
companySettings?.emailFooter,
|
|
emailSubjectInvoice: clientSettings?.emailSubjectInvoice ??
|
|
groupSettings?.emailSubjectInvoice ??
|
|
companySettings?.emailSubjectInvoice,
|
|
emailSubjectQuote: clientSettings?.emailSubjectQuote ??
|
|
groupSettings?.emailSubjectQuote ??
|
|
companySettings?.emailSubjectQuote,
|
|
emailSubjectPayment: clientSettings?.emailSubjectPayment ??
|
|
groupSettings?.emailSubjectPayment ??
|
|
companySettings?.emailSubjectPayment,
|
|
emailBodyInvoice: clientSettings?.emailBodyInvoice ??
|
|
groupSettings?.emailBodyInvoice ??
|
|
companySettings?.emailBodyInvoice,
|
|
emailBodyQuote: clientSettings?.emailBodyQuote ??
|
|
groupSettings?.emailBodyQuote ??
|
|
companySettings?.emailBodyQuote,
|
|
emailBodyPayment: clientSettings?.emailBodyPayment ??
|
|
groupSettings?.emailBodyPayment ??
|
|
companySettings?.emailBodyPayment,
|
|
emailSubjectReminder1: clientSettings?.emailSubjectReminder1 ??
|
|
groupSettings?.emailSubjectReminder1 ??
|
|
companySettings?.emailSubjectReminder1,
|
|
emailSubjectReminder2: clientSettings?.emailSubjectReminder2 ??
|
|
groupSettings?.emailSubjectReminder2 ??
|
|
companySettings?.emailSubjectReminder2,
|
|
emailSubjectReminder3: clientSettings?.emailSubjectReminder3 ??
|
|
groupSettings?.emailSubjectReminder3 ??
|
|
companySettings?.emailSubjectReminder3,
|
|
emailBodyReminder1: clientSettings?.emailBodyReminder1 ??
|
|
groupSettings?.emailBodyReminder1 ??
|
|
companySettings?.emailBodyReminder1,
|
|
emailBodyReminder2: clientSettings?.emailBodyReminder2 ??
|
|
groupSettings?.emailBodyReminder2 ??
|
|
companySettings?.emailBodyReminder2,
|
|
emailBodyReminder3: clientSettings?.emailBodyReminder3 ??
|
|
groupSettings?.emailBodyReminder3 ??
|
|
companySettings?.emailBodyReminder3,
|
|
enablePortalPassword: clientSettings?.enablePortalPassword ??
|
|
groupSettings?.enablePortalPassword ??
|
|
companySettings?.enablePortalPassword,
|
|
sendPortalPassword: clientSettings?.sendPortalPassword ??
|
|
groupSettings?.sendPortalPassword ??
|
|
companySettings?.sendPortalPassword,
|
|
signatureOnPdf: clientSettings?.signatureOnPdf ??
|
|
groupSettings?.signatureOnPdf ??
|
|
companySettings?.signatureOnPdf,
|
|
enableEmailMarkup: clientSettings?.enableEmailMarkup ??
|
|
groupSettings?.enableEmailMarkup ??
|
|
companySettings?.enableEmailMarkup,
|
|
showAcceptInvoiceTerms: clientSettings?.showAcceptInvoiceTerms ??
|
|
groupSettings?.showAcceptInvoiceTerms ??
|
|
companySettings?.showAcceptInvoiceTerms,
|
|
showAcceptQuoteTerms: clientSettings?.showAcceptQuoteTerms ??
|
|
groupSettings?.showAcceptQuoteTerms ??
|
|
companySettings?.showAcceptQuoteTerms,
|
|
requireInvoiceSignature: clientSettings?.requireInvoiceSignature ??
|
|
groupSettings?.requireInvoiceSignature ??
|
|
companySettings?.requireInvoiceSignature,
|
|
requireQuoteSignature: clientSettings?.requireQuoteSignature ??
|
|
groupSettings?.requireQuoteSignature ??
|
|
companySettings?.requireQuoteSignature,
|
|
name:
|
|
clientSettings?.name ?? groupSettings?.name ?? companySettings?.name,
|
|
companyLogo: clientSettings?.companyLogo ??
|
|
groupSettings?.companyLogo ??
|
|
companySettings?.companyLogo,
|
|
website: clientSettings?.website ??
|
|
groupSettings?.website ??
|
|
companySettings?.website,
|
|
address1: clientSettings?.address1 ??
|
|
groupSettings?.address1 ??
|
|
companySettings?.address1,
|
|
address2: clientSettings?.address2 ??
|
|
groupSettings?.address2 ??
|
|
companySettings?.address2,
|
|
city:
|
|
clientSettings?.city ?? groupSettings?.city ?? companySettings?.city,
|
|
state: clientSettings?.state ??
|
|
groupSettings?.state ??
|
|
companySettings?.state,
|
|
postalCode: clientSettings?.postalCode ??
|
|
groupSettings?.postalCode ??
|
|
companySettings?.postalCode,
|
|
phone: clientSettings?.phone ??
|
|
groupSettings?.phone ??
|
|
companySettings?.phone,
|
|
email: clientSettings?.email ??
|
|
groupSettings?.email ??
|
|
companySettings?.email,
|
|
countryId: clientSettings?.countryId ??
|
|
groupSettings?.countryId ??
|
|
companySettings?.countryId,
|
|
vatNumber: clientSettings?.vatNumber ??
|
|
groupSettings?.vatNumber ??
|
|
companySettings?.vatNumber,
|
|
idNumber: clientSettings?.idNumber ??
|
|
groupSettings?.idNumber ??
|
|
companySettings?.idNumber,
|
|
pageSize: clientSettings?.pageSize ??
|
|
groupSettings?.pageSize ??
|
|
companySettings?.pageSize,
|
|
fontSize: clientSettings?.fontSize ??
|
|
groupSettings?.fontSize ??
|
|
companySettings?.fontSize,
|
|
primaryColor: clientSettings?.primaryColor ??
|
|
groupSettings?.primaryColor ??
|
|
companySettings?.primaryColor,
|
|
secondaryColor: clientSettings?.secondaryColor ??
|
|
groupSettings?.secondaryColor ??
|
|
companySettings?.secondaryColor,
|
|
primaryFont: clientSettings?.primaryFont ??
|
|
groupSettings?.primaryFont ??
|
|
companySettings?.primaryFont,
|
|
secondaryFont: clientSettings?.secondaryFont ??
|
|
groupSettings?.secondaryFont ??
|
|
companySettings?.secondaryFont,
|
|
hidePaidToDate: clientSettings?.hidePaidToDate ??
|
|
groupSettings?.hidePaidToDate ??
|
|
companySettings?.hidePaidToDate,
|
|
embedDocuments: clientSettings?.embedDocuments ??
|
|
groupSettings?.embedDocuments ??
|
|
companySettings?.embedDocuments,
|
|
allPagesHeader: clientSettings?.allPagesHeader ??
|
|
groupSettings?.allPagesHeader ??
|
|
companySettings?.allPagesHeader,
|
|
allPagesFooter: clientSettings?.allPagesFooter ??
|
|
groupSettings?.allPagesFooter ??
|
|
companySettings?.allPagesFooter,
|
|
enableReminder1: clientSettings?.enableReminder1 ??
|
|
groupSettings?.enableReminder1 ??
|
|
companySettings?.enableReminder1,
|
|
enableReminder2: clientSettings?.enableReminder2 ??
|
|
groupSettings?.enableReminder2 ??
|
|
companySettings?.enableReminder2,
|
|
enableReminder3: clientSettings?.enableReminder3 ??
|
|
groupSettings?.enableReminder3 ??
|
|
companySettings?.enableReminder3,
|
|
enableReminder4: clientSettings?.enableReminder4 ??
|
|
groupSettings?.enableReminder4 ??
|
|
companySettings?.enableReminder4,
|
|
numDaysReminder1: clientSettings?.numDaysReminder1 ??
|
|
groupSettings?.numDaysReminder1 ??
|
|
companySettings?.numDaysReminder1,
|
|
numDaysReminder2: clientSettings?.numDaysReminder2 ??
|
|
groupSettings?.numDaysReminder2 ??
|
|
companySettings?.numDaysReminder2,
|
|
numDaysReminder3: clientSettings?.numDaysReminder3 ??
|
|
groupSettings?.numDaysReminder3 ??
|
|
companySettings?.numDaysReminder3,
|
|
scheduleReminder1: clientSettings?.scheduleReminder1 ??
|
|
groupSettings?.scheduleReminder1 ??
|
|
companySettings?.scheduleReminder1,
|
|
scheduleReminder2: clientSettings?.scheduleReminder2 ??
|
|
groupSettings?.scheduleReminder2 ??
|
|
companySettings?.scheduleReminder2,
|
|
scheduleReminder3: clientSettings?.scheduleReminder3 ??
|
|
groupSettings?.scheduleReminder3 ??
|
|
companySettings?.scheduleReminder3,
|
|
endlessReminderFrequencyId: clientSettings?.endlessReminderFrequencyId ??
|
|
groupSettings?.endlessReminderFrequencyId ??
|
|
companySettings?.endlessReminderFrequencyId,
|
|
lateFeeAmount1: clientSettings?.lateFeeAmount1 ??
|
|
groupSettings?.lateFeeAmount1 ??
|
|
companySettings?.lateFeeAmount1,
|
|
lateFeeAmount2: clientSettings?.lateFeeAmount2 ??
|
|
groupSettings?.lateFeeAmount2 ??
|
|
companySettings?.lateFeeAmount2,
|
|
lateFeeAmount3: clientSettings?.lateFeeAmount3 ??
|
|
groupSettings?.lateFeeAmount3 ??
|
|
companySettings?.lateFeeAmount3,
|
|
lateFeePercent1: clientSettings?.lateFeePercent1 ??
|
|
groupSettings?.lateFeePercent1 ??
|
|
companySettings?.lateFeePercent1,
|
|
lateFeePercent2: clientSettings?.lateFeePercent2 ??
|
|
groupSettings?.lateFeePercent2 ??
|
|
companySettings?.lateFeePercent2,
|
|
lateFeePercent3: clientSettings?.lateFeePercent3 ??
|
|
groupSettings?.lateFeePercent3 ??
|
|
companySettings?.lateFeePercent3,
|
|
emailSubjectReminder4: clientSettings?.emailSubjectReminder4 ??
|
|
groupSettings?.emailSubjectReminder4 ??
|
|
companySettings?.emailSubjectReminder4,
|
|
emailBodyReminder4: clientSettings?.emailBodyReminder4 ??
|
|
groupSettings?.emailBodyReminder4 ??
|
|
companySettings?.emailBodyReminder4,
|
|
customPaymentTerms: clientSettings?.customPaymentTerms ??
|
|
groupSettings?.customPaymentTerms ??
|
|
companySettings?.customPaymentTerms,
|
|
);
|
|
}
|
|
|
|
SettingsEntity._();
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'timezone_id')
|
|
String get timezoneId;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'date_format_id')
|
|
String get dateFormatId;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'military_time')
|
|
bool get enableMilitaryTime;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'language_id')
|
|
String get languageId;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'show_currency_code')
|
|
bool get showCurrencyCode;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'currency_id')
|
|
String get currencyId;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'custom_value1')
|
|
String get customValue1;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'custom_value2')
|
|
String get customValue2;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'custom_value3')
|
|
String get customValue3;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'custom_value4')
|
|
String get customValue4;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'payment_terms')
|
|
int get defaultPaymentTerms;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'company_gateway_ids')
|
|
String get companyGatewayIds;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'default_task_rate')
|
|
double get defaultTaskRate;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'send_reminders')
|
|
bool get sendReminders;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'enable_client_portal')
|
|
bool get enablePortal;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'enable_client_portal_dashboard')
|
|
bool get enablePortalDashboard;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'enable_client_portal_tasks')
|
|
bool get enablePortalTasks;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_style')
|
|
String get emailStyle;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'reply_to_email')
|
|
String get replyToEmail;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'bcc_email')
|
|
String get bccEmail;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'pdf_email_attachment')
|
|
bool get pdfEmailAttachment;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'ubl_email_attachment')
|
|
bool get ublEmailAttachment;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'document_email_attachment')
|
|
bool get documentEmailAttachment;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_style_custom')
|
|
String get emailStyleCustom;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'custom_message_dashboard')
|
|
String get customMessageDashboard;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'custom_message_unpaid_invoice')
|
|
String get customMessageUnpaidInvoice;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'custom_message_paid_invoice')
|
|
String get customMessagePaidInvoice;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'custom_message_unapproved_quote')
|
|
String get customMessageUnapprovedQuote;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'lock_sent_invoices')
|
|
bool get lockSentInvoices;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'auto_archive_invoice')
|
|
bool get autoArchiveInvoice;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'auto_archive_quote')
|
|
bool get autoArchiveQuote;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'auto_email_invoice')
|
|
bool get autoEmailInvoice;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'auto_convert_quote')
|
|
bool get autoConvertQuote;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'inclusive_taxes')
|
|
bool get enableInclusiveTaxes;
|
|
|
|
@nullable
|
|
BuiltMap<String, String> get translations;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'task_number_pattern')
|
|
String get taskNumberPattern;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'task_number_counter')
|
|
int get taskNumberCounter;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'expense_number_pattern')
|
|
String get expenseNumberPattern;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'expense_number_counter')
|
|
int get expenseNumberCounter;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'vendor_number_pattern')
|
|
String get vendorNumberPattern;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'vendor_number_counter')
|
|
int get vendorNumberCounter;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'ticket_number_pattern')
|
|
String get ticketNumberPattern;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'ticket_number_counter')
|
|
int get ticketNumberCounter;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'payment_number_pattern')
|
|
String get paymentNumberPattern;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'payment_number_counter')
|
|
int get paymentNumberCounter;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'invoice_number_pattern')
|
|
String get invoiceNumberPattern;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'invoice_number_counter')
|
|
int get invoiceNumberCounter;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'quote_number_pattern')
|
|
String get quoteNumberPattern;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'quote_number_counter')
|
|
int get quoteNumberCounter;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'client_number_pattern')
|
|
String get clientNumberPattern;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'client_number_counter')
|
|
int get clientNumberCounter;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'credit_number_pattern')
|
|
String get creditNumberPattern;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'credit_number_counter')
|
|
int get creditNumberCounter;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'recurring_number_prefix')
|
|
String get recurringNumberPrefix;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'reset_counter_frequency_id')
|
|
String get resetCounterFrequencyId;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'reset_counter_date')
|
|
String get resetCounterDate;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'counter_padding')
|
|
int get counterPadding;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'shared_invoice_quote_counter')
|
|
bool get sharedInvoiceQuoteCounter;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'invoice_terms')
|
|
String get defaultInvoiceTerms;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'quote_terms')
|
|
String get defaultQuoteTerms;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'quote_footer')
|
|
String get defaultQuoteFooter;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'enabled_tax_rates')
|
|
int get numberOfInvoiceTaxRates;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'invoice_item_taxes')
|
|
int get numberOfItemTaxRates;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'invoice_design_id')
|
|
String get defaultInvoiceDesignId;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'quote_design_id')
|
|
String get defaultQuoteDesignId;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'invoice_footer')
|
|
String get defaultInvoiceFooter;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'invoice_labels')
|
|
String get invoiceLabels;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'tax_name1')
|
|
String get defaultTaxName1;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'tax_rate1')
|
|
double get defaultTaxRate1;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'tax_name2')
|
|
String get defaultTaxName2;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'tax_rate2')
|
|
double get defaultTaxRate2;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'tax_name3')
|
|
String get defaultTaxName3;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'tax_rate3')
|
|
double get defaultTaxRate3;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'payment_type_id')
|
|
String get defaultPaymentTypeId;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'invoice_fields')
|
|
String get invoiceFields;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_footer')
|
|
String get emailFooter;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_subject_invoice')
|
|
String get emailSubjectInvoice;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_subject_quote')
|
|
String get emailSubjectQuote;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_subject_payment')
|
|
String get emailSubjectPayment;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_template_invoice')
|
|
String get emailBodyInvoice;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_template_quote')
|
|
String get emailBodyQuote;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_template_payment')
|
|
String get emailBodyPayment;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_subject_reminder1')
|
|
String get emailSubjectReminder1;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_subject_reminder2')
|
|
String get emailSubjectReminder2;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_subject_reminder3')
|
|
String get emailSubjectReminder3;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_template_reminder1')
|
|
String get emailBodyReminder1;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_template_reminder2')
|
|
String get emailBodyReminder2;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_template_reminder3')
|
|
String get emailBodyReminder3;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_subject_custom1')
|
|
String get emailSubjectCustom1;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_template_custom1')
|
|
String get emailBodyCustom1;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_subject_custom2')
|
|
String get emailSubjectCustom2;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_template_custom2')
|
|
String get emailBodyCustom2;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_subject_custom3')
|
|
String get emailSubjectCustom3;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_template_custom3')
|
|
String get emailBodyCustom3;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'enable_portal_password')
|
|
bool get enablePortalPassword;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'send_portal_password')
|
|
bool get sendPortalPassword;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'signature_on_pdf')
|
|
bool get signatureOnPdf;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'enable_email_markup')
|
|
bool get enableEmailMarkup;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'show_accept_invoice_terms')
|
|
bool get showAcceptInvoiceTerms;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'show_accept_quote_terms')
|
|
bool get showAcceptQuoteTerms;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'require_invoice_signature')
|
|
bool get requireInvoiceSignature;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'require_quote_signature')
|
|
bool get requireQuoteSignature;
|
|
|
|
@nullable
|
|
String get name;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'company_logo')
|
|
String get companyLogo;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'website')
|
|
String get website;
|
|
|
|
@nullable
|
|
String get address1;
|
|
|
|
@nullable
|
|
String get address2;
|
|
|
|
@nullable
|
|
String get city;
|
|
|
|
@nullable
|
|
String get state;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'postal_code')
|
|
String get postalCode;
|
|
|
|
@nullable
|
|
String get phone;
|
|
|
|
@nullable
|
|
String get email;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'country_id')
|
|
String get countryId;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'vat_number')
|
|
String get vatNumber;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'id_number')
|
|
String get idNumber;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'page_size')
|
|
String get pageSize;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'font_size')
|
|
int get fontSize;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'primary_color')
|
|
String get primaryColor;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'secondary_color')
|
|
String get secondaryColor;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'primary_font')
|
|
String get primaryFont;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'secondary_font')
|
|
String get secondaryFont;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'hide_paid_to_date')
|
|
bool get hidePaidToDate;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'embed_documents')
|
|
bool get embedDocuments;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'all_pages_header')
|
|
bool get allPagesHeader;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'all_pages_footer')
|
|
bool get allPagesFooter;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'enable_reminder1')
|
|
bool get enableReminder1;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'enable_reminder2')
|
|
bool get enableReminder2;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'enable_reminder3')
|
|
bool get enableReminder3;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'enable_reminder4')
|
|
bool get enableReminder4;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'num_days_reminder1')
|
|
int get numDaysReminder1;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'num_days_reminder2')
|
|
int get numDaysReminder2;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'num_days_reminder3')
|
|
int get numDaysReminder3;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'schedule_reminder1')
|
|
String get scheduleReminder1;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'schedule_reminder2')
|
|
String get scheduleReminder2;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'schedule_reminder3')
|
|
String get scheduleReminder3;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'endless_reminder_frequency_id')
|
|
String get endlessReminderFrequencyId;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'late_fee_amount1')
|
|
double get lateFeeAmount1;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'late_fee_amount2')
|
|
double get lateFeeAmount2;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'late_fee_amount3')
|
|
double get lateFeeAmount3;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'late_fee_percent1')
|
|
double get lateFeePercent1;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'late_fee_percent2')
|
|
double get lateFeePercent2;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'late_fee_percent3')
|
|
double get lateFeePercent3;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_subject_reminder4')
|
|
String get emailSubjectReminder4;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'email_template_reminder4')
|
|
String get emailBodyReminder4;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'client_online_payment_notification')
|
|
bool get clientOnlinePaymentNotification;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'client_manual_payment_notification')
|
|
bool get clientManualPaymentNotification;
|
|
|
|
@nullable
|
|
@BuiltValueField(wireName: 'counter_number_applied')
|
|
String get counterNumberApplied;
|
|
|
|
// TODO remove this field
|
|
@nullable
|
|
@BuiltValueField(wireName: 'custom_payment_terms')
|
|
BuiltList<PaymentTermEntity> get customPaymentTerms;
|
|
|
|
// TODO remove this field
|
|
@nullable
|
|
@BuiltValueField(wireName: 'has_custom_design1_HIDDEN')
|
|
bool get hasCustomDesign1;
|
|
|
|
// TODO remove this field
|
|
@nullable
|
|
@BuiltValueField(wireName: 'has_custom_design2_HIDDEN')
|
|
bool get hasCustomDesign2;
|
|
|
|
// TODO remove this field
|
|
@nullable
|
|
@BuiltValueField(wireName: 'has_custom_design3_HIDDEN')
|
|
bool get hasCustomDesign3;
|
|
|
|
bool get enableFirstInvoiceTaxRate => (numberOfInvoiceTaxRates ?? 0) >= 1;
|
|
|
|
bool get enableSecondInvoiceTaxRate => (numberOfInvoiceTaxRates ?? 0) >= 2;
|
|
|
|
bool get enableThirdInvoiceTaxRate => (numberOfInvoiceTaxRates ?? 0) >= 3;
|
|
|
|
bool get enableFirstItemTaxRate => (numberOfItemTaxRates ?? 0) >= 1;
|
|
|
|
bool get enableSecondItemTaxRate => (numberOfItemTaxRates ?? 0) >= 2;
|
|
|
|
bool get enableThirdItemTaxRate => (numberOfItemTaxRates ?? 0) >= 3;
|
|
|
|
bool get hasAddress => address1 != null && address1.isNotEmpty;
|
|
|
|
bool get hasLogo => companyLogo != null && companyLogo.isNotEmpty;
|
|
|
|
bool get hasTimezone => timezoneId != null && timezoneId.isNotEmpty;
|
|
|
|
bool get hasDateFormat => dateFormatId != null && dateFormatId.isNotEmpty;
|
|
|
|
bool get hasLanguage => languageId != null && languageId.isNotEmpty;
|
|
|
|
bool get hasCurrency => currencyId != null && currencyId.isNotEmpty;
|
|
|
|
bool get hasDefaultPaymentTypeId =>
|
|
defaultPaymentTypeId != null && defaultPaymentTypeId.isNotEmpty;
|
|
|
|
String getEmailSubject(EmailTemplate emailTemplate) {
|
|
switch (emailTemplate) {
|
|
case EmailTemplate.invoiceEmail:
|
|
return emailSubjectInvoice;
|
|
case EmailTemplate.quoteEmail:
|
|
return emailSubjectQuote;
|
|
case EmailTemplate.paymentEmail:
|
|
return emailSubjectPayment;
|
|
case EmailTemplate.firstReminder:
|
|
return emailSubjectReminder1;
|
|
case EmailTemplate.secondReminder:
|
|
return emailSubjectReminder2;
|
|
case EmailTemplate.thirdReminder:
|
|
return emailSubjectReminder3;
|
|
case EmailTemplate.firstCustom:
|
|
return emailSubjectCustom1;
|
|
case EmailTemplate.secondCustom:
|
|
return emailSubjectCustom2;
|
|
case EmailTemplate.thirdCustom:
|
|
return emailSubjectCustom3;
|
|
default:
|
|
return emailSubjectInvoice;
|
|
}
|
|
}
|
|
|
|
String getEmailBody(EmailTemplate template) {
|
|
switch (template) {
|
|
case EmailTemplate.invoiceEmail:
|
|
return emailBodyInvoice;
|
|
case EmailTemplate.quoteEmail:
|
|
return emailBodyQuote;
|
|
case EmailTemplate.paymentEmail:
|
|
return emailBodyPayment;
|
|
case EmailTemplate.firstReminder:
|
|
return emailBodyReminder1;
|
|
case EmailTemplate.secondReminder:
|
|
return emailBodyReminder2;
|
|
case EmailTemplate.thirdReminder:
|
|
return emailBodyReminder3;
|
|
case EmailTemplate.firstCustom:
|
|
return emailBodyCustom1;
|
|
case EmailTemplate.secondCustom:
|
|
return emailBodyCustom2;
|
|
case EmailTemplate.thirdCustom:
|
|
return emailBodyCustom3;
|
|
default:
|
|
return emailBodyInvoice;
|
|
}
|
|
}
|
|
|
|
bool hasInvoiceField(String field,
|
|
[EntityType entityType = EntityType.product]) {
|
|
if (invoiceFields != null && invoiceFields.isNotEmpty) {
|
|
return invoiceFields.contains('$entityType.$field');
|
|
} else if (field == 'discount') {
|
|
return false;
|
|
} else {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
static Serializer<SettingsEntity> get serializer =>
|
|
_$settingsEntitySerializer;
|
|
}
|
|
|
|
abstract class CompanyItemResponse
|
|
implements Built<CompanyItemResponse, CompanyItemResponseBuilder> {
|
|
factory CompanyItemResponse([void updates(CompanyItemResponseBuilder b)]) =
|
|
_$CompanyItemResponse;
|
|
|
|
CompanyItemResponse._();
|
|
|
|
CompanyEntity get data;
|
|
|
|
static Serializer<CompanyItemResponse> get serializer =>
|
|
_$companyItemResponseSerializer;
|
|
}
|