diff --git a/htdocs/societe/paymentmodes.php b/htdocs/societe/paymentmodes.php index 75aa8730d44..87b1a4939df 100644 --- a/htdocs/societe/paymentmodes.php +++ b/htdocs/societe/paymentmodes.php @@ -101,6 +101,7 @@ if (isModEnabled('stripe')) { $stripecu = $stripe->getStripeCustomerAccount($object->id, $servicestatus, $site_account); // Get remote Stripe customer 'cus_...' (no remote access to Stripe here) } +$error = 0; /* @@ -128,7 +129,7 @@ if (empty($reshook)) { } if ($action == 'update') { - // Modification + // Update the bank account if (!GETPOST('label', 'alpha') || !GETPOST('bank', 'alpha')) { if (!GETPOST('label', 'alpha')) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Label")), null, 'errors'); @@ -154,6 +155,8 @@ if (empty($reshook)) { } if (!$error) { + $companybankaccount->old = dol_clone($companybankaccount); + $companybankaccount->socid = $object->id; $companybankaccount->bank = GETPOST('bank', 'alpha'); @@ -193,6 +196,12 @@ if (empty($reshook)) { $companybankaccount->setAsDefault($id); // This will make sure there is only one default rib } + if ($companypaymentmode->old->stripe_card_ref != $companypaymentmode->stripe_card_ref) { + if ($companybankaccount->old->iban != $companybankaccount->iban) { + // TODO If we modified the iban, we must also update the pm_ on Stripe side, or break the link completely ? + } + } + $url = $_SERVER["PHP_SELF"].'?socid='.$object->id; header('Location: '.$url); exit; @@ -201,7 +210,7 @@ if (empty($reshook)) { } if ($action == 'updatecard') { - // Modification + // Update credit card if (!GETPOST('label', 'alpha') || !GETPOST('proprio', 'alpha') || !GETPOST('exp_date_month', 'alpha') || !GETPOST('exp_date_year', 'alpha')) { if (!GETPOST('label', 'alpha')) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Label")), null, 'errors'); @@ -220,6 +229,8 @@ if (empty($reshook)) { $companypaymentmode->fetch($id); if (!$error) { + $companybankaccount->old = dol_clone($companybankaccount); + $companypaymentmode->fk_soc = $object->id; $companypaymentmode->bank = GETPOST('bank', 'alpha'); @@ -247,6 +258,12 @@ if (empty($reshook)) { $companypaymentmode->setAsDefault($id); // This will make sure there is only one default rib } + if ($companypaymentmode->old->stripe_card_ref != $companypaymentmode->stripe_card_ref) { + if ($companybankaccount->old->number != $companybankaccount->number) { + // TODO If we modified the card, we must also update the pm_ on Stripe side, or break the link completely ? + } + } + $url = $_SERVER["PHP_SELF"].'?socid='.$object->id; header('Location: '.$url); exit; @@ -428,6 +445,7 @@ if (empty($reshook)) { } if ($action == 'confirm_deletecard' && GETPOST('confirm', 'alpha') == 'yes') { + // Delete the credi card $companypaymentmode = new CompanyPaymentMode($db); if ($companypaymentmode->fetch($ribid ? $ribid : $id)) { // TODO This is currently done at bottom of page instead of asking confirm @@ -454,6 +472,7 @@ if (empty($reshook)) { } } if ($action == 'confirm_delete' && GETPOST('confirm', 'alpha') == 'yes') { + // Delete the bank account $companybankaccount = new CompanyBankAccount($db); if ($companybankaccount->fetch($ribid ? $ribid : $id)) { // TODO This is currently done at bottom of page instead of asking confirm @@ -518,6 +537,7 @@ if (empty($reshook)) { } } if ($action == 'synccardtostripe') { + // Create the credit card on Stripe $companypaymentmode = new CompanyPaymentMode($db); $companypaymentmode->fetch($id); @@ -545,6 +565,7 @@ if (empty($reshook)) { } } if ($action == 'syncsepatostripe') { + // Create the bank account on Stripe side $companypaymentmode = new CompanyPaymentMode($db); // Get record in llx_societe_rib $companypaymentmode->fetch($id); @@ -704,6 +725,7 @@ if (empty($reshook)) { setEventMessages($e->getMessage(), null, 'errors'); } } elseif ($action == 'deletecard' && $source) { + // Delete the credit card on Stripe side try { if (preg_match('/pm_/', $source)) { $payment_method = \Stripe\PaymentMethod::retrieve($source, array("stripe_account" => $stripeacc)); @@ -735,6 +757,7 @@ if (empty($reshook)) { setEventMessages($e->getMessage(), null, 'errors'); } } elseif ($action == 'delete' && $source) { + // Delete the bank account on Stripe side try { if (preg_match('/pm_/', $source)) { $payment_method = \Stripe\PaymentMethod::retrieve($source, array("stripe_account" => $stripeacc));