ZIS0110.php 11.6 KB
<?PHP 
//*****************************************************************************
//* プログラム名:CSVテンプレート
//* プログラムID:ZIS0110.php
//* 機能        :
//*****************************************************************************
header("Content-type: text/html; charset=EUC-JP");
include("./inc/session_start.inc");
include("./inc/SessionChk.inc");
include("./inc/jcode.phps");
include("./inc/dbcon.inc");

//年月
//表示年月
if($disp_y == ""){
	$disp_y = date("Y");
}
if($disp_m == ""){
	$disp_m = date("n");
}
//基本データ
$strSQL = "SELECT * FROM z_mst_base";
$objRec = pg_exec($strSQL);
if($objRec==false){
	echo("SQL実行に失敗しました(SELECT)");
	exit;
}
if(pg_numrows($objRec)==0){
	echo("SQL実行に失敗しました(SELECT:0)");
	header("Location:./ZIS9900.php");
	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;
}

//最初の月?
if($start_m == $disp_m){
	$dispStart = 1;
}else{
	$dispStart = 0;
}

$Kanjyo_Data = "";
$Kanjyo_Money = "";

for( $cntYM=0; $cntYM<12; $cntYM++ ){
	
	$arrM = $start_m + $cntYM;
	if($arrM <= 12){
		$arrY = $start_y;
	}else{
		$arrY = $start_y + 1;
		$arrM = $arrM - 12;
	}
	
	$strSQL  = "SELECT ";
	$strSQL .= "  M1.kseq1      AS m1_kseq1     ,";
	$strSQL .= "  M1.kseq2      AS m1_kseq2     ,";
	$strSQL .= "  M1.kseq3      AS m1_kseq3     ,";
	$strSQL .= "  M1.kseq4      AS m1_kseq4     ,";
	$strSQL .= "  M1.kseq5      AS m1_kseq5     ,";
	$strSQL .= "  M1.ptn_flg    AS m1_ptn_flg   ,";
	$strSQL .= "  M1.disp_rank  AS m1_disp_rank ,";
	$strSQL .= "  M1.kanjo_name AS m1_kanjo_name,";
	$strSQL .= "  M2.kseq1      AS m2_kseq1     ,";
	$strSQL .= "  M2.kseq2      AS m2_kseq2     ,";
	$strSQL .= "  M2.kseq3      AS m2_kseq3     ,";
	$strSQL .= "  M2.kseq4      AS m2_kseq4     ,";
	$strSQL .= "  M2.kseq5      AS m2_kseq5     ,";
	$strSQL .= "  M2.ptn_flg    AS m2_ptn_flg   ,";
	$strSQL .= "  M2.kanjo_name AS m2_kanjo_name,";
	$strSQL .= "  M3.kseq1      AS m3_kseq1     ,";
	$strSQL .= "  M3.kseq2      AS m3_kseq2     ,";
	$strSQL .= "  M3.kseq3      AS m3_kseq3     ,";
	$strSQL .= "  M3.kseq4      AS m3_kseq4     ,";
	$strSQL .= "  M3.kseq5      AS m3_kseq5     ,";
	$strSQL .= "  M3.ptn_flg    AS m3_ptn_flg   ,";
	$strSQL .= "  M3.kanjo_name AS m3_kanjo_name,";
	$strSQL .= "  M4.kseq1      AS m4_kseq1     ,";
	$strSQL .= "  M4.kseq2      AS m4_kseq2     ,";
	$strSQL .= "  M4.kseq3      AS m4_kseq3     ,";
	$strSQL .= "  M4.kseq4      AS m4_kseq4     ,";
	$strSQL .= "  M4.kseq5      AS m4_kseq5     ,";
	$strSQL .= "  M4.ptn_flg    AS m4_ptn_flg   ,";
	$strSQL .= "  M4.kanjo_name AS m4_kanjo_name,";
	$strSQL .= "  M4.use_flg    AS m4_use_flg   ,";
	$strSQL .= "  M5.kseq1      AS m5_kseq1     ,";
	$strSQL .= "  M5.kseq2      AS m5_kseq2     ,";
	$strSQL .= "  M5.kseq3      AS m5_kseq3     ,";
	$strSQL .= "  M5.kseq4      AS m5_kseq4     ,";
	$strSQL .= "  M5.kseq5      AS m5_kseq5     ,";
	$strSQL .= "  M5.ptn_flg    AS m5_ptn_flg   ,";
	$strSQL .= "  M5.kanjo_name AS m5_kanjo_name, ";
	$strSQL .= "  z_monthly_data.data_seq, ";
	$strSQL .= "  z_monthly_data.data_money, ";
	$strSQL .= "  z_monthly_data.base_money ";
	$strSQL .= "FROM ";
	$strSQL .= " (";
	$strSQL .= "  (";
	$strSQL .= "   (z_mst_kanjo AS M1";
	$strSQL .= "     LEFT JOIN z_mst_kanjo AS M2 ON ";
	$strSQL .= "               M1.kseq1 = M2.kseq1 AND ";
	$strSQL .= "               M2.kseq2 <> 0       AND ";
	$strSQL .= "               M2.kseq3 =  0       AND ";
	$strSQL .= "               M2.kseq4 =  0       AND ";
	$strSQL .= "               M2.kseq5 =  0";
	$strSQL .= "   ) ";
	$strSQL .= "    LEFT JOIN z_mst_kanjo AS M3 ON ";
	$strSQL .= "                  (M1.kseq1 = M3.kseq1) AND ";
	$strSQL .= "                  (M2.kseq2 = M3.kseq2) AND ";
	$strSQL .= "                  (M3.kseq3 <> 0)       AND ";
	$strSQL .= "                  (M3.kseq4 =  0)       AND ";
	$strSQL .= "                  (M3.kseq5 =  0)";
	$strSQL .= "   ) ";
	$strSQL .= "    LEFT JOIN z_mst_kanjo AS M4 ON ";
	$strSQL .= "                  (M1.kseq1 = M4.kseq1) AND ";
	$strSQL .= "                  (M2.kseq2 = M4.kseq2) AND ";
	$strSQL .= "                  (M3.kseq3 = M4.kseq3) AND ";
	$strSQL .= "                  (M4.kseq4 <>  0)      AND ";
	$strSQL .= "                  (M4.kseq5 =  0)";
	$strSQL .= "  ) ";
	$strSQL .= "    LEFT JOIN z_mst_kanjo AS M5 ON ";
	$strSQL .= "                  (M1.kseq1 = M5.kseq1) AND ";
	$strSQL .= "                  (M2.kseq2 = M5.kseq2) AND ";
	$strSQL .= "                  (M3.kseq3 = M5.kseq3) AND ";
	$strSQL .= "                  (M4.kseq4 = M5.kseq4) AND ";
	$strSQL .= "                  (M5.kseq5 <>  0) ";
	$strSQL .= "LEFT JOIN ";
	$strSQL .= " z_monthly_data ";
	$strSQL .= "ON ";
	$strSQL .= " z_monthly_data.cseq1 = M4.kseq1 AND ";
	$strSQL .= " z_monthly_data.cseq2 = M4.kseq2 AND ";
	$strSQL .= " z_monthly_data.cseq3 = M4.kseq3 AND ";
	$strSQL .= " z_monthly_data.cseq4 = M4.kseq4 AND ";
	$strSQL .= " z_monthly_data.cseq5 = M4.kseq5 AND ";
	
	//$strSQL .= " ( ";
	//$strSQL .= " ( z_monthly_data.data_year = ".$start_y." AND ";
	//$strSQL .= "   z_monthly_data.data_month >= ".$start_m.") OR ";
	//$strSQL .= " ( z_monthly_data.data_year = ".$end_y." AND ";
	//$strSQL .= "   z_monthly_data.data_month <= ".$end_m.") ";
	//$strSQL .= " ) ";
	$strSQL .= " z_monthly_data.data_year = ".$arrY." AND ";
	$strSQL .= " z_monthly_data.data_month = ".$arrM." ";
	
	$strSQL .= "WHERE ";
	$strSQL .= "  M4.use_flg = 1 AND";
	$strSQL .= "  M1.kseq1 <> 0 AND";
	$strSQL .= "  M1.kseq2 = 0  AND";
	$strSQL .= "  M1.kseq3 = 0  AND";
	$strSQL .= "  M1.kseq4 = 0  AND";
	$strSQL .= "  M1.kseq5 = 0 ";
	$strSQL .= " ORDER BY ";
	$strSQL .= "  M1.disp_rank,";
	$strSQL .= "  M2.disp_rank,";
	$strSQL .= "  M3.disp_rank,";
	$strSQL .= "  M4.disp_rank,";
	$strSQL .= "  M5.disp_rank ";
	
	
	$objRec = pg_exec($strSQL);
	if($objRec==false){
			echo("SQL実行に失敗しました(SELECT)");
			exit;
	}
	$m1_kseq1_bk="";
	$m2_kseq1_bk="";
	$m2_kseq2_bk="";
	$m3_kseq1_bk="";
	$m3_kseq2_bk="";
	$m3_kseq3_bk="";
	$m4_kseq1_bk="";
	$m4_kseq2_bk="";
	$m4_kseq3_bk="";
	$m4_kseq4_bk="";
	
	for ($intI = 0; $intI < pg_numrows($objRec); $intI++) {
			$objData = pg_fetch_object($objRec, $intI);
		
		if($cntYM == 0){
			//* KEYの保存 *//
			$KeyMass[1][1] = $objData->m1_kseq1;
			$KeyMass[1][2] = $objData->m1_kseq2;
			$KeyMass[1][3] = $objData->m1_kseq3;
			$KeyMass[1][4] = $objData->m1_kseq4;
			$KeyMass[1][5] = $objData->m1_kseq5;
			$KeyMass[2][1] = $objData->m2_kseq1;
			$KeyMass[2][2] = $objData->m2_kseq2;
			$KeyMass[2][3] = $objData->m2_kseq3;
			$KeyMass[2][4] = $objData->m2_kseq4;
			$KeyMass[2][5] = $objData->m2_kseq5;
			$KeyMass[3][1] = $objData->m3_kseq1;
			$KeyMass[3][2] = $objData->m3_kseq2;
			$KeyMass[3][3] = $objData->m3_kseq3;
			$KeyMass[3][4] = $objData->m3_kseq4;
			$KeyMass[3][5] = $objData->m3_kseq5;
			$KeyMass[4][1] = $objData->m4_kseq1;
			$KeyMass[4][2] = $objData->m4_kseq2;
			$KeyMass[4][3] = $objData->m4_kseq3;
			$KeyMass[4][4] = $objData->m4_kseq4;
			$KeyMass[4][5] = $objData->m4_kseq5;
			$KeyMass[5][1] = $objData->m5_kseq1;
			$KeyMass[5][2] = $objData->m5_kseq2;
			$KeyMass[5][3] = $objData->m5_kseq3;
			$KeyMass[5][4] = $objData->m5_kseq4;
			$KeyMass[5][5] = $objData->m5_kseq5;
	
			//* 第1階層 *//
			$Kanjyo_Data[$intI][10] = $objData->m1_kanjo_name;
			$Kanjyo_Data[$intI][11] = $objData->m1_kseq1;
			$Kanjyo_Data[$intI][12] = $objData->m1_kseq2;
			$Kanjyo_Data[$intI][13] = $objData->m1_kseq3;
			$Kanjyo_Data[$intI][14] = $objData->m1_kseq4;
			$Kanjyo_Data[$intI][15] = $objData->m1_kseq5;
	
			//* 第2階層 *//
			$Kanjyo_Data[$intI][20] = $objData->m2_kanjo_name;
			$Kanjyo_Data[$intI][21] = $objData->m2_kseq1;
			$Kanjyo_Data[$intI][22] = $objData->m2_kseq2;
			$Kanjyo_Data[$intI][23] = $objData->m2_kseq3;
			$Kanjyo_Data[$intI][24] = $objData->m2_kseq4;
			$Kanjyo_Data[$intI][25] = $objData->m2_kseq5;
	
			//* 第3階層 *//
			$Kanjyo_Data[$intI][30] = $objData->m3_kanjo_name;
			$Kanjyo_Data[$intI][31] = $objData->m3_kseq1;
			$Kanjyo_Data[$intI][32] = $objData->m3_kseq2;
			$Kanjyo_Data[$intI][33] = $objData->m3_kseq3;
			$Kanjyo_Data[$intI][34] = $objData->m3_kseq4;
			$Kanjyo_Data[$intI][35] = $objData->m3_kseq5;
	
			//* 第4階層 *//
			$Kanjyo_Data[$intI][40] = $objData->m4_kanjo_name;
			$Kanjyo_Data[$intI][41] = $objData->m4_kseq1;
			$Kanjyo_Data[$intI][42] = $objData->m4_kseq2;
			$Kanjyo_Data[$intI][43] = $objData->m4_kseq3;
			$Kanjyo_Data[$intI][44] = $objData->m4_kseq4;
			$Kanjyo_Data[$intI][45] = $objData->m4_kseq5;

			//現状、4階層を末端とし、金額を設置
			$Kanjyo_Money[$intI][0] = $objData->data_seq;
			$Kanjyo_Money[$intI][2] = floor(NtoZ($objData->base_money) / $numUnit);
			//0⇒空文字
			if($Kanjyo_Money[$intI][2] == 0){
				$Kanjyo_Money[$intI][2] = "";
			}
			$Kanjyo_Money[$intI][3] = $objData->data_seq.",".$objData->m4_kseq1.",".$objData->m4_kseq2.",".$objData->m4_kseq3.",".$objData->m4_kseq4.",".$objData->m4_kseq5;

			//* 前回値保存 *//
			$m1_kseq1_bk = $objData->m1_kseq1;
			$m2_kseq1_bk = $objData->m2_kseq1;
			$m2_kseq2_bk = $objData->m2_kseq2;
	
			$m3_kseq1_bk = $objData->m3_kseq1;
			$m3_kseq2_bk = $objData->m3_kseq2;
			$m3_kseq3_bk = $objData->m3_kseq3;
	
			$m4_kseq1_bk = $objData->m4_kseq1;
			$m4_kseq2_bk = $objData->m4_kseq2;
			$m4_kseq3_bk = $objData->m4_kseq3;
			$m4_kseq4_bk = $objData->m4_kseq4;
		}
		
		//金額
		$Kanjyo_Money[$intI][1][$cntYM] = floor(NtoZ($objData->data_money) / $numUnit);
		//0⇒空文字
		if($Kanjyo_Money[$intI][1][$cntYM] == 0){
			$Kanjyo_Money[$intI][1][$cntYM] = "";
		}
	}
}

$filename = "Template".$disp_y.sprintf('%02d', $disp_m).".csv";
Header("Content-Disposition: attachment; filename=\"$filename\"");
Header("Content-Type: text/csv");
$strHead = $start_y.",".$start_m.",".$end_y.",".$end_m.",上の2行は変更しないでください\n";

$strKikan = "";
$cntY = $start_y;
$cntM = $start_m;
for($i=0;$i<12;$i++){
	$strKikan .= $cntY."年".$cntM."月残高,";
	$cntM++;
	if($cntM > 12){
		$cntM = 1;
		$cntY++;
	}
}


$strHead .= "SEQ(変更不可),大区分(変更不可),中区分(変更不可),小区分(変更不可),科目(変更不可),初期残高,".$strKikan."\n";
$strHead = JcodeConvert($strHead, 1, 2);
echo $strHead;

for($i=0;$i<count($Kanjyo_Money);$i++){

	$strData  = '';
	$strData .= '"'.$Kanjyo_Money[$i][3].'",';
	$strData .= '"'.$Kanjyo_Data[$i][10].'",';
	$strData .= '"'.$Kanjyo_Data[$i][20].'",';
	$strData .= '"'.$Kanjyo_Data[$i][30].'",';
	$strData .= '"'.$Kanjyo_Data[$i][40].'",';
//	$strData .= '"'.$disp_y.'",';
//	$strData .= '"'.$disp_m.'",';
	$strData .= '"'.$Kanjyo_Money[$i][2].'",';

	for($j=0;$j<12;$j++){
		$strData .= '"'.$Kanjyo_Money[$i][1][$j].'",';
	}
	$strData .= '" "';
	$strData = JcodeConvert($strData, 1, 2);
		
	echo $strData."\n";

	
}

//$o_smarty->assign('Kanjyo_Data' , $Kanjyo_Data);
//$o_smarty->assign('Kanjyo_Money' , $Kanjyo_Money);
function NtoZ($prm){
//Nullと空文字をゼロに置き換えます
	if(is_null($prm) || trim($prm) == "" ){
		return 0;
	}else{
		return $prm;
	}
}
//*** 単位取得 ***//
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;
}

?>