简体   繁体   中英

uCommerce Order Properties Missing

I have the following method to save order properties on a purchase order:

public void SetOrderProperty(string orderPropertyName, string value)
{
    PurchaseOrder purchaseOrder = TransactionLibrary.GetBasket().PurchaseOrder;
    OrderProperty orderProperty = purchaseOrder.OrderProperties.FirstOrDefault(x => x.Key == orderPropertyName);
    if (orderProperty != null)
    {
        orderProperty.Value = value;
        orderProperty.Save();
    }
    else
    {
        OrderProperty op = new OrderProperty
        {
            Key = orderPropertyName,
            Value = value,
            Order = purchaseOrder
        };
        op.Save();

    }
    purchaseOrder.Save();
    TransactionLibrary.ExecuteBasketPipeline();
}

When I save a value using this I can see it appear against the order in the uCommerce_OrderProperty table.

However, with some properties, when I try to read them back out they are missing:

public string GetOrderProperty(string orderPropertyName)
{
    PurchaseOrder purchaseOrder;

    using (new CacheDisabler())
    {
        purchaseOrder = TransactionLibrary.GetBasket().PurchaseOrder;
    }


    OrderProperty orderProperty = purchaseOrder.OrderProperties.FirstOrDefault(x => x.Key == orderPropertyName);
    if (orderProperty != null)
    {
        return orderProperty.Value;
    }

    return string.Empty;
}

I have also tried this code from the uCommerce site:

public string GetOrderProperty(string orderPropertyName)
{
    PurchaseOrder purchaseOrder = SiteContext.Current.OrderContext.GetBasket().PurchaseOrder;
    return purchaseOrder[orderPropertyName];
}

If I inspect purchaseOrder I can see the OrderProperties are missing. I have 7 properties at any one time but purchaseOrder only ever seems to have a max of 5 even though there is 7 in the table.

These are Order Properties and not Order Line Properties. Can anyone give me any pointers as to why I am seeing this behaviour?

EDIT

This line does get the value I am looking for:

OrderProperty op = OrderProperty.FirstOrDefault(x => x.Order.OrderId == purchaseOrder.OrderId && x.Key == orderPropertyName);

Even when this line (called the line after) returns null:

OrderProperty orderProperty = purchaseOrder.OrderProperties.FirstOrDefault(x => x.Key == orderPropertyName);

(Both are looking for the same Order Property)

Can anyone tell me why?

I have a comment, but I'm not allowed because of missing reputation.

Everything seems to be fine regarding your code. Can I persuade you to show the uCommerce_OrderProperty table? - I just want to check that the OrderLineId column is empty for you order properties.

You should be able to set and get it like this:

var property = order[orderPropertyName];
order[orderPropertyName] = "VALUE";

Regards Mads

We also recommend that Ucommerce related question is posted at http://eureka.ucommerce.net/ , the response time is often faster.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM