ZIS0400.php 11.6 KB
<?PHP 
//*****************************************************************************
//* プログラム名:資金損益&財務運用表 期単位
//* プログラムID:ZIS0400.php
//* 機能        :
//*****************************************************************************
header("Content-type: text/html; charset=EUC-JP");
include("./inc/session_start.inc");
include("./inc/SessionChk.inc");
include("./inc/dbcon.inc");
include('./inc/smarty.conf');
include("./inc/const.inc");
include("./inc/pagetitle.inc");
include("./inc/pagefooter.inc");

if(trim($start_y) == ""){
	$disp_y = date("Y");
	$disp_m = date("n");
	//基本データ
	$strSQL = "SELECT * FROM z_mst_base";
	$objRec = pg_exec($strSQL);
	if($objRec==false){
		echo("SQL実行に失敗しました(SELECT)");
		exit;
	}
	$objData = pg_fetch_object($objRec, 0);
	//金額単位
	$zis_unit = $objData->unit_flg;
	$strUnit = get_unit($zis_unit);
	$numUnit = get_unitNum($zis_unit);
	//決算翌月
	if($objData->kessan_month == 12){
		$start_m = 1;
	}else{
		$start_m = $objData->kessan_month + 1;
	}
	//決算翌月の年
	if($start_m > $disp_m){
		$start_y = $disp_y - 1;
	}else{
		$start_y = $disp_y;
	}
	//決算月
	$end_m = $objData->kessan_month;
	//決算年
	if($start_m == 1){
		$end_y = $start_y;
	}else{
		$end_y = $start_y + 1;
	}
}else{
	//基本データ
	$strSQL = "SELECT * FROM z_mst_base";
	$objRec = pg_exec($strSQL);
	if($objRec==false){
		echo("SQL実行に失敗しました(SELECT)");
		exit;
	}
	$objData = pg_fetch_object($objRec, 0);
	//金額単位
	$zis_unit = $objData->unit_flg;
	$strUnit = get_unit($zis_unit);
	$numUnit = get_unitNum($zis_unit);
}
	
//echo $start_y."/".$start_m." 〜 ".$end_y."/".$end_m;


//集計タイトル取得
$strSQL = "SELECT * FROM z_mst_title ORDER BY title_seq";
$objRec = pg_exec($strSQL);
if($objRec==false){
	echo("SQL実行に失敗しました(SELECT)");
	exit;
}
$strTITLE = "";
for($i=0;$i<pg_numrows($objRec);$i++){
	$objData = pg_fetch_object($objRec, $i);
	$strTITLE[$i][0] = $objData->title_seq;
	$strTITLE[$i][1] = $objData->title_name;
//echo $strTITLE[$i][0]." : ".$strTITLE[$i][1]."<br>";
}


/*
 0:[ 0] 1売上収入
 1:[ 1] 2原価
 2:[ 2] 3販管費
 3:[--] 4営業損益(計算値)		=1-(2+3)		判別No.101
 4:[ 3] 5営業外損益
 5:[--] 6経常損益(計算値)		=4+5			判別No.102
 6:[ 4] 7特別損益
 7:[ 5] 8法人税等資金
 8:[--] 9資金純損益(計算値)	=6+7-8			判別No.103
 9:[ 6]10資金運用
10:[ 7]11他流動資産
11:[ 8]12設備資金
12:[--]13資金支出計(計算値)	=10+11+12		判別No.104
13:[ 9]14他流動負債
14:[10]15消費税管理
15:[11]16借入金
16:[12]17自己資金
17:[--]18資金調達計(計算値)	=14+15+16+17	判別No.105
18:[13]19現預金
19:[--]20現預金(計算値)		=9+13+18		判別No.106

新配列!!
 0:[ 0] 1売上収入
 1:[ 1] 2原価
// 2:[ 2] 3販管費
// 3:[--] 4営業損益(計算値)		=1-(2+3)		判別No.101
 4:[ 3] 5営業外損益
 5:[--] 6経常損益(計算値)		=1-2+5			判別No.102
 6:[ 4] 7特別損益
 7:[ 5] 8法人税等資金
 8:[--] 9資金純損益(計算値)	=6+7-8			判別No.103
 9:[ 6]10資金運用
10:[ 7]11他流動資産
11:[ 8]12設備資金
12:[--]13資金支出計(計算値)	=10+11+12		判別No.104
13:[ 9]14他流動負債
14:[10]15消費税管理
15:[11]16借入金
16:[12]17自己資金
17:[--]18資金調達計(計算値)	=14+15+16+17	判別No.105
18:[13]19現預金
19:[--]20現預金(計算値)		=9+13+18		判別No.106
*/
//順番
$arrSrt = array(0,1,2,101,3,102,4,5,103,6,7,8,104,9,10,11,12,105,13,106);
$strData = "";	//[0]:初期金額 [1]:当月残高 [2]:当月(期)増減 [3]:名称

//期首繰越金と項目名称
for($i=0;$i<count($arrSrt);$i++){
//echo $arrSrt[$i]."<br>"	   ;

	switch ($arrSrt[$i]) {
    case 101:	//営業損益
		$strData[$i][0] = $strData[0][0] - ($strData[2][0] + $strData[3][0]);
		$strData[$i][3] = "営業損益";
        break;
    case 102:	//経常損益
		//$strData[$i][0] = $strData[3][0] + $strData[4][0];
		$strData[$i][0] = $strData[0][0] - $strData[1][0] + $strData[4][0];
		$strData[$i][3] = "経常損益";
        break;
    case 103:	//資金純損益
		$strData[$i][0] = $strData[5][0] + $strData[6][0] - $strData[7][0];
		$strData[$i][3] = "資金純損益";
        break;
    case 104:	//資金支出計
		$strData[$i][0] = $strData[9][0] + $strData[10][0] + $strData[11][0];
		$strData[$i][3] = "資金支出計";
        break;
    case 105:	//資金調達計
		$strData[$i][0] = $strData[13][0] + $strData[14][0] + $strData[15][0] + $strData[16][0];
		$strData[$i][3] = "資金調達計";
        break;
    case 106:	//現預金(計算値)
		$strData[$i][0] = $strData[8][0] + $strData[12][0] + $strData[17][0];
		$strData[$i][3] = "現預金(算出値)";
        break;
    default:
		$strSQL  = "SELECT ";
		$strSQL .= " z_mst_kanjo.kseq1, ";
		$strSQL .= " z_mst_kanjo.kseq2, ";
		$strSQL .= " z_mst_kanjo.kseq3, ";
		$strSQL .= " z_mst_kanjo.kseq4, ";
		$strSQL .= " z_mst_kanjo.kseq5, ";
		$strSQL .= " z_mst_kanjo.kanjo_name, ";
		$strSQL .= " z_mst_kanjo.ptn_flg, ";
		$strSQL .= " T2.base_money ";
		$strSQL .= "FROM ";
		$strSQL .= " z_mst_kanjo ";
		$strSQL .= "LEFT JOIN ";
		$strSQL .= " z_monthly_data AS T2 ";
		$strSQL .= "ON ";
		$strSQL .= " z_mst_kanjo.kseq1 = T2.cseq1 AND ";
		$strSQL .= " z_mst_kanjo.kseq2 = T2.cseq2 AND ";
		$strSQL .= " z_mst_kanjo.kseq3 = T2.cseq3 AND ";
		$strSQL .= " z_mst_kanjo.kseq4 = T2.cseq4 AND ";
		$strSQL .= " z_mst_kanjo.kseq5 = T2.cseq5 AND ";
		$strSQL .= " T2.data_year = ".$start_y." AND ";
		$strSQL .= " T2.data_month = ".$start_m." ";
		$strSQL .= "WHERE ";
		$strSQL .= " z_mst_kanjo.disp_flg = 1 AND ";
		$strSQL .= " z_mst_kanjo.use_flg = 1 AND ";
		$strSQL .= " z_mst_kanjo.title_seq = ".$strTITLE[$arrSrt[$i]][0]." ";
		$objRec = pg_exec($strSQL);
		if($objRec==false){
			echo("SQL実行に失敗しました(SELECT)");
			exit;
		}
		$strData[$i][0] = 0;
		$strData[$i][3] = $strTITLE[$arrSrt[$i]][1];
		if(pg_numrows($objRec) > 0){
			for($j=0;$j<pg_numrows($objRec);$j++){
				$objData = pg_fetch_object($objRec, $j);
				$strData[$i][0] = $strData[$i][0] + NtoZ($objData->base_money);
			}
		}
	}
}

//月データ
$strDataM = "";

$selectY = $start_y;
$selectM = $start_m;
for($i=0;$i<12;$i++){
	$strMTitle[$i] = $selectY."年".$selectM."月";
	for($j=0;$j<count($arrSrt);$j++){
		switch ($arrSrt[$j]) {
	    case 101:	//営業損益
			$strDataM[$i][$j] = $strDataM[$i][0] - ($strDataM[$i][2] + $strDataM[$i][3]);
	        break;
	    case 102:	//経常損益
			//$strDataM[$i][$j] = $strDataM[$i][3] + $strDataM[$i][4];
			$strDataM[$i][$j] = $strDataM[$i][0] - $strDataM[$i][1] + $strDataM[$i][4];
	        break;
	    case 103:	//資金純損益
			$strDataM[$i][$j] = $strDataM[$i][5] + $strDataM[$i][6] - $strDataM[$i][7];
	        break;
	    case 104:	//資金支出計
			$strDataM[$i][$j] = $strDataM[$i][9] + $strDataM[$i][10] + $strDataM[$i][11];
	        break;
	    case 105:	//資金調達計
			$strDataM[$i][$j] = $strDataM[$i][13] + $strDataM[$i][14] + $strDataM[$i][15] + $strDataM[$i][16];
	        break;
	    case 106:	//現預金(計算値)
			$strDataM[$i][$j] = $strDataM[$i][8] + $strDataM[$i][12] + $strDataM[$i][17];
	        break;
	    default:
			$strSQL  = "SELECT ";
			$strSQL .= " z_mst_kanjo.kseq1, ";
			$strSQL .= " z_mst_kanjo.kseq2, ";
			$strSQL .= " z_mst_kanjo.kseq3, ";
			$strSQL .= " z_mst_kanjo.kseq4, ";
			$strSQL .= " z_mst_kanjo.kseq5, ";
			$strSQL .= " z_mst_kanjo.kanjo_name, ";
			$strSQL .= " z_mst_kanjo.ptn_flg, ";
			$strSQL .= " T2.data_seq, ";
			$strSQL .= " T2.data_money ";
			$strSQL .= "FROM ";
			$strSQL .= " z_mst_kanjo ";
			$strSQL .= "LEFT JOIN ";
			$strSQL .= " z_monthly_data AS T2 ";
			$strSQL .= "ON ";
			$strSQL .= " z_mst_kanjo.kseq1 = T2.cseq1 AND ";
			$strSQL .= " z_mst_kanjo.kseq2 = T2.cseq2 AND ";
			$strSQL .= " z_mst_kanjo.kseq3 = T2.cseq3 AND ";
			$strSQL .= " z_mst_kanjo.kseq4 = T2.cseq4 AND ";
			$strSQL .= " z_mst_kanjo.kseq5 = T2.cseq5 AND ";
			$strSQL .= " T2.data_year = ".$selectY." AND ";
			$strSQL .= " T2.data_month = ".$selectM." ";
			$strSQL .= "WHERE ";
			$strSQL .= " z_mst_kanjo.disp_flg = 1 AND ";
			$strSQL .= " z_mst_kanjo.use_flg = 1 AND ";
			$strSQL .= " z_mst_kanjo.title_seq = ".$strTITLE[$arrSrt[$j]][0]." ";
			$objRec = pg_exec($strSQL);
			if($objRec==false){
				echo("SQL実行に失敗しました(SELECT)");
				exit;
			}
			$strDataM[$i][$j] = 0;
			if(pg_numrows($objRec) > 0){
				for($k=0;$k<pg_numrows($objRec);$k++){
					$objData = pg_fetch_object($objRec, $k);
					$strDataM[$i][$j] = $strDataM[$i][$j] + get_PM($objData->ptn_flg) * NtoZ($objData->data_money);
				}
			}
		}
	}
	$selectM = $selectM + 1;
	if($selectM > 12){
		$selectM = 1;
		$selectY = $selectY + 1;
	}

}

//残高増減合計
/*
$strTotal = "";
for($i=0;$i<count($arrSrt);$i++){
	//最終月残高 - 初期繰越金
	$strTotal[$i] = $strDataM[11][$i] - $strData[$i][0];

}
*/

//フォーマット&要素2個削除
// 2:[ 2] 3販管費
// 3:[--] 4営業損益(計算値)		=1-(2+3)		判別No.101

$arrMax = count($strData);
$newCnt = 0;
for($i=0;$i<$arrMax;$i++){
	if($i != 2 && $i != 3) {	//不要な要素排除
		$strData2[$newCnt] = $strData[$i];											//一旦コピー
		$strData2[$newCnt][0] = number_format(floor($strData[$i][0] / $numUnit));	//金額フォーマット
		for($j=0;$j<12;$j++){
			$strDataM2[$j][$newCnt] =  number_format(floor($strDataM[$j][$i] / $numUnit));
		}
		$newCnt++;
	}
}

$o_smarty->assign('strUnit',$strUnit);
//$o_smarty->assign('strData',$strData);
//$o_smarty->assign('strDataM',$strDataM);
$o_smarty->assign('strData',$strData2);
$o_smarty->assign('strDataM',$strDataM2);
$o_smarty->assign('strMTitle',$strMTitle);
$o_smarty->assign('strTotal',$strTotal);

$o_smarty->assign('start_y',$start_y);
$o_smarty->assign('start_m',$start_m);
$o_smarty->assign('end_y',$end_y);
$o_smarty->assign('end_m',$end_m);

//*** 単位取得 ***//
function get_unit($ptn_flg) { 
		$strReturn = "";
		switch ($ptn_flg) {
		case "1": $strReturn = "千"; break;
		case "2": $strReturn = "万"; break;
		default : $strReturn = "円"; break;
		}
		return $strReturn;
}
//*** 単位計算値 ***//
function get_unitNum($ptn_flg) { 
		$strReturn = "";
		switch ($ptn_flg) {
		case "1": $strReturn = 1000; break;
		case "2": $strReturn = 10000; break;
		default : $strReturn = 1; break;
		}
		return $strReturn;
}

function NtoZ($prm){
//Nullと空文字をゼロに置き換えます
	if(is_null($prm) || trim($prm) == "" ){
		return 0;
	}else{
		return $prm;
	}
}
function get_PM($flg){
//加算の正負を取得する関数です
	if($flg == 1){
		return -1;
	}else if($flg == 2){
		return 1;
	}else{
		return 0;	
	}
}

//HTMLヘッダの書き出し
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html>
<head>
	<meta http-equiv="content-type" content="text/html; cahrset=euc-jp">
	<meta http-equiv="content-style-type" content="text/css">
	<meta name="robots" content="noindex, nofollow">
	<script type="text/javascript" src="./js/ZIS0400.js"></script>
	<script type="text/javascript" src="./js/input_chk.js"></script>
	<title><?PHP  echo($PHP_SYSNAME); ?></title>
	<link rel="stylesheet" href="./templates/SIMmain.css" type="text/css" />
	<link rel="stylesheet" href="./templates/css/ZIS.css" type="text/css" />
</head>
<?PHP 

//タイトル部分の表示
dspTitle($PHP_SYSNAME, $PHP_GROUP_NAME, $PHP_BUMON_NAME, $PHP_USER_NAME, "http://www.f-mtclab.net/article/149565245.html#help0");

//メインHTML部分の表示
//[0]システムURL、[1]HP URL、[2]マニュアルURL、[3]MTC HP URL、[4]マスタメールアドレス、
//[5]期間区分名、[6]大区分名、[7]小区分名、[8]支出名、[9]収入名、[10]消費税率(文字型)
$o_smarty->assign('DEFARR',$DEFARR);

$o_smarty->assign('PHP_SYSNAME',$PHP_SYSNAME);
$o_smarty->assign('PHP_GROUP_NAME',$PHP_GROUP_NAME);
$o_smarty->assign('PHP_BUMON_NAME',$PHP_BUMON_NAME);
$o_smarty->assign('PHP_USER_NAME',$PHP_USER_NAME);
$o_smarty->assign('PHP_USER_ADMIN',$PHP_USER_ADMIN);
$o_smarty->assign('PHP_USER_NYUKIN',$PHP_USER_NYUKIN);
$o_smarty->assign('PHP_USER_SHIKIN',$PHP_USER_SHIKIN);
$o_smarty->assign('PHP_USER_SEQ',$PHP_USER_SEQ);

$o_smarty->assign('User_Sikaku' , $User_Sikaku);				//入力資格

$o_smarty->display('ZIS0400.tpl');

//フッタ部分の表示
dspFooter($DEFARR[1], $DEFARR[3],"http://www.f-mtclab.net/article/149565245.html#help0");
?>