HEX
Server: Apache/2.2.15 (CentOS)
System: Linux ip-10-0-2-146.eu-west-1.compute.internal 2.6.32-754.35.1.el6.centos.plus.x86_64 #1 SMP Sat Nov 7 11:33:42 UTC 2020 x86_64
User: root (0)
PHP: 5.6.40
Disabled: NONE
Upload Files
File: /www/exchange2/exchange/custom_actions/tpr_import.php
<?php
  include_once('../admin/classes/Model/reports/accounts_journal_data.php');
  
  class Tpr_import extends Accounts_journal_data
  {
      private $group_types=array(
        'DETR'=>array(1,2,3),
        'CETR'=>array(4,5),
        'DETRDiscount'=>array(6)
      );
      
      function getHeaders($type)
      {
          $result=array();
          
          foreach($this->xero_ledgers as $group_name=>$group_index)
          {
              if (!in_array($group_index,$this->group_types[$type]))
              {
                  continue;
              }
              
              foreach($this->ledger_codes[$group_name]['values'] as $code)
              {
                  $result[$group_index][(!empty($code[2]))?$code[2]:$code[3]][]=$this->ledger_codes[$group_name]['details']['title'].'  '.$code[1];
              }
          }
          
          if ($type=='CETR')
          {
              $result[4]['tar_reserves'][]='Tar Reserves';
          }
          
          
          foreach($result as $group_index=>$values)
          {
              foreach($result[$group_index] as $value=>$texts)
              {
                  $result[$group_index][$value]=implode("\r\n",array_unique($texts));
              }
              unset($result[$group_index]['processing_commission']);
              if ($group_index==3)
              {
                  unset($result[$group_index]['deposit_exchange']);
              }
          }
          
          return $result;
      }
      
      function getFormulas($type)
      {
          $this->duplicateBlocks();
          
          $result=array();
          foreach($this->xero_ledgers as $group_name=>$group_index)
          {
              if (!in_array($group_index,$this->group_types[$type]))
              {
                  continue;
              }
              
              $with_currency_rate=(preg_match('/[_0-9]{4}$/si',$group_name))?'yes':'no';
              foreach($this->functions[$group_name] as $value_name=>$values)
              {
                  foreach($values as $condition=>$formula)
                  {
                      $value_name = str_replace('_wo_tc','',$value_name);
                      
                      if (in_array($group_index,$this->group_types['DETR']))
                      {
                          $result[$group_index][$value_name][$with_currency_rate]=str_replace(array(
                            '@face_value',
                            '@sell_rate',
                            '@purchase_discount',
                            '@processing_fee',
                            '@edso',
                            '@adso',
                            '@trade_commission',
                            '@traded_rate',
                            '@settled_reserve_rate',
                            '@settled_rate',
                            '@payment_discount',
                            '@tar_value'                          
                          ),array(
                            'N{row_id}',
                            'P{row_id}',
                            'O{row_id}',
                            'AE{row_id}',
                            'J{row_id}',
                            'K{row_id}',
                            '10',
                            'U{row_id}',
                            'AB{row_id}',
                            'X{row_id}',
                            'AF{row_id}',
                            'System!$H$6'
                          ),$formula);
                      }
                      elseif(in_array($group_index,$this->group_types['CETR']))
                      {
                          $result[$group_index][$value_name][$with_currency_rate]=str_replace(array(
                            '@face_value',
                            '@payment_discount',
                            '@trade_commission',
                            '@traded_rate',
                            '@settled_rate',
                            '@tar_value'
                          ),array(
                            'K{row_id}',
                            'M{row_id}',
                            'R{row_id}',
                            'N{row_id}',
                            'U{row_id}',
                            'System!$H$6'
                          ),$formula);
                      }
                  }
              }
          }
          
          return $result;
      }
      
      function getConvertedFormulas($lastDETRrow,$lastCETRrow,$commisionRow,$drpCommisionRow,$lastCNRow,$lastSDRow)
      {
          $lastDETRrow--;
          $lastCETRrow--;
          $commisionRow--;
          $drpCommisionRow--;
          $lastCNRow--;
          $lastSDRow--;
          
          $input=array(
            'traded_DETR'=>array(
                'currency'=>array('EUR','EUR'),
                'commission'=>'A',
                'comission_type'=>'traded',
                'values'=>array(
                    'total_traded'=>'AF',
                    'quistclose'=>'AG',
                    'bank_clearing_commission'=>'AH',
                    'bank_clearing'=>'AI',
                    'bank_clearing2'=>'AJ',
                    'purchase_price'=>'AJ',
                    'originator_reserves'=>'AL',
                    'deferred_commission'=>'AM',
                    'tar_reserves'=>''
                )
            ),
            'traded_DETR_711'=>array(
                'currency'=>array('GBP','USD','EUR'),
                'commission'=>'B',
                'comission_type'=>'traded',
                'values'=>array(
                    'total_traded'=>'AF',
                    'quistclose'=>'AG',
                    'bank_clearing_commission'=>'AH',
                    'bank_clearing'=>'AI',
                    'bank_clearing2'=>'AJ',
                    'purchase_price'=>'AJ',
                    'originator_reserves'=>'AL',
                    'deferred_commission'=>'AM'
                )
            ),
            'traded_DETR_712'=>array(
                'currency'=>array('GBP','GBP'),
                'commission'=>'D',
                'comission_type'=>'traded',
                'values'=>array(
                    'total_traded'=>'AF',
                    'quistclose'=>'AG',
                    'bank_clearing_commission'=>'AH',
                    'bank_clearing'=>'AI',
                    'bank_clearing2'=>'AJ',
                    'purchase_price'=>'AJ',
                    'originator_reserves'=>'AL',
                    'deferred_commission'=>'AM'
                )
            ),
            'traded_DETR_713'=>array(
                'currency'=>array('USD','USD'),
                'commission'=>'C',
                'comission_type'=>'traded',
                'values'=>array(
                    'total_traded'=>'AF',
                    'quistclose'=>'AG',
                    'bank_clearing_commission'=>'AH',
                    'bank_clearing'=>'AI',
                    'bank_clearing2'=>'AJ',
                    'purchase_price'=>'AJ',
                    'originator_reserves'=>'AL',
                    'deferred_commission'=>'AM'
                )
            ),
            'settled_DETR'=>array(
                'currency'=>array('EUR','EUR'),
                'commission'=>'A',
                'additional_formulas'=>", 'd-ETR'!R2:R".$lastDETRrow.",\"R\"",
                'values'=>array(
                    'bank_clearing'=>'AO',
                    'quistclose_long'=>'AP',
                    'quistclose_short'=>'AQ',
                    'reserves_outstanding'=>'AR',
                    'ldc_reserves'=>'AS',
                    'originator_reserves'=>'AT',
                    'reserves_due'=>'AU',
                    'deferred_commission'=>'AV',
                    'exchange_commission'=>'AW'
                )
            ),
            'settled_DETR_721'=>array(
                'currency'=>array('GBP','USD','EUR'),
                'commission'=>'B',
                'additional_formulas'=>", 'd-ETR'!R2:R".$lastDETRrow.",\"R\"",
                'values'=>array(
                    'bank_clearing'=>'AO',
                    'd_etr'=>'AX',
                    'quistclose_long'=>'AP',
                    'quistclose_short'=>'AQ',
                    'reserves_outstanding'=>'AR',
                    'ldc_reserves'=>'AS',
                    'originator_reserves'=>'AT',
                    'reserves_due'=>'AU',
                    'deferred_commission'=>'AV',
                    'exchange_commission'=>'AW',
                    'fx_commission'=>'AY'
                )
            ),
            'settled_DETR_722'=>array(
                'currency'=>array('GBP','GBP'),
                'commission'=>'D',
                'additional_formulas'=>", 'd-ETR'!R2:R".$lastDETRrow.",\"R\"",
                'values'=>array(
                    'bank_clearing'=>'AO',
                    'd_etr'=>'AX',
                    'quistclose_long'=>'AP',
                    'quistclose_short'=>'AQ',
                    'reserves_outstanding'=>'AR',
                    'ldc_reserves'=>'AS',
                    'originator_reserves'=>'AT',
                    'reserves_due'=>'AU',
                    'deferred_commission'=>'AV',
                    'exchange_commission'=>'AW',
                    'fx_commission'=>'AY'
                )
            ),
            'settled_DETR_723'=>array(
                'currency'=>array('USD','USD'),
                'commission'=>'C',
                'additional_formulas'=>", 'd-ETR'!R2:R".$lastDETRrow.",\"R\"",
                'values'=>array(
                    'bank_clearing'=>'AO',
                    'd_etr'=>'AX',
                    'quistclose_long'=>'AP',
                    'quistclose_short'=>'AQ',
                    'reserves_outstanding'=>'AR',
                    'ldc_reserves'=>'AS',
                    'originator_reserves'=>'AT',
                    'reserves_due'=>'AU',
                    'deferred_commission'=>'AV',
                    'exchange_commission'=>'AW',
                    'fx_commission'=>'AY'
                )
            ),
            'settled_reserve'=>array(
                'currency'=>array('EUR','EUR'),
                'commission'=>'A',
                'comission_type'=>'drp',
                'additional_formulas'=>", 'd-ETR'!T2:T".$lastDETRrow.",\"PAID\"",
                'values'=>array(
                    'bank_ldc'=>'AZ',
                    'reserves_due'=>'BA'
                )
            ),
            'settled_reserve_731'=>array(
                'currency'=>array('GBP','USD','EUR'),
                'commission'=>'B',
                'comission_type'=>'drp',
                'additional_formulas'=>", 'd-ETR'!T2:T".$lastDETRrow.",\"PAID\"",
                'values'=>array(
                    'bank_ldc'=>'AZ',
                    'reserves_due'=>'BA'
                )
            ),
            'settled_reserve_732'=>array(
                'currency'=>array('GBP','GBP'),
                'commission'=>'D',
                'comission_type'=>'drp',
                'additional_formulas'=>", 'd-ETR'!T2:T".$lastDETRrow.",\"PAID\"",
                'values'=>array(
                    'bank_ldc'=>'AZ',
                    'reserves_due'=>'BA'
                )
            ),
            'settled_reserve_733'=>array(
                'currency'=>array('USD','USD'),
                'commission'=>'C',
                'comission_type'=>'drp',
                'additional_formulas'=>", 'd-ETR'!T2:T".$lastDETRrow.",\"PAID\"",
                'values'=>array(
                    'bank_ldc'=>'AZ',
                    'reserves_due'=>'BA'
                )
            ),
            'traded_CETR'=>array(
                'currency'=>array('EUR','EUR'),
                'values'=>array(
                    'total_traded'=>'V',
                    'deposit_exchange'=>'W',
                    'deferred_commission'=>'X'
                )
            ),
            'traded_CETR_741'=>array(
                'currency'=>array('GBP','USD','EUR'),
                'values'=>array(
                    'total_traded'=>'V',
                    'deposit_exchange'=>'W',
                    'deferred_commission'=>'X'
                )
            ),
            'traded_CETR_742'=>array(
                'currency'=>array('GBP','GBP'),
                'values'=>array(
                    'total_traded'=>'V',
                    'deposit_exchange'=>'W',
                    'deferred_commission'=>'X'
                )
            ),
            'traded_CETR_743'=>array(
                'currency'=>array('USD','USD'),
                'values'=>array(
                    'total_traded'=>'V',
                    'deposit_exchange'=>'W',
                    'deferred_commission'=>'X'
                )
            ),
            'settled_CETR'=>array(
                'currency'=>array('EUR','EUR'),
                'additional_formulas'=>", 'C-ETR'!S2:S".$lastCETRrow.",\"X\"",
                'values'=>array(
                    'cETR'=>'Z',
                    'deferred_commission'=>'AA'
                )
            ),
            'settled_CETR_751'=>array(
                'currency'=>array('GBP','USD','EUR'),
                'additional_formulas'=>", 'C-ETR'!S2:S".$lastCETRrow.",\"X\"",
                'values'=>array(
                    'cETR'=>'Z',
                    'deferred_commission'=>'AA',
                    'deferred_commissions'=>'AB',
                    'fx_commission'=>'AC',
                    'fx_costs'=>'AD'
                )
            ),
            'settled_CETR_752'=>array(
                'currency'=>array('GBP','GBP'),
                'additional_formulas'=>", 'C-ETR'!S2:S".$lastCETRrow.",\"X\"",
                'values'=>array(
                    'cETR'=>'Z',
                    'deferred_commission'=>'AA',
                    'deferred_commissions'=>'AB',
                    'fx_commission'=>'AC',
                    'fx_costs'=>'AD'
                )
            ),
            'settled_CETR_753'=>array(
                'currency'=>array('USD','USD'),
                'additional_formulas'=>", 'C-ETR'!S2:S".$lastCETRrow.",\"X\"",
                'values'=>array(
                    'cETR'=>'Z',
                    'deferred_commission'=>'Z',
                    'deferred_commissions'=>'AA',
                    'fx_commission'=>'AB',
                    'fx_costs'=>'AC'
                )
            ),
            'DETR_discount'=>array(
                'values'=>array(
                    'total_discount'=>''
                )
            )
          );
          $result=array();
          
          $processing_commission_templates=array(
            'traded'=>"SUMIFS(
                                 'Commissions'!{comission_column}2:{comission_column}".$commisionRow.",
                                 'Commissions'!E2:E".$commisionRow.",\"&gt;=\"&amp;H5,
                                 'Commissions'!E2:E".$commisionRow.",\"&lt;=\"&amp;H6
                               )",
            'drp'=>"SUMIFS(
                                 'DRP Commissions'!{comission_column}2:{comission_column}".$drpCommisionRow.",
                                 'DRP Commissions'!E2:E".$drpCommisionRow.",\"&gt;=\"&amp;H5,
                                 'DRP Commissions'!E2:E".$drpCommisionRow.",\"&lt;=\"&amp;H6
                               )",
          );
          
          foreach($input as $group_name=>$group_values)
          {
              foreach($group_values['values'] as $value_name=>$value_column)
              {
                  if(in_array($this->xero_ledgers[$group_name],$this->group_types['DETR']))
                  {
                      if ($value_name=='tar_reserves')
                      {
                          $function="SUMIFS(
                                    'd-ETR'!AN2:AN".$lastDETRrow.",
                                    'd-ETR'!{date_filter}2:{date_filter}".$lastDETRrow.",\"&gt;=\"&H5,
                                    'd-ETR'!{date_filter}2:{date_filter}".$lastDETRrow.",\"&lt;=\"&H6
                                  )+SUMIFS(
                                    'c-ETR'!Y2:Y".$lastCETRrow.",
                                    'c-ETR'!{date_filter}2:{date_filter}".$lastCETRrow.",\"&gt;=\"&H5,
                                    'c-ETR'!{date_filter}2:{date_filter}".$lastCETRrow.",\"&lt;=\"&H6,
                                    'c-ETR'!Q2:Q".$lastCETRrow.",\">\"&\" \"
                                  )";
                      }
                      else
                      {
                            $function="SUMIFS(
                                    'd-ETR'!{value_column}2:{value_column}".$lastDETRrow.",
                                    'd-ETR'!{date_filter}2:{date_filter}".$lastDETRrow.",\"&gt;=\"&H5,
                                    'd-ETR'!{date_filter}2:{date_filter}".$lastDETRrow.",\"&lt;=\"&H6,
                                    'd-ETR'!M2:M".$lastDETRrow.",\"{currency_debtor}\",
                                    'd-ETR'!AD2:AD".$lastDETRrow.",\"{currency_account}\"
                                    {additional_formulas}
                                  )";
                      }
                  }
                  elseif(in_array($this->xero_ledgers[$group_name],$this->group_types['CETR']))
                  {
                      $function="SUMIFS(
                                    'c-ETR'!{value_column}2:{value_column}".$lastCETRrow.",
                                    'c-ETR'!{date_filter}2:{date_filter}".$lastCETRrow.",\"&gt;=\"&H5,
                                    'c-ETR'!{date_filter}2:{date_filter}".$lastCETRrow.",\"&lt;=\"&H6,
                                    'c-ETR'!J2:J".$lastCETRrow.",\"{currency_debtor}\",
                                    'c-ETR'!Q2:Q".$lastCETRrow.",\"{currency_account}\"
                                    {additional_formulas}
                                  )";
                  }
                  elseif($group_name=='DETR_discount')
                  {
                      $function="SUMIFS(
                                    'CN'!N2:N".$lastCNRow.",
                                    'CN'!F2:F".$lastCNRow.",\"&gt;=\"&H5,
                                    'CN'!F2:F".$lastCNRow.",\"&lt;=\"&H6,
                                    'CN'!J2:J".$lastCNRow.",\"Authorized\"
                                  )+
                                  SUMIFS(
                                    'SD'!M2:M".$lastSDRow.",
                                    'SD'!F2:F".$lastSDRow.",\"&gt;=\"&H5,
                                    'SD'!F2:F".$lastSDRow.",\"&lt;=\"&H6,
                                    'SD'!J2:J".$lastSDRow.",\"Authorized\"
                                  )";
                  }
                  
                  switch($this->xero_ledgers[$group_name])
                  {
                      case 1:{
                          $function=str_replace('{date_filter}','I',$function);
                          break;
                      }
                      case 2:{
                          $function=str_replace('{date_filter}','Z',$function);
                          break;
                      }
                      case 3:{
                          $function=str_replace('{date_filter}','AA',$function);
                          break;
                      }
                      case 4:{
                          $function=str_replace('{date_filter}','I',$function);
                          break;
                      }
                      case 5:{
                          $function=str_replace('{date_filter}','T',$function);
                          break;
                      }
                  }
                  
                  $function=str_replace('{additional_formulas}',empty($group_values['additional_formulas'])?'':$group_values['additional_formulas'],$function);
                  
                  $processing_commission=(empty($group_values['comission_type']))?'':str_replace('{comission_column}',$group_values['commission'],$processing_commission_templates[$group_values['comission_type']]);
                  
                  if (in_array($group_name,array('traded_DETR_711','settled_DETR_721','settled_reserve_731','traded_CETR_741','settled_CETR_751')))
                  {
                      $result[$group_name][$value_name]='='.str_replace(array('{value_column}','{currency_debtor}','{currency_account}'),array($value_column,$group_values['currency'][0],$group_values['currency'][2]),$function).'+'.str_replace(array('{value_column}','{currency_debtor}','{currency_account}'),array($value_column,$group_values['currency'][1],$group_values['currency'][2]),$function);
                  }
                  elseif($group_name=='DETR_discount')
                  {
                      $result[$group_name][$value_name]='='.$function;
                  }
                  else
                  {
                      $result[$group_name][$value_name]='='.str_replace(array('{value_column}','{currency_debtor}','{currency_account}'),array($value_column,$group_values['currency'][0],$group_values['currency'][1]),$function);
                  }
                  
                  if ($value_name=='bank_clearing_commission')
                  {
                      $result[$group_name][$value_name].=('+'.$processing_commission);
                  }
                  elseif($value_name=='bank_clearing2' OR ($value_name=='reserves_due' AND in_array($group_name,array('settled_reserve_731','settled_reserve_732','settled_reserve_733'))))
                  {
                      $result[$group_name][$value_name].=('-'.$processing_commission);
                  }
              }
              
              if ($this->xero_ledgers[$group_name]==1)
              {
                  $result[$group_name]['processing_commission']=('='.$processing_commission);    
              }
              elseif(in_array($group_name,array('settled_reserve','settled_reserve_731','settled_reserve_732','settled_reserve_733')))
              {
                  $result[$group_name]['deposit_exchange']=('='.$processing_commission);
              }
          }
          
          return $result;
      }
  }
?>