class Constants { //static String get hostedApiUrl => kReleaseMode ? kAppProductionUrl : kAppStagingUrl; static String get hostedApiUrl => kAppProductionUrl; } // TODO remove version once #46609 is fixed const String kClientVersion = '5.0.141'; const String kMinServerVersion = '5.0.4'; const String kAppName = 'Invoice Ninja'; const String kSiteUrl = 'https://invoiceninja.com'; const String kAppProductionUrl = 'https://invoicing.co'; const String kAppStagingUrl = 'https://staging.invoicing.co'; const String kAppStagingNetUrl = 'https://invoiceninja.net'; const String kAppLargeTestUrl = 'https://testv5.invoicing.co'; const String kAppDemoUrl = 'https://demo.invoiceninja.com'; const String kWhiteLabelUrl = 'https://app.invoiceninja.com/buy_now/?account_key=AsFmBAeLXF0IKf7tmi0eiyZfmWW9hxMT&product_id=3'; const String kPrivacyPolicyURL = 'https://www.invoiceninja.com/privacy-policy'; const String kTermsOfServiceURL = 'https://www.invoiceninja.com/terms'; const String kBankingURL = 'https://invoiceninja.com/banking'; const String kTransifexURL = 'https://www.transifex.com/invoice-ninja/invoice-ninja'; const String kWebhookSiteURL = 'https://requestcatcher.com'; const String kZipTaxURL = 'https://zip-tax.com'; const String kSourceCodeBackend = 'https://github.com/invoiceninja/invoiceninja/tree/v5-stable'; const String kSourceCodeFrontend = 'https://github.com/invoiceninja/admin-portal'; const String kSourceCodeFrontendSDK = 'https://pub.dev/packages/invoiceninja'; const String kPlayStoreAppId = 'com.invoiceninja.app'; const String kAppStoreAppId = 'id1503970375'; const String kMicrosoftAppStoreId = '9N3F2BBCFDR6'; const String kAppleStoreUrl = 'https://apps.apple.com/us/app/invoice-ninja-v5/$kAppStoreAppId'; const String kGoogleStoreUrl = 'https://play.google.com/store/apps/details?id=$kPlayStoreAppId'; const String kGoogleFDroidUrl = 'https://f-droid.org/packages/com.invoiceninja.app'; const String kMacOSUrl = 'https://apps.apple.com/app/id1503970375'; const String kLinuxUrl = 'https://snapcraft.io/invoiceninja'; const String kWindowsUrl = 'https://apps.microsoft.com/store/detail/invoice-ninja/$kMicrosoftAppStoreId'; const String kSlackUrl = 'http://slack.invoiceninja.com'; const String kGitHubUrl = 'https://github.com/invoiceninja'; const String kTwitterUrl = 'https://twitter.com/invoiceninja'; const String kFacebookUrl = 'https://www.facebook.com/invoiceninja'; const String kYouTubeUrl = 'https://www.youtube.com/channel/UCXAHcBvhW05PDtWYIq7WDFA/videos'; const String kAppleOAuthClientId = 'com.invoiceninja.client'; const String kAppleOAuthRedirectUrl = 'https://invoicing.co/auth/apple'; const String kReleaseNotesUrl = 'https://github.com/invoiceninja/invoiceninja/releases'; const String kDocsUrl = 'https://invoiceninja.github.io/en'; const String kDocsCustomDomainUrl = '$kDocsUrl/hosted-custom-domain'; const String kDocsCustomDesignUrl = '$kDocsUrl/custom-fields'; const String kDocsCustomFieldsUrl = '$kDocsUrl/custom-fields/#custom-fields'; const String kDocsStripeConnectUrl = '$kDocsUrl/hosted-stripe'; const String kForumUrl = 'https://forum.invoiceninja.com'; const String kApiDocsURL = 'https://api-docs.invoicing.co'; const String kZapierURL = 'https://zapier.com/apps/invoice-ninja'; const String kGatewayFeeHelpURL = 'https://support.stripe.com/questions/passing-the-stripe-fee-on-to-customers'; const String kDebugModeUrl = '$kDocsUrl/self-host-debug-mode'; const String kCapterralUrl = 'https://www.capterra.com/p/145215/Invoice-Ninja'; const String kCronsHelpUrl = '$kDocsUrl/self-host-troubleshooting/#cron-not-running-queue-not-running'; const String kGitHubDiffUrl = 'https://github.com/invoiceninja/invoiceninja/compare/vVERSION...v5-stable'; const String kGitHubLangUrl = 'https://github.com/invoiceninja/invoiceninja/blob/master/resources/lang/en/texts.php'; const String kStatusCheckUrl = 'https://status.invoiceninja.com'; const String kGoogleAnalyticsUrl = 'https://support.google.com/analytics/answer/1037249?hl=en'; enum AppEnvironment { hosted, selfhosted, testing, demo, staging, develop, } const String kSharedPrefs = 'shared_prefs'; const String kSharedPrefUrl = 'url'; const String kSharedPrefToken = 'checksum'; const String kSharedPrefWidth = 'width'; const String kSharedPrefHeight = 'height'; const String kProductProPlanMonth = 'pro_plan'; const String kProductEnterprisePlanMonth_2 = 'enterprise_plan'; const String kProductEnterprisePlanMonth_5 = 'enterprise_plan_5'; const String kProductEnterprisePlanMonth_10 = 'enterprise_plan_10'; const String kProductEnterprisePlanMonth_20 = 'enterprise_plan_20'; const String kProductProPlanYear = 'pro_plan_annual'; const String kProductEnterprisePlanYear_2 = 'enterprise_plan_annual'; const String kProductEnterprisePlanYear_5 = 'enterprise_plan_annual_5'; const String kProductEnterprisePlanYear_10 = 'enterprise_plan_annual_10'; const String kProductEnterprisePlanYear_20 = 'enterprise_plan_annual_20'; const kProductPlans = [ kProductProPlanMonth, kProductEnterprisePlanMonth_2, kProductEnterprisePlanMonth_5, kProductEnterprisePlanMonth_10, kProductEnterprisePlanMonth_20, kProductProPlanYear, kProductEnterprisePlanYear_2, kProductEnterprisePlanYear_5, kProductEnterprisePlanYear_10, kProductEnterprisePlanYear_20, ]; const double kMobileLayoutWidth = 700; const double kMobileDialogPadding = 12; const double kDrawerWidthMobile = 272; const double kDrawerWidthDesktop = 210; const double kTableColumnGap = 16; const double kTopBottomBarHeight = 50; const double kDialogWidth = 400; const double kDashboardPanelHeight = 543; // TODO remove this const double kDashboardPanelHeightWeb = 539; // TODO remove this const double kListNumberWidth = 100; const double kBorderRadius = 2; const double kTabletLayoutWidth = 1100; const double kTabletDialogPadding = 250; const double kTableColumnWidthMin = 80; const double kTableColumnWidthMax = 200; const int kTableListWidthCutoff = 550; const int kDefaultAnimationDuration = 500; const int kCardTypeVisa = 1; const int kCardTypeMasterCard = 2; const int kCardTypeAmEx = 4; const int kCardTypeDiners = 8; const int kCardTypeDiscover = 16; const String kPaymentTypeVisa = '5'; const String kPaymentTypeMasterCard = '6'; const String kPaymentTypeAmEx = '7'; const String kPaymentTypeDiners = '9'; const String kPaymentTypeDiscover = '8'; const String kPaymentTypeCredit = '32'; const String kPlanFree = ''; const String kPlanPro = 'pro'; const String kPlanEnterprise = 'enterprise'; const String kPlanWhiteLabel = 'white_label'; const String kBrightnessLight = 'light'; const String kBrightnessDark = 'dark'; const String kBrightnessSytem = 'system'; const String kColorThemeLight = 'light'; const String kColorThemeDark = 'dark'; const double kGutterWidth = 16; const double kLighterOpacity = .6; const String kStatementIncludePayments = 'payments'; const String kStatementIncludeCredits = 'credits'; const String kStatementIncludeAging = 'aging'; const int kMaxNumberOfCompanies = 10; const int kMaxNumberOfHistory = 50; const int kMaxPostSeconds = 120; const int kMaxRawPostSeconds = 600; const int kMaxEntitiesPerBulkAction = 100; const int kMaxRecordsPerPage = 5000; const int kMillisecondsToTimerRefreshData = 1000 * 60 * 5; // 5 minutes const int kMillisecondsToRefreshData = 1000 * 60 * 15; // 15 minutes const int kUpdatedAtBufferSeconds = 600; const int kMillisecondsToRefreshActivities = 1000 * 60 * 60 * 24; // 1 day const int kMillisecondsToRefreshStaticData = 1000 * 60 * 60 * 24; // 1 day const int kMillisecondsToDebounceUpdate = 500; // .5 second const int kMillisecondsToDebounceSave = 1500; // 1.5 seconds const int kMillisecondsToDebounceWrite = 3000; // 3 seconds const String kLanguageEnglish = '1'; const String kCurrencyAll = '-1'; const String kCurrencyUSDollar = '1'; const String kCurrencyEuro = '3'; const String kTaxCategoryPhysical = '1'; const String kTaxCategoryServices = '2'; const String kTaxCategoryDigital = '3'; const String kTaxCategoryShipping = '4'; const String kTaxCategoryExempt = '5'; const String kTaxCategoryReducedTax = '6'; const String kTaxCategoryOverrideTax = '7'; const String kTaxCategoryZeroRated = '8'; const String kTaxCategoryReverseTax = '9'; const kTaxCategories = { kTaxCategoryPhysical: 'physical_goods', kTaxCategoryDigital: 'digital_products', kTaxCategoryServices: 'services', kTaxCategoryShipping: 'shipping', kTaxCategoryExempt: 'tax_exempt', kTaxCategoryReducedTax: 'reduced_tax', kTaxCategoryOverrideTax: 'override_tax', kTaxCategoryZeroRated: 'zero_rated', kTaxCategoryReverseTax: 'reverse_tax', }; const String kTaxClassificationIndividual = 'individual'; const String kTaxClassificationCompany = 'company'; const String kTaxClassificationPartnership = 'partnership'; const String kTaxClassificationTrust = 'trust'; const String kTaxClassificationCharity = 'charity'; const String kTaxClassificationGovernment = 'government'; const String kTaxClassificationOther = 'other'; const kTaxClassifications = [ kTaxClassificationIndividual, kTaxClassificationCompany, kTaxClassificationPartnership, kTaxClassificationTrust, kTaxClassificationCharity, kTaxClassificationGovernment, kTaxClassificationOther, ]; const String kEInvoiceTypeEN16931 = 'EN16931'; const String kEInvoiceTypeXInvoice_2_2 = 'XInvoice_2_2'; const String kEInvoiceTypeXInvoice_2_1 = 'XInvoice_2_1'; const String kEInvoiceTypeXInvoice_2_0 = 'XInvoice_2_0'; const String kEInvoiceTypeXInvoice_1_0 = 'XInvoice_1_0'; const String kEInvoiceTypeXInvoice_Extended = 'XInvoice-Extended'; const String kEInvoiceTypeXInvoice_BasicWL = 'XInvoice-BasicWL'; const String kEInvoiceTypeXInvoice_Basic = 'XInvoice-Basic'; const String kEInvoiceTypeFacturae_3_2 = 'Facturae_3.2'; const String kEInvoiceTypeFacturae_3_2_1 = 'Facturae_3.2.1'; const String kEInvoiceTypeFacturae_3_2_2 = 'Facturae_3.2.2'; const kEInvoiceTypes = [ kEInvoiceTypeEN16931, kEInvoiceTypeXInvoice_2_2, kEInvoiceTypeXInvoice_2_1, kEInvoiceTypeXInvoice_2_0, kEInvoiceTypeXInvoice_1_0, kEInvoiceTypeXInvoice_Extended, kEInvoiceTypeXInvoice_BasicWL, kEInvoiceTypeXInvoice_Basic, kEInvoiceTypeFacturae_3_2_2, kEInvoiceTypeFacturae_3_2_1, kEInvoiceTypeFacturae_3_2, ]; const String kCountryUnitedStates = '840'; const String kCountryAustralia = '36'; const String kCountryCanada = '124'; const String kCountrySwitzerland = '756'; const String kInvoiceStatusViewed = '-3'; const String kInvoiceStatusUnpaid = '-2'; const String kInvoiceStatusPastDue = '-1'; const String kInvoiceStatusDraft = '1'; const String kInvoiceStatusSent = '2'; const String kInvoiceStatusPartial = '3'; const String kInvoiceStatusPaid = '4'; const String kInvoiceStatusCancelled = '5'; const String kInvoiceStatusReversed = '6'; const kInvoiceStatuses = { kInvoiceStatusPastDue: 'past_due', kInvoiceStatusDraft: 'draft', kInvoiceStatusSent: 'sent', kInvoiceStatusPartial: 'partial', kInvoiceStatusPaid: 'paid', kInvoiceStatusCancelled: 'cancelled', kInvoiceStatusReversed: 'reversed', kInvoiceStatusViewed: 'viewed', }; const String kRecurringInvoiceStatusDraft = '1'; const String kRecurringInvoiceStatusActive = '2'; const String kRecurringInvoiceStatusPaused = '3'; const String kRecurringInvoiceStatusCompleted = '4'; const String kRecurringInvoiceStatusPending = '-1'; const kRecurringInvoiceStatuses = { kRecurringInvoiceStatusDraft: 'draft', kRecurringInvoiceStatusActive: 'active', kRecurringInvoiceStatusPaused: 'paused', kRecurringInvoiceStatusCompleted: 'completed', kRecurringInvoiceStatusPending: 'pending', }; const String kRecurringExpenseStatusDraft = '1'; const String kRecurringExpenseStatusActive = '2'; const String kRecurringExpenseStatusPaused = '3'; const String kRecurringExpenseStatusCompleted = '4'; const String kRecurringExpenseStatusPending = '-1'; const kRecurringExpenseStatuses = { kRecurringExpenseStatusDraft: 'draft', kRecurringExpenseStatusActive: 'active', kRecurringExpenseStatusPaused: 'paused', kRecurringExpenseStatusCompleted: 'completed', kRecurringExpenseStatusPending: 'pending', }; const String kQuoteStatusViewed = '-2'; const String kQuoteStatusExpired = '-1'; const String kQuoteStatusDraft = '1'; const String kQuoteStatusSent = '2'; const String kQuoteStatusApproved = '3'; const String kQuoteStatusConverted = '4'; const kQuoteStatuses = { kQuoteStatusExpired: 'expired', kQuoteStatusDraft: 'draft', kQuoteStatusSent: 'sent', kQuoteStatusApproved: 'approved', kQuoteStatusConverted: 'converted', kQuoteStatusViewed: 'viewed', }; const String kCreditStatusViewed = '-1'; const String kCreditStatusDraft = '1'; const String kCreditStatusSent = '2'; const String kCreditStatusPartial = '3'; const String kCreditStatusApplied = '4'; const kCreditStatuses = { kCreditStatusDraft: 'draft', kCreditStatusSent: 'sent', kCreditStatusPartial: 'partial', kCreditStatusApplied: 'applied', kCreditStatusViewed: 'viewed', }; const String kPurchaseOrderStatusViewed = '-1'; const String kPurchaseOrderStatusDraft = '1'; const String kPurchaseOrderStatusSent = '2'; const String kPurchaseOrderStatusAccepted = '3'; const String kPurchaseOrderStatusReceived = '4'; const String kPurchaseOrderStatusCancelled = '5'; const kPurchaseOrderStatuses = { kPurchaseOrderStatusDraft: 'draft', kPurchaseOrderStatusSent: 'sent', kPurchaseOrderStatusAccepted: 'accepted', kPurchaseOrderStatusReceived: 'received', kPurchaseOrderStatusCancelled: 'cancelled', kPurchaseOrderStatusViewed: 'viewed', }; const String kDocumentStatusPublic = '-1'; const String kDocumentStatusPrivate = '-2'; const String kDocumentStatusImage = '-3'; const String kDocumentStatusPDF = '-4'; const String kDocumentStatusOther = '-5'; const String kGatewayTypeCreditCard = '1'; const String kGatewayTypeBankTransfer = '2'; const String kGatewayTypePayPal = '3'; const String kGatewayTypeCrypto = '4'; const String kGatewayTypeCustom = '5'; const String kGatewayTypeAlipay = '6'; const String kGatewayTypeSofort = '7'; const String kGatewayTypeApplePay = '8'; const String kGatewayTypeSEPA = '9'; const String kGatewayTypeCredit = '10'; const String kGatewayTypeKBC = '11'; const String kGatewayTypeBancontact = '12'; const String kGatewayTypeIDeal = '13'; const String kGatewayTypeHosted = '14'; const String kGatewayTypeGiropay = '15'; const String kGatewayTypePrzelewy24 = '16'; const String kGatewayTypeEPS = '17'; const String kGatewayTypeDirectDebit = '18'; const String kGatewayTypeACSS = '19'; const String kGatewayTypeBECS = '20'; const String kGatewayTypeInstantBankPay = '21'; const String kGatewayTypeFPX = '22'; const String kGatewayTypeKlarna = '23'; const String kGatewayTypeBacs = '24'; const kGatewayTypes = { kGatewayTypeCreditCard: 'credit_card', kGatewayTypeBankTransfer: 'bank_transfer', kGatewayTypePayPal: 'paypal', kGatewayTypeCrypto: 'crypto', kGatewayTypeCustom: 'custom', kGatewayTypeAlipay: 'alipay', kGatewayTypeSofort: 'sofort', kGatewayTypeApplePay: 'apple_pay', kGatewayTypeSEPA: 'sepa', kGatewayTypeCredit: 'credit', kGatewayTypeKBC: 'kbc', kGatewayTypeBancontact: 'bancontact', kGatewayTypeIDeal: 'ideal', kGatewayTypeHosted: 'hosted', kGatewayTypeGiropay: 'giropay', kGatewayTypePrzelewy24: 'przelewy24', kGatewayTypeDirectDebit: 'direct_debit', kGatewayTypeEPS: 'eps', kGatewayTypeACSS: 'acss', kGatewayTypeBECS: 'becs', kGatewayTypeInstantBankPay: 'instant_bank_pay', kGatewayTypeFPX: 'fpx', kGatewayTypeKlarna: 'klarna', kGatewayTypeBacs: 'bacs', }; const String kNotificationChannelEmail = 'email'; const String kNotificationChannelSlack = 'slack'; const String kPlatformWindows = 'Windows'; const String kPlatformLinux = 'Linux'; const String kPlatformMacOS = 'macOS'; const String kPlatformAndroid = 'Android'; const String kPlatformiPhone = 'iPhone'; const String kNotificationsAll = 'all_notifications'; const String kNotificationsAllUser = 'all_user_notifications'; const String kNotificationsPaymentSuccess = 'payment_success'; const String kNotificationsPaymentFailure = 'payment_failure'; const String kNotificationsPaymentManual = 'payment_manual'; const String kNotificationsInvoiceCreated = 'invoice_created'; const String kNotificationsInvoiceSent = 'invoice_sent'; const String kNotificationsInvoiceLate = 'invoice_late'; const String kNotificationsInvoiceViewed = 'invoice_viewed'; const String kNotificationsQuoteCreated = 'quote_created'; const String kNotificationsQuoteSent = 'quote_sent'; const String kNotificationsQuoteViewed = 'quote_viewed'; const String kNotificationsQuoteExpired = 'quote_expired'; const String kNotificationsQuoteApproved = 'quote_approved'; const String kNotificationsCreditCreated = 'credit_created'; const String kNotificationsCreditSent = 'credit_sent'; const String kNotificationsCreditViewed = 'credit_viewed'; const String kNotificationsPurchaseOrderCreated = 'purchase_order_created'; const String kNotificationsPurchaseOrderSent = 'purchase_order_sent'; const String kNotificationsPurchaseOrderViewed = 'purchase_order_viewed'; const String kNotificationsPurchaseOrderAccepted = 'purchase_order_accepted'; const String kNotificationsInventoryThreshold = 'inventory_threshold'; const kNotificationEvents = [ kNotificationsInvoiceCreated, kNotificationsInvoiceSent, kNotificationsInvoiceViewed, kNotificationsInvoiceLate, kNotificationsPaymentSuccess, kNotificationsPaymentFailure, kNotificationsPaymentManual, kNotificationsQuoteCreated, kNotificationsQuoteSent, kNotificationsQuoteViewed, kNotificationsQuoteApproved, kNotificationsQuoteExpired, kNotificationsCreditCreated, kNotificationsCreditSent, kNotificationsCreditViewed, kNotificationsPurchaseOrderCreated, kNotificationsPurchaseOrderSent, kNotificationsPurchaseOrderViewed, kNotificationsPurchaseOrderAccepted, kNotificationsInventoryThreshold, ]; const String kGatewayStripe = 'd14dd26a37cecc30fdd65700bfb55b23'; const String kGatewayStripeConnect = 'd14dd26a47cecc30fdd65700bfb67b34'; const String kGatewayAuthorizeNet = '3b6621f970ab18887c4f6dca78d3f8bb'; const String kGatewayCheckoutCom = '3758e7f7c6f4cecf0f4f348b9a00f456'; const String kGatewayPayPalExpress = '38f2c48af60c7dd69e04248cbb24c36e'; const String kGatewayWePay = '8fdeed552015b3c7b44ed6c8ebd9e992'; const String kGatewayCustom = '54faab2ab6e3223dbe848b1686490baa'; const String kClientPortalModeSubdomain = 'subdomain'; const String kClientPortalModeDomain = 'domain'; const String kClientPortalModeIFrame = 'iframe'; const String kGenerateNumberWhenSaved = 'when_saved'; const String kGenerateNumberWhenSent = 'when_sent'; //const String kNumberGeneratedWhenPaid = 'paid'; const String kDesignHeader = 'header'; const String kDesignBody = 'body'; const String kDesignFooter = 'footer'; const String kDesignProducts = 'product'; const String kDesignTasks = 'task'; const String kDesignIncludes = 'includes'; const String kEmailDesignPlain = 'plain'; const String kEmailDesignLight = 'light'; const String kEmailDesignDark = 'dark'; const String kEmailDesignCustom = 'custom'; const String kEntityStateActive = 'active'; const String kEntityStateArchived = 'archived'; const String kEntityStateDeleted = 'deleted'; const String kFieldTypeSingleLineText = 'single_line_text'; const String kFieldTypeMultiLineText = 'multi_line_text'; const String kFieldTypeDropdown = 'dropdown'; const String kFieldTypeDate = 'date'; const String kFieldTypeSwitch = 'switch'; const String kSwitchValueYes = 'yes'; const String kSwitchValueNo = 'no'; const String kTaskStatusLogged = '-1'; const String kTaskStatusRunning = '-2'; const String kTaskStatusInvoiced = '-3'; const kTaskStatuses = { kTaskStatusLogged: 'logged', kTaskStatusRunning: 'running', kTaskStatusInvoiced: 'invoiced', }; const String kMain = 'main'; const String kSettings = 'settings'; const String kDashboard = 'dashboard'; const String kReports = 'reports'; const String kKanban = 'kanban'; const String kAgeGroupPaid = 'age_group_paid'; const String kAgeGroup0 = 'age_group_0'; const String kAgeGroup30 = 'age_group_30'; const String kAgeGroup60 = 'age_group_60'; const String kAgeGroup90 = 'age_group_90'; const String kAgeGroup120 = 'age_group_120'; const kAgeGroups = { kAgeGroupPaid: -1, kAgeGroup0: 0, kAgeGroup30: 30, kAgeGroup60: 60, kAgeGroup90: 90, kAgeGroup120: 120, }; const String kReminderScheduleAfterInvoiceDate = 'after_invoice_date'; const String kReminderScheduleBeforeDueDate = 'before_due_date'; const String kReminderScheduleAfterDueDate = 'after_due_date'; const String kSettingsCompanyDetails = 'company_details'; const String kSettingsPaymentTerms = 'payment_terms'; const String kSettingsPaymentTermView = 'payment_term/view'; const String kSettingsPaymentTermEdit = 'payment_term/edit'; const String kSettingsUserDetails = 'user_details'; const String kSettingsLocalization = 'localization'; const String kSettingsPaymentSettings = 'payment_settings'; const String kSettingsCompanyGateways = 'company_gateways'; const String kSettingsCompanyGatewaysView = 'company_gateways/view'; const String kSettingsCompanyGatewaysEdit = 'company_gateways/edit'; const String kSettingsTaxSettings = 'tax_settings'; const String kSettingsTaxRates = 'tax_settings_rates'; const String kSettingsTaxRatesView = 'tax_settings_rates/view'; const String kSettingsTaxRatesEdit = 'tax_settings_rates/edit'; const String kSettingsProducts = 'product_settings'; const String kSettingsTasks = 'task_settings'; const String kSettingsExpenses = 'expense_settings'; const String kSettingsImportExport = 'import_export'; const String kSettingsDeviceSettings = 'device_settings'; const String kSettingsGroupSettings = 'group_settings'; const String kSettingsGroupSettingsView = 'group_settings/view'; const String kSettingsGroupSettingsEdit = 'group_settings/edit'; const String kSettingsPaymentLinks = 'payment_links'; const String kSettingsPaymentLinksView = 'payment_links/view'; const String kSettingsPaymentLinksEdit = 'payment_links/edit'; const String kSettingsCustomFields = 'custom_fields'; const String kSettingsCustomDesigns = 'custom_designs'; const String kSettingsCustomDesignsView = 'custom_designs/view'; const String kSettingsCustomDesignsEdit = 'custom_designs/edit'; const String kSettingsGeneratedNumbers = 'generated_numbers'; const String kSettingsWorkflowSettings = 'workflow_settings'; const String kSettingsInvoiceDesign = 'invoice_design'; const String kSettingsClientPortal = 'client_portal'; const String kSettingsEmailSettings = 'email_settings'; const String kSettingsTemplatesAndReminders = 'templates_and_reminders'; const String kSettingsCreditCardsAndBanks = 'credit_cards_and_banks'; const String kSettingsDataVisualizations = 'data_visualizations'; const String kSettingsApiTokens = 'api_tokens'; const String kSettingsUserManagement = 'user_management'; const String kSettingsUserManagementView = 'user_management/view'; const String kSettingsUserManagementEdit = 'user_management/edit'; const String kSettingsAccountManagement = 'account_management'; const String kSettingsTokens = 'tokens'; const String kSettingsTokenView = 'token/view'; const String kSettingsTokenEdit = 'token/edit'; const String kSettingsWebhooks = 'webhook'; const String kSettingsWebhookView = 'webhook/view'; const String kSettingsWebhookEdit = 'webhook/edit'; const String kSettingsExpenseCategories = 'expense_category'; const String kSettingsExpenseCategoryView = 'expense_category/view'; const String kSettingsExpenseCategoryEdit = 'expense_category/edit'; const String kSettingsTaskStatuses = 'task_status'; const String kSettingsTaskStatusView = 'task_status/view'; const String kSettingsTaskStatusEdit = 'task_status/edit'; const String kSettingsBankAccounts = 'bank_accounts'; const String kSettingsBankAccountsView = 'bank_accounts/view'; const String kSettingsBankAccountsEdit = 'bank_accounts/edit'; const String kSettingsTransactionRules = 'transaction_rules'; const String kSettingsTransactionRulesView = 'transaction_rules/view'; const String kSettingsTransactionRulesEdit = 'transaction_rules/edit'; const String kSettingsSchedules = 'schedules'; const String kSettingsSchedulesView = 'schedules/view'; const String kSettingsSchedulesEdit = 'schedules/edit'; const List kAdvancedSettings = [ kSettingsCustomDesigns, kSettingsGroupSettings, kSettingsClientPortal, kSettingsCustomFields, kSettingsEmailSettings, kSettingsGeneratedNumbers, kSettingsInvoiceDesign, kSettingsTemplatesAndReminders, kSettingsPaymentLinks, kSettingsUserManagement, kSettingsTransactionRules, ]; const String kReportClient = 'client'; const String kReportClientContact = 'client_contact'; const String kReportCredit = 'credit'; const String kReportCreditItem = 'credit_item'; const String kReportDocument = 'document'; const String kReportExpense = 'expense'; const String kReportInvoice = 'invoice'; const String kReportPayment = 'payment'; const String kReportProduct = 'product'; const String kReportProfitAndLoss = 'profit_and_loss'; const String kReportTask = 'task'; const String kReportTaskItem = 'task_item'; const String kReportInvoiceTax = 'invoice_tax'; const String kReportPaymentTax = 'payment_tax'; const String kReportQuote = 'quote'; const String kReportInvoiceItem = 'invoice_item'; const String kReportQuoteItem = 'quote_item'; const String kReportRecurringExpense = 'recurring_expense'; const String kReportRecurringInvoice = 'recurring_invoice'; const String kReportPurchaseOrder = 'purchase_order'; const String kReportPurchaseOrderItem = 'purchase_order_item'; const String kReportVendor = 'vendor'; const String kReportTransaction = 'transaction'; const String kPdfFieldsClientDetails = 'client_details'; const String kPdfFieldsCompanyDetails = 'company_details'; const String kPdfFieldsCompanyAddress = 'company_address'; const String kPdfFieldsInvoiceDetails = 'invoice_details'; const String kPdfFieldsQuoteDetails = 'quote_details'; const String kPdfFieldsCreditDetails = 'credit_details'; const String kPdfFieldsProductColumns = 'product_columns'; const String kPdfFieldsProductQuoteColumns = 'product_quote_columns'; const String kPdfFieldsVendorDetails = 'vendor_details'; const String kPdfFieldsPurchaseOrderDetails = 'purchase_order_details'; const String kPdfFieldsTaskColumns = 'task_columns'; const String kPdfFieldsTotalFields = 'total_columns'; const String kPdfFields = ''; const String kPermissionCreateAll = 'create_all'; const String kPermissionViewAll = 'view_all'; const String kPermissionEditAll = 'edit_all'; const String kPermissionViewReports = 'view_reports'; const String kPermissionViewDashboard = 'view_dashboard'; const String kPaymentStatusPartiallyUnapplied = '-2'; const String kPaymentStatusUnapplied = '-1'; const String kPaymentStatusPending = '1'; const String kPaymentStatusCancelled = '2'; const String kPaymentStatusFailed = '3'; const String kPaymentStatusCompleted = '4'; const String kPaymentStatusPartiallyRefunded = '5'; const String kPaymentStatusRefunded = '6'; const kPaymentStatuses = { kPaymentStatusPartiallyUnapplied: 'partially_unapplied', kPaymentStatusUnapplied: 'unapplied', kPaymentStatusPending: 'pending', kPaymentStatusCancelled: 'cancelled', kPaymentStatusFailed: 'failed', kPaymentStatusCompleted: 'completed', kPaymentStatusPartiallyRefunded: 'partially_refunded', kPaymentStatusRefunded: 'refunded', }; const String kExpenseStatusLogged = '1'; const String kExpenseStatusPending = '2'; const String kExpenseStatusInvoiced = '3'; const String kExpenseStatusUnpaid = '4'; const String kExpenseStatusPaid = '5'; const kExpenseStatuses = { kExpenseStatusLogged: 'logged', kExpenseStatusPending: 'pending', kExpenseStatusInvoiced: 'invoiced', kExpenseStatusUnpaid: 'unpaid', kExpenseStatusPaid: 'paid', }; const String kTransactionStatusUnmatched = '1'; const String kTransactionStatusMatched = '2'; const String kTransactionStatusConverted = '3'; const String kTransactionStatusDeposit = '-1'; const String kTransactionStatusWithdrawal = '-2'; const kTransactionStatuses = { kTransactionStatusUnmatched: 'unmatched', kTransactionStatusMatched: 'matched', kTransactionStatusConverted: 'converted', kTransactionStatusDeposit: 'deposit', kTransactionStatusWithdrawal: 'withdrawal', }; const String kDefaultCurrencyId = '1'; const String kDefaultLanguageId = '1'; const String kDefaultDateFormat = '5'; const String kDefaultAccentColor = '#2F7DC3'; const String kDefaultDarkSelectedColorMenu = '#1E252F'; const String kDefaultDarkSelectedColor = '#253750'; const String kDefaultDarkBorderColor = '#393A3C'; const String kDefaultLightSelectedColorMenu = '#f2faff'; const String kDefaultLightSelectedColor = '#e5f5ff'; const String kDefaultLightBorderColor = '#dfdfdf'; const String kTaxRegionUnitedStates = 'US'; const String kTaxRegionEurope = 'EU'; const String kTaxRegionAustralia = 'AU'; const String kReportGroupDay = 'day'; const String kReportGroupWeek = 'week'; const String kReportGroupMonth = 'month'; const String kReportGroupQuarter = 'quarter'; const String kReportGroupYear = 'year'; const int kModuleRecurringInvoices = 1; const int kModuleCredits = 2; const int kModuleQuotes = 4; const int kModuleTasks = 8; const int kModuleExpenses = 16; const int kModuleProjects = 32; const int kModuleVendors = 64; const int kModuleDocuments = 128; const int kModuleTransactions = 256; const int kModuleRecurringExpenses = 512; const int kModuleRecurringTasks = 1024; const int kModuleRecurringQuotes = 2048; const int kModuleInvoices = 4096; const int kModuleProformaInvoices = 8192; const int kModulePurchaseOrders = 16384; const Map kModules = { kModuleInvoices: 'invoices', kModuleRecurringInvoices: 'recurring_invoices', kModuleQuotes: 'quotes', kModuleCredits: 'credits', kModuleProjects: 'projects', kModuleTasks: 'tasks', kModuleVendors: 'vendors', kModulePurchaseOrders: 'purchase_orders', kModuleExpenses: 'expenses', kModuleRecurringExpenses: 'recurring_expenses', kModuleTransactions: 'transactions', kModuleDocuments: 'documents', //kModuleRecurringTasks: 'recurring_tasks', //kModuleRecurringQuotes: 'recurring_quotes', }; const List kPaymentTerms = [0, -1, 7, 10, 14, 15, 30, 60, 90]; const List kLanguages = [ 'ar', 'bg', 'ca', 'cs', 'da', 'de', 'el', 'en', 'en_GB', 'en_AU', 'es', 'es_ES', 'et', 'fa', 'fi', 'fr', 'fr_CA', 'fr_CH', 'hu', 'hr', 'it', 'ja', 'lt', 'lv_LV', 'mk_MK', 'nb_NO', 'nl', 'pl', 'pt_BR', 'pt_PT', 'ro', 'ru_RU', 'sk', 'sl', 'sq', 'sr', 'sv', 'th', 'tr_TR', 'zh_TW', ]; List kCustomLabels = [ 'address1', 'address2', 'amount', 'balance', 'country', 'credit', 'credit_card', 'date', 'description', 'details', 'discount', 'due_date', 'email', 'from', 'hours', 'id_number', 'invoice', 'item', 'line_total', 'paid_to_date', 'partial_due', 'payment_date', 'phone', 'po_number', 'quantity', 'quote', 'rate', 'service', 'statement', 'subtotal', 'surcharge', 'tax', 'taxes', 'invoice_terms', 'quote_terms', 'credit_terms', 'to', 'total', 'unit_cost', 'valid_until', 'vat_number', 'website', ]; const kDaysOfTheWeek = { '0': 'sunday', '1': 'monday', '2': 'tuesday', '3': 'wednesday', '4': 'thursday', '5': 'friday', '6': 'saturday', }; const kMonthsOfTheYear = { '1': 'january', '2': 'february', '3': 'march', '4': 'april', '5': 'may', '6': 'june', '7': 'july', '8': 'august', '9': 'september', '10': 'october', '11': 'november', '12': 'december', }; const kFrequencyOnce = '0'; const kFrequencyMonthly = '5'; const kStatementStatusAll = 'all'; const kStatementStatusPaid = 'paid'; const kStatementStatusUnpaid = 'unpaid'; const kFrequencies = { '1': 'freq_daily', '2': 'freq_weekly', '3': 'freq_two_weeks', '4': 'freq_four_weeks', '5': 'freq_monthly', '6': 'freq_two_months', '7': 'freq_three_months', '8': 'freq_four_months', '9': 'freq_six_months', '10': 'freq_annually', '11': 'freq_two_years', '12': 'freq_three_years', }; const kPageLayouts = ['portrait', 'landscape']; const kPageSizes = [ 'A5', 'A4', 'A3', 'B5', 'B4', 'JIS-B5', 'JIS-B4', 'letter', 'legal', 'ledger', ]; const String kDrawerKey = 'drawer_key'; const String kSelectCompanyDropdownKey = 'select_company_dropdown_key'; // https://github.com/invoiceninja/invoiceninja/blob/v5-develop/app/Models/Activity.php const String kActivityCreateClient = '1'; const String kActivityArchiveClient = '2'; const String kActivityDeleteClient = '3'; const String kActivityCreateInvoice = '4'; const String kActivityUpdateInvoice = '5'; const String kActivityEmailInvoice = '6'; const String kActivityViewInvoice = '7'; const String kActivityArchiveInvoice = '8'; const String kActivityDeleteInvoice = '9'; const String kActivityCreatePayment = '10'; const String kActivityUpdatePayment = '11'; const String kActivityArchivePayment = '12'; const String kActivityDeletePayment = '13'; const String kActivityCreateCredit = '14'; const String kActivityUpdateCredit = '15'; const String kActivityArchiveCredit = '16'; const String kActivityDeleteCredit = '17'; const String kActivityCreateQuote = '18'; const String kActivityUpdateQuote = '19'; const String kActivityEmailQuote = '20'; const String kActivityViewQuote = '21'; const String kActivityArchiveQuote = '22'; const String kActivityDeleteQuote = '23'; const String kActivityRestoreQuote = '24'; const String kActivityRestoreInvoice = '25'; const String kActivityRestoreClient = '26'; const String kActivityRestorePayment = '27'; const String kActivityRestoreCredit = '28'; const String kActivityApproveQuote = '29'; const String kActivityCreateVendor = '30'; const String kActivityArchiveVendor = '31'; const String kActivityDeleteVendor = '32'; const String kActivityRestoreVendor = '33'; const String kActivityCreateExpense = '34'; const String kActivityArchiveExpense = '35'; const String kActivityDeleteExpense = '36'; const String kActivityRestoreExpense = '37'; const String kActivityVoidedPayment = '39'; const String kActivityRefundedPayment = '40'; const String kActivityFailedPayment = '41'; const String kActivityCreateTask = '42'; const String kActivityUpdateTask = '43'; const String kActivityArchiveTask = '44'; const String kActivityDeleteTask = '45'; const String kActivityRestoreTask = '46'; const String kActivityUpdateExpense = '47'; const String kActivityCreateUser = '48'; const String kActivityUpdateUser = '49'; const String kActivityArchiveUser = '50'; const String kActivityDeleteUser = '51'; const String kActivityRestoreUser = '52'; const String kActivityMarkSentInvoice = '53'; const String kActivityPaidInvoice = '54'; const String kActivityEmailInvoiceFailed = '57'; const String kActivityReversedInvoice = '58'; const String kActivityCancelledInvoice = '59'; const String kActivityViewCredit = '60'; const String kActivityUpdateClient = '61'; const String kActivityUpdateVendor = '62'; const String kActivityEmailReminder1 = '63'; const String kActivityEmailReminder2 = '64'; const String kActivityEmailReminder3 = '65'; const String kActivityEmailReminderEndless = '66'; const String kActivityCreateSubscription = '80'; const String kActivityUpdateSubscription = '81'; const String kActivityArchiveSubscription = '82'; const String kActivityDeleteSubscription = '83'; const String kActivityRestoreSubscription = '84'; const String kActivityCreateRecurringInvoice = '100'; const String kActivityUpdateRecurringInvoice = '101'; const String kActivityArchiveRecurringInvoice = '102'; const String kActivityDeleteRecurringInvoice = '103'; const String kActivityRestoreRecurringInvoice = '104'; const String kActivityCreateRecurringQuote = '110'; const String kActivityUpdateRecurringQuote = '111'; const String kActivityArchiveRecurringQuote = '112'; const String kActivityDeleteRecurringQuote = '113'; const String kActivityRestoreRecurringQuote = '114'; const String kActivityCreateRecurringExpense = '120'; const String kActivityUpdateRecurringExpense = '121'; const String kActivityArchiveRecurringExpense = '122'; const String kActivityDeleteRecurringExpense = '123'; const String kActivityRestoreRecurringExpense = '124'; const String kActivityCreatePurchaseOrder = '130'; const String kActivityUpdatePurchaseOrder = '131'; const String kActivityArchivePurchaseOrder = '132'; const String kActivityDeletePurchaseOrder = '133'; const String kActivityRestorePurchaseOrder = '134'; const String kActivityEmailPurchaseOrder = '135'; const String kActivityViewPurchaseOrder = '136'; const String kActivityAcceptPurchaseOrder = '137'; const String kActivityEmailPayment = '138';