359 lines
17 KiB
Plaintext
359 lines
17 KiB
Plaintext
@model ConfigurationModel
|
|
|
|
<div class="card-body">
|
|
<div class="card card-default no-margin">
|
|
<div class="card-header">
|
|
@T("Plugins.Tax.Avalara.Configuration.Common")
|
|
</div>
|
|
<div class="card-body">
|
|
<p>
|
|
To enable this tax provider, you'll need to:<br />
|
|
<br />
|
|
1. <a href="https://avlr.co/3bw9ixk" target="_blank">Create an AvaTax account</a><br />
|
|
2. Log in at the production or development AvaTax portal<br />
|
|
3. Add a company and some nexus jurisdiction selections to get any tax results<br />
|
|
4. Fill in your AvaTax account details below<br />
|
|
See <a href="https://docs.nopcommerce.com/getting-started/configure-taxes/tax-providers/avalara.html" target="_blank">documentation</a> for more information.<br />
|
|
</p>
|
|
<div class="form-group row">
|
|
<div class="col-md-3">
|
|
<nop-label asp-for="AccountId" />
|
|
</div>
|
|
<div class="col-md-9">
|
|
<nop-editor asp-for="AccountId" asp-required="true" />
|
|
<span asp-validation-for="AccountId"></span>
|
|
</div>
|
|
</div>
|
|
<div class="form-group row">
|
|
<div class="col-md-3">
|
|
<nop-label asp-for="LicenseKey" />
|
|
</div>
|
|
<div class="col-md-9">
|
|
<nop-editor asp-for="LicenseKey" asp-required="true" html-attributes="@(new { value = Model.LicenseKey })" />
|
|
<span asp-validation-for="LicenseKey"></span>
|
|
</div>
|
|
</div>
|
|
<div class="form-group row">
|
|
<div class="col-md-3">
|
|
<nop-label asp-for="CompanyCode" />
|
|
</div>
|
|
<div class="col-md-9">
|
|
<nop-select asp-for="CompanyCode" asp-items="Model.Companies" />
|
|
<span asp-validation-for="CompanyCode"></span>
|
|
</div>
|
|
</div>
|
|
<div class="form-group row">
|
|
<div class="col-md-3">
|
|
<nop-label asp-for="UseSandbox" />
|
|
</div>
|
|
<div class="col-md-9">
|
|
<nop-editor asp-for="UseSandbox" />
|
|
<span asp-validation-for="UseSandbox"></span>
|
|
</div>
|
|
</div>
|
|
<div class="form-group row">
|
|
<div class="col-md-3">
|
|
<nop-label asp-for="EnableLogging" />
|
|
</div>
|
|
<div class="col-md-9">
|
|
<nop-editor asp-for="EnableLogging" />
|
|
<span asp-validation-for="EnableLogging"></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card card-default no-margin">
|
|
<div class="card-header">
|
|
@T("Plugins.Tax.Avalara.Configuration.TaxCalculation")
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="form-group row">
|
|
<div class="col-md-3">
|
|
<nop-label asp-for="CommitTransactions" />
|
|
</div>
|
|
<div class="col-md-9">
|
|
<nop-editor asp-for="CommitTransactions" />
|
|
<span asp-validation-for="CommitTransactions"></span>
|
|
</div>
|
|
</div>
|
|
<div class="form-group row">
|
|
<div class="col-md-3">
|
|
<nop-label asp-for="ValidateAddress" />
|
|
</div>
|
|
<div class="col-md-9">
|
|
<nop-editor asp-for="ValidateAddress" />
|
|
<span asp-validation-for="ValidateAddress"></span>
|
|
</div>
|
|
</div>
|
|
<div class="form-group row">
|
|
<div class="col-md-3">
|
|
<nop-label asp-for="TaxOriginAddressTypeId" />
|
|
</div>
|
|
<div class="col-md-9">
|
|
<nop-select asp-for="TaxOriginAddressTypeId" asp-items="@Model.TaxOriginAddressTypes" />
|
|
<span asp-validation-for="TaxOriginAddressTypeId"></span>
|
|
</div>
|
|
<script>
|
|
$(function() {
|
|
$('#@Html.IdFor(model => model.TaxOriginAddressTypeId)').click(changeOriginAddressType);
|
|
});
|
|
|
|
function changeOriginAddressType() {
|
|
warningValidation(
|
|
'@Url.Action("ChangeOriginAddressType", "Avalara")',
|
|
'@Html.NameFor(model => model.TaxOriginAddressTypeId)',
|
|
{ typeId: $('#@Html.IdFor(model => model.TaxOriginAddressTypeId)').val() });
|
|
}
|
|
</script>
|
|
</div>
|
|
<div class="form-group row">
|
|
<div class="col-md-3">
|
|
<nop-label asp-for="UseTaxRateTables" />
|
|
</div>
|
|
<div class="col-md-9">
|
|
<nop-editor asp-for="UseTaxRateTables" />
|
|
<span asp-validation-for="UseTaxRateTables"></span>
|
|
</div>
|
|
</div>
|
|
<div class="form-group row" id="pnlGetTaxRateByAddressOnly">
|
|
<div class="col-md-3">
|
|
<nop-label asp-for="GetTaxRateByAddressOnly" />
|
|
</div>
|
|
<div class="col-md-9">
|
|
<nop-editor asp-for="GetTaxRateByAddressOnly" />
|
|
<span asp-validation-for="GetTaxRateByAddressOnly"></span>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
$(function() {
|
|
$('#@Html.IdFor(model => model.UseTaxRateTables)').click(toggleUseTaxRateTables);
|
|
toggleUseTaxRateTables();
|
|
});
|
|
|
|
function toggleUseTaxRateTables() {
|
|
if ($('#@Html.IdFor(model => model.UseTaxRateTables)').is(':checked')) {
|
|
$('#pnlGetTaxRateByAddressOnly').hideElement();
|
|
}
|
|
else {
|
|
$('#pnlGetTaxRateByAddressOnly').showElement();
|
|
}
|
|
}
|
|
</script>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card card-default no-margin">
|
|
<div class="card-header">
|
|
@T("Plugins.Tax.Avalara.Configuration.Certificates")
|
|
</div>
|
|
<div class="card-body">
|
|
<p>
|
|
The AvaTax provides an easy way to manage exemption certificates - and they will automatically link to your CertCapture and CertExpress accounts!<br />
|
|
<a href="https://avlr.co/3bA1P1X" target="_blank">Create a CertCapture account</a><br />
|
|
Please note that this feature only works if you have a <a href="https://help.avalara.com/0021_Avalara_CertCapture/All_about_CertCapture/Link_CertCapture_to_AvaTax" target="_blank">CertCapture linked to your AvaTax account</a>.<br />
|
|
<br />
|
|
Before you can use exemption certificates feature, you must set up your company for exemption certificate data storage.<br />
|
|
To check if this is set up for a company, <b>Check connection</b> below. To request setup of exemption certificate storage for this company, push <b>Request certificate setup</b> button below.<br />
|
|
<br />
|
|
</p>
|
|
<div class="form-group row">
|
|
<div class="col-md-3">
|
|
<nop-label asp-for="EnableCertificates" />
|
|
</div>
|
|
<div class="col-md-9">
|
|
<nop-editor asp-for="EnableCertificates" />
|
|
<span asp-validation-for="EnableCertificates"></span>
|
|
</div>
|
|
<script>
|
|
$(function() {
|
|
$('#@Html.IdFor(model => model.EnableCertificates)').click(changeEnableCertificates);
|
|
});
|
|
|
|
function changeEnableCertificates() {
|
|
warningValidation(
|
|
'@Url.Action("ChangeEnableCertificates", "Avalara")',
|
|
'@Html.NameFor(model => model.EnableCertificates)',
|
|
{ enabled: $('#@Html.IdFor(model => model.EnableCertificates)').is(':checked') });
|
|
}
|
|
</script>
|
|
</div>
|
|
<nop-nested-setting asp-for="EnableCertificates">
|
|
<div class="form-group row">
|
|
<div class="col-md-3">
|
|
<nop-label asp-for="SelectedCustomerRoleIds" />
|
|
</div>
|
|
<div class="col-md-9">
|
|
<div class="row">
|
|
<div class="col-md-4">
|
|
<nop-select asp-for="SelectedCustomerRoleIds" asp-items="@Model.AvailableCustomerRoles" asp-multiple="true" />
|
|
<script>
|
|
$(function() {
|
|
var rolesIdsInput = $('#@Html.IdFor(model => model.SelectedCustomerRoleIds)').select2({
|
|
closeOnSelect: false,
|
|
@if (!Model.AvailableCustomerRoles.Any())
|
|
{
|
|
<text>
|
|
disabled: true,
|
|
placeholder: 'No customer roles available',
|
|
</text>
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
</div>
|
|
<div class="col-md-8">
|
|
@await Component.InvokeAsync(typeof(AclDisabledWarningViewComponent))
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group row">
|
|
<div class="col-md-3">
|
|
<nop-label asp-for="AutoValidateCertificate" />
|
|
</div>
|
|
<div class="col-md-9">
|
|
<nop-editor asp-for="AutoValidateCertificate" />
|
|
<span asp-validation-for="AutoValidateCertificate"></span>
|
|
</div>
|
|
</div>
|
|
<div class="form-group row">
|
|
<div class="col-md-3">
|
|
<nop-label asp-for="AllowEditCustomer" />
|
|
</div>
|
|
<div class="col-md-9">
|
|
<nop-editor asp-for="AllowEditCustomer" />
|
|
<span asp-validation-for="AllowEditCustomer"></span>
|
|
</div>
|
|
</div>
|
|
<div class="form-group row">
|
|
<div class="col-md-3">
|
|
<nop-label asp-for="DisplayNoValidCertificatesMessage" />
|
|
</div>
|
|
<div class="col-md-9">
|
|
<nop-editor asp-for="DisplayNoValidCertificatesMessage" />
|
|
<span asp-validation-for="DisplayNoValidCertificatesMessage"></span>
|
|
</div>
|
|
</div>
|
|
</nop-nested-setting>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group row">
|
|
<div class="col-md-9 offset-md-3 mb-3">
|
|
<button type="submit" name="save" class="btn btn-primary">
|
|
@T("Admin.Common.Save")
|
|
</button>
|
|
@if (Model.IsConfigured)
|
|
{
|
|
<button type="submit" name="check-credentials" class="btn btn-info ml-1">
|
|
@T("Plugins.Tax.Avalara.Configuration.Credentials.Button")
|
|
</button>
|
|
@if (Model.EnableCertificates)
|
|
{
|
|
<button type="submit" name="request-certificate-setup" class="btn btn-info ml-1">
|
|
@T("Plugins.Tax.Avalara.Configuration.Certificates.Button")
|
|
</button>
|
|
}
|
|
}
|
|
</div>
|
|
</div>
|
|
|
|
@if (Model.IsConfigured)
|
|
{
|
|
<div class="card card-default no-margin">
|
|
<div class="card-header">
|
|
@T("Plugins.Tax.Avalara.TestTax")
|
|
</div>
|
|
<div class="card-body">
|
|
<script>
|
|
$(function() {
|
|
$('#@Html.IdFor(model => model.TestAddress.CountryId)').change(function () {
|
|
var selectedItem = $(this).val();
|
|
var ddlStates = $('#@Html.IdFor(model => model.TestAddress.StateProvinceId)');
|
|
$.ajax({
|
|
cache: false,
|
|
type: 'GET',
|
|
url: '@(Url.Action("GetStatesByCountryId", "Country"))',
|
|
data: {
|
|
'countryId': selectedItem
|
|
},
|
|
success: function (data, textStatus, jqXHR) {
|
|
ddlStates.html('');
|
|
$.each(data, function (id, option) {
|
|
ddlStates.append($('<option></option>').val(option.id).html(option.name));
|
|
});
|
|
},
|
|
error: function (jqXHR, textStatus, errorThrown) {
|
|
$('#states-alert').trigger('click');
|
|
}
|
|
});
|
|
});
|
|
});
|
|
</script>
|
|
|
|
<div class="form-group row">
|
|
<div class="col-md-3">
|
|
<nop-label asp-for="TestAddress.CountryId" />
|
|
</div>
|
|
<div class="col-md-9">
|
|
<nop-select asp-for="TestAddress.CountryId" asp-items="Model.TestAddress.AvailableCountries" />
|
|
<span asp-validation-for="TestAddress.CountryId"></span>
|
|
</div>
|
|
</div>
|
|
<div class="form-group row">
|
|
<div class="col-md-3">
|
|
<nop-label asp-for="TestAddress.StateProvinceId" />
|
|
</div>
|
|
<div class="col-md-9">
|
|
<nop-select asp-for="TestAddress.StateProvinceId" asp-items="Model.TestAddress.AvailableStates" />
|
|
<span asp-validation-for="TestAddress.StateProvinceId"></span>
|
|
</div>
|
|
</div>
|
|
<div class="form-group row">
|
|
<div class="col-md-3">
|
|
<nop-label asp-for="TestAddress.City" />
|
|
</div>
|
|
<div class="col-md-9">
|
|
<nop-editor asp-for="TestAddress.City" />
|
|
<span asp-validation-for="TestAddress.City"></span>
|
|
</div>
|
|
</div>
|
|
<div class="form-group row">
|
|
<div class="col-md-3">
|
|
<nop-label asp-for="TestAddress.Address1" />
|
|
</div>
|
|
<div class="col-md-9">
|
|
<nop-editor asp-for="TestAddress.Address1" />
|
|
<span asp-validation-for="TestAddress.Address1"></span>
|
|
</div>
|
|
</div>
|
|
<div class="form-group row">
|
|
<div class="col-md-3">
|
|
<nop-label asp-for="TestAddress.ZipPostalCode" />
|
|
</div>
|
|
<div class="col-md-9">
|
|
<nop-editor asp-for="TestAddress.ZipPostalCode" />
|
|
<span asp-validation-for="TestAddress.ZipPostalCode"></span>
|
|
</div>
|
|
</div>
|
|
<div class="form-group row">
|
|
<div class="col-md-9 offset-md-3">
|
|
<button type="submit" name="test-tax" class="btn btn-info">
|
|
@T("Plugins.Tax.Avalara.TestTax.Button")
|
|
</button>
|
|
</div>
|
|
</div>
|
|
@if (!string.IsNullOrEmpty(Model.TestTaxResult))
|
|
{
|
|
<div class="form-group row">
|
|
<div class="col-md-12" style="white-space: pre-line">
|
|
@Model.TestTaxResult
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
<nop-alert asp-alert-id="states-alert" asp-alert-message="@T("Admin.Common.Alert.States.Failed")" /> |