Author: benj
Date: Thu Jul  7 17:05:18 2016
New Revision: 1731

URL: http://svn.gna.org/viewcvs/gdtc?rev=1731&view=rev
Log:
Compute correctly end_date, renewal_date and amount in case of a subscription 
with expiration date before 12 monthes
Fix warnings

Modified:
    trunk/gdtc/include/CMCIC_HMAC.inc.php
    trunk/gdtc/include/cb_cmcic.php

Modified: trunk/gdtc/include/CMCIC_HMAC.inc.php
URL: 
http://svn.gna.org/viewcvs/gdtc/trunk/gdtc/include/CMCIC_HMAC.inc.php?rev=1731&r1=1730&r2=1731&view=diff
==============================================================================
--- trunk/gdtc/include/CMCIC_HMAC.inc.php       (original)
+++ trunk/gdtc/include/CMCIC_HMAC.inc.php       Thu Jul  7 17:05:18 2016
@@ -46,7 +46,7 @@
 
 // <<<--- begin custom OverWrite --------------
 
-function CMCIC_hmac($CMCIC_Tpe, $tpe_number, $pass, $tpe_hmac_key, $version, 
$data="")
+function CMCIC_hmac($tpe_number, $pass, $tpe_hmac_key, $version, $data="")
 {
     $k1 = pack("H*",sha1($pass));
     $l1 = strlen($k1);
@@ -129,7 +129,7 @@
                                $http_vars [ 'vld' ],
                                $http_vars [ 'brand' ],
                                $http_vars [ 'status3ds' ],
-                               $http_vars [ 'numauto' ],
+                               ( array_key_exists ( 'numauto', $http_vars ) ? 
$http_vars [ 'numauto' ] : '' ),
                                $http_vars [ 'motifrefus' ],
                                $http_vars [ 'originecb' ],
                                $http_vars [ 'bincb' ],
@@ -141,7 +141,7 @@
                                );
       }
 
-    if ( strtolower($http_vars['MAC'] ) == CMCIC_hmac($CMCIC_Tpe, $http_vars [ 
'TPE' ], 
+    if ( strtolower($http_vars['MAC'] ) == CMCIC_hmac($http_vars [ 'TPE' ], 
                                                      $pass, $hmac_key, 
$version, $php2_fields) ):
         $result  = $http_vars [ 'code-retour' ];
         $receipt = CMCIC_PHP2_MACOK;

Modified: trunk/gdtc/include/cb_cmcic.php
URL: 
http://svn.gna.org/viewcvs/gdtc/trunk/gdtc/include/cb_cmcic.php?rev=1731&r1=1730&r2=1731&view=diff
==============================================================================
--- trunk/gdtc/include/cb_cmcic.php     (original)
+++ trunk/gdtc/include/cb_cmcic.php     Thu Jul  7 17:05:18 2016
@@ -63,6 +63,9 @@
   if ( $actor [ 'subscription' ] [ 'payment_mode' ] == 'cbweb_recur' ||
        $actor [ 'subscription' ] [ 'payment_mode' ] == 'prelevement' )
   {
+    if ( ! $actor [ 'subscription' ] [ 'prelevement_periodicity' ] )
+      return croak ( "Probl&egrave;me de calcul de cotisation, consulter 
[email protected]" );
+
     $last_amount = $actor [ 'subscription' ] [ 'prelevement_amount' ] * 
(12/$actor [ 'subscription' ] [ 'prelevement_periodicity' ]);
   }
   else
@@ -360,7 +363,7 @@
                         $version,
                         'FR',
                         $tpe_societe );
-  $keyedMAC = CMCIC_hmac($CMCIC_Tpe, $tpe, $tpe_pass, $tpe_hmac_key, $version, 
$PHP1_FIELDS);
+  $keyedMAC = CMCIC_hmac($tpe, $tpe_pass, $tpe_hmac_key, $version, 
$PHP1_FIELDS);
 
   //print "$PHP1_FIELDS<br/>$keyedMAC";
 
@@ -414,7 +417,7 @@
     if ( ! $subscription )
     {
        fwrite ( $fh, print_r ( sprintf ( "Erreur d'interrogation de la base 
pour la cotisation '%d' !\n", 
-                                         $subscription [ 'subscription_id' ] ),
+                                         $verified_vars [ 'reference' ] ),
                                true ) );
        print ( "Erreur d'interrogation de la base." );
        exit;
@@ -471,8 +474,18 @@
                                        $verified_vars [ 'reference' ] ) );
     if ( ! $results )
     {
-       fwrite ( $fh, print_r ( sprintf ( "Erreur de mise à jour pour '%d'.\n",
-                                         $subscription [ 'subscription_id' ] ),
+       fwrite ( $fh, print_r ( sprintf ( "Erreur de mise à jour pour '%d', 
\"%s\".\n",
+                                         $subscription [ 'subscription_id' ],
+                                         sprintf ( "  UPDATE subscription ".
+                                                   "     SET 
payment_received_date = now(), " .
+                                                   "         
payment_endorsed_date = now(), " .
+                                                   "         amount = '%s', " .
+                                                   "         
cbrecur_expiration_date = %s, " .
+                                                   "         voucher = 
reference " .
+                                                   "   WHERE reference = '%s'; 
",
+                                                   $amount, 
+                                                   ( $expiration_date ? 
"'$expiration_date'" : 'NULL' ),
+                                                   $verified_vars [ 
'reference' ] )),
                                true ) );
        exit;
     }
@@ -482,11 +495,16 @@
     // récurrent avec une date d'expiration < à la fin
     if ( $expiration_date <= $subscription [ 'end_date' ] && RECUR_TPE_NUMBER 
== $verified_vars [ 'tpe' ] )
       {
-       /* XXX recalculer le montant : nombre de 5 du mois * prelevement + 1 */
+       $amount = compute_real_cbrecur_amount ( $subscription [ 'start_date' ],
+                                               $expiration_date,
+                                               $subscription [ 
'prelevement_amount' ],
+                                               $subscription [ 
'cbrecur_prorata' ] );
+       $subscription [ 'end_date' ] = $expiration_date;
        $results = simple_query ( sprintf ( "  UPDATE subscription ".
-                                           "     SET end_date = 
cbrecur_expiration_date " .
+                                           "     SET end_date = 
cbrecur_expiration_date, " .
+                                           "         amount = '%d' " .
                                            "   WHERE reference = '%s'; ",
-                                           $verified_vars [ 'reference' ] ) );
+                                           $amount, $verified_vars [ 
'reference' ] ) );
        if ( ! $results )
          {
            fwrite ( $fh, print_r ( sprintf ( "Erreur de mise à jour pour 
'%d'.\n",
@@ -651,7 +669,7 @@
                           $fields [ 'lgue' ],
                           $fields [ 'societe' ] );
 
-  $hmac = CMCIC_hmac(false, RECUR_TPE_NUMBER, RECUR_TPE_PASS, 
RECUR_TPE_HMAC_KEY, 3.0, $hmac_source);
+  $hmac = CMCIC_hmac(RECUR_TPE_NUMBER, RECUR_TPE_PASS, RECUR_TPE_HMAC_KEY, 
3.0, $hmac_source);
   $fields [ 'MAC' ] = $hmac;
 
   //url-ify the data for the POST


_______________________________________________
Gdtc-commits mailing list
[email protected]
https://mail.gna.org/listinfo/gdtc-commits

Reply via email to