// Copyright 2017 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.api.ads.adwords.lib.selectorfields.v201702.cm;
import com.google.api.ads.adwords.lib.selectorfields.EntityField;
import com.google.api.ads.adwords.lib.selectorfields.Filterable;
/**
* A {@code Enum} to facilitate the selection of fields for {@code BudgetOrder}.
*/
public enum BudgetOrderField implements EntityField {
// Fields constants definitions
/**
* This must be passed as a string with dashes, e.g.
* "1234-5678-9012-3456".
*/
@Filterable
BillingAccountId(true),
/**
* Enables user to specify meaningful name for a billing account to aid in reconciling monthly invoices.
* This name will be printed in the monthly invoices.
*/
@Filterable
BillingAccountName(true),
/**
* Enables user to specify meaningful name for referencing this budget order.
* A default name will be provided if none is specified.
* This name will be printed in the monthly invoices.
*/
@Filterable
BudgetOrderName(true),
/**
* EndDateTime must be on or before "20361231 235959 America/Los_Angeles" or must set the same instant as "20371230 235959 America/Los_Angeles" to indicate infinite end date.
* StartDateTime and EndDateTime must use the same time zone.
*/
@Filterable
EndDateTime(true),
/**
*
*/
@Filterable
Id(true),
/**
* Contains fields that provide information on the last set of values that were passed in through the parent BudgetOrder for mutate.add and mutate.set.
*/
LastRequest(false),
/**
* Enables user to enter a value that helps them reference this budget order in their monthly invoices.
* This number will be printed in the monthly invoices.
*/
@Filterable
PoNumber(true),
/**
* A 12 digit billing ID assigned to the user by Google.
* This must be passed in as a string with dashes, e.g.
* "1234-5678-9012".
* For mutate.add, this field is required if billingAccountId is not specified.
*/
@Filterable
PrimaryBillingId(true),
/**
* For certain users, a secondary billing ID will be required on mutate.add.
* If this requirement was not communicated to the user, the user may ignore this parameter.
* If specified, this must be passed in as a string with dashes, e.g.
* "1234-5678-9012".
*/
@Filterable
SecondaryBillingId(true),
/**
* The spending limit in micros.
* To specify an unlimited budget, set spendingLimit to -1, otherwise spendingLimit must be greater than 0.
* Note that for get requests, the spending limit includes any adjustments that have been applied to the budget order.
* For mutate, the spending limit represents the maximum allowed spend prior to considering any adjustments.
* When making mutate requests, make sure to account for any adjustments that may be reported in the get value of the spending limit.
*/
@Filterable
SpendingLimit(true),
/**
* StartDateTime cannot be in the past, it must be on or before "20361231 235959 America/Los_Angeles".
* StartDateTime and EndDateTime must use the same time zone.
*/
@Filterable
StartDateTime(true),
/**
* The adjustments amount in micros.
* Adjustments from Google come in the form of credits or debits to your budget order.
* This amount is the net sum of adjustments since the creation of the budget order.
* You can use the adjustments amount to compute your current base spendingLimit by subtracting your adjustments from the value returned from spendingLimit in get requests.
*/
@Filterable
TotalAdjustments(true),
;
private final boolean isFilterable;
private BudgetOrderField(boolean isFilterable) {
this.isFilterable = isFilterable;
}
@Override
public boolean isFilterable() {
return this.isFilterable;
}
}