* Copyright (C) 2011 Herve Prot * Copyright (C) 2014 Philippe Grand * Copyright (C) 2024 MDW * Copyright (C) 2024 Frédéric France * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ // TODO File of hooks not used yet. To remove ? /** * \file htdocs/stripe/class/actions_stripe.class.php * \ingroup stripe * \brief File Class actionsstripeconnect */ require_once DOL_DOCUMENT_ROOT.'/stripe/class/stripe.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/commonhookactions.class.php'; /** * Class Actions Stripe Connect */ class ActionsStripeconnect extends CommonHookActions { /** * @var DoliDB Database handler. */ public $db; private $config = array(); // @phpstan-ignore-line /** * Constructor * * @param DoliDB $db Database handler */ public function __construct($db) { $this->db = $db; } /** * formObjectOptions * * @param array $parameters Parameters * @param CommonObject $object Object * @param string $action Action * @return int */ public function formObjectOptions($parameters, &$object, &$action) { global $conf, $langs; if (isModEnabled('stripe') && (!getDolGlobalString('STRIPE_LIVE') || GETPOST('forcesandbox', 'alpha'))) { $service = 'StripeTest'; dol_htmloutput_mesg($langs->trans('YouAreCurrentlyInSandboxMode', 'Stripe'), '', 'warning'); } else { $service = 'StripeLive'; } if (is_array($parameters) && !empty($parameters)) { foreach ($parameters as $key => $value) { $key = $value; } } if (is_object($object) && $object->element == 'societe') { $this->resprints .= ''; $this->resprints .= '
'; $this->resprints .= $langs->trans('StripeCustomer'); $this->resprints .= ''; // $this->resprints.= ''.img_edit().''; $this->resprints .= '
'; $this->resprints .= ''; $this->resprints .= ''; $stripe = new Stripe($this->db); if ($stripe->getStripeAccount($service) && $object->client != 0) { $customer = $stripe->customerStripe($object, $stripe->getStripeAccount($service)); $this->resprints .= $customer->id; } else { $this->resprints .= $langs->trans("NoStripe"); } $this->resprints .= ''; } elseif ($object instanceof CommonObject && $object->element == 'member') { $this->resprints .= ''; $this->resprints .= '
'; $this->resprints .= $langs->trans('StripeCustomer'); $this->resprints .= ''; $this->resprints .= '
'; $this->resprints .= ''; $this->resprints .= ''; $stripe = new Stripe($this->db); if ($stripe->getStripeAccount($service) && $object->fk_soc > 0) { $object->fetch_thirdparty(); $customer = $stripe->customerStripe($object->thirdparty, $stripe->getStripeAccount($service)); $this->resprints .= $customer->id; } else { $this->resprints .= $langs->trans("NoStripe"); } $this->resprints .= ''; $this->resprints .= ''; $this->resprints .= '
'; $this->resprints .= $langs->trans('SubscriptionStripe'); $this->resprints .= ''; $this->resprints .= '
'; $this->resprints .= ''; $this->resprints .= ''; $stripe = new Stripe($this->db); if (7 == 4) { $object->fetch_thirdparty(); $customer = $stripe->customerStripe($object, $stripe->getStripeAccount($service)); $this->resprints .= $customer->id; } else { $this->resprints .= $langs->trans("NoStripe"); } $this->resprints .= ''; } elseif ($object instanceof CommonObject && $object->element == 'adherent_type') { $this->resprints .= ''; $this->resprints .= '
'; $this->resprints .= $langs->trans('PlanStripe'); $this->resprints .= ''; // $this->resprints.= ''.img_edit().''; $this->resprints .= '
'; $this->resprints .= ''; $this->resprints .= ''; $stripe = new Stripe($this->db); if (7 == 4) { $object->fetch_thirdparty(); $customer = $stripe->customerStripe($object, $stripe->getStripeAccount($service)); $this->resprints .= $customer->id; } else { $this->resprints .= $langs->trans("NoStripe"); } $this->resprints .= ''; } return 0; } /** * addMoreActionsButtons * * @param array $parameters Parameters * @param Object $object Object * @param string $action action * @return int 0 */ public function addMoreActionsButtons($parameters, &$object, &$action) { global $conf, $langs; if (is_object($object) && $object->element == 'facture') { // Verify if the invoice has payments $sql = 'SELECT pf.amount'; $sql .= ' FROM '.MAIN_DB_PREFIX.'paiement_facture as pf'; $sql .= ' WHERE pf.fk_facture = '.((int) $object->id); $totalpaid = 0; $result = $this->db->query($sql); if ($result) { $i = 0; $num = $this->db->num_rows($result); while ($i < $num) { $objp = $this->db->fetch_object($result); $totalpaid += $objp->amount; $i++; } } else { dol_print_error($this->db, ''); } $resteapayer = $object->total_ttc - $totalpaid; // Request a direct debit order if ($object->statut > Facture::STATUS_DRAFT && $object->statut < Facture::STATUS_ABANDONED && $object->paye == 0) { $stripe = new Stripe($this->db); if ($resteapayer > 0) { if ($stripe->getStripeAccount($conf->entity)) { // a modifier avec droit stripe $langs->load("withdrawals"); print ''.$langs->trans("StripeConnectPay").''; } else { print ''.$langs->trans("StripeConnectPay").''; } } elseif ($resteapayer == 0) { print ''.$langs->trans("StripeConnectPay").''; } } else { print ''.$langs->trans("StripeConnectPay").''; } } elseif (is_object($object) && $object->element == 'invoice_supplier') { print ''.$langs->trans("StripeConnectPay").''; } elseif (is_object($object) && $object->element == 'member') { print ''.$langs->trans("StripeAutoSubscription").''; } return 0; } }