Jump to content

Webservice + Add Order => Problème De Prix


Recommended Posts

Bonjour à tous

 

J'ai programmé l'ajout de commande sur prestashop, pour des commandes externes d'une marketplace.

Problème, je n'arrive pas à mettre les prix que je veux, les prix de ma boutique prestashop se mettent à la place (alors que je veux mettre les prix pratiqués sur cette marketplace)

 

Mon xml :

<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<order>
	<id></id>
	<id_address_delivery>5097</id_address_delivery>
	<id_address_invoice>5097</id_address_invoice>
	<id_cart>13627</id_cart>
	<id_currency>1</id_currency>
	<id_lang>1</id_lang>
	<id_customer>4929</id_customer>
	<id_carrier>74</id_carrier>
	<current_state>10</current_state>
	<module>bankwire</module>
	<invoice_number></invoice_number>
	<invoice_date></invoice_date>
	<delivery_number></delivery_number>
	<delivery_date></delivery_date>
	<valid></valid>
	<date_add></date_add>
	<date_upd></date_upd>
	<shipping_number></shipping_number>
	<id_shop_group>1</id_shop_group>
	<id_shop>1</id_shop>
	<secure_key></secure_key>
	<payment>paiement idPaiementxyz</payment>
	<recyclable></recyclable>
	<gift></gift>
	<gift_message></gift_message>
	<mobile_theme></mobile_theme>
	<total_discounts></total_discounts>
	<total_discounts_tax_incl></total_discounts_tax_incl>
	<total_discounts_tax_excl></total_discounts_tax_excl>
	<total_paid>15.89</total_paid>
	<total_paid_tax_incl>15.89</total_paid_tax_incl>
	<total_paid_tax_excl>15.89</total_paid_tax_excl>
	<total_paid_real>15.89</total_paid_real>
	<total_products>12.9</total_products>
	<total_products_wt>12.9</total_products_wt>
	<total_shipping>2.99</total_shipping>
	<total_shipping_tax_incl>2.99</total_shipping_tax_incl>
	<total_shipping_tax_excl>2.99</total_shipping_tax_excl>
	<carrier_tax_rate>0</carrier_tax_rate>
	<total_wrapping>0</total_wrapping>
	<total_wrapping_tax_incl>0</total_wrapping_tax_incl>
	<total_wrapping_tax_excl>0</total_wrapping_tax_excl>
	<round_mode></round_mode>
	<round_type></round_type>
	<conversion_rate>1</conversion_rate>
	<reference></reference>
    <associations>
        <order_rows>
            <order_row>
                <id_product>1000</id_product>
                <product_attribute_id>0</product_attribute_id>
                <quantity>1</quantity>
                <product_name>nom du produit</product_name>
                <product_reference>maref5</product_reference>
                <product_ean13>11111192368</product_ean13>
                <product_upc></product_upc>
                <product_price>12.9</product_price>
                <unit_price_tax_incl>12.9</unit_price_tax_incl>
                <unit_price_tax_excl>12.9</unit_price_tax_excl>
            </order_row>
        </order_rows>
    </associations>
</order>
</prestashop>

$opt = array( 'resource' => 'orders' );
$opt['postXml'] = $xml->asXML();
$xml = $webService->add( $opt );

Donc en gros, prix de mon produit 12.90€, frais de port 2.99€, pour un total de 15.89€

 

Tout me semble bien paramétré.

Sauf que la commande est créée avec les prix configuré dans la boutique.

 

Dans la bdd, le champ total_paid_real est bon à 15.89

Mais les autres champs de prix, n'ont pas tenu compte des prix que j'ai mis.

 

Et donc erreur de paiement à la fin puisque le prix payé est différent du prix total.

 

Une idée ? Merci d'avance.

 

Link to comment
Share on other sites

  • 3 months later...
  • 3 months later...

Salut

 

En soi, non, je n'ai pas réussi.

Par contre, j'ai rajouté une ligne de code, pour valider les commandes.

Le prix est toujours mauvais sur la fiche commande .... mais c'est pour moi, donc je fais avec.

 

Si tu trouves une solution, ou si tu as besoin d'un bout de code (extraction des commandes Amazon et CDiscount), dis-moi.

Link to comment
Share on other sites

Salut,

 

Merci pour ta réponse :) 
 
Après plusieurs tests, il s'avère que l'API de Prestashop n'accepte pas un prix différent que celui du catalogue ...
 
Du coup, j'ai une "solution" mais c'est plus du maquillage qu'autre chose. Le problème de cette solution, c'est le nombre d'appels au Webservice. Sans parler du fait que c'est vraiment de la bricole.
 

        /**
         * RECHERCHE DE LA REFERENCE COMMANDE
* Grace à l'ID de la commande fraichement crée
         */
       
        $opt['resource'] = 'orders';
        $opt['id'] = $id['order'];
        $xml = $webService->get($opt);
       
        $id['reference'] = $xml->order->reference;

 
        /**
         * RECHERCHE ID DU PAYMENT
* A Partir de la référence de la commande que je viens de trouver
         */
 
        $opt = array('resource' => 'order_payments', 'filter[order_reference]' => '['.$id['reference'].']',);
        
        $xml = $webService->get($opt);
 
// J'obtient l'ID du Payment que je vais utiliser juste après
 
        $a = $xml->order_payments->order_payment[0]['id'];
 
        /**
         * RECHERCHE DU PAYMENT
* Pour pouvoir le modifier par la suite
         */
     
        $opt['resource'] = 'order_payments';
        $opt['id'] = $a;
        $xml = $webService->get($opt);
 
        /**
         * MODIFICATION DU PAYMENT
* Par le montant désiré
         */
 
        $xml->order_payment->transaction_id = $id_transaction;
        $xml->order_payment->amount = $total_products+$transport-$total_discount;
 
        $opt = array('resource' => 'order_payments');
        $opt['putXml'] = $xml->asXML();
        $opt['id'] = $a;
        $xml = $webService->edit($opt);

Une fois que tu as fait ça, tu peux faire la même chose pour ta facture bien sur.

 

Après, une piste que à creuser, c'est la gestion des prix par bon de réduction, mais c'est une autre histoire.

 

Au plaisir d'échanger sur le sujet,

 

Bonne journée!
 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...