module AvaTax class Client module Companies # Checks whether the integration being used to set up this company and run transactions onto this company is compliant to all requirements. # # Examines the most recent 100 transactions or data from the last month when verifying transaction-related integrations. # For partners who write integrations against AvaTax for many clients, this API is a way to do a quick self testing to verify whether the # written integrations for a company are sufficient enough to be delivered to the respective customers to start using it. # # This API provides messages specific enough (through predefined checks) to guide the partner on what integrations are still missing from the company to get fully certified. # The API makes the following checks to conclude if the company is NOT fully certified: # 1. Any past month items contains generic tax code of P0000000. # 2. All the companies on the requesting account are test companies. # 3. No Voided/Cancelled documents in the past 30 days. # 4. There are less than 2 committed documents. # 5. Any documentCode is a generic GUID string. # 6. Any customerCode on document is a generic GUID string. # 7. No document has more than 1 documentLine. # 8. All of the documents have missing exemptionNo, customerUsageType, taxDateOverride or negative amount. # 9. Any document quantity is a negative number. # 10. Any document have repeated lines. # 11. No document has shipping charge. # 12. All documents have same ItemCodes, descriptions and taxCodes. # 13. Less than 2 addresses used across all documents. # 14. Whether locationCode was used in documents. # 15. Account with AvaGlobal subscription and no documents have VATBuyerId. # 16. Any document has currencyCode not being USD for accounts with AvaGlobal subscription. # 17. All documents have countryCode used for accounts with AvaGlobal subscription. # # ### Security Policies # # * This API requires one of the following user roles: AccountAdmin, AccountOperator, AccountUser, CompanyAdmin, CompanyUser, Compliance Root User, ComplianceAdmin, ComplianceUser, CSPAdmin, CSPTester, FirmAdmin, FirmUser, ProStoresOperator, Registrar, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin, TechnicalSupportUser, TreasuryAdmin, TreasuryUser. # @param id [Integer] The ID of the company to check if its integration is certified. # @return [String] def certify_integration(id) path = "/api/v2/companies/#{id}/certify" get(path) end # Change the filing status of this company # # Changes the current filing status of this company. # # For customers using Avalara's Managed Returns Service, each company within their account can request # for Avalara to file tax returns on their behalf. Avalara compliance team members will review all # requested filing calendars prior to beginning filing tax returns on behalf of this company. # # The following changes may be requested through this API: # # * If a company is in `NotYetFiling` status, the customer may request this be changed to `FilingRequested`. # * Avalara compliance team members may change a company from `FilingRequested` to `FirstFiling`. # * Avalara compliance team members may change a company from `FirstFiling` to `Active`. # # All other status changes must be requested through the Avalara customer support team. # # ### Security Policies # # * This API requires one of the following user roles: AccountAdmin, AccountOperator, AccountUser, CompanyAdmin, CompanyUser, Compliance Root User, ComplianceAdmin, ComplianceUser, CSPAdmin, CSPTester, FirmAdmin, FirmUser, ProStoresOperator, Registrar, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin, TechnicalSupportUser, TreasuryAdmin, TreasuryUser. # @param id [Integer] # @param model [Object] # @return [String] def change_filing_status(id, model) path = "/api/v2/companies/#{id}/filingstatus" post(path, model) end # Quick setup for a company with a single physical address # # Shortcut to quickly setup a single-physical-location company with critical information and activate it. # This API provides quick and simple company setup functionality and does the following things: # # * Create a company object with its own tax profile # * Add a key contact person for the company # * Set up one physical location for the main office # * Declare nexus in all taxing jurisdictions for that main office address # * Activate the company # # This API only provides a limited subset of functionality compared to the 'Create Company' API call. # If you need additional features or options not present in this 'Quick Setup' API call, please use the full 'Create Company' call instead. # Please allow 1 minute before making transactions using the company. # # ### Security Policies # # * This API requires one of the following user roles: AccountAdmin, CompanyAdmin, CSPTester, FirmAdmin, Registrar, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin. # @param model [Object] Information about the company you wish to create. # @return [Object] def company_initialize(model) path = "/api/v2/companies/initialize" post(path, model) end # Create new companies # # Create one or more new company objects. # A 'company' represents a single corporation or individual that is registered to handle transactional taxes. # You may attach nested data objects such as contacts, locations, and nexus with this CREATE call, and those objects will be created with the company. # # ### Security Policies # # * This API requires one of the following user roles: AccountAdmin, CompanyAdmin, CSPTester, FirmAdmin, Registrar, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin. # @param model [CompanyModel[]] Either a single company object or an array of companies to create # @return [CompanyModel[]] def create_companies(model) path = "/api/v2/companies" post(path, model) end # Request managed returns funding setup for a company # # This API is available by invitation only. # Companies that use the Avalara Managed Returns or the SST Certified Service Provider services are # required to setup their funding configuration before Avalara can begin filing tax returns on their # behalf. # Funding configuration for each company is set up by submitting a funding setup request, which can # be sent either via email or via an embedded HTML widget. # When the funding configuration is submitted to Avalara, it will be reviewed by treasury team members # before approval. # This API records that an ambedded HTML funding setup widget was activated. # This API requires a subscription to Avalara Managed Returns or SST Certified Service Provider. # # ### Security Policies # # * This API depends on the following active services
*Returns* (at least one of): Mrs, MRSComplianceManager, AvaTaxCsp. # * This API requires one of the following user roles: AccountAdmin, AccountOperator, AccountUser, CompanyAdmin, CompanyUser, Compliance Root User, ComplianceAdmin, ComplianceUser, CSPAdmin, CSPTester, FirmAdmin, FirmUser, ProStoresOperator, Registrar, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin, TechnicalSupportUser, TreasuryAdmin, TreasuryUser. # @param id [Integer] The unique identifier of the company # @param model [Object] The funding initialization request # @return [Object] def create_funding_request(id, model) path = "/api/v2/companies/#{id}/funding/setup" post(path, model) end # Delete a single company # # Deleting a company will delete all child companies, and all users attached to this company. # # ### Security Policies # # * This API requires one of the following user roles: AccountAdmin, CompanyAdmin, CSPTester, FirmAdmin, SSTAdmin, TechnicalSupportAdmin. # @param id [Integer] The ID of the company you wish to delete. # @return [ErrorDetail[]] def delete_company(id) path = "/api/v2/companies/#{id}" delete(path) end # Check the funding configuration of a company # # This API is available by invitation only. # Requires a subscription to Avalara Managed Returns or SST Certified Service Provider. # Returns the funding configuration of the requested company. # . # # ### Security Policies # # * This API requires one of the following user roles: AccountAdmin, AccountOperator, AccountUser, CompanyAdmin, CompanyUser, Compliance Root User, ComplianceAdmin, ComplianceUser, CSPAdmin, CSPTester, FirmAdmin, FirmUser, ProStoresOperator, Registrar, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin, TechnicalSupportUser, TreasuryAdmin, TreasuryUser. # * This API depends on the following active services
*Returns* (at least one of): Mrs, MRSComplianceManager, AvaTaxCsp.
*Firm Managed* (for accounts managed by a firm): ARA, ARAManaged. # * This API is available by invitation only.
*Exempt security roles*: ComplianceRootUser, ComplianceAdmin, ComplianceUser, TechnicalSupportAdmin, TechnicalSupportUser. # @param companyId [Integer] The unique identifier of the company # @return [Object] def funding_configuration_by_company(companyId) path = "/api/v2/companies/#{companyId}/funding/configuration" get(path) end # Check the funding configuration of a company # # This API is available by invitation only. # Requires a subscription to Avalara Managed Returns or SST Certified Service Provider. # Returns the funding configuration of the requested company. # . # # ### Security Policies # # * This API requires one of the following user roles: AccountAdmin, AccountOperator, AccountUser, CompanyAdmin, CompanyUser, Compliance Root User, ComplianceAdmin, ComplianceUser, CSPAdmin, CSPTester, FirmAdmin, FirmUser, ProStoresOperator, Registrar, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin, TechnicalSupportUser, TreasuryAdmin, TreasuryUser. # * This API depends on the following active services
*Returns* (at least one of): Mrs, MRSComplianceManager, AvaTaxCsp.
*Firm Managed* (for accounts managed by a firm): ARA, ARAManaged. # * This API is available by invitation only.
*Exempt security roles*: ComplianceRootUser, ComplianceAdmin, ComplianceUser, TechnicalSupportAdmin, TechnicalSupportUser. # @param companyId [Integer] The unique identifier of the company # @param currency [String] The currency of the funding. USD and CAD are the only valid currencies # @return [FundingConfigurationModel[]] def funding_configurations_by_company_and_currency(companyId, options={}) path = "/api/v2/companies/#{companyId}/funding/configurations" get(path, options) end # Retrieve a single company # # Get the company object identified by this URL. # A 'company' represents a single corporation or individual that is registered to handle transactional taxes. # You may specify one or more of the following values in the '$include' parameter to fetch additional nested data, using commas to separate multiple values: # # * Contacts # * Items # * Locations # * Nexus # * Settings # * TaxCodes # * TaxRules # * UPC # # ### Security Policies # # * This API requires one of the following user roles: AccountAdmin, AccountOperator, AccountUser, CompanyAdmin, CompanyUser, Compliance Root User, ComplianceAdmin, ComplianceUser, CSPAdmin, CSPTester, FirmAdmin, FirmUser, ProStoresOperator, Registrar, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin, TechnicalSupportUser, TreasuryAdmin, TreasuryUser. # @param id [Integer] The ID of the company to retrieve. # @param include [String] OPTIONAL: A comma separated list of special fetch options. * Child objects - Specify one or more of the following to retrieve objects related to each company: "Contacts", "FilingCalendars", "Items", "Locations", "Nexus", "TaxCodes", "NonReportingChildren" or "TaxRules". * Deleted objects - Specify "FetchDeleted" to retrieve information about previously deleted objects. # @return [Object] def get_company(id, options={}) path = "/api/v2/companies/#{id}" get(path, options) end # Get configuration settings for this company # # Retrieve a list of all configuration settings tied to this company. # # Configuration settings provide you with the ability to control features of your account and of your # tax software. The category name `AvaCertServiceConfig` is reserved for # Avalara internal software configuration values; to store your own company-level settings, please # create a new category name that begins with `X-`, for example, `X-MyCustomCategory`. # # Company settings are permanent settings that cannot be deleted. You can set the value of a # company setting to null if desired and if the particular setting supports it. # # Avalara-based company settings for `AvaCertServiceConfig` affect your company's exemption certificate # processing, and should be changed with care. # # ### Security Policies # # * This API requires one of the following user roles: AccountAdmin, AccountUser, CompanyAdmin, CompanyUser, CSPAdmin, CSPTester, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin, TechnicalSupportUser. # @param id [Integer] # @return [CompanyConfigurationModel[]] def get_company_configuration(id) path = "/api/v2/companies/#{id}/configuration" get(path) end # Get this company's filing status # # Retrieve the current filing status of this company. # # For customers using Avalara's Managed Returns Service, each company within their account can request # for Avalara to file tax returns on their behalf. Avalara compliance team members will review all # requested filing calendars prior to beginning filing tax returns on behalf of this company. # # A company's filing status can be one of the following values: # # * `NoReporting` - This company is not configured to report tax returns; instead, it reports through a parent company. # * `NotYetFiling` - This company has not yet begun filing tax returns through Avalara's Managed Returns Service. # * `FilingRequested` - The company has requested to begin filing tax returns, but Avalara's compliance team has not yet begun filing. # * `FirstFiling` - The company has recently filing tax returns and is in a new status. # * `Active` - The company is currently active and is filing tax returns via Avalara Managed Returns. # # ### Security Policies # # * This API requires one of the following user roles: AccountAdmin, AccountOperator, AccountUser, CompanyAdmin, CompanyUser, Compliance Root User, ComplianceAdmin, ComplianceUser, CSPAdmin, CSPTester, FirmAdmin, FirmUser, ProStoresOperator, Registrar, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin, TechnicalSupportUser, TreasuryAdmin, TreasuryUser. # @param id [Integer] # @return [String] def get_filing_status(id) path = "/api/v2/companies/#{id}/filingstatus" get(path) end # Check managed returns funding status for a company # # This API is available by invitation only. # Requires a subscription to Avalara Managed Returns or SST Certified Service Provider. # Returns a list of funding setup requests and their current status. # Each object in the result is a request that was made to setup or adjust funding status for this company. # # ### Security Policies # # * This API depends on the following active services
*Returns* (at least one of): Mrs, MRSComplianceManager, AvaTaxCsp. # * This API requires one of the following user roles: AccountAdmin, AccountOperator, AccountUser, CompanyAdmin, CompanyUser, Compliance Root User, ComplianceAdmin, ComplianceUser, CSPAdmin, CSPTester, FirmAdmin, FirmUser, ProStoresOperator, Registrar, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin, TechnicalSupportUser, TreasuryAdmin, TreasuryUser. # @param id [Integer] The unique identifier of the company # @return [FundingStatusModel[]] def list_funding_requests_by_company(id) path = "/api/v2/companies/#{id}/funding" get(path) end # Retrieve a list of MRS Companies with account # # This API is available by invitation only. # # Get a list of companies with an active MRS service. # # ### Security Policies # # * This API requires one of the following user roles: AccountAdmin, AccountOperator, AccountUser, CompanyAdmin, CompanyUser, Compliance Root User, ComplianceAdmin, ComplianceUser, CSPAdmin, CSPTester, FirmAdmin, FirmUser, ProStoresOperator, Registrar, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin, TechnicalSupportUser, TreasuryAdmin, TreasuryUser. # @return [FetchResult] def list_mrs_companies() path = "/api/v2/companies/mrs" get(path) end # Retrieve all companies # # Get multiple company objects. # # A `company` represents a single corporation or individual that is registered to handle transactional taxes. # # Search for specific objects using the criteria in the `$filter` parameter; full documentation is available on [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/) . # Paginate your results using the `$top`, `$skip`, and `$orderby` parameters. # You may specify one or more of the following values in the `$include` parameter to fetch additional nested data, using commas to separate multiple values: # # * Contacts # * Items # * Locations # * Nexus # * Settings # * TaxCodes # * TaxRules # * UPC # # ### Security Policies # # * This API requires one of the following user roles: AccountAdmin, AccountOperator, AccountUser, CompanyAdmin, CompanyUser, Compliance Root User, ComplianceAdmin, ComplianceUser, CSPAdmin, CSPTester, FirmAdmin, FirmUser, ProStoresOperator, Registrar, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin, TechnicalSupportUser, TreasuryAdmin, TreasuryUser. # @param include [String] A comma separated list of objects to fetch underneath this company. Any object with a URL path underneath this company can be fetched by specifying its name. # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).
*Not filterable:* IsFein, contacts, items, locations, nexus, settings, taxCodes, taxRules, upcs, nonReportingChildCompanies, exemptCerts # @param top [Integer] If nonzero, return no more than this number of results. Used with `$skip` to provide pagination for large datasets. Unless otherwise specified, the maximum number of records that can be returned from an API call is 1,000 records. # @param skip [Integer] If nonzero, skip this number of results before returning data. Used with `$top` to provide pagination for large datasets. # @param orderBy [String] A comma separated list of sort statements in the format `(fieldname) [ASC|DESC]`, for example `id ASC`. # @return [FetchResult] def query_companies(options={}) path = "/api/v2/companies" get(path, options) end # Change configuration settings for this company # # Update configuration settings tied to this company. # # Configuration settings provide you with the ability to control features of your account and of your # tax software. The category names `AvaCertServiceConfig` is reserved for # Avalara internal software configuration values; to store your own company-level settings, please # create a new category name that begins with `X-`, for example, `X-MyCustomCategory`. # # Company settings are permanent settings that cannot be deleted. You can set the value of a # company setting to null if desired and if the particular setting supports it. # # Avalara-based company settings for `AvaCertServiceConfig` affect your company's exemption certificate # processing, and should be changed with care. # # ### Security Policies # # * This API requires one of the following user roles: AccountAdmin, CompanyAdmin, CSPTester, SSTAdmin, TechnicalSupportAdmin. # @param id [Integer] # @param model [CompanyConfigurationModel[]] # @return [CompanyConfigurationModel[]] def set_company_configuration(id, model) path = "/api/v2/companies/#{id}/configuration" post(path, model) end # Update a single company # # Replace the existing company object at this URL with an updated object. # # A `CompanyModel` represents a single corporation or individual that is registered to handle transactional taxes. # All data from the existing object will be replaced with data in the object you PUT. # # When calling `UpdateCompany`, you are permitted to update the company itself. Updates to the nested objects # such as contacts, locations, or settings are not permitted. To update the nested objects # # To set a field's value to `null`, you may either set its value to `null` or omit that field from the object you PUT. # # ### Security Policies # # * This API requires one of the following user roles: AccountAdmin, CompanyAdmin, CSPTester, FirmAdmin, Registrar, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin. # @param id [Integer] The ID of the company you wish to update. # @param model [Object] The company object you wish to update. # @return [Object] def update_company(id, model) path = "/api/v2/companies/#{id}" put(path, model) end end end end