Sana Assistant (online)
Table of Contents

CheckoutFieldExtension reference

This article provides reference material about CheckoutFieldExtension class. All checkout field extensions have to be inherited from the CheckoutFieldExtension which, in turn, inherits from the core Sana Commerce Cloud Extension class.

CheckoutFieldExtension inheritance

This extension should be used to extend checkout process with additional field.

Note

Multiple CheckoutFieldExtension extensions can be created in case multiple fields should be added to checkout.

Properties

CheckoutFieldExtension

FieldName

The name of the ERP document entity field.

Note

Sales documents entity fields should contain the field with provided name to store the field value within sales document on ERP side, otherwise ERP changes are required.

public override string FieldName => "AddressId";

Methods

CheckoutFieldExtension

Note

All code examples may contain nonexistent methods or properties. They are used as declarations only and should be created if they fit the designed extension or deleted if they do not.

GetFieldValue

Gets the checkout field value.

public override ErpFieldValue? GetFieldValue(in CheckoutFieldContext context)
{
    var addressId = Api.CurrentUserData.Get<UserData>()?.SelectedAddressId;
    if (string.IsNullOrEmpty(addressId))
        return null;

    return ErpFieldValue.FromString(addressId);
}

sealed class UserData
{
    public string? SelectedAddressId { get; set; }
}

OnEditDocument

A handler that is invoked when a sales document is editing. This method can be used to initialize current field value with the value stored within sales document which is editing at the moment.

public override void OnEditDocument(in CheckoutFieldEditDocumentContext context)
{
   var addressId = context.Value?.AsString();
   Api.CurrentUserData.Save(new UserData { SelectedAddressId = string.IsNullOrEmpty(addressId) ? null : addressId });
}

sealed class UserData
{
   public string? SelectedAddressId { get; set; }
}

OnReorderDocument

A handler that is invoked when a sales document is reordering. This method can be used to initialize current field value with the value stored within sales document which is reordering at the moment.

public override void OnReorderDocument(in CheckoutFieldReorderDocumentContext context)
{
   var addressId = context.Value?.AsString();
   Api.CurrentUserData.Save(new UserData { SelectedAddressId = string.IsNullOrEmpty(addressId) ? null : addressId });
}

sealed class UserData
{
   public string? SelectedAddressId { get; set; }
}

OnPayOfflineDocument

A handler that is invoked when an off-line document is paying. This method can be used to initialize current field value with the value stored within off-line created document which is paying at the moment.

public override void OnPayOfflineDocument(in CheckoutFieldPayOfflineDocumentContext context)
{
   var addressId = context.Value?.AsString();
   Api.CurrentUserData.Save(new UserData { SelectedAddressId = string.IsNullOrEmpty(addressId) ? null : addressId });
}

sealed class UserData
{
   public string? SelectedAddressId { get; set; }
}

See also