<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Ben Taylor's Blog</title>
    <link>http://bentaylor.org/</link>
    <description>Software Development with Microsoft .NET, Commerce Server and More...</description>
    <language>en-us</language>
    <copyright>Ben Taylor</copyright>
    <lastBuildDate>Fri, 12 Nov 2010 22:28:05 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.1.8139.823</generator>
    <managingEditor>blog@bentaylor.org</managingEditor>
    <webMaster>blog@bentaylor.org</webMaster>
    <item>
      <trackback:ping>http://bentaylor.org/Trackback.aspx?guid=4c94732d-72cd-4037-8806-09198ec99ab9</trackback:ping>
      <pingback:server>http://bentaylor.org/pingback.aspx</pingback:server>
      <pingback:target>http://bentaylor.org/PermaLink,guid,4c94732d-72cd-4037-8806-09198ec99ab9.aspx</pingback:target>
      <dc:creator>Ben Taylor</dc:creator>
      <wfw:commentRss>http://bentaylor.org/SyndicationService.asmx/GetEntryCommentsRss?guid=4c94732d-72cd-4037-8806-09198ec99ab9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I hate to do this, but please can you re-subscribe to my blog using the following
feed URL: <a href="http://bentaylor.org/atom.xml">http://bentaylor.org/atom.xml</a></p>
        <p>
I am migrating to different blogging software. In the process I have discovered that
I no longer have access to my FeedBurner account. To make things worse, I no longer
have access to the email account they have on record. There is no process to reset
your account without this and there are many people in the "support" group that have
received no help in this situation. Given that FeedBurner provides the RSS and Atom
feeds for this blog, this is a problem. The only way I can see around this, is for
you to re-subscribe. Hopefully I will see you all on the other side!
</p>
        <img width="0" height="0" src="http://bentaylor.org/aggbug.ashx?id=4c94732d-72cd-4037-8806-09198ec99ab9" />
      </body>
      <title>Please update your subscription to my blog</title>
      <guid isPermaLink="false">http://bentaylor.org/PermaLink,guid,4c94732d-72cd-4037-8806-09198ec99ab9.aspx</guid>
      <link>http://bentaylor.org/Please-Update-Your-Subscription-To-My-Blog.aspx</link>
      <pubDate>Fri, 12 Nov 2010 22:28:05 GMT</pubDate>
      <description>&lt;p&gt;
I hate to do this, but please can you re-subscribe to my blog using the following
feed URL: &lt;a href="http://bentaylor.org/atom.xml"&gt;http://bentaylor.org/atom.xml&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
I am migrating to different blogging software. In the process I have discovered that
I no longer have access to my FeedBurner account. To make things worse, I no longer
have access to the email account they have on record. There is no process to reset
your account without this and there are many people in the "support" group that have
received no help in this situation. Given that FeedBurner provides the RSS and Atom
feeds for this blog, this is a problem. The only way I can see around this, is for
you to re-subscribe. Hopefully I will see you all on the other side!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://bentaylor.org/aggbug.ashx?id=4c94732d-72cd-4037-8806-09198ec99ab9" /&gt;</description>
      <comments>http://bentaylor.org/CommentView,guid,4c94732d-72cd-4037-8806-09198ec99ab9.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://bentaylor.org/Trackback.aspx?guid=7b871346-347a-4bc6-b589-e1b66866b663</trackback:ping>
      <pingback:server>http://bentaylor.org/pingback.aspx</pingback:server>
      <pingback:target>http://bentaylor.org/PermaLink,guid,7b871346-347a-4bc6-b589-e1b66866b663.aspx</pingback:target>
      <dc:creator>Ben Taylor</dc:creator>
      <wfw:comment>http://bentaylor.org/CommentView,guid,7b871346-347a-4bc6-b589-e1b66866b663.aspx</wfw:comment>
      <wfw:commentRss>http://bentaylor.org/SyndicationService.asmx/GetEntryCommentsRss?guid=7b871346-347a-4bc6-b589-e1b66866b663</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://code.google.com/p/autofac/">Autofac</a> is an simple, elegant and
powerful <a href="http://martinfowler.com/articles/injection.html">IoC</a> container
written by <a href="http://nblumhardt.com/">Nicholas Blumhardt</a>, <a href="http://abdullin.com/">Rinat
Abdullin</a> and <a href="http://code.google.com/p/autofac/people/list">friends</a>. 
Version 1 was release in early 2008 and version 2 was released earlier this year with
many <a href="http://nblumhardt.com/2010/04/introducing-autofac-2-1-rtw/">new</a><a href="http://nblumhardt.com/2010/05/autofac-2-2-released/">features</a>. 
and If you are looking for an IoC container, I highly recommend it.
</p>
        <p>
Autofac underwent some fairly significant surgery as part of the 2.x release in order
to “simplify and streamline” usage.  The Autofac wiki lists the <a href="http://code.google.com/p/autofac/wiki/NewInV2">key
changes for upgrading users</a>.  Recently, I migrated a project from Autofac
1.4 to Autofac 2.2.  The changes were done in less than a day and so far we’ve
not had any issues.  What follows are my “real world” notes on the changes I
made.  
</p>
        <p>
          <strong>Changes Related to the Core Autofac Bits</strong>
        </p>
        <ul>
          <li>
Updated component registration lifetime calls (see <a href="http://code.google.com/p/autofac/wiki/NewInV2#New_Lifetime/Sharing_Terminology">New
Lifetime/Sharing Terminology</a>): 
<ul><li>
FactoryScoped() to InstancePerDependency() 
</li><li>
ContainerScoped() to InstancePerLifetimeScope() 
</li><li>
SingletonScoped() to SingleInstance() 
</li></ul></li>
          <li>
Updated using statements for Module usages.  Module has moved from from Autofac.Builder
to Autofac (see <a href="http://code.google.com/p/autofac/wiki/NewInV2#Namespace_Changes">Namespace
Changes</a>). 
</li>
          <li>
We were using the ComponentActivator delegate type in some custom extension method
declarations.  We have changed these to Func&lt;IComponentContext, TWeAreCreating&gt;
as the new Register overloads take this or a Func&lt;IComponentContext, IEnumerable&lt;Parameter&gt;,
TWeAreCreating&gt;. 
</li>
          <li>
Updated component registrations that require property injection. 
<br />
From this: 
<br />
...As&lt;IFoo&gt;.OnActivating(ActivatingHandler.InjectProperties) 
<br />
To this: 
<br />
...As&lt;IFoo&gt;.PropertiesAutowired(false)//false for no circular dependency. 
</li>
          <li>
The Register methods now only accept delegates.  If you want to register an instance
you need to use RegisterInstance.  While migrating to Autofac 2.2 this change
highlighted at least one incorrect registration (see <a href="http://code.google.com/p/autofac/wiki/NewInV2#Separation_of_Registration_Overloads">Separation
of Registration Overloads</a>). 
</li>
          <li>
Removed calls to .MemberOf&lt;IEnumerable&lt;TWhatever&gt;&gt;() as resolving collections
is supported by default (I know we could have registered the collection module in
1.x but we discovered a defect in it which Nick confirmed).  See <a href="http://code.google.com/p/autofac/wiki/NewInV2#Modules_Included_by_Default">Collection
Support (“Resolve All”)</a>. 
<ul><li>
Removed custom extension methods for registering collections (.RegisterCollection&lt;IFoo&gt;)
to using default collection behaviour. 
</li></ul></li>
          <li>
Updated OnActivating calls arg from EventHandler&lt;ActivatingEventArgs&gt; to Action&lt;IActivatingEventArgs&lt;TFoo&gt;&gt;. 
</li>
          <li>
Named("RegistrationName") had been replaced by Named&lt;T&gt;("RegistrationName")
as naming now requires type information too (see <a href="http://code.google.com/p/autofac/wiki/NewInV2#Changes_to_Named_Services">Changes
to Named Services</a>). 
</li>
        </ul>
        <p>
          <strong>Changes Related to the Contrib and Integration Bits</strong>
        </p>
        <ul>
          <li>
            <strong>AutofacContrib.CommonServiceLocator</strong> - For some reason (I did it,
but can't remember why) we had the source for AutofacServiceLocator in our project
(this is an Autofac implementation of ServiceLocatorImplBase from the CommonServiceLocator
project).  Deleted this (nice!) and added a reference to AutofacContrib.CommonServiceLocator.dll
(taken from AutofacContrib).  Updated the construtor calls with RequestLifetime. 
</li>
          <li>
            <strong>AutofacContrib.Moq</strong> - Removed our AutoMockContainer implementation
and moved to the AutoMock implementation in the Autofac.Contrib assembly AutofacContrib.Moq.dll. 
<br /><em>NOTE:  We had a lot of test dependencies on AutoMockContainer and the AutoMock
type is quite different.  We found it easier to create an Adapter called AutoMockContainer
that adapted AutoMock.</em></li>
          <li>
            <strong>Autofac.Integration.Web</strong> - The member IContainer IContainerProvider.RequestContainer
has been replaced with ILifetimeScope IContainerProvider.RequestLifetime.  See
the "Lifetime and Scope" section. 
</li>
        </ul>
        <img width="0" height="0" src="http://bentaylor.org/aggbug.ashx?id=7b871346-347a-4bc6-b589-e1b66866b663" />
      </body>
      <title>Notes from an Autofac Upgrade (1.4–&gt; 2.2)</title>
      <guid isPermaLink="false">http://bentaylor.org/PermaLink,guid,7b871346-347a-4bc6-b589-e1b66866b663.aspx</guid>
      <link>http://bentaylor.org/Notes-From-An-Autofac-Upgrade-14-22.aspx</link>
      <pubDate>Sun, 27 Jun 2010 14:05:19 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://code.google.com/p/autofac/"&gt;Autofac&lt;/a&gt; is an simple, elegant and
powerful &lt;a href="http://martinfowler.com/articles/injection.html"&gt;IoC&lt;/a&gt; container
written by &lt;a href="http://nblumhardt.com/"&gt;Nicholas Blumhardt&lt;/a&gt;, &lt;a href="http://abdullin.com/"&gt;Rinat
Abdullin&lt;/a&gt; and &lt;a href="http://code.google.com/p/autofac/people/list"&gt;friends&lt;/a&gt;.&amp;#160;
Version 1 was release in early 2008 and version 2 was released earlier this year with
many &lt;a href="http://nblumhardt.com/2010/04/introducing-autofac-2-1-rtw/"&gt;new&lt;/a&gt; &lt;a href="http://nblumhardt.com/2010/05/autofac-2-2-released/"&gt;features&lt;/a&gt;.&amp;#160;
and If you are looking for an IoC container, I highly recommend it.
&lt;/p&gt;
&lt;p&gt;
Autofac underwent some fairly significant surgery as part of the 2.x release in order
to “simplify and streamline” usage.&amp;#160; The Autofac wiki lists the &lt;a href="http://code.google.com/p/autofac/wiki/NewInV2"&gt;key
changes for upgrading users&lt;/a&gt;.&amp;#160; Recently, I migrated a project from Autofac
1.4 to Autofac 2.2.&amp;#160; The changes were done in less than a day and so far we’ve
not had any issues.&amp;#160; What follows are my “real world” notes on the changes I
made.&amp;#160; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Changes Related to the Core Autofac Bits&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Updated component registration lifetime calls (see &lt;a href="http://code.google.com/p/autofac/wiki/NewInV2#New_Lifetime/Sharing_Terminology"&gt;New
Lifetime/Sharing Terminology&lt;/a&gt;): 
&lt;ul&gt;
&lt;li&gt;
FactoryScoped() to InstancePerDependency() 
&lt;/li&gt;
&lt;li&gt;
ContainerScoped() to InstancePerLifetimeScope() 
&lt;/li&gt;
&lt;li&gt;
SingletonScoped() to SingleInstance() 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
Updated using statements for Module usages.&amp;#160; Module has moved from from Autofac.Builder
to Autofac (see &lt;a href="http://code.google.com/p/autofac/wiki/NewInV2#Namespace_Changes"&gt;Namespace
Changes&lt;/a&gt;). 
&lt;/li&gt;
&lt;li&gt;
We were using the ComponentActivator delegate type in some custom extension method
declarations.&amp;#160; We have changed these to Func&amp;lt;IComponentContext, TWeAreCreating&amp;gt;
as the new Register overloads take this or a Func&amp;lt;IComponentContext, IEnumerable&amp;lt;Parameter&amp;gt;,
TWeAreCreating&amp;gt;. 
&lt;/li&gt;
&lt;li&gt;
Updated component registrations that require property injection. 
&lt;br /&gt;
From this: 
&lt;br /&gt;
...As&amp;lt;IFoo&amp;gt;.OnActivating(ActivatingHandler.InjectProperties) 
&lt;br /&gt;
To this: 
&lt;br /&gt;
...As&amp;lt;IFoo&amp;gt;.PropertiesAutowired(false)//false for no circular dependency. 
&lt;/li&gt;
&lt;li&gt;
The Register methods now only accept delegates.&amp;#160; If you want to register an instance
you need to use RegisterInstance.&amp;#160; While migrating to Autofac 2.2 this change
highlighted at least one incorrect registration (see &lt;a href="http://code.google.com/p/autofac/wiki/NewInV2#Separation_of_Registration_Overloads"&gt;Separation
of Registration Overloads&lt;/a&gt;). 
&lt;/li&gt;
&lt;li&gt;
Removed calls to .MemberOf&amp;lt;IEnumerable&amp;lt;TWhatever&amp;gt;&amp;gt;() as resolving collections
is supported by default (I know we could have registered the collection module in
1.x but we discovered a defect in it which Nick confirmed).&amp;#160; See &lt;a href="http://code.google.com/p/autofac/wiki/NewInV2#Modules_Included_by_Default"&gt;Collection
Support (“Resolve All”)&lt;/a&gt;. 
&lt;ul&gt;
&lt;li&gt;
Removed custom extension methods for registering collections (.RegisterCollection&amp;lt;IFoo&amp;gt;)
to using default collection behaviour. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
Updated OnActivating calls arg from EventHandler&amp;lt;ActivatingEventArgs&amp;gt; to Action&amp;lt;IActivatingEventArgs&amp;lt;TFoo&amp;gt;&amp;gt;. 
&lt;/li&gt;
&lt;li&gt;
Named(&amp;quot;RegistrationName&amp;quot;) had been replaced by Named&amp;lt;T&amp;gt;(&amp;quot;RegistrationName&amp;quot;)
as naming now requires type information too (see &lt;a href="http://code.google.com/p/autofac/wiki/NewInV2#Changes_to_Named_Services"&gt;Changes
to Named Services&lt;/a&gt;). 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Changes Related to the Contrib and Integration Bits&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AutofacContrib.CommonServiceLocator&lt;/strong&gt; - For some reason (I did it,
but can't remember why) we had the source for AutofacServiceLocator in our project
(this is an Autofac implementation of ServiceLocatorImplBase from the CommonServiceLocator
project).&amp;#160; Deleted this (nice!) and added a reference to AutofacContrib.CommonServiceLocator.dll
(taken from AutofacContrib).&amp;#160; Updated the construtor calls with RequestLifetime. 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AutofacContrib.Moq&lt;/strong&gt; - Removed our AutoMockContainer implementation
and moved to the AutoMock implementation in the Autofac.Contrib assembly AutofacContrib.Moq.dll. 
&lt;br /&gt;
&lt;em&gt;NOTE:&amp;#160; We had a lot of test dependencies on AutoMockContainer and the AutoMock
type is quite different.&amp;#160; We found it easier to create an Adapter called AutoMockContainer
that adapted AutoMock.&lt;/em&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Autofac.Integration.Web&lt;/strong&gt; - The member IContainer IContainerProvider.RequestContainer
has been replaced with ILifetimeScope IContainerProvider.RequestLifetime.&amp;#160; See
the &amp;quot;Lifetime and Scope&amp;quot; section. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://bentaylor.org/aggbug.ashx?id=7b871346-347a-4bc6-b589-e1b66866b663" /&gt;</description>
      <comments>http://bentaylor.org/CommentView,guid,7b871346-347a-4bc6-b589-e1b66866b663.aspx</comments>
      <category>Autofac</category>
      <category>IoC</category>
    </item>
    <item>
      <trackback:ping>http://bentaylor.org/Trackback.aspx?guid=34c5048c-2cd2-4f42-9c66-e1c3b0318bbd</trackback:ping>
      <pingback:server>http://bentaylor.org/pingback.aspx</pingback:server>
      <pingback:target>http://bentaylor.org/PermaLink,guid,34c5048c-2cd2-4f42-9c66-e1c3b0318bbd.aspx</pingback:target>
      <dc:creator>Ben Taylor</dc:creator>
      <wfw:comment>http://bentaylor.org/CommentView,guid,34c5048c-2cd2-4f42-9c66-e1c3b0318bbd.aspx</wfw:comment>
      <wfw:commentRss>http://bentaylor.org/SyndicationService.asmx/GetEntryCommentsRss?guid=34c5048c-2cd2-4f42-9c66-e1c3b0318bbd</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>PlacedPrice</strong> is a property of a basket line item in the Commerce Server
object model.  The name suggests (IMO) that it contains the<em></em>price of
the item <em>at the time the order was placed.  </em>However, PlacedPrice actually
contains the list price of the item <em>at the time it was placed in the basket.  </em>The
property exists to track the list price of an item, so that if it changes during the
lifetime of the basket the customer can be informed (if required).
</p>
        <h2>How is the Placed Price Populated?
</h2>
        <p>
The PlacedPrice property is populated after you run a pipeline that contains the component <strong>RequiredItemAdjustPriceCy.  </strong>Pipeline
components operate on IDictionary types rather than the CS object model.  Therefore,
the RequiredItemAdjustPriceCy actually populates the <strong>cy_placed_price</strong> value
of each line item dictionary.  If cy_placed_price is empty the value of <strong>cy_iadjust_current_price </strong>is
copied into it.  Once you save the basket with populated cy_placed_price values
the value is left untouched on future runs.  
</p>
        <p>
RequiredItemAdjustPriceCy is configured in the the basket.pcf pipeline that is provided
with the Starter Site and the other installed PUP sites.  Therefore, it is likely
you have this component configure in your site.  The image below shows the component
and describes it’s PlacedPrice behaviour:
</p>
        <p>
          <a href="http://bentaylor.org/content/binary/WindowsLiveWriter/WhatisalineitemsPlacedPrice_12F51/Commerce-Server-Basket-Pipeline-With-RequiredItemAdjustPriceCy_2.png">
            <img title="Image of a Commerce Server basket pipeline with the RequiredItemAdjustPriceCy component highlighted and an explanation of how this component populates the cy_placed_price property of a line item dictionary." style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="728" alt="Image of a Commerce Server basket pipeline with the RequiredItemAdjustPriceCy component highlighted and an explanation of how this component populates the cy_placed_price property of a line item dictionary." src="http://bentaylor.org/content/binary/WindowsLiveWriter/WhatisalineitemsPlacedPrice_12F51/Commerce-Server-Basket-Pipeline-With-RequiredItemAdjustPriceCy_thumb.png" width="698" border="0" />
          </a>
        </p>
        <p>
        </p>
        <p>
The description text on this image is taken from the documentation for <a href="http://msdn.microsoft.com/en-us/library/ms915229.aspx">RequiredItemAdjustPriceCy</a>. 
Below are other excerpts relating to PlacedPrice taken from the <a href="http://msdn.microsoft.com/en-us/library/ms864793.aspx">Commerce
Server 2007 documentation</a>.
</p>
        <h2>Additional Commerce Server Documentation on PlacePrice
</h2>
        <ul>
          <li>
            <a href="http://msdn.microsoft.com/en-us/library/microsoft.commerceserver.runtime.orders.lineitem.placedprice.aspx">LineItem.PlacedPrice
Property documentation</a>: 
<br />
”Gets or sets the unit price of the line item at the time it was added to an order
group.” 
</li>
          <li>
            <a href="http://msdn.microsoft.com/en-us/library/bb520922.aspx">LineItems Table documentation</a>: 
<br />
”The unit price of the line item at the time that it was added to the order group.” 
</li>
          <li>
            <a href="http://msdn.microsoft.com/en-us/library/ms915229.aspx">RequiredItemAdjustPriceCy</a>
          </li>
        </ul>
        <img width="0" height="0" src="http://bentaylor.org/aggbug.ashx?id=34c5048c-2cd2-4f42-9c66-e1c3b0318bbd" />
      </body>
      <title>LineItem PlacedPrice (cy_placed_price) 101</title>
      <guid isPermaLink="false">http://bentaylor.org/PermaLink,guid,34c5048c-2cd2-4f42-9c66-e1c3b0318bbd.aspx</guid>
      <link>http://bentaylor.org/LineItem-PlacedPrice-Cyplacedprice-101.aspx</link>
      <pubDate>Thu, 02 Jul 2009 20:34:04 GMT</pubDate>
      <description>&lt;p&gt;
&lt;strong&gt;PlacedPrice&lt;/strong&gt; is a property of a basket line item in the Commerce Server
object model.&amp;#160; The name suggests (IMO) that it contains the&lt;em&gt; &lt;/em&gt;price of
the item &lt;em&gt;at the time the order was placed.&amp;#160; &lt;/em&gt;However, PlacedPrice actually
contains the list price of the item &lt;em&gt;at the time it was placed in the basket.&amp;#160; &lt;/em&gt;The
property exists to track the list price of an item, so that if it changes during the
lifetime of the basket the customer can be informed (if required).
&lt;/p&gt;
&lt;h2&gt;How is the Placed Price Populated?
&lt;/h2&gt;
&lt;p&gt;
The PlacedPrice property is populated after you run a pipeline that contains the component &lt;strong&gt;RequiredItemAdjustPriceCy.&amp;#160; &lt;/strong&gt;Pipeline
components operate on IDictionary types rather than the CS object model.&amp;#160; Therefore,
the RequiredItemAdjustPriceCy actually populates the &lt;strong&gt;cy_placed_price&lt;/strong&gt; value
of each line item dictionary.&amp;#160; If cy_placed_price is empty the value of &lt;strong&gt;cy_iadjust_current_price &lt;/strong&gt;is
copied into it.&amp;#160; Once you save the basket with populated cy_placed_price values
the value is left untouched on future runs.&amp;#160; 
&lt;/p&gt;
&lt;p&gt;
RequiredItemAdjustPriceCy is configured in the the basket.pcf pipeline that is provided
with the Starter Site and the other installed PUP sites.&amp;#160; Therefore, it is likely
you have this component configure in your site.&amp;#160; The image below shows the component
and describes it’s PlacedPrice behaviour:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://bentaylor.org/content/binary/WindowsLiveWriter/WhatisalineitemsPlacedPrice_12F51/Commerce-Server-Basket-Pipeline-With-RequiredItemAdjustPriceCy_2.png"&gt;&lt;img title="Image of a Commerce Server basket pipeline with the RequiredItemAdjustPriceCy component highlighted and an explanation of how this component populates the cy_placed_price property of a line item dictionary." style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="728" alt="Image of a Commerce Server basket pipeline with the RequiredItemAdjustPriceCy component highlighted and an explanation of how this component populates the cy_placed_price property of a line item dictionary." src="http://bentaylor.org/content/binary/WindowsLiveWriter/WhatisalineitemsPlacedPrice_12F51/Commerce-Server-Basket-Pipeline-With-RequiredItemAdjustPriceCy_thumb.png" width="698" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
The description text on this image is taken from the documentation for &lt;a href="http://msdn.microsoft.com/en-us/library/ms915229.aspx"&gt;RequiredItemAdjustPriceCy&lt;/a&gt;.&amp;#160;
Below are other excerpts relating to PlacedPrice taken from the &lt;a href="http://msdn.microsoft.com/en-us/library/ms864793.aspx"&gt;Commerce
Server 2007 documentation&lt;/a&gt;.
&lt;/p&gt;
&lt;h2&gt;Additional Commerce Server Documentation on PlacePrice
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.commerceserver.runtime.orders.lineitem.placedprice.aspx"&gt;LineItem.PlacedPrice
Property documentation&lt;/a&gt;: 
&lt;br /&gt;
”Gets or sets the unit price of the line item at the time it was added to an order
group.” 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/bb520922.aspx"&gt;LineItems Table documentation&lt;/a&gt;: 
&lt;br /&gt;
”The unit price of the line item at the time that it was added to the order group.” 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/ms915229.aspx"&gt;RequiredItemAdjustPriceCy&lt;/a&gt; 
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://bentaylor.org/aggbug.ashx?id=34c5048c-2cd2-4f42-9c66-e1c3b0318bbd" /&gt;</description>
      <comments>http://bentaylor.org/CommentView,guid,34c5048c-2cd2-4f42-9c66-e1c3b0318bbd.aspx</comments>
      <category>Commerce Server 2007</category>
    </item>
    <item>
      <trackback:ping>http://bentaylor.org/Trackback.aspx?guid=807b11a4-1603-4f71-adc4-c765fb61803f</trackback:ping>
      <pingback:server>http://bentaylor.org/pingback.aspx</pingback:server>
      <pingback:target>http://bentaylor.org/PermaLink,guid,807b11a4-1603-4f71-adc4-c765fb61803f.aspx</pingback:target>
      <dc:creator>Ben Taylor</dc:creator>
      <wfw:comment>http://bentaylor.org/CommentView,guid,807b11a4-1603-4f71-adc4-c765fb61803f.aspx</wfw:comment>
      <wfw:commentRss>http://bentaylor.org/SyndicationService.asmx/GetEntryCommentsRss?guid=807b11a4-1603-4f71-adc4-c765fb61803f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://bentaylor.org/content/binary/WindowsLiveWriter/CommerceServerdiscount_timestampCuriosit_11F18/back-to-the-future-film-poster_2.jpg">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="260" alt="back-to-the-future-film-poster" src="http://bentaylor.org/content/binary/WindowsLiveWriter/CommerceServerdiscount_timestampCuriosit_11F18/back-to-the-future-film-poster_thumb.jpg" width="196" align="right" border="0" />
          </a> The
Commerce Server <a href="http://msdn.microsoft.com/en-us/library/ms960086.aspx">OrderDiscount
pipeline component</a> writes applicable discount information into the Order dictionary. 
Specifically, it writes discount information into the <em>item._itemlevel_discounts_applied  </em>SimpleList<em></em>and
the <em>_orderlevel_discounts_detail </em>Dictionary/SimpleList.  The written
information includes the property <em>discount_timestamp</em> which contains the last
modified DateTime for the discount.  <strong>Curiously, it would appear that
the values placed in these <em>discount_timestamp</em> properties are always one second
later than the <em>actual</em> last modified DateTime value</strong>.  The correct
value can be found in the <em>dt_campaignitem_modified </em>column of the <em>mktg_campaign_item</em> table
(where the discounts and other campaign items are stored).
</p>
        <p>
Is this a hack of some sort?  A mistake on my part?  A bug?  I have
not done a detailed investigation (as that would be sad) so I don't really know the
answer.
</p>
        <p>
          <em>Filed under Commerce Server minutiae.  Do not read when operating heavy machinery
as may cause drowsiness.</em>
        </p>
        <img width="0" height="0" src="http://bentaylor.org/aggbug.ashx?id=807b11a4-1603-4f71-adc4-c765fb61803f" />
      </body>
      <title>OrderDiscount Writes discount_timestamp Properties Into The Future?</title>
      <guid isPermaLink="false">http://bentaylor.org/PermaLink,guid,807b11a4-1603-4f71-adc4-c765fb61803f.aspx</guid>
      <link>http://bentaylor.org/OrderDiscount-Writes-Discounttimestamp-Properties-Into-The-Future.aspx</link>
      <pubDate>Tue, 10 Mar 2009 14:50:21 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://bentaylor.org/content/binary/WindowsLiveWriter/CommerceServerdiscount_timestampCuriosit_11F18/back-to-the-future-film-poster_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="260" alt="back-to-the-future-film-poster" src="http://bentaylor.org/content/binary/WindowsLiveWriter/CommerceServerdiscount_timestampCuriosit_11F18/back-to-the-future-film-poster_thumb.jpg" width="196" align="right" border="0"&gt;&lt;/a&gt; The
Commerce Server &lt;a href="http://msdn.microsoft.com/en-us/library/ms960086.aspx"&gt;OrderDiscount
pipeline component&lt;/a&gt; writes applicable discount information into the Order dictionary.&amp;nbsp;
Specifically, it writes discount information into the &lt;em&gt;item._itemlevel_discounts_applied&amp;nbsp; &lt;/em&gt;SimpleList&lt;em&gt; &lt;/em&gt;and
the &lt;em&gt;_orderlevel_discounts_detail &lt;/em&gt;Dictionary/SimpleList.&amp;nbsp; The written
information includes the property &lt;em&gt;discount_timestamp&lt;/em&gt; which contains the last
modified DateTime for the discount.&amp;nbsp; &lt;strong&gt;Curiously, it would appear that
the values placed in these &lt;em&gt;discount_timestamp&lt;/em&gt; properties are always one second
later than the &lt;em&gt;actual&lt;/em&gt; last modified DateTime value&lt;/strong&gt;.&amp;nbsp; The correct
value can be found in the &lt;em&gt;dt_campaignitem_modified &lt;/em&gt;column of the &lt;em&gt;mktg_campaign_item&lt;/em&gt; table
(where the discounts and other campaign items are stored).
&lt;/p&gt;
&lt;p&gt;
Is this a hack of some sort?&amp;nbsp; A mistake on my part?&amp;nbsp; A bug?&amp;nbsp; I have
not done a detailed investigation (as that would be sad) so I don't really know the
answer.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Filed under Commerce Server minutiae.&amp;nbsp; Do not read when operating heavy machinery
as may cause drowsiness.&lt;/em&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://bentaylor.org/aggbug.ashx?id=807b11a4-1603-4f71-adc4-c765fb61803f" /&gt;</description>
      <comments>http://bentaylor.org/CommentView,guid,807b11a4-1603-4f71-adc4-c765fb61803f.aspx</comments>
      <category>Commerce Server 2007</category>
      <category>Commerce Server 2009</category>
    </item>
  </channel>
</rss>