通过网络服务以编程方式创建订单时,我无法修改订单价格。
1.- 我首先创建购物车:
<carts>
<cart>
<id>102241</id>
<id_currency>1</id_currency>
<id_lang>4</id_lang>
<associations>
<cart_rows>
<cart_row>
<id_product>40</id_product>
<id_product_attribute>0</id_product_attribute>
<id_address_delivery>22265</id_address_delivery>
<quantity>1</quantity>
</cart_row>
<cart_row>
<id_product>41</id_product>
<id_product_attribute>587</id_product_attribute>
<id_address_delivery>22265</id_address_delivery>
<quantity>3</quantity>
</cart_row>
</cart_rows>
</associations>
<id_address_delivery>22265</id_address_delivery>
<id_address_invoice>22265</id_address_invoice>
<id_customer>17440</id_customer>
<id_carrier>150</id_carrier>
<date_add>2021-02-07 11:27:42</date_add>
<date_udp>2021-02-07 11:27:42</date_udp>
</cart>
2.- 然后,使用给定的购物车 ID,我正在创建订单
<orders>
<order>
<id>39997</id>
<id_address_delivery>22265</id_address_delivery>
<id_address_invoice>22265</id_address_invoice>
<id_cart>102241</id_cart>
<id_currency>1</id_currency>
<id_lang>4</id_lang>
<id_customer>17440</id_customer>
<id_carrier>150</id_carrier>
<module>bankwire</module>
<payment>Mercado Libre</payment>
<total_paid>50000</total_paid>
<total_paid_real>50000</total_paid_real>
<total_products>50000</total_products>
<total_products_wt>50000</total_products_wt>
<conversion_rate>1</conversion_rate>
<associations>
<order_rows>
<order_row>
<product_id>40</product_id>
<product_attribute_id>0</product_attribute_id>
<product_quantity>1</product_quantity>
<product_price>30000</product_price>
<unit_price_tax_incl>30000</unit_price_tax_incl>
<unit_price_tax_excl>30000</unit_price_tax_excl>
</order_row>
<order_row>
<product_id>41</product_id>
<product_attribute_id>587</product_attribute_id>
<product_quantity>2</product_quantity>
<product_price>10000</product_price>
<unit_price_tax_incl>10000</unit_price_tax_incl>
<unit_price_tax_excl>10000</unit_price_tax_excl>
</order_row>
</order_rows>
</associations>
<valid>1</valid>
<current_state>2</current_state>
<total_discounts>0</total_discounts>
<total_discounts_tax_incl>0</total_discounts_tax_incl>
<total_discounts_tax_excl>0</total_discounts_tax_excl>
<total_paid_tax_incl>50000</total_paid_tax_incl>
<total_paid_tax_excl>50000</total_paid_tax_excl>
<total_shipping>0</total_shipping>
<total_shipping_tax_incl>0</total_shipping_tax_incl>
<total_shipping_tax_excl>0</total_shipping_tax_excl>
</order>
但是,在创建时,它返回商店的价格(productID 40 为 24990,varID 0)和(productID 41 为 24990,varID 587),而不是我在 XML 中定义的价格。之后我也尝试发送 PUT request
来更改它们,但没有成功。
可以在后台 UI 中更改订单产品的价格。如何通过网络服务执行此操作?
答案 0 :(得分:0)
您在 Prestashop 网络服务中可以做什么或不能做什么是在对象类变量 $webserviceParameters
中定义的。
检查您的 Order.php $webserviceParameters
。您可以在 associations
中看到:
'product_price' => array('setter' => false)
'getter'
用于获取变量,'setter'
用于更新变量。
'setter' => false
表示您无法更改它。
覆盖
但是您可以添加一个 Order.php
覆盖:您需要覆盖一个包含 __construct()
的函数 $this->webserviceParameters = ...
。
并通过在那里添加一个函数来更改 webservice 参数,即。 e.
'setter' => 'setOrderRowProductPrice'
然后你需要写一个函数:
function setOrderRowProductPrice($product_price) {
// $product_price is a variable from XML
// $this->product_price is a variable from the database
// Your code (i. e. add changes to the database)
return $product_price;
}