invoice/lib/ui/group/view/group_view.dart

282 lines
14 KiB
Dart

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:invoiceninja_flutter/data/models/company_model.dart';
import 'package:invoiceninja_flutter/data/models/entities.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/redux/group/group_selectors.dart';
import 'package:invoiceninja_flutter/ui/app/FieldGrid.dart';
import 'package:invoiceninja_flutter/ui/app/entities/entity_list_tile.dart';
import 'package:invoiceninja_flutter/ui/app/view_scaffold.dart';
import 'package:invoiceninja_flutter/ui/group/view/group_view_vm.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/icons.dart';
import 'package:invoiceninja_flutter/utils/localization.dart';
class GroupView extends StatefulWidget {
const GroupView({
Key key,
@required this.viewModel,
}) : super(key: key);
final GroupViewVM viewModel;
@override
_GroupViewState createState() => new _GroupViewState();
}
class _GroupViewState extends State<GroupView> {
@override
Widget build(BuildContext context) {
final localization = AppLocalization.of(context);
final viewModel = widget.viewModel;
final state = viewModel.state;
final group = viewModel.group;
return ViewScaffold(
entity: group,
isSettings: true,
onBackPressed: () => viewModel.onBackPressed(),
body: ListView(
children: <Widget>[
Container(
color: Theme.of(context).backgroundColor,
height: 12.0,
),
EntityListTile(
icon: getEntityIcon(EntityType.client),
title: localization.clients,
onTap: () => viewModel.onClientsPressed(context),
onLongPress: () => viewModel.onClientsPressed(context, true),
subtitle:
memoizedClientStatsForGroup(state.clientState.map, group.id)
.present(localization.active, localization.archived),
),
Container(
color: Theme.of(context).backgroundColor,
height: 12.0,
),
SettingsViewer(
settings: group.settings,
state: state,
)
],
),
);
}
}
class SettingsViewer extends StatelessWidget {
const SettingsViewer({this.settings, this.state});
final SettingsEntity settings;
final AppState state;
@override
Widget build(BuildContext context) {
final localization = AppLocalization.of(context);
final staticState = state.staticState;
return FieldGrid({
localization.name: settings.name,
localization.address:
settings.hasAddress ? formatAddress(object: settings) : null,
localization.phone: settings.phone,
localization.email: settings.email,
localization.logo: settings.hasLogo ? localization.enabled : null,
localization.idNumber: settings.idNumber,
localization.vatNumber: settings.vatNumber,
localization.website: settings.website,
localization.address1: settings.address1,
localization.address2: settings.address2,
localization.city: settings.city,
localization.state: settings.state,
localization.country: settings.countryId != null
? state.staticState.countryMap[settings.countryId]?.name
: null,
localization.postalCode: settings.postalCode,
localization.pageSize: settings.pageSize,
localization.fontSize: settings.fontSize?.toString(),
localization.primaryColor: settings.primaryColor,
localization.secondaryColor: settings.secondaryColor,
localization.primaryFont: settings.primaryFont,
localization.secondaryFont: settings.secondaryFont,
localization.hidePaidToDate: settings.hidePaidToDate?.toString(),
localization.invoiceEmbedDocuments: settings.embedDocuments?.toString(),
localization.timezone: settings.hasTimezone
? staticState.timezoneMap[settings.timezoneId]?.name
: null,
localization.dateFormat: settings.hasDateFormat
? staticState.dateFormatMap[settings.dateFormatId]?.format
: null,
localization.militaryTime: settings.enableMilitaryTime == true
? localization.enabled
: settings.enableMilitaryTime == false ? localization.disabled : null,
localization.language: settings.hasLanguage
? staticState.languageMap[settings.languageId]?.name
: null,
localization.currency: settings.hasCurrency
? staticState.currencyMap[settings.currencyId]?.name
: null,
localization.sendReminders: settings.sendReminders == true
? localization.enabled
: settings.sendReminders == false ? localization.disabled : null,
localization.clientPortal: settings.enablePortal == true
? localization.enabled
: settings.enablePortal == false ? localization.disabled : null,
localization.clientPortalTasks: settings.enablePortal == true
? localization.enabled
: settings.enablePortal == false ? localization.disabled : null,
localization.clientPortalDashboard: settings.enablePortal == true
? localization.enabled
: settings.enablePortal == false ? localization.disabled : null,
localization.paymentType: settings.hasDefaultPaymentTypeId
? staticState.paymentTypeMap[settings.defaultPaymentTypeId]?.name
: null,
localization.invoiceFields: settings.invoiceFields,
localization.emailSignature: settings.emailFooter,
localization.emailStyle: settings.emailStyle,
localization.replyToEmail: settings.replyToEmail,
localization.bccEmail: settings.bccEmail,
localization.customValue1: settings.customValue1,
localization.customValue2: settings.customValue2,
localization.customValue3: settings.customValue3,
localization.customValue4: settings.customValue4,
//localization.paymentTerms: settings.defaultPaymentTerms,
localization.paymentTerms: settings.companyGatewayIds != null
? state.companyGatewayState.map[settings.companyGatewayIds]
?.listDisplayName
: null,
localization.taskRate: settings.defaultTaskRate?.toString(),
localization.attachPdf: settings.pdfEmailAttachment?.toString(),
localization.attachUbl: settings.ublEmailAttachment?.toString(),
localization.attachDocuments:
settings.documentEmailAttachment?.toString(),
localization.attachDocuments:
settings.documentEmailAttachment?.toString(),
localization.emailStyleCustom: settings.emailStyleCustom?.toString(),
localization.emailSubjectInvoice:
settings.emailSubjectInvoice?.toString(),
localization.emailSubjectQuote: settings.emailSubjectQuote?.toString(),
localization.emailSubjectPayment:
settings.emailSubjectPayment?.toString(),
//localization.emailBodyInvoice:
// settings.emailBodyInvoice?.toString(),
//localization.emailBodyQuote:
// settings.emailBodyQuote?.toString(),
//localization.emailBodyPayment:
// settings.emailBodyPayment?.toString(),
//localization.emailSubjectReminder1:
// settings.emailSubjectReminder1?.toString(),
//localization.emailSubjectReminder2:
// settings.emailSubjectReminder2?.toString(),
//localization.emailSubjectReminder3:
// settings.emailSubjectReminder3?.toString(),
//localization.emailSubjectReminder4:
// settings.emailSubjectReminder4?.toString(),
//localization.emailBodyReminder1:
// settings.emailBodyReminder1?.toString(),
//localization.emailBodyReminder2:
// settings.emailBodyReminder2?.toString(),
//localization.emailBodyReminder3:
// settings.emailBodyReminder3?.toString(),
//localization.emailBodyReminder4:
// settings.emailBodyReminder4?.toString(),
localization.customMessageDashboard:
settings.customMessageDashboard?.toString(),
localization.customMessageUnpaidInvoice:
settings.customMessageUnpaidInvoice?.toString(),
localization.customMessagePaidInvoice:
settings.customMessagePaidInvoice?.toString(),
localization.customMessageUnapprovedQuote:
settings.customMessageUnapprovedQuote?.toString(),
localization.lockSentInvoices: settings.lockSentInvoices?.toString(),
localization.autoArchiveInvoice: settings.autoArchiveInvoice?.toString(),
localization.autoArchiveQuote: settings.autoArchiveQuote?.toString(),
localization.autoEmailInvoice: settings.autoEmailInvoice?.toString(),
localization.autoConvertQuote: settings.autoConvertQuote?.toString(),
localization.inclusiveTaxes: settings.enableInclusiveTaxes?.toString(),
localization.translations: settings.translations?.keys?.join(', '),
localization.taskNumberPattern: settings.taskNumberPattern,
localization.taskNumberCounter: settings.taskNumberCounter?.toString(),
localization.expenseNumberPattern: settings.expenseNumberPattern,
localization.expenseNumberCounter:
settings.expenseNumberCounter?.toString(),
localization.vendorNumberPattern: settings.vendorNumberPattern,
localization.vendorNumberCounter:
settings.vendorNumberCounter?.toString(),
localization.ticketNumberPattern: settings.ticketNumberPattern,
localization.ticketNumberCounter:
settings.ticketNumberCounter?.toString(),
localization.paymentNumberPattern: settings.paymentNumberPattern,
localization.paymentNumberCounter:
settings.paymentNumberCounter?.toString(),
localization.invoiceNumberPattern: settings.invoiceNumberPattern,
localization.invoiceNumberCounter:
settings.invoiceNumberCounter?.toString(),
localization.quoteNumberPattern: settings.quoteNumberPattern,
localization.quoteNumberCounter: settings.quoteNumberCounter?.toString(),
localization.clientNumberPattern: settings.clientNumberPattern,
localization.clientNumberCounter:
settings.clientNumberCounter?.toString(),
localization.creditNumberPattern: settings.creditNumberPattern,
localization.creditNumberCounter:
settings.creditNumberCounter?.toString(),
localization.recurringPrefix: settings.recurringNumberPrefix?.toString(),
localization.resetCounter: settings.resetCounterFrequencyId?.toString(),
localization.resetCounterDate: settings.resetCounterDate?.toString(),
localization.counterPadding: settings.counterPadding?.toString(),
localization.sharedInvoiceQuoteCounter:
settings.sharedInvoiceQuoteCounter?.toString(),
//localization.defaultInvoiceTerms: settings.defaultInvoiceTerms,
//localization.defaultQuoteTerms: settings.defaultQuoteTerms,
localization.quoteFooter: settings.defaultQuoteFooter?.toString(),
localization.invoiceTaxRates:
settings.numberOfInvoiceTaxRates?.toString(),
localization.itemTaxRates: settings.numberOfItemTaxRates?.toString(),
//localization.defaultInvoiceDesignId: settings.defaultInvoiceDesignId,
//localization.defaultQuoteDesignId: settings.defaultQuoteDesignId,
localization.invoiceFooter: settings.defaultInvoiceFooter?.toString(),
localization.invoiceLabels: settings.invoiceLabels?.toString(),
localization.defaultTaxName1: settings.defaultTaxName1?.toString(),
localization.defaultTaxRate1: settings.defaultTaxRate1?.toString(),
localization.defaultTaxName2: settings.defaultTaxName2?.toString(),
localization.defaultTaxRate2: settings.defaultTaxRate2?.toString(),
localization.defaultTaxName3: settings.defaultTaxName3?.toString(),
localization.defaultTaxRate3: settings.defaultTaxRate3?.toString(),
//localization.defaultPaymentTypeId: settings.defaultPaymentTypeId,
localization.enablePortalPassword:
settings.enablePortalPassword?.toString(),
localization.sendPortalPassword: settings.sendPortalPassword?.toString(),
localization.signatureOnPdf: settings.signatureOnPdf?.toString(),
localization.enableMarkup: settings.enableEmailMarkup?.toString(),
localization.showAcceptInvoiceTerms:
settings.showAcceptInvoiceTerms?.toString(),
localization.showAcceptQuoteTerms:
settings.showAcceptQuoteTerms?.toString(),
localization.requireInvoiceSignature:
settings.requireInvoiceSignature?.toString(),
localization.requireQuoteSignature:
settings.requireQuoteSignature?.toString(),
localization.allPagesHeader: settings.allPagesHeader?.toString(),
localization.allPagesFooter: settings.allPagesFooter?.toString(),
//localization.enableReminder1: settings.enableReminder1,
//localization.enableReminder2: settings.enableReminder2,
//localization.enableReminder3: settings.enableReminder3,
//localization.enableReminder4: settings.enableReminder4,
//localization.numDaysReminder1: settings.numDaysReminder1,
//localization.numDaysReminder2: settings.numDaysReminder2,
//localization.numDaysReminder3: settings.numDaysReminder3,
//localization.scheduleReminder1: settings.scheduleReminder1,
//localization.scheduleReminder2: settings.scheduleReminder2,
//localization.scheduleReminder3: settings.scheduleReminder3,
//localization.endlessReminderFrequencyId: settings.endlessReminderFrequencyId,
//localization.lateFeeAmount1: settings.lateFeeAmount1,
//localization.lateFeeAmount2: settings.lateFeeAmount2,
//localization.lateFeeAmount3: settings.lateFeeAmount3,
//localization.lateFeePercent1: settings.lateFeePercent1,
//localization.lateFeePercent2: settings.lateFeePercent2,
//localization.lateFeePercent3: settings.lateFeePercent3,
});
}
}