Webiant Logo Webiant Logo
  1. No results found.

    Try your search with a different keyword or use * as a wildcard.

Configure.cshtml

@model ConfigurationModel

@{
    Layout = "_ConfigurePlugin";
    NopHtml.SetActiveMenuItemSystemName("POS plugins");

    var signUpUrl = $"https://my.zettle.com/apps/api-keys?name={ZettleDefaults.ApplicationName}&scopes=READ:FINANCE%20READ:PURCHASE%20READ:USERINFO%20READ:PRODUCT%20WRITE:PRODUCT&utm_source=local_partnership&utm_medium=ecommerce&utm_campaign=nopcommerce";
}

@T("Plugins.Misc.Zettle.Credentials")

To enable this plugin, you'll need to:

1. Go to your merchant account.
2. Review the information and click Create key. A client ID will be created together with the API key.
3. On the Create API key page, click Copy key and paste it into the field on this plugin configuration page, do the same for Client ID.
Note: The API key will be displayed only once, so make sure to make a copy of it.

@T($"Plugins.Misc.Zettle.Credentials.{(Model.Connected ? "Connected" : "Disconnected")}")
@if (Model.Connected) { } else { @T("Plugins.Misc.Zettle.Credentials.SignUp") }
@if (Model.Connected) { @if (!Model.Account.Accepted) {
@T("Plugins.Misc.Zettle.Account.Pending", Model.Account.CustomerStatus, "https://www.zettle.com/gb/help/articles/1113715-confirm-your-identity")
}
@Model.Account.Name
@Model.Account.Currency
@Model.Account.TaxationType
@Model.Account.TaxationMode
}
@if (Model.Connected) {
@T("Plugins.Misc.Zettle.Sync")

The PayPal Zettle Go POS application will display product items that have been set up in the PayPal Zettle product library.
Here you can define products from your nopCommerce catalog to be imported into PayPal Zettle product library and keep them synchronized across changes and updates.
The product library consists of products and their variants (in nopCommerce they are product attribute combinations). For correct synchronization, you have to fill in SKUs for products and combinations.

It's recommneded to keep the number of items in the product library below 10,000.

You can only assign up to 99 variants (product attribute combinations) to a product. This means that you can specify a maximum of 3 product attributes for a product.
If there are multiple product attributes, multiply the number of values of each attribute to get the total number of product variants.
For example, if you have 3 product attributes (Color, Size and Print) and the product attribute values for each attribute are 4 (Red, Blue, Green, Orange), 3 (9, 10, 11), and 2 (Animal, Floral) respectively, then the total number of product variants is 24 (4x3x2).

Images are important parts of a product library. A product can have one single associated image.
If you have enabled image synchronization, make sure that only ASCII characters are used in their names, the size must be smaller than 5 MB but bigger than 50*50 pixels.

 
@await Html.PartialAsync("Table", new DataTablesModel { Name = "records-grid", UrlRead = new DataUrl("SyncRecordList", "ZettleAdmin", null), UrlUpdate = new DataUrl("SyncRecordUpdate", "ZettleAdmin", null), Length = Model.SyncRecordSearchModel.PageSize, LengthMenu = Model.SyncRecordSearchModel.AvailablePageSizes, ColumnCollection = new List { new ColumnProperty(nameof(SyncRecordModel.Id)) { IsMasterCheckBox = true, Render = new RenderCheckBox("records-checkbox"), ClassName = NopColumnClassDefaults.CenterAll, Width = "50", }, new ColumnProperty(nameof(SyncRecordModel.ProductName)) { Title = T("Plugins.Misc.Zettle.Sync.Fields.Product").Text, Render = new RenderLink(new DataUrl("~/Admin/Product/Edit/", nameof(SyncRecordModel.ProductId))) }, new ColumnProperty(nameof(SyncRecordModel.Active)) { Title = T("Plugins.Misc.Zettle.Sync.Fields.Active").Text, Width = "80", ClassName = NopColumnClassDefaults.CenterAll, Render = new RenderBoolean(), Editable = true, EditType = EditType.Checkbox }, new ColumnProperty(nameof(SyncRecordModel.PriceSyncEnabled)) { Title = T("Plugins.Misc.Zettle.Sync.Fields.PriceSyncEnabled").Text, Width = "80", ClassName = NopColumnClassDefaults.CenterAll, Render = new RenderBoolean(), Editable = true, EditType = EditType.Checkbox }, new ColumnProperty(nameof(SyncRecordModel.ImageSyncEnabled)) { Title = T("Plugins.Misc.Zettle.Sync.Fields.ImageSyncEnabled").Text, Width = "80", ClassName = NopColumnClassDefaults.CenterAll, Render = new RenderBoolean(), Editable = true, EditType = EditType.Checkbox }, new ColumnProperty(nameof(SyncRecordModel.InventoryTrackingEnabled)) { Title = T("Plugins.Misc.Zettle.Sync.Fields.InventoryTrackingEnabled").Text, Width = "80", ClassName = NopColumnClassDefaults.CenterAll, Render = new RenderBoolean(), Editable = true, EditType = EditType.Checkbox }, new ColumnProperty(nameof(SyncRecordModel.UpdatedDate)) { Title = T("Plugins.Misc.Zettle.Sync.Fields.UpdatedDate").Text, Width = "140", Render = new RenderDate() }, new ColumnProperty(nameof(SyncRecordModel.Id)) { Title = T("Admin.Common.Edit").Text, Width = "100", ClassName = NopColumnClassDefaults.Button + " column-edit", Render = new RenderButtonsInlineEdit() } } })
} @if (!string.IsNullOrEmpty(Model.Import.State)) {
@T("Plugins.Misc.Zettle.Sync.Last")
@Model.Import.StartDate?.ToString("G")
@Model.Import.Items
@Model.Import.State
@Model.Import.EndDate?.ToString("G")
@if (Model.Import.Active) { }
}