fun_compute.php

来自「通达OA2007SE源代码 非常好的」· PHP 代码 · 共 227 行

PHP
227
字号
<?
  function comput_allitem ($FLOW_ID)
  {
    global $connection;
    $count = 0;
    $count1 = 0;
    $length = 0;
    $query = 'SELECT * from SAL_ITEM';
    $cursor = exequery ($connection, $query);
    while ($ROW = mysql_fetch_array ($cursor))
    {
      if (($ROW['ISCOMPUTER'] == '1'))
      {
        $DATA_FORMULA[$count1] = $ROW['FORMULA'];
        $DATA_FORMULAID[$count1] = $ROW['ITEM_ID'];
        ++$count1;
        continue;
      }
      else
      {
        $Sequence[$count] = $ROW['ITEM_ID'];
        ++$length;
        ++$count;
        continue;
      }
    }
    $count = 0;
    $count1 = 0;
    while ((computearray ($DATA_FORMULAID) != 0))
    {
      $ARRAY_COUNT = sizeof ($DATA_FORMULA);
      for ($I = 0; ($I < $ARRAY_COUNT); ++$I)
      {
        if (($DATA_FORMULAID[$I] != 0))
        {
          if ((issonformula ($DATA_FORMULA[$I], $Sequence) == '1'))
          {
            $Sequence[($length + $count1)] = $DATA_FORMULAID[$I];
            $Compute_Formula[$count1] = $DATA_FORMULA[$I];
            $DATA_FORMULAID[$I] = 0;
            ++$count1;
            continue;
          }
          continue;
        }
      }
      ++$count;
      if ((50 < $count))
      {
        $ARRAY_COUNT = sizeof ($DATA_FORMULAID);
        for ($I = 0; ($I < $ARRAY_COUNT); ++$I)
        {
          if (($DATA_FORMULAID[$I] != 0))
          {
            echo ($DATA_FORMULA[$I].'公式定义有误!!<br>');
            continue;
          }
        }
        return null;
        continue;
      }
    }
    $ARRAY_COUNT = sizeof ($Sequence);
    $query = (((''.'SELECT * from SAL_DATA where FLOW_ID=\'').$FLOW_ID).'\'');
    $cursor = exequery ($connection, $query);
    while ($ROW = mysql_fetch_array ($cursor))
    {
      $USER_ID = $ROW['USER_ID'];
      for ($I = 0; ($I < $ARRAY_COUNT); ++$I)
      {
        $Update_Date[$I] = $ROW[('S'.$Sequence[$I])];
      }
      $Update_Date = compute_all ($Update_Date, $Sequence, $Compute_Formula);
      $query = 'update SAL_DATA set ';
      for ($I = 0; ($I < $ARRAY_COUNT); ++$I)
      {
        $STR = ('S'.$Sequence[$I]);
        if (($Update_Date[$I] == ''))
        {
          $Update_Date[$I] = '0';
        }
        ($query .= (($STR.'=').$Update_Date[$I]));
        if (($I != ($ARRAY_COUNT - 1)))
        {
          ($query .= ',');
          continue;
        }
      }
      ($query .= (((((''.' where FLOW_ID=').$FLOW_ID).' and USER_ID=\'').$USER_ID).'\''));
      exequery ($connection, $query);
      echo ((('员工'.$USER_ID).'的工资项目更新完成!!!').'<br>');
    }
  }
  function issonformula ($formul, $ARRAY_Sequence)
  {
    $temp = explode ((''.'$'), $formul);
    $ARRAY_COUNT = sizeof ($temp);
    if (($temp[($ARRAY_COUNT - 1)] == ''))
    {
      --$ARRAY_COUNT;
    }
    for ($I = 0; ($I < $ARRAY_COUNT); ++$I)
    {
      if ((substr ($temp[$I], 0, strpos ($temp[$I], ']')) != ''))
      {
        $ARRAY_COUNT1 = sizeof ($ARRAY_Sequence);
        for ($h = 0; ($h < $ARRAY_COUNT1); ++$h)
        {
          $tempid = substr ($temp[$I], 0, strpos ($temp[$I], ']'));
          if (($ARRAY_Sequence[$h] == $tempid))
          {
            break;
          }
        }
        if (($h == $ARRAY_COUNT1))
        {
          return '0';
          continue;
        }
        continue;
      }
    }
    return '1';
  }
  function computearray ($FORMULAID)
  {
    $ARRAY_COUNT = sizeof ($FORMULAID);
    $SUM = 0;
    for ($I = 0; ($I < $ARRAY_COUNT); ++$I)
    {
      $SUM = ($SUM + $FORMULAID[$I]);
    }
    return $SUM;
  }
  function compute_all ($Update_Date, $Sequence, $Compute_Formula)
  {
    $ARRAY_COUNT = sizeof ($Sequence);
    for ($I = ($ARRAY_COUNT - sizeof ($Compute_Formula)); ($I < $ARRAY_COUNT); ++$I)
    {
      if ((strlen (strrchr ($Compute_Formula[($I - ($ARRAY_COUNT - sizeof ($Compute_Formula)))], '<')) == 0))
      {
        $temp = formula_swap ($Sequence, $Compute_Formula[($I - ($ARRAY_COUNT - sizeof ($Compute_Formula)))], $Update_Date);
        eval ((((''.'$O=').$temp).';'));
      }
      else
      {
        $temp = str_replace ('<', '', formula_swap ($Sequence, $Compute_Formula[($I - ($ARRAY_COUNT - sizeof ($Compute_Formula)))], $Update_Date));
        $temp = str_replace ('>', '', $temp);
        eval ((((''.'$O=').$temp).';'));
        $O = compute_tax (round ($O, 2));
      }
      $Update_Date[$I] = round ($O, 2);
    }
    return $Update_Date;
  }
  function formula_swap ($Sequence, $Formula, $Update_Date)
  {
    $Formula = str_replace ('[', '', $Formula);
    $Formula = str_replace (']', '', $Formula);
    $Formula = str_replace ((''.'$'), 'S', $Formula);
    $ARRAY_COUNT = sizeof ($Sequence);
    for ($I = ($ARRAY_COUNT - 1); (0 <= $I); --$I)
    {
      $temp = ('S'.($I + 1));
      $index = findinarray (($I + 1), $Sequence);
      $Formula = str_replace ($temp, $Update_Date[$index], $Formula);
    }
    return $Formula;
  }
  function findinarray ($a, $Sequence)
  {
    $ARRAY_COUNT = sizeof ($Sequence);
    for ($I = 0; ($I < $ARRAY_COUNT); ++$I)
    {
      if (($Sequence[$I] == $a))
      {
        return $I;
        continue;
      }
    }
  }
  function compute_tax ($cha)
  {
    if (($cha <= 0))
    {
      return 0;
    }
    if (((0 < $cha) AND ($cha <= 500)))
    {
      return round (($cha * 0.05), 2);
    }
    if (((500 < $cha) AND ($cha <= 2000)))
    {
      return round ((($cha * 0.1) - 25), 2);
    }
    if (((2000 < $cha) AND ($cha <= 5000)))
    {
      return round ((($cha * 0.15) - 125), 2);
    }
    if (((5000 < $cha) AND ($cha <= 20000)))
    {
      return round ((($cha * 0.2) - 375), 2);
    }
    if (((20000 < $cha) AND ($cha <= 40000)))
    {
      return round ((($cha * 0.25) - 1375), 2);
    }
    if (((40000 < $cha) AND ($cha <= 60000)))
    {
      return round ((($cha * 0.3) - 3375), 2);
    }
    if (((60000 < $cha) AND ($cha <= 80000)))
    {
      return round ((($cha * 0.35) - 6375), 2);
    }
    if (((80000 < $cha) AND ($cha <= 100000)))
    {
      return round ((($cha * 0.4) - 10375), 2);
    }
    if (((100000 < $cha) AND (100000 < $cha)))
    {
      return round ((($cha * 0.45) - 15375), 2);
    }
  }
  echo '  ';
?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?