22require 
'../main.inc.php';
 
   23require_once DOL_DOCUMENT_ROOT.
'/societe/class/societe.class.php';
 
   24require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent.class.php';
 
   25require_once DOL_DOCUMENT_ROOT.
'/stripe/class/stripe.class.php';
 
   27require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
 
   28require_once DOL_DOCUMENT_ROOT.
'/commande/class/commande.class.php';
 
   29require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
 
   30if (isModEnabled(
'accounting')) {
 
   31  require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
 
   35$langs->loadLangs(array(
'compta', 
'salaries', 
'bills', 
'hrm', 
'stripe'));
 
   38$socid = 
GETPOST(
"socid", 
"int");
 
   40  $socid = $user->socid;
 
   44$limit = 
GETPOST(
'limit', 
'int') ? 
GETPOST(
'limit', 
'int') : $conf->liste_limit;
 
   45$rowid = 
GETPOST(
"rowid", 
'alpha');
 
   46$sortfield = 
GETPOST(
'sortfield', 
'aZ09comma');
 
   47$sortorder = 
GETPOST(
'sortorder', 
'aZ09comma');
 
   48$page = GETPOSTISSET(
'pageplusone') ? (
GETPOST(
'pageplusone') - 1) : 
GETPOST(
"page", 
'int');
 
   49if (empty($page) || $page == -1) {
 
   52$offset = $limit * $page;
 
   57$optioncss = 
GETPOST(
'optioncss', 
'alpha');
 
   64$societestatic = 
new Societe($db);
 
   69llxHeader(
'', $langs->trans(
"StripeChargeList"));
 
   72  $service = 
'StripeTest';
 
   74  dol_htmloutput_mesg($langs->trans(
'YouAreCurrentlyInSandboxMode', 
'Stripe'), 
'', 
'warning');
 
   76  $service = 
'StripeLive';
 
   80$stripeacc = $stripe->getStripeAccount($service);
 
   87  $option = array(
'limit' => $limit + 1);
 
   94  if (GETPOSTISSET(
'starting_after_'.$page)) {
 
   95    $option[
'starting_after'] = 
GETPOST(
'starting_after_'.$page, 
'alphanohtml');
 
   97  print 
'<form method="POST" action="'.$_SERVER[
"PHP_SELF"].
'">';
 
   98  if ($optioncss != 
'') {
 
   99    print 
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
 
  102  print 
'<input type="hidden" name="token" value="'.newToken().
'">';
 
  103  print 
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
 
  104  print 
'<input type="hidden" name="action" value="list">';
 
  105  print 
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
 
  106  print 
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
 
  107  print 
'<input type="hidden" name="page" value="'.$page.
'">';
 
  109  $title = $langs->trans(
"StripeChargeList");
 
  110  $title .= ($stripeacc ? 
' (Stripe connection with Stripe OAuth Connect account '.$stripeacc.
')' : 
' (Stripe connection with keys from Stripe module setup)');
 
  112  print_barre_liste($title, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, 
'', $num, $totalnboflines, 
'title_accountancy.png', 0, 
'', 
'hidepaginationprevious', $limit);
 
  114  print 
'<div class="div-table-responsive">';
 
  115  print 
'<table class="tagtable liste'.($moreforfilter ? 
" listwithfilterbefore" : 
"").
'">'.
"\n";
 
  117  print 
'<tr class="liste_titre">';
 
  122  print_liste_field_titre(
"DatePayment", $_SERVER[
"PHP_SELF"], 
"", 
"", 
"", 
'', $sortfield, $sortorder, 
'center ');
 
  130      $list = \Stripe\Charge::all($option, array(
"stripe_account" => $stripeacc));
 
  132      $list = \Stripe\Charge::all($option);
 
  135    $num = count($list->data);
 
  139    if ($limit > 0 && $limit != $conf->liste_limit) {
 
  140      $param .= 
'&limit='.((int) $limit);
 
  142    $param .= 
'&starting_after_'.($page + 1).
'='.$list->data[($limit - 1)]->id;
 
  145    print 
'<tr><td colspan="8">'.$e->getMessage().
'</td></td>';
 
  151    foreach ($list->data as $charge) {
 
  156      if ($charge->refunded == 
'1') {
 
  157        $status = 
img_picto($langs->trans(
"refunded"), 
'statut6');
 
  158      } elseif ($charge->paid == 
'1') {
 
  159        $status = 
img_picto($langs->trans((
string) $charge->status), 
'statut4');
 
  161        $label = $langs->trans(
"Message").
": ".$charge->failure_message.
"<br>";
 
  162        $label .= $langs->trans(
"Network").
": ".$charge->outcome->network_status.
"<br>";
 
  163        $label .= $langs->trans(
"Status").
": ".$langs->trans((
string) $charge->outcome->seller_message);
 
  164        $status = $form->textwithpicto(
img_picto($langs->trans((
string) $charge->status), 
'statut8'), $label, -1);
 
  167      if (isset($charge->payment_method_details->type) && $charge->payment_method_details->type == 
'card') {
 
  168        $type = $langs->trans(
"card");
 
  169      } elseif (isset($charge->source->type) && $charge->source->type == 
'card') {
 
  170        $type = $langs->trans(
"card");
 
  171      } elseif (isset($charge->payment_method_details->type) && $charge->payment_method_details->type == 
'three_d_secure') {
 
  172        $type = $langs->trans(
"card3DS");
 
  173      } elseif (isset($charge->payment_method_details->type) && $charge->payment_method_details->type == 
'sepa_debit') {
 
  174        $type = $langs->trans(
"sepadebit");
 
  175      } elseif (isset($charge->payment_method_details->type) && $charge->payment_method_details->type == 
'ideal') {
 
  176        $type = $langs->trans(
"iDEAL");
 
  189      $FULLTAG = $charge->metadata->FULLTAG;
 
  194      if (!empty($tmparray[
'CUS']) && $tmparray[
'CUS'] > 0) {
 
  195        $societestatic->fetch($tmparray[
'CUS']);
 
  196      } elseif (!empty($charge->metadata->dol_thirdparty_id) && $charge->metadata->dol_thirdparty_id > 0) {
 
  197        $societestatic->fetch($charge->metadata->dol_thirdparty_id);
 
  199        $societestatic->id = 0;
 
  201      if (!empty($tmparray[
'MEM']) && $tmparray[
'MEM'] > 0) {
 
  202        $memberstatic->fetch($tmparray[
'MEM']);
 
  204        $memberstatic->id = 0;
 
  207      print 
'<tr class="oddeven">';
 
  209      if (!empty($stripeacc)) {
 
  210        $connect = $stripeacc.
'/';
 
  216      $url = 
'https://dashboard.stripe.com/'.$connect.
'test/payments/'.$charge->id;
 
  217      if ($servicestatus) {
 
  218        $url = 
'https://dashboard.stripe.com/'.$connect.
'payments/'.$charge->id;
 
  221      print 
"<a href='".$url.
"' target='_stripe'>".
img_picto($langs->trans(
'ShowInStripe'), 
'globe').
" ".$charge->id.
"</a>";
 
  222      if ($charge->payment_intent) {
 
  223        print 
'<br><span class="opacitymedium">'.$charge->payment_intent.
'</span>';
 
  229      if (isModEnabled(
'stripe') && !empty($stripeacc)) {
 
  230        $connect = $stripeacc.
'/';
 
  232      $url = 
'https://dashboard.stripe.com/'.$connect.
'test/customers/'.$charge->customer;
 
  233      if ($servicestatus) {
 
  234        $url = 
'https://dashboard.stripe.com/'.$connect.
'customers/'.$charge->customer;
 
  236      if (!empty($charge->customer)) {
 
  237        print 
'<a href="'.$url.
'" target="_stripe">'.
img_picto($langs->trans(
'ShowInStripe'), 
'globe').
' '.$charge->customer.
'</a>';
 
  243      if ($societestatic->id > 0) {
 
  244        print $societestatic->getNomUrl(1);
 
  245      } elseif ($memberstatic->id > 0) {
 
  246        print $memberstatic->getNomUrl(1);
 
  252      if ($charge->metadata->dol_type == 
"order" || $charge->metadata->dol_type == 
"commande") {
 
  254        $object->fetch($charge->metadata->dol_id);
 
  255        if ($object->id > 0) {
 
  256          print 
"<a href='".DOL_URL_ROOT.
"/commande/card.php?id=".$object->id.
"'>".
img_picto(
'', 
'order').
" ".$object->ref.
"</a>";
 
  260      } elseif ($charge->metadata->dol_type == 
"invoice" || $charge->metadata->dol_type == 
"facture") {
 
  262        $object->fetch($charge->metadata->dol_id);
 
  263        if ($object->id > 0) {
 
  264          print 
"<a href='".DOL_URL_ROOT.
"/compta/facture/card.php?facid=".$charge->metadata->dol_id.
"'>".
img_picto(
'', 
'bill').
" ".$object->ref.
"</a>";
 
  274      print 
'<td class="center">'.dol_print_date($charge->created, 
'dayhour').
"</td>\n";
 
  280      print 
'<td class="right"><span class="amount">'.price(($charge->amount - $charge->amount_refunded) / 100, 0, 
'', 1, - 1, - 1, strtoupper($charge->currency)).
"</span></td>";
 
  282      print 
'<td class="right">';
 
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
 
Class to manage bank accounts.
 
Class to manage members of a foundation.
 
Class to manage customers orders.
 
Class to manage invoices.
 
Class to manage third parties objects (customers, suppliers, prospects...)
 
dolExplodeIntoArray($string, $delimiter=';', $kv='=')
Split a string with 2 keys into key array.
 
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
 
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
 
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
 
print_barre_liste($titre, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $hideselectlimit=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
 
dol_htmloutput_mesg($mesgstring='', $mesgarray=array(), $style='ok', $keepembedded=0)
Print formated messages to output (Used to show messages on html output).
 
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
 
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.