From ad05ce68a06c0032a99f65c8bc9803019e2f6bf0 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Wed, 25 May 2011 06:49:39 +0000 Subject: [PATCH] Works on paypal module New: possibility to use the price defined in paypal instead dolibarr price --- htdocs/langs/en_US/paypal.lang | 1 + htdocs/langs/fr_FR/paypal.lang | 1 + htdocs/paypal/ajaxtransaction.php | 33 ++++++++++++++++--------------- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/htdocs/langs/en_US/paypal.lang b/htdocs/langs/en_US/paypal.lang index 56093e07a74..ca63c9488a7 100644 --- a/htdocs/langs/en_US/paypal.lang +++ b/htdocs/langs/en_US/paypal.lang @@ -34,6 +34,7 @@ PaypalCreateInvoiceEnabled=Enable the ability to create customer invoices UseThePriceDefinedInPaypal=Use the price defined in Paypal instead of the one defined in Dolibarr DefaultProductShippingCosts=Select the product to be used for adding shipping costs. DefaultPaypalAccount=Select the bank account to be used as a Paypal account, this will deduct the Paypal fee when adding a payment. +ErrorProductWithRefNotSamePrice=The price set for the reference "%s" does not match the price Paypal # Paypal transaction fields PAYERID=Payer ID diff --git a/htdocs/langs/fr_FR/paypal.lang b/htdocs/langs/fr_FR/paypal.lang index 6e74ebcaceb..8abbc46b4eb 100644 --- a/htdocs/langs/fr_FR/paypal.lang +++ b/htdocs/langs/fr_FR/paypal.lang @@ -34,6 +34,7 @@ PaypalCreateInvoiceEnabled=Activer la possibilité de créer des factures client UseThePriceDefinedInPaypal=Utiliser le prix défini dans Paypal au lieu de celui défini dans Dolibarr DefaultProductShippingCosts=Sélectionnez le produit qui sera utilisé pour l'ajout des frais de port. DefaultPaypalAccount=Sélectionner le compte bancaire qui sera utilisé comme compte Paypal, ceci permettra de déduire les frais Paypal lors de l'ajout d'un paiement. +ErrorProductWithRefNotSamePrice=Le prix défini pour la référence "%s" ne correspond pas au prix Paypal # Paypal transaction fields PAYERID=ID du payeur diff --git a/htdocs/paypal/ajaxtransaction.php b/htdocs/paypal/ajaxtransaction.php index 52322aabf34..45ba83969e6 100644 --- a/htdocs/paypal/ajaxtransaction.php +++ b/htdocs/paypal/ajaxtransaction.php @@ -60,6 +60,8 @@ dol_syslog(join(',',$_GET)); if (isset($_GET['action']) && ! empty($_GET['action']) && isset($_GET['transaction_id']) && ! empty($_GET['transaction_id']) ) { + $langs->load("paypal"); + if ($_GET['action'] == 'add') { $soc = new Societe($db); @@ -176,27 +178,27 @@ if (isset($_GET['action']) && ! empty($_GET['action']) && isset($_GET['transacti if ($ret > 0) { $qty=$_SESSION[$_GET['transaction_id']]["L_QTY".$i]; + if ($_SESSION[$_GET['transaction_id']]["L_AMT".$i]) $amount_ht = ($_SESSION[$_GET['transaction_id']]["L_AMT".$i] - $_SESSION[$_GET['transaction_id']]["L_SHIPPINGAMT".$i]); + else $amount_ht = ($_SESSION[$_GET['transaction_id']]["AMT"] - $_SESSION[$_GET['transaction_id']]["SHIPAMOUNT"] - $_SESSION[$_GET['transaction_id']]["L_TAXAMT".$i]); + $unitprice_ht = ($amount_ht / $qty); if ($conf->global->PAYPAL_USE_PRICE_DEFINED_IN_PAYPAL) { - if ($_SESSION[$_GET['transaction_id']]["L_AMT".$i]) - { - $amount_ht = ($_SESSION[$_GET['transaction_id']]["L_AMT".$i] - $_SESSION[$_GET['transaction_id']]["L_SHIPPINGAMT".$i]); - } - else - { - $amount_ht = ($_SESSION[$_GET['transaction_id']]["AMT"] - $_SESSION[$_GET['transaction_id']]["SHIPAMOUNT"] - $_SESSION[$_GET['transaction_id']]["L_TAXAMT".$i]); - } - - $unitprice_ht = ($amount_ht / $qty); + $price=$unitprice_ht; } else { - $unitprice_ht = $product->price; + $price=$product->price; + if ($price != $unitprice_ht) + { + $error++; + $return_arr['error'].= $langs->trans('ErrorProductWithRefNotSamePrice', $_SESSION[$_GET['transaction_id']]["L_NUMBER".$i]).'
'; + break; + } } - if ($subelement == 'commande') $fields = array($object_id,$product->description,$unitprice_ht,$qty,$product->tva_tx,$product->localtax1_tx,$product->localtax2_tx,$product->id,0,0,0,$product->price_base_type,0,'','',$product->product_type); - if ($subelement == 'facture') $fields = array($object_id,$product->description,$unitprice_ht,$qty,$product->tva_tx,$product->localtax1_tx,$product->localtax2_tx,$product->id,0,'','',0,0,0,$product->price_base_type,0,$product->product_type); + if ($subelement == 'commande') $fields = array($object_id,$product->description,$price,$qty,$product->tva_tx,$product->localtax1_tx,$product->localtax2_tx,$product->id,0,0,0,$product->price_base_type,0,'','',$product->product_type); + if ($subelement == 'facture') $fields = array($object_id,$product->description,$price,$qty,$product->tva_tx,$product->localtax1_tx,$product->localtax2_tx,$product->id,0,'','',0,0,0,$product->price_base_type,0,$product->product_type); $result = $object->addline($fields[0],$fields[1],$fields[2],$fields[3],$fields[4],$fields[5],$fields[6],$fields[7],$fields[8],$fields[9],$fields[10],$fields[11],$fields[12],$fields[13],$fields[14],$fields[15],$fields[16]); @@ -219,7 +221,7 @@ if (isset($_GET['action']) && ! empty($_GET['action']) && isset($_GET['transacti } // Add shipping costs - if ($shipamount > 0) + if (! $error && $shipamount > 0) { if ($conf->global->PAYPAL_PRODUCT_SHIPPING_COSTS) { @@ -258,7 +260,7 @@ if (isset($_GET['action']) && ! empty($_GET['action']) && isset($_GET['transacti } // Add contact customer - if ($contact->id > 0) + if (! $error && $contact->id > 0) { $result=$object->add_contact($contact->id,'CUSTOMER','external'); if ($result < 0) @@ -292,7 +294,6 @@ if (isset($_GET['action']) && ! empty($_GET['action']) && isset($_GET['transacti } else if ($_GET['action'] == 'showdetails') { - $langs->load('paypal'); $langs->load('orders'); $langs->load('bills');