⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fun_compute.php

📁 通达OA官方提供的30源代码,感觉很实在
💻 PHP
字号:
<?
function comput_allitem($FLOW_ID,$USER_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++;
     	 //$Sequence[$count]="-1";
     }
     else
     {
       $Sequence[$count]=$ROW["ITEM_ID"];
       $length++;
       $count++;
     }
   }   
$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;
	     }
	    }
   }
  $count++;
  if ($count>50)
   {
   	 $ARRAY_COUNT=sizeof($DATA_FORMULAID);
     for($I=0;$I<$ARRAY_COUNT;$I++)
     {
	     if ($DATA_FORMULAID[$I]!=0)
	      echo $DATA_FORMULA[$I]."公式定义有误!!<br>";
     }
   	 return;
   }
 }
 

$ARRAY_COUNT=sizeof($Sequence);
$query = "SELECT * from SAL_DATA where FLOW_ID='$FLOW_ID'and USER_ID='$USER_ID'";
$cursor= exequery($connection,$query);
if($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.=",";
      }
     $query.=" where FLOW_ID=$FLOW_ID and USER_ID='$USER_ID'";
     exequery($connection,$query);
     //echo "员工".$USER_ID."的工资项目更新完成!!!"."<br>";
   } 
 } 
 
 
function issonformula($formul,$ARRAY_Sequence)
{
   //$formul="[$1]+[$2]+[$45]*0.2+([$1]+[$2]+[$45])*0.88";
   $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";
	    }
   }
   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);
	    	//echo $temp."<br>";
	    	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;$I>=0;$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;}
	     
   }
	
 } 
 
 
function compute_tax($cha)
{
   if ($cha<=0) { return 0;}
   if ($cha>0 && $cha<=500) {return round(($cha*0.05),2);}
   if ($cha>500 && $cha<=2000) { return round(($cha*0.1-25),2);}
   if ($cha>2000 && $cha<=5000) {return round(($cha*0.15-125),2);}
   if ($cha>5000 && $cha<=20000) {return round(($cha*0.2-375),2);}
   if ($cha>20000 && $cha<=40000) {return round(($cha*0.25-1375),2);}
   if ($cha>40000 && $cha<=60000) {return round(($cha*0.30-3375),2);}
   if ($cha>60000 && $cha<=80000) {return round(($cha*0.35-6375),2);}
   if ($cha>80000 && $cha<=100000) {return round(($cha*0.4-10375),2);}
   if ($cha>100000 && $cha>100000) {return round(($cha*0.45-15375),2);}
}
?>
  

⌨️ 快捷键说明

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