Developer forum

Forum » Integration » BC integration ProductPrices with salesType="Customer"

BC integration ProductPrices with salesType="Customer"

Peter Krusell
Reply

Hi,

Why do the prices differ in the response from BC for the requests below?

Request for ProductPrice for customer number 104745:
<GetEcomData><tables><ProductPrices type="all" salesType="Customer" salesCode="104745" setCurrency="SEK" setLanguage="SVE" setUnitOfMeasure="Unit_PC"/></tables></GetEcomData>


Request for live prices also for customer number 104745:

We have been looking at these forum threads trying to use identical parameters in the requests but the result still differs.
https://doc.dynamicweb.com/forum/integration/integration/problem-importing-sales-prices-from-business-central
https://doc.dynamicweb.com/forum/integration/prices-from-live-integration-bc-cloud?PID=1605

All the best
/Peter


Replies

 
Dmitriy Benyuk Dynamicweb Employee
Dmitriy Benyuk
Reply

Hi Peter,
that is becasuse in the first request you get the prices from the sales price lists and for the Live integration request you get the lowest possible calculated price for that customer for that product. Maybe this customer and/or product has some other discounts, for example an Invoice discounts that can be applied on top of that lowest price.
Try to make the CalculateOrder request with that customer and that product and check the response, it should contain the order lines with different discounts applied so you can find out why.
BR, Dmitrij

 
Peter Krusell
Reply

Hi Dimitry,

Thanks for a quick answer. Yes the CalculateOrder request also give the same price as the list price through the live call.

2025-07-07 12:23:55.7077: DebugInfo: Request CalculateOrder (ID: CART1662, CreateOrder: False) sent: '<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<tables source="LiveIntegration" submitType="LiveOrderOrCart" referenceName="OrdersPut">
  <table tableName="EcomOrders">
    <item table="EcomOrders">
      <column columnName="OrderCustomerAccessUserExternalId">104745</column>
      <column columnName="OrderCustomerNumber">104745</column>
      <column columnName="OrderCustomerName"></column>
      <column columnName="OrderCustomerAddress"></column>
      <column columnName="OrderCustomerAddress2"></column>
      <column columnName="OrderCustomerCity"></column>
      <column columnName="OrderCustomerState"></column>
      <column columnName="OrderCustomerZip"></column>
      <column columnName="OrderCustomerCountryCode"></column>
      <column columnName="OrderCustomerEmail"></column>
      <column columnName="OrderCustomerPhone"></column>
      <column columnName="OrderCustomerFax"></column>
      <column columnName="OrderCustomerCompany"></column>
      <column columnName="OrderCustomerComment"></column>
      <column columnName="OrderCustomerFirstName"></column>
      <column columnName="OrderCustomerSurname"></column>
      <column columnName="OrderCustomerRefId"></column>
      <column columnName="OrderDeliveryName"></column>
      <column columnName="OrderDeliveryAddress"></column>
      <column columnName="OrderDeliveryAddress2"></column>
      <column columnName="OrderDeliveryCity"></column>
      <column columnName="OrderDeliveryState"></column>
      <column columnName="OrderDeliveryZip"></column>
      <column columnName="OrderDeliveryCountryCode"></column>
      <column columnName="OrderDeliveryEmail"></column>
      <column columnName="OrderDeliveryPhone"></column>
      <column columnName="OrderDeliveryFax"></column>
      <column columnName="OrderDeliveryCompany"></column>
      <column columnName="CreateOrder">False</column>
      <column columnName="OrderId">CART1662</column>
      <column columnName="OrderAutoId">76</column>
      <column columnName="OrderIntegrationOrderId"></column>
      <column columnName="OrderCurrencyCode">SEK</column>
      <column columnName="OrderDate">2025-07-07T12:23:55</column>
      <column columnName="OrderPaymentMethodName" isInformationalOnly="True">Standard faktura</column>
      <column columnName="OrderPaymentMethodId">PAY2</column>
      <column columnName="OrderPaymentMethodCode"></column>
      <column columnName="OrderPaymentMethodTermsCode"></column>
      <column columnName="OrderShippingDate"></column>
      <column columnName="OrderReference"></column>
      <column columnName="OrderShippingMethodName" isInformationalOnly="True"></column>
      <column columnName="OrderShippingMethodId"></column>
      <column columnName="OrderShippingFee"></column>
      <column columnName="OrderPriceTotal">245</column>
      <column columnName="OrderCaptureAmount">0</column>
      <column columnName="OrderVoucherCode"></column>
      <column columnName="OrderTransactionId"></column>
      <column columnName="OrderStateId">OS5</column>
      <column columnName="OrderStateName" isInformationalOnly="True">Draft</column>
      <column columnName="ErpControlsDiscount">True</column>
      <column columnName="VatCountryCode">SE</column>
      <column columnName="VatPostingGroup"></column>
      <column columnName="OrderShippingAgent" isCustomField="True"></column>
      <column columnName="QuoteRequest" isCustomField="True"></column>
    </item>
  </table>
  <table tableName="EcomOrderLines">
    <item table="EcomOrderLines">
      <column columnName="OrderLineId"></column>
      <column columnName="OrderLineOrderId">CART1662</column>
      <column columnName="OrderLineParentLineId"></column>
      <column columnName="OrderLineProductId">120006</column>
      <column columnName="OrderLineProductVariantId"></column>
      <column columnName="OrderLineProductNumber">120006</column>
      <column columnName="OrderLineProductName">Bomögleplatta</column>
      <column columnName="OrderLineProductIdentifier">120006..SVE</column>
      <column columnName="OrderLineQuantity">1</column>
      <column columnName="OrderLineUnitId">Unit_PC</column>
      <column columnName="OrderLinePriceWithoutVat">196</column>
      <column columnName="OrderLineUnitPriceWithoutVat">196</column>
      <column columnName="NetPrice">196</column>
      <column columnName="OrderLineType">0</column>
      <column columnName="OrderLineTypeName">Product</column>
      <column columnName="OrderLineBom">False</column>
      <column columnName="OrderLineBomItemId"></column>
      <column columnName="OrderLineGiftCardCode"></column>
      <column columnName="OrderLineIsGiftCardDiscount" isCustomField="True">False</column>
      <column columnName="OrderLineFieldValues">&lt;OrderLineFieldValueCollection /&gt;</column>
    </item>
  </table>
  <table tableName="EcomOrderLineFields" />
</tables>'.
2025-07-07 12:23:55.9247: DebugInfo: Response CalculateOrder (ID: CART1662, CreateOrder: False) received: '<?xml version="1.0" encoding="utf-8"?>
<tables version="1.2.0.27_NAV19.0.54863.0">
  <table tableName="EcomOrderLines">
    <item table="EcomOrderLines">
      <column columnName="OrderLineProductNumber"><![CDATA[120006]]></column>
      <column columnName="OrderLineProductVariantId"><![CDATA[]]></column>
      <column columnName="OrderLineUnitId"><![CDATA[Unit_PC]]></column>
      <column columnName="OrderLineId"><![CDATA[10000]]></column>
      <column columnName="OrderLineQuantity"><![CDATA[1]]></column>
      <column columnName="OrderLineType"><![CDATA[0]]></column>
      <column columnName="OrderLinePriceWithoutVat"><![CDATA[196]]></column>
      <column columnName="OrderLineUnitPriceWithoutVat"><![CDATA[196.00]]></column>
      <column columnName="OrderLinePriceWithVat"><![CDATA[245]]></column>
      <column columnName="OrderLineUnitPriceWithVat"><![CDATA[245]]></column>
      <column columnName="OrderLinePriceVat"><![CDATA[49]]></column>
      <column columnName="OrderLineUnitPriceVat"><![CDATA[49]]></column>
      <column columnName="OrderLinePriceVatPercent"><![CDATA[25]]></column>
      <column columnName="OrderLineUnitPriceVatPercent"><![CDATA[25]]></column>
    </item>
    <item table="EcomOrderLines">
      <column columnName="OrderLineProductNumber"><![CDATA[120006]]></column>
      <column columnName="OrderLineProductVariantId"><![CDATA[]]></column>
      <column columnName="OrderLineUnitId"><![CDATA[Unit_PC]]></column>
      <column columnName="OrderLineParentLineId"><![CDATA[10000]]></column>
      <column columnName="OrderLineType"><![CDATA[3]]></column>
      <column columnName="OrderLineQuantity"><![CDATA[1]]></column>
      <column columnName="OrderLinePriceWithoutVat"><![CDATA[68.6]]></column>
      <column columnName="OrderLineUnitPriceWithoutVat"><![CDATA[68.6]]></column>
      <column columnName="OrderLinePriceWithVat"><![CDATA[85.75]]></column>
      <column columnName="OrderLineUnitPriceWithVat"><![CDATA[85.75]]></column>
      <column columnName="OrderLineDiscountPercentage"><![CDATA[35]]></column>
      <column columnName="OrderLinePriceVat"><![CDATA[17.15]]></column>
      <column columnName="OrderLineUnitPriceVat"><![CDATA[17.15]]></column>
      <column columnName="OrderLinePriceVatPercent"><![CDATA[25]]></column>
      <column columnName="OrderLineUnitPriceVatPercent"><![CDATA[25]]></column>
    </item>
  </table>
  <table tableName="EcomOrders">
    <item table="EcomOrders">
      <column columnName="OrderShippingMethodName"><![CDATA[]]></column>
      <column columnName="OrderCreated"><![CDATA[TRUE]]></column>
      <column columnName="OrderId"><![CDATA[]]></column>
      <column columnName="OrderCurrencyCode"><![CDATA[]]></column>
      <column columnName="OrderDate"><![CDATA[]]></column>
      <column columnName="OrderPaymentMethodName"><![CDATA[]]></column>
      <column columnName="OrderCustomerName"><![CDATA[]]></column>
      <column columnName="OrderCustomerAddress"><![CDATA[]]></column>
      <column columnName="OrderCustomerAddress2"><![CDATA[]]></column>
      <column columnName="OrderCustomerCity"><![CDATA[]]></column>
      <column columnName="OrderCustomerCountryCode"><![CDATA[SE]]></column>
      <column columnName="OrderCustomerEmail"><![CDATA[]]></column>
      <column columnName="OrderCustomerFax"><![CDATA[]]></column>
      <column columnName="OrderCustomerPhone"><![CDATA[]]></column>
      <column columnName="OrderCustomerZip"><![CDATA[]]></column>
      <column columnName="OrderDeliveryName"><![CDATA[]]></column>
      <column columnName="OrderDeliveryAddress"><![CDATA[]]></column>
      <column columnName="OrderDeliveryAddress2"><![CDATA[]]></column>
      <column columnName="OrderDeliveryCity"><![CDATA[]]></column>
      <column columnName="OrderDeliveryCountryCode"><![CDATA[SE]]></column>
      <column columnName="OrderDeliveryEmail"><![CDATA[]]></column>
      <column columnName="OrderDeliveryFax"><![CDATA[]]></column>
      <column columnName="OrderDeliveryPhone"><![CDATA[]]></column>
      <column columnName="OrderDeliveryZip"><![CDATA[]]></column>
      <column columnName="OrderPriceWithVat"><![CDATA[159.25]]></column>
      <column columnName="OrderPriceWithoutVat"><![CDATA[127.4]]></column>
      <column columnName="OrderPriceVat"><![CDATA[31.85]]></column>
      <column columnName="OrderSalesDiscount"><![CDATA[68.6]]></column>
    </item>
  </table>
</tables>'.

The client is looking to use the Scenario 2 described here for anonymous list prices that they have set on this specific customer number: https://doc.dynamicweb.com/documentation-9/integration/integration-framework/erp-plug-in-units/nav-and-business-central-requests-and-responses#sideNavTitle1-10
To achive this right now and get prices that are identical in list and cart stage we need to turn on "Live product info for anonymous users" which we would like to avoid as it puts stress on the systems and performance.

Is there a problem with the way the client has entered the prices on this customer to get them transfered in batch with the ProductPrices request? What would they need to change to make it not differ? In their current ecom solution the list price is transfered in batch from BC to Ecom the way that the prices are currently entered in BC. 

All the best
/Peter

 
Dmitriy Benyuk Dynamicweb Employee
Dmitriy Benyuk
Reply

Hi Peter,
the problem is that there is no ability to get the discounts from the ProductPrices request. So you need to import the discounts from the BC  in order to show the prices with discounts.
The possible way is to use the Odata approach described here:
https://doc.dynamicweb.dev/manual/dynamicweb10/integration/guides/blueprints/bc-odata-v4-blueprint.html
https://doc.dynamicweb.dev/manual/dynamicweb10/integration/guides/blueprints/bc-odata-v4-blueprint.html#import-discounts-old-price-experience
https://doc.dynamicweb.dev/documentation/implementing/tutorials/creating-an-integrated-webshop.html
Then the imported discounts can be applied to the products to get the similar prices as in BC.
BR, Dmitrij

 

You must be logged in to post in the forum