\nBCC:tohyama@eship.co.jp\nX-mailer:PHP5";
$subject = "ER".strftime ("%G-%m-%d",time())." LogiGateログインテスト ID:".$accessid;
mb_send_mail("info-logigate@logigate.jp",$subject,$msg2,$fromto2);*/
}
if($SecurityChecker > 0) {
$strsql = "INSERT INTO loginhistory (kubun,tid,name,userroleid,logindatetime,ip) values('OUT','".$userdata["tid"]."','".$userdata["name"]."','".$userdata["userroleid"]."',NOW(),'".$_SERVER["REMOTE_ADDR"]."')";
$result=mysql_query($strsql,$my_con);
mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__);
setcookie("cketoken");
setcookie("ckeselect");
setcookie("testmode");
myclose();
echo "\n";
echo "\n";
echo "ログアウトしました $SecurityChecker\n";
echo "\n";
echo "\n";
echo "\n";
// echo "ERROR #".$SecurityChecker;
echo "ログアウト状態です。ログイン後無操作状態が一定時間経過したため
自動ログアウトされました。
引き続きご利用の際には、
「再ログイン」をクリックしてください。
もし更新時にこの画面が出た場合は、最後の更新作業は無効となりました。再度ログイン後に改めて更新して下さい。
\n";
echo "CODE #".$SecurityChecker;
if(session_id() == "") {
echo "SES0";
}
if($_COOKIE["PHPSESSID"] == "") {
echo "COK0";
}
echo ("DA=".$acd[0][0]."/ELS=".$acd[0][1]."/CKE=".$cke."/TM=".$timeoutmin);
echo "\n\n";
exit;
}
}
/*------------------------------------------------------------
* 関数名 : CookieSetup()
* 返却値 : Cookie,内部変数
* 引数 : アクセスコード,フラグ(1=ログイン,2=更新)
* 説明 : ユーザーIDより、Cookieにアクセスコードと業態コードを書き込む&ユーザー情報をセットする
* 使用例 : CookieSetup($accesstoken,1);
* 使用例 : CookieSetup( "" ,2);
*------------------------------------------------------------
*/
Function CookieSetup($accesstoken,$flg){
global $my_con,$timeoutmin,$userdata,$company,$companysetuzoku,$strsqldbselect,$databasenaming;
//ユーザーマスター、ロールデータの取得
if($flg == 1) {
$usermaster = dbselect("tid,companyid,shozokuid,accesscode,name,companyname,infoedit,email","usermaster as u INNER JOIN company USING(companyid)","accesscode='".$accesstoken."' AND sessionid='".$_COOKIE["PHPSESSID"]."'",-1,-1);
$roledata = dbselect("userroleid,u.companyid,gyotaiid,kengen","userrole as u INNER JOIN rolemaster USING(roleid,companyid)","tid='".$usermaster[0][0]."'","roleid",-1);
} else {
//不正アクセス防止アクセスコード作成
mt_srand(microtime()*100000);
$accesstoken = md5(uniqid(mt_rand(),1));
//アクセスコード更新
//2012OUT $strsql = "UPDATE usermaster set accesscode = '$accesstoken', updatetime=now(),sessionid='".$_COOKIE["PHPSESSID"]."' where accesscode='".$_SESSION[cketoken]."' limit 1"; //二重送信時に強制OUTしてしまうため
$strsql = "UPDATE usermaster set updatetime=now(),sessionid='".$_COOKIE["PHPSESSID"]."' where accesscode='".$_SESSION[cketoken]."' limit 1";
$result=mysql_query($strsql,$my_con);
mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__);
//2012OUT $usermaster = dbselect("tid,companyid,shozokuid,accesscode,name,companyname,infoedit,email","usermaster as u INNER JOIN company USING(companyid)","accesscode='".$accesstoken."' AND sessionid='".$_COOKIE["PHPSESSID"]."'",-1,-1);
$usermaster = dbselect("tid,companyid,shozokuid,accesscode,name,companyname,infoedit,email,brand,centerid,supplyerid,supplyerid2,cost_dispoff,makercode2","usermaster as u INNER JOIN company USING(companyid)","accesscode='".$_SESSION[cketoken]."' AND sessionid='".$_COOKIE["PHPSESSID"]."'",-1,-1);
if(sizeof($usermaster) == 0) { $usermaster = dbselect("tid,companyid,shozokuid,accesscode,name,companyname,infoedit,email,brand,centerid,supplyerid,supplyerid2","usermaster as u INNER JOIN company USING(companyid)","accesscode='".$_SESSION[cketoken]."' AND sessionid='".$_COOKIE["PHPSESSID"]."'",-1,-1);}
Testecho($strsqldbselect);
$roledata = dbselect("userroleid,u.companyid,gyotaiid,kengen,roleid,startpage","userrole as u INNER JOIN rolemaster USING(roleid,companyid)","tid='".$usermaster[0][0]."'","u.roleid",-1);
//universal loginシングルサインオンデータ取得
$univarsaldata = dbselect("tid,db","univarsal.gateuser","tid ='".$usermaster[0][0]."'",-1,-1);
Testecho($strsqldbselect);
//univarsal データでDB,TIDが一致しているかを確認する
if(sizeof($univarsaldata) > 1) {
For($intU = 0;$intU < sizeof($univarsaldata);$intU++) {
if($univarsaldata[$intU][1] == $databasenaming) {
$intFlgU = 1; //DB,TIDが一致
}
}
//var_dump($univarsaldata);
if($intFlgU == 1) {
For($intU = 0;$intU < sizeof($univarsaldata);$intU++) {
$strsql = "UPDATE `".$univarsaldata[$intU][1]."`.`usermaster` set updatetime=now(),sessionid='".$_COOKIE["PHPSESSID"]."',accesscode='".$_SESSION[cketoken]."' where tid='".$univarsaldata[$intU][0]."' limit 1";
$result=mysql_query($strsql,$my_con);
mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__);
//echo "ooooooooooo".$strsql;
}
}
}
}
// setcookie("cketoken",$usermaster[0][3],time() + $timeoutmin); //アクセス防止マーカー
setcookie("cketoken",$_SESSION[cketoken],time() + $timeoutmin); //アクセス防止マーカー
$_SESSION[cketoken] = $usermaster[0][3]; //アクセス防止マーカー
// setcookie("ckeselect",$roledata[0][0],time() + $timeoutmin); //ロールID(デフォルトは権限が一番上)
// setcookie("testmode"); //テストモード終了
// setcookie("testmode","1",time()+7200); //テストモード開始
//ユーザー情報セット
$userdata["tid"] = $usermaster[0][0]; //ユーザーID
$userdata["companyid"] = $usermaster[0][1]; //所属会社ID
$userdata["shozokuid"] = $usermaster[0][2]; //配送先ID
$userdata["name"] = $usermaster[0][4]; //ユーザ名
$userdata["companyname"] = $usermaster[0][5]; //所属会社名
$userdata["infoedit"] = $usermaster[0][6]; //情報掲示板編集権限
$userdata["email"] = $usermaster[0][7]; //Email
if($usermaster[0][8] <> "") $userdata["brand"] = $usermaster[0][8]; //brand ブランドを限定する場合
if($usermaster[0][9] <> "") $userdata["centerid"] = $usermaster[0][9]; //center センターを限定する場合
if($usermaster[0][10] <> "") $userdata["supplyerid"] = $usermaster[0][10]; //supplyerid サプライヤーを限定する場合
$userdata["supplyerid2"] = $usermaster[0][11]; //マスタ編集用 複数サプライヤー限定
$userdata["cost_dispoff"] = (int)$usermaster[0][12]; //1:仕入金額非表示 0:表示'
$userdata["makercode2"] = $usermaster[0][13]; //マスタ編集用 メーカー用
$userdata["userroleid"] = $roledata[0][0]; //ユーザ名
$userdata["hcompanyid"] = $roledata[0][1]; //本社ID
// $company = $roledata[0][1].$companysetuzoku; //本社ID=DatabaseTable名
$userdata["gyotaiid"] = $roledata[0][2]; //業態ID
$userdata["kengen"] = $roledata[0][3]; //権限
$userdata["roleid"] = $roledata[0][4]; //roleid
$userdata["startpage"] = $roledata[0][5]; //startpage 通常0100.phpからの変更
//業態情報
$gdata = dbselect("honbuid,gname,logo,hacchutime,nohinweek,comeinweek","`".$company."gyotai`","gyotaiid='".$userdata["gyotaiid"]."'",-1,-1);
$userdata["honbuid"] = $gdata[0][0]; //本部ID
$userdata["gname"] = $gdata[0][1]; //業態名
$userdata["logo"] = $gdata[0][2]; //LOGOのURL
$userdata["nohinweek"] = $gdata[0][4]; //納品可能曜日
$userdata["comeinweek"] = $gdata[0][5]; //入荷可能曜日
$sdata = dbselect("shozokuname,shimetime,leadtime","`".$company."shozokumaster`","shozokuid='".$userdata[shozokuid]."'",-1,-1);
$userdata["shozokuname"] = $sdata[0][0]; //所属名
$userdata["hacchutime"] = $sdata[0][1]; //発注締め時間
$userdata["leadtime"] = $sdata[0][2]; //納品先リードタイムday
}
/*------------------------------------------------------------
* 関数名 : Numchecker()
* 返却値 : 数字
* 引数 : 調べたい数字
* 説明 : 全角数字が指定されたら数値で返す。数値、全角数値以外は0で返す
* 使用例 : A = Numchecker($_POST[amount]) +5;
*------------------------------------------------------------
*/
Function Numchecker($cknumber){
if ($cknumber == "") { //何も無しなら0で返す
return 0;
} else {
$cknumber = mb_convert_kana($cknumber,"n");
if ((int)$cknumber > 0 ) {
return (int)$cknumber; //マイナス以外の数字なら数値で返す
} else {
return 0; //数値でないなら0で返す
}
}
}
/*------------------------------------------------------------
* 関数名 : Numchecker2()
* 返却値 : 数字
* 引数 : 調べたい数字
* 説明 : 全角数字が指定されたら数値で返す。数値、全角数値以外はNO-MATCHで返す
* 使用例 : amout2 = Numchecker2($_POST[amount]);
*------------------------------------------------------------
*/
Function Numchecker2($cknumber){
if ($cknumber == "") { //何も無しならNO-MATCHで返す
return "NO-MATCH";
} else {
$cknumber = trim(str_replace(",","",$cknumber));
$cknumber = mb_convert_kana($cknumber,"n");
$cknumber = trim(str_replace(",","",$cknumber));
if ((int)$cknumber >= 0 ) {
return $cknumber; //マイナス以外の数字なら数値で返す
} elseif ((int)$cknumber < 0 ) {
return $cknumber; //マイナス数字なら数値で返す
} else {
return "NO-MATCH"; //数値でないならNO-MATCHで返す
}
}
}
/*------------------------------------------------------------
* 関数名 : Numchecker3()
* 返却値 : 文字列
* 引数 : 調べたい数字
* 説明 : 全角数字が指定されたらNUMで返す。数値、全角数値以外はCHRで返す
* 使用例 : Numchecker3($_POST[amount]);
*------------------------------------------------------------
*/
Function Numchecker3($cknumber){
if ($cknumber == "") { //何も無しならCHRで返す
return "CHR";
} else {
$cknumber = trim(str_replace(",","",$cknumber));
$cknumber = mb_convert_kana($cknumber,"n");
$cknumber = trim(str_replace(",","",$cknumber));
if (is_numeric($cknumber)) {
return "NUM"; //数字ならNUMで返す
} else {
return "CHR"; //数値でないならCHRで返す
}
}
}
/*------------------------------------------------------------
* 関数名 : Logout()
* 返却値 : HTML
* 引数 : なし
* 説明 : クッキーをリセットして、index.htmlに戻る
* 使用例 : Logout();
*------------------------------------------------------------
*/
function Logout(){
global $my_con,$userdata;
$strsql = "INSERT INTO loginhistory (kubun,tid,name,kengen,honbu,gyotai,tenpo,logindatetime,ip) values('OUT','".$userdata["tid"]."','".$userdata["name"]."','".$userdata["kengen"]."','".$userdata["honbuid"]."', '".$userdata["gyotaiid"]."','".$userdata["shozokuid"]."',NOW(),'".$_SERVER["REMOTE_ADDR"]."')";
$result=mysql_query($strsql,$my_con);
mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__);
/* setcookie("testmode");
setcookie("ckeselect");
setcookie("ckeken");
setcookie("ckename");
setcookie("ckehonbu");
setcookie("ckegyotai");
setcookie("cketenpo");
setcookie("ckecenter");
setcookie("ckemaker");
setcookie("ckecompanyid");
setcookie("cketradex");
setcookie("cketenponame");
setcookie("cketcenter");
setcookie("ckeshime"); */
setcookie("cketoken");
setcookie("testmode"); //テストモード切替
/* setcookie("PHPSESSID"); //締め時間設定
if (isset($_COOKIE['PHPSESSID'])) {
$sessid = $_COOKIE['PHPSESSID'];
} else if (isset($_GET['PHPSESSID'])) {
$sessid = $_GET['PHPSESSID'];
} else {
session_start();
return false;
}
if (!preg_match('/^[a-z0-9]{32}$/', $sessid)) {
return false;
}
session_start();
*/
// setcookie("PHPSESSID","14871648961978946594",time() + $timeoutmin); //アクセス防止マーカー
// setcookie("PHPSESSID"); //締め時間設定
setcookie("ckecen"); //利用センター設定
setcookie("ckecenterdayexe"); //センター発注締め処理用 15分置きにチェックする
setcookie("ckecenterpastdayexe"); //発注締め処理
/* echo "\n";
echo "\n";
echo "$systemname\n";
echo "\n";
echo "\n";
echo "\n";
echo "ログアウトしました。
\n";
echo "\n\n";
myclose();
exit;
*/
}
/*------------------------------------------------------------
* 関数名 : Eucjp()
* 返却値 : EUCに変換された文字列
* 引数 : EUCに変換する文字列
* 使用例 :
*------------------------------------------------------------
*/
Function Eucjp($chara){
mb_language("Japanese");
if ($chara == "") { //何も無しなら空文字で返す
return "";
} else {
return mb_convert_encoding(trim($chara),"UTF-8","auto");
}
}
/*------------------------------------------------------------
* 関数名 : Eucsjis()
* 返却値 : EUCに変換された文字列
* 引数 : EUCに変換する文字列
* 使用例 :
*------------------------------------------------------------
*/
Function Eucsjis($chara){
if ($chara == "") { //何も無しなら空文字で返す
return "";
} else {
return mb_convert_encoding(trim($chara),"UTF-8","SJIS-win");
}
}
/*------------------------------------------------------------
* 関数名 : Sjis()
* 返却値 : SJISに変換された文字列
* 引数 : EUC文字列
* 使用例 :
*------------------------------------------------------------
*/
Function Sjis($chara){
if ($chara == "") { //何も無しなら空文字で返す
return "";
} else {
$chara = str_replace("㈱","(株)",$chara);
return mb_convert_encoding($chara,"SJIS-win","UTF-8");
}
}
/*-------------------------------------------------------------------
* 関数名 : ShowNavBar2()
* 返却値 : PRINT出力(返却値なし)
* 引数 : 全件数、単位数、現在のページ、テーブル幅
* 説明 : ページ移動のヘッダ表示する
* ShowNavBar2($data3[0][0],20,$page,550);
*------------------------------------------------------------------*/
function ShowNavBar2($zenken,$size,$page,$width,$order) {
if (Numchecker($zenken)> 0) {
print "\n";
print "\t
\n";
#ページ数指定なしは1
if ($page == "") $page=1;
#最大頁数
$maxpage = ceil($zenken/$size);
#XX~#XXを表示
print "".($size * ($page - 1) + 1)."-";
if ($page == $maxpage) {
#最終ページだったら
print $zenken ." ";
} Else {
print ($size * $page)."";
}
#1.X頁中X頁目を表示(全X件)
#print "".$page ."/".$maxpage ."頁目を表示(全 ".$zenken." 件ありました)";
#print "(Total ".$zenken." )";
#print " of ".$zenken.""; # 1-50 of 72
print " / ".$zenken.""; # 1-50 / 72
print "\n\t
\n\t
\n";
#2.<< 前の10件 1 2 3 4 5 次の6件>>
if ($page > 1) {
#現在ページが2ページ以上だったら「前の件数」を表示
print "
";
print "|<< 前の " . $size . " 件 | ";
}
$iLoop=1;
//echo "Page.";
while ($iLoop <= $maxpage) {
if ($iLoop == $page) {
if ($maxpage>1) { //1ページしかない場合は表示しない
print "
" . $iLoop. "";
}
} Else {
print "
".$iLoop . " \n";
}
$iLoop++;
}
if ($page != $maxpage) {
#現在ページが最終ページでなかったら「次の件数」を表示
print " | ";
if ($size > ($zenken - ($page * $size))) {
#一番最後の件分の計算処理
$iNextPerPage = $zenken - ($page * $size);
print "
";
print " 次の " . $iNextPerPage . " 件>>|\n";
} Else {
#一番最後以外は、既定数分
$iNextPerPage = $size;
print "
";
print " 次の " . $iNextPerPage . " 件>>\n";
}
}
print "\n\t
\n";
print "
\n";
}
}
/*-------------------------------------------------------------------
* 関数名 : ShowNavBar3()
* 返却値 : PRINT出力(返却値なし)
* 引数 : 全件数、単位数、現在のページ、テーブル幅
* 説明 : ページ移動のヘッダ表示する
* ShowNavBar3($data3[0][0],20,$page,550);
*------------------------------------------------------------------*/
function ShowNavBar3($zenken,$size,$page,$width,$order) {
global $strShowNavBar,$strAddJavascript,$strButtonName;
if ($strShowNavBar == "") {$strShowNavBar = "更新";};
if ($strButtonName == "") {$strButtonName = "update";};
if (Numchecker($zenken)> 0) {
print "\n";
}
}
/*------------------------------------------------------------
* 関数名 : Logintitle()
* 返却値 : HTML文字列
* 引数 : なし
* 使用例 :
*------------------------------------------------------------
*/
Function Logintitle(){
}
/*------------------------------------------------------------
* 関数名 : Menu()
* 返却値 : HTML文字列
* 引数 : ページタイトル
* 使用例 :
*------------------------------------------------------------
*/
Function Menu($strpagetitle){
global $functiondata,$userdata;
if ($userdata["shozokuname"] == $userdata["name"]) {
$userloginname = "";
} else {
$userloginname = $userdata["shozokuname"];
}
$frag=2;
FunctionDataSet();
for ($pi = 0; $pi < sizeof($functiondata); $pi++) {
if(($pi>0) and ($functiondata[$pi][3] <> $kubun)) {
$main .=" \n\n";
$frag++;
}
if($functiondata[$pi][3] <> $kubun) {
$header .= " ".$functiondata[$pi][2]."\n";
$main .= "\n";
}
$kubun = $functiondata[$pi][3];
$main .= "
".$functiondata[$pi][0]."\n";
}
echo "
\n";
echo "
\n";
echo $main;
echo "
\n";
echo "
\n";
}
/*------------------------------------------------------------
* 関数名 : Menu3()
* 返却値 : HTML文字列
* 引数 : ページタイトル
* 使用例 :
*------------------------------------------------------------
*/
Function Menu3($strfilename){
global $functiondata,$userdata;
if ($userdata["shozokuname"] == $userdata["name"]) {
$userloginname = "";
} else {
$userloginname = $userdata["shozokuname"];
}
$frag=2;
FunctionDataSet();
for ($pi = 0; $pi < sizeof($functiondata); $pi++) {
if(($pi>0) and ($functiondata[$pi][3] <> $kubun)) {
$main .=" \n\n";
$frag++;
}
if($functiondata[$pi][3] <> $kubun) {
$header .= " ".$functiondata[$pi][2]."\n";
$main .= "\n";
}
$kubun = $functiondata[$pi][3];
if ($strfilename==$functiondata[$pi][1]) {
$main .= "
".$functiondata[$pi][0]."\n";
$mainfrag = $frag;
} else {
$main .= "
".$functiondata[$pi][0]."\n";
}
}
echo "
\n";
echo "
\n";
echo $header;
echo " \n";
echo "
\n";
echo $main;
echo "
\n";
echo "
\n";
echo "";
}
/*------------------------------------------------------------
* 関数名 : Menu4()
* 返却値 : HTML文字列
* 引数 : ページタイトル
* 使用例 :
*------------------------------------------------------------
*/
Function Menu4($strfilename){
global $functiondata,$userdata,$systemname;
$strfilename = substr(strrchr($strfilename, "/"), 1);
if ($userdata["shozokuname"] == $userdata["name"]) {
$userloginname = "";
} else {
$userloginname = $userdata["shozokuname"];
}
$frag=2;$j = 1;
FunctionDataSet();
for ($pi = 0; $pi < sizeof($functiondata); $pi++) {
if(($pi>0) and ($functiondata[$pi][3] <> $kubun)) {
$main .=" \n
\n";
$frag++;$j = 1;
}
if($functiondata[$pi][3] <> $kubun) {
$header .= " ".$functiondata[$pi][2]."\n";
$main .= "\n";
}
$kubun = $functiondata[$pi][3];
if ($strfilename==$functiondata[$pi][1]) {
// $main .= "
".$functiondata[$pi][0]."\n";
$main .= "
\n";
$mainfrag = $frag;
} else {
// $main .= "
".$functiondata[$pi][0]."\n";
$main .= "
\n";
}
if ($j > 4) {
$main .= " \n";$j = 0;
}
$j++;
}
echo "
\n";
echo "
▲このページの先頭へ";
echo "
";
// echo "
";
echo "
\n";
echo "
\n";
echo $header;
echo " \n";
echo "
\n";
echo $main;
echo "
\n";
echo "
\n";
echo "
";
echo "
".$systemname;
echo "
\n";
echo "\n";
}
/*------------------------------------------------------------
* 関数名 : Menu5()
* 返却値 : HTML文字列
* 引数 : ページタイトル
* 使用例 :Menu5($_SERVER['PHP_SELF']);
必要
*------------------------------------------------------------
*/
Function Menu5($strfilename){
global $functiondata,$userdata,$systemname;
$strfilename = substr(strrchr($strfilename, "/"), 1);
if ($userdata["shozokuname"] == $userdata["name"]) {
$userloginname = "";
} else {
$userloginname = $userdata["shozokuname"];
}
$frag=2;$j = 1; $iii = 0;$jjj = 0;
FunctionDataSet();
for ($pi = 0; $pi < sizeof($functiondata); $pi++) {
if(($pi>0) and ($functiondata[$pi][3] <> $kubun)) {
$frag++;$j = 1;
}
if($functiondata[$pi][3] <> $kubun) {
$iii++;
$header .= " ".$functiondata[$pi][2]."\n";
if($iii > 1) {$main .= "\n"; }
$main .= "\n";
}
$kubun = $functiondata[$pi][3];
if ($strfilename==$functiondata[$pi][1]) {
// $main .= "
".$functiondata[$pi][0]."\n";
$main .= "
".$functiondata[$pi][0]."\n";
$mainfrag = $frag;
} else {
$jjj++;
$main .= "
".$functiondata[$pi][0]."\n";
}
if ($j > 4) {
$main .= " \n";$j = 0;
}
$j++;
}
echo "
\n";
echo "
\n";
echo $header;
echo "
\n";
echo "
\n";
echo "
\n";
echo $main;
echo "
\n";
echo "
\n";
}
/*------------------------------------------------------------
* 関数名 : Honbutitle()
* 返却値 : HTML文字列
* 引数 : なし
* 使用例 :
*------------------------------------------------------------
*/
Function Honbutitle(){
}
/*------------------------------------------------------------
* 関数名 : Honbutitle2()
* 返却値 : HTML文字列
* 引数 : なし
* 使用例 :
*------------------------------------------------------------
*/
Function Honbutitle2($strpagetitle){
}
/*------------------------------------------------------------
* 関数名 : Honbutitle3()
* 返却値 : HTML文字列
* 引数 : ページタイトル、ファイル名
* 使用例 : menu4と対で使用する
*------------------------------------------------------------
*/
Function Honbutitle3($strpagetitle,$strfilename){
global $userdata,$company;
$strfilename = substr(strrchr($strfilename, "/"), 1);
if ($userdata["companyname"] ==$userdata["shozokuname"]) {
$userloginname = "";
} else {
$userloginname = $userdata["shozokuname"]." ";
}
echo "\n";
if($company == "shoku_") {
echo "

\n";
} else {
echo "
\n";
echo "
";
//if(($userdata["roleid"] <> 4) and ($userdata["roleid"] <> 7) and ($userdata["roleid"] <> 10) and ($userdata["roleid"] <> 11) ){
echo $userdata["companyname"].":";
//}
echo $userloginname.$userdata["name"]." \n";
echo "
".date("Y/m/d A G:i:s")."
\n";
echo "
\n";
$data = explode(".",$_SERVER['SCRIPT_NAME']);
$data = explode("/",$data[0]);
$functionname = dbselect("functionname","function","functionid like '".$data[2]."%'",-1,-1);
// echo "
".$strpagetitle."
\n";
echo "
".mb_convert_kana($functionname[0][0],'KV')."
\n";
}
/*------------------------------------------------------------
* 関数名 : Testecho()
* 返却値 : プリント
* 引数 : 文字列
* 説明 : Debugモードであれば出力する。
*------------------------------------------------------------
*/
function Testecho($string)
{
// グローバル宣言をする
global $HTTP_COOKIE_VARS;
if ($_SESSION[testmode]=="1") {
echo "
\n";
echo $string."\n";
}
}
/*------------------------------------------------------------
* 関数名 : Testecho2()
* 返却値 : プリント
* 引数 : 文字列,変数名
* 説明 : Debugモードであれば出力する。
*------------------------------------------------------------
*/
function Testecho2($string,$string2)
{
Testecho("SQL $".$string2."=".$string);
}
/*------------------------------------------------------------
* 関数名 : Testecho3()
* 返却値 : プリント
* 引数 : 文字列,フラグ(1:通常 2:TD 3:TH)
* 説明 : システム解析用
*------------------------------------------------------------
*/
function Testecho3($string,$flg)
{
global $userdata;
if ($userdata["kengen"] <= 20 ) {
switch($flg) {
case 1:
echo "
\n";
echo $string."\n";
break;
case 2:
echo "
".$string." | \n";
break;
case 3:
echo "
".$string." | \n";
break;
}
}
}
/*-------------------------------------------------------------------
* 関数名 : dbselectin()
* 返却値 : select結果のコード列(文字列)
* 引数 : SELECT文
* 引数 : IN 句
* 説明 : where句の IN節で入力値の値を返す。サブクエリーが使えないv4.1未満対策用、必ずカラムは1個のみ指定何も無い時は空文字返却
* 使用例 : dbselectin("SELECT code from data","and sm.shohincd in ")
*-------------------------------------------------------------------
*/
function dbselectin(
$strsql, /*select文*/
$strsql2 /*IN句*/)
{
global $my_con;
$result=@mysql_query($strsql,$my_con);
$row=@mysql_num_rows($result);
$i=0;
$wherein = $strsql2." (";
while ($i<$row) {
$data=@mysql_fetch_row($result);
$wherein .= "'".$data[0]."'";
if ($i<($row -1)) {
$wherein .= ",";
}
$i++;
}
$wherein .= ") ";
if ($row==0) $wherein =" and 1=2 ";
return $wherein;
}
/*------------------------------------------------------------
* 関数名 : Chkdate()
* 返却値 : TRUE/FALSE
* 引数 : (1) i: 調べたい日付
* 説明 : 正しい日付のみTUREとする
*------------------------------------------------------------
*/
function Chkdate($var) {
$data = explode("/",$var);
$data2 = explode("-",$var);
if ($var=="0000-00-00") return false;
if (strlen($var)<8) {
return false;
} elseif(sizeof($data)==3) {
if (checkdate($data[1],$data[2],$data[0])) {
return true;
} else {
return false;
}
} elseif (sizeof($data2)==3) {
if (checkdate($data2[1],$data2[2],$data2[0])) {
return true;
} else {
return false;
}
} elseif (checkdate(substr($var,4,2),substr($var,6,2),substr($var,0,4))) {
return true;
} else {
return false;
}
}
/*------------------------------------------------------------
* 関数名 : ChkdateB()
* 返却値 : TRUE/FALSE
* 引数 : (1) i: 調べたい日付
* 引数 : (2) i: チェックするかしないか 1する 2しない
* 説明 : 正しい日付のみTUREとする!(ChkdateB($_POST{"shomi".$y},$shomiflg)
* 商品マスタのshomiflg 0:期限管理不要 1:賞味期限 2:製造年月日管理 3:入庫日管理
*------------------------------------------------------------
*/
function ChkdateB($var,$flg) {
if ($flg==0) {
return true;
} else {
return Chkdate($var);
}
}
/*------------------------------------------------------------
* 関数名 : Chkdate2()
* 返却値 : 0:実存/1:実存無し
* 引数 : (1) i: 調べたい日付
* 説明 : 正しい日付のみTUREとする
*------------------------------------------------------------
*/
function Chkdate2($var) {
$data = explode("/",$var);
$data2 = explode("-",$var);
if ($var=="0000-00-00") return 1;
if(sizeof($data)==3) {
if (checkdate($data[1],$data[2],$data[0])) {
return 0;
} else {
return 1;
}
} elseif (sizeof($data2)==3) {
if (checkdate($data2[1],$data2[2],$data2[0])) {
return 0;
} else {
return 1;
}
} else {
if (checkdate(substr($var,4,2),substr($var,6,2),substr($var,0,4))) {
return 0;
} else {
return 1;
}
}
}
/*------------------------------------------------------------
* 関数名 : ShimeSet1()
* 返却値 : なし
* 引数 : 本日よりの日付0は本日
* 説明 : 本日の締め処理を実行しているかどうかを調べて、実行無しなら実行する。
ここで行う締め処理とは
1)ステータステーブルに締め履歴に更新し、発注データのフラグを発注締めのフラグ1に更新することである。
2)入荷予定で入庫実績確定されていないデータを未入荷で確定させる(業態マスターにセットされている時間以後に前日分は確定させる)
* および通過型の商品はサマリーして、入庫データに挿入する。
* 使用例 : ShimeSet1();
*------------------------------------------------------------
*/
function ShimeSet1($intday){
global $HTTP_POST_VARS;
global $my_con;
global $company,$companysetuzoku,$strsqldbselect;
//ステータスデータ作成
MakeStatusData($intday);
//未来日は処理しない
if($intday<=0) {
//受注データに作業日をセット
// OperateDateSet($intday);
if($intday==0){
//本日なら、現在時刻が発注締め時間を過ぎているセンターのリスト
$where = "operatedate=CURDATE() AND hacchutime <= ".date(Gi)." AND status < 2 GROUP BY gyotaiid,centerid";
$list = dbselect("st.gyotaiid,st.centerid","`".$company."gyotai` INNER JOIN `".$company."status` AS st USING ( `gyotaiid` ) ",$where,-1,-1);
} else {
//過去日なら、ステータスデータがまだ未処理となっているセンターのリスト
$where = "operatedate=DATE_ADD(CURDATE(),INTERVAL $intday DAY) GROUP BY gyotaiid,centerid";
$list = dbselect("gyotaiid,centerid","`".$company."status`",$where,-1,-1);
$strsql = "UPDATE `".$company."ordermain` as main ,`".$company."ordersheet` as sheet SET orderid_flg = 2 WHERE main.ordermainid = sheet.ordermainid and gyotaiid='".$list[$p][0]."' and centerid='".$list[$p][1]."' and orderid_flg = 1 and operatedate =DATE_ADD(CURDATE(),INTERVAL $intday DAY)";
$result=@mysql_query($strsql,$my_con);
mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__);
Testecho ("発注締めが受注明細データに実施されました。".$errcode." ".$strsql."\n
"); #debug
}
for ($p = 0; $p < sizeof($list); $p++) {
$strsql = "UPDATE `".$company."ordermain` SET checkedflg=2 WHERE gyotaiid='".$list[$p][0]."' and centerid='".$list[$p][1]."' and checkedflg=1 and operatedate =DATE_ADD(CURDATE(),INTERVAL $intday DAY)";
$result=@mysql_query($strsql,$my_con);
mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__);
Testecho ("発注締めが受注データに実施されました。".$errcode." ".$strsql."\n
"); #debug
$strsql = "UPDATE `".$company."status` SET status=1 WHERE status=0 AND gyotaiid='".$list[$p][0]."' AND centerid='".$list[$p][1]."' AND operatedate =DATE_ADD(CURDATE(),INTERVAL $intday DAY)";
$result=@mysql_query($strsql,$my_con);
mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__);
Testecho ("発注締めがステータスデータに実施されました。".$errcode." ".$strsql."\n
"); #debug
//chekedflg=1の発注締め済みデータに対して、流通型があれば、サマリーして、賞味期限0000-00-00として、センターの入庫予定データに+1日付で追加する。
$strsql = "INSERT into comeindata(honbuid,centercode,shohincd,comeindate,passqty,comeinflg,creater,createdate)
SELECT os.honbuid,os.centercode,os.shohincd,DATE_ADD(CURDATE(),INTERVAL 0 DAY),sum(os.orderqty) AS passqty ,-1 ,'SYSTEM',now()
FROM ordersheet AS os INNER JOIN shohinmaster AS sm USING(honbuid,shohincd) WHERE orderdate = CURDATE() and
checkedflg = 1 and ryutu_type = 2 GROUP BY honbuid,shohincd,centercode";
/*$result=@mysql_query($strsql,$my_con);*/
//Testecho ("通過型発注が入庫に追加されました。".$errcode." ".$strsql."\n
"); #debug
}
}
//入庫予定の未確定分の確定処理
$list2 = dbselect("companyid,hcompanyid,comeinfittime","`usecenter`",-1,-1,-1); //処理確定時間リスト
for ($p = 0; $p < sizeof($list2); $p++) {
$strsql = "UPDATE `".$list2[$p][1].$companysetuzoku."comeindata` SET comeinflg = 1 WHERE comeinflg = 0 and centerid ='".$list2[$p][0]."' and comeindate < ";
if(date(Gi) < $list2[$p][2]) {
//処理時間前は前々日まで確定
$strsql .= "DATE_ADD(CURDATE(),INTERVAL -1 DAY)";
} else {
//処理時間前は前日まで確定
$strsql .= "CURDATE()";
}
$result=@mysql_query($strsql,$my_con);
mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__);
Testecho ("入荷締めが入荷予定データに実施されました。".$errcode." ".$strsql."\n
"); #debug
}
}
/*------------------------------------------------------------
* 関数名 : ShimeSet2()
* 返却値 : なし
* 引数 : 何日前までをデータを処理するか
* 説明 : 昨日までの締め処理を実行しているかどうかを調べて、実行無しなら一日単位で過去日付から順に実行する。
* 使用例 : Centerdayset2(5);
*------------------------------------------------------------
*/
function ShimeSet2($start){
global $HTTP_POST_VARS;
global $my_con;
//昨日までのデータチェック
$start = 0 - $start;
For ($a=$start;$a<0;$a++) {
ShimeSet1($start);
}
}
/*------------------------------------------------------------
* 関数名 : PrintSelectList1()
* 返却値 : なし(プリント)
* 引数 : デフォルト値
* 説明 : 掲示非掲示をSELECTリストとしてPRINTする。デフォルトを選択できる。
* 使用例 : PrintSelectList1(1);
*------------------------------------------------------------
*/
function PrintSelectList1($defaultnum){
echo "
";
}
/*------------------------------------------------------------
* 関数名 : IntervalDay()
* 返却値 : 経過日付または日付
* 引数 : (1) int:対象となる月の経過月数
* : (2) int:返却希望日(1:月初 2:月末)
* : (3) int:返却希望型(1:日付 2:経過日数)
* 説明 : 対象の月の月初の日付、末日の日付または、月初の本日からの経過日数または月末の経過日数を返却する。
* 使用例 : IntervalDay(-1,2,1); 前月の月末の経過日数
*------------------------------------------------------------
*/
Function IntervalDay(
$target,
$intday,
$inttype){
//$target = -9 ; //対象となる月 前月なら-1
if ($intday==1) {
//月初
$targetmonth = $target." month";
} else {
//月末は対象月+1
$targetmonth2 = $target." month";
$target = $target + 1; //対象となる次の月
$targetmonth = $target." month";
}
if ($inttype==1) {
if ($intday==1) {
//対象月の1日
//echo strtotime ($targetmonth);
return(date("Y-m-01",strtotime (date("Y-m-01")." ".$targetmonth)));
/* if($target < -11) {
$y = floor($target / 12)." year";
return(date("Y-m-01",strtotime (strtotime (date("Y-m-01")." ".$targetmonth)." ".$y)));
} else {
return(date("Y-m-01",strtotime (date("Y-m-01")." ".$targetmonth)));
}*/
} else {
//対象月の末日 +1日した年月日から-1日する
//echo strtotime ($targetmonth);echo "
";
//return(date("Y-m-d",strtotime("-1 day",strtotime (date("Y/m/1",strtotime ($targetmonth)))));
//return(date("Y/m/1",strtotime ($targetmonth)));
//$a = date("Y/m/1",strtotime ($targetmonth));
//return(date("Y-m-d",strtotime("-1 day",strtotime ($a))));
//return(date("Y-m-d",strtotime("-1 day",strtotime (date("Y/m/1",strtotime ($targetmonth))))));
return(date("Y-m-t",(strtotime (date("Y-m-01")." ".$targetmonth2))));
}
} else {
//対象となる月の1日
$month1 = (int)date("m",strtotime ($targetmonth));
//本日
$month2 = (int)date("m",strtotime ("now"));
if ($month1<=$month2) {
//前の月のほうが月数が小さい X月1日の経過日付は? X月前の1日の通産日-現在の通産日=マイナスの何日前
$passday = date("z",strtotime(date("Y/m/1",strtotime ($targetmonth)))) - date("z");
} else {
//前の月のほうが月数が大きい X月1日の経過日付は? X月前の1日の通産日-(現在の通産日+X月前の年の一年間(12/31)の通産日)=マイナスの何日前
$passday = date("z",strtotime(date("Y/m/1",strtotime ($targetmonth)))) - date("z") - date("z",strtotime(date("Y/12/31",strtotime ("-1 year"))));
}
if($target < -11) {
$passday -= 365;
}
if ($intday==1) {
//対象月の1日
return($passday -1);
} else {
//対象月の末日は、対象次月の日より1日少ない
return(($passday-1));
}
}
}
/*------------------------------------------------------------
* 関数名 : IntervalDate()
* 返却値 : 差分日数 日付1が新しいならプラス値
* 引数 : (1) str:日付1
* : (2) str:日付2
* 説明 : 日付1と日付2の日数差分を返却する。日付1-日付2
* 使用例 : IntervalDate("2005-1-1","2004-1-1");
* 使用例 : IntervalDate("2005/1/1","2004/1/1");
*------------------------------------------------------------
*/
Function IntervalDate(
$strdate1,
$strdate2){
$strdate1 = str_replace("-","/",$strdate1);
$strdate2 = str_replace("-","/",$strdate2);
return((date("U",strtotime(date($strdate1))) - date("U",strtotime(date($strdate2))))/43200);
}
/*------------------------------------------------------------
* 関数名 : PrintCheckbox()
* 返却値 : なし
* 引数 : (1) array:表示名称、コードの2次元リスト
* : (2) array:コードの1次元リスト デフォルトはarray("0,"0","0")の形で渡す
* : (2) str:変数名
* : (2) str:タイプ(1:チェックリストボックス表示、2:リスト値)
* 説明 : テーブルリストと、回答リストの2つを渡し、チェックリストボックスか、値をプリントする。ただしリストはコード昇順であること。
* 使用例 : PrintCheckbox($codetabledata,$code,"code",2); 温度帯の表示
* 使用例 : IPrintCheckbox($codetabledata,array("1","2","3"),"code",1);
*------------------------------------------------------------
*/
function PrintCheckbox(
$list,
$selectedlist,
$name,
$type){
$n = sizeof($list);
$m = sizeof($selectedlist);
for ($i = $j = 0; $i < $n; $i++) {
if($list[$i][1] == $selectedlist[$j]) {
$str = "checked";
$str2 .= $list[$i][0]." ";
$j++;
} else {
$str = "";
}
if ($type==1) {
echo "
".$list[$i][0]."
";
}
}
if ($type==2) {
echo $str2;
}
}
/*------------------------------------------------------------
* 関数名 : UpdateShohinLevel()
* 返却値 : なし
* 引数 : (1) str:対象本部会社名
* 引数 : (2) int:対象テーブル1=所属商品マスター、2=商品マスター
* 説明 : 対象の本部会社の商品順位リストから1個づつ、1=所属商品マスター、2=商品マスターの順位カラムを更新する。
* 使用例 : UpdateShohinLevel($company,1);
*------------------------------------------------------------
*/
function UpdateShohinLevel(
$targetcompany,$targettable){
global $my_con; //DB接続
if($targettable == 1) {
$strsql = "SELECT sum( shukkaqty) as qty, shozokuid, shohincd FROM `".$targetcompany."salesdetail` WHERE createdate > DATE_ADD(CURDATE(),INTERVAL -180 DAY) GROUP BY shozokuid, shohincd";
$result=mysql_query($strsql,$my_con);
Testecho ("順位設定
".$strsql); #debug
$i=1;
while ($data = mysql_fetch_array($result)){
$strsql = "UPDATE `".$targetcompany."shozokushohin` SET poplevel2 = '".$data["qty"]."' WHERE shozokuid='".$data["shozokuid"]."' and shohincd = '".$data["shohincd"]."'";
$result2=mysql_query($strsql,$my_con);
Testecho ("順位設定$i
".$strsql); #debug
$i++;
}
} else {
/* $strsql = "SELECT sum( shukkaqty) as qty, shohincd FROM `".$targetcompany."salesdetail` WHERE createdate > DATE_ADD(CURDATE(),INTERVAL -180 DAY) GROUP BY shohincd";
$result=mysql_query($strsql,$my_con);
$i=1;
while ($data = mysql_fetch_array($result)){
$strsql = "UPDATE `".$targetcompany."shohinmaster` SET poplevel = '".$data["qty"]."' WHERE shohincd = '".$data["shohincd"]."'";
$result2=mysql_query($strsql,$my_con);
Testecho ("順位設定$i
".$strsql); #debug
$i++;
}
*/
}
}
/*------------------------------------------------------------
* 関数名 : DatabaseAllBackup()
* 返却値 : なし
* 引数 : なし
* 説明 : 接続先のデータベースを全てバックアップする。
* 使用例 : DatabaseAllBackup();
*------------------------------------------------------------
*/
function DatabaseAllBackup(){
//include "class_mysqldump.php";includeされていること
global $my_con,$datalocation,$hostname,$databasenaming,$hostid,$hostpass,$company,$userdata;
myclose();
//バックアップファイル名
$filename = $datalocation."backupdata/allbackupdata_".$company.date("Ymd-Gis").".txt";
//データバックアップ
$command = "mysqldump --default-character-set=binary ".$databasenaming." --host=".$hostname." --user=".$hostid." --password=".$hostpass." > ".$filename;
system($command);
if($databasenaming == "nagasedb2") {
$filename2 = $datalocation."backupdata/nagase.txt";
system("cp -f ".$filename." ".$filename2 );
}
//バックアップクラス作成
//$dump = new MySQLDump($hostname, $hostid,$hostpass,2);
//構造作成
//$dump->dumpDatabaseStructure($databasenaming, $filename);
//データバックアップ
//$dump->dumpDatabaseData($databasenaming, $filename);
myopen();
//バックアップ履歴に保存する
$filesize = filesize($filename);
$strsql ="INSERT INTO backuphistory(executedate,filename,filesize,creater,createdate) VALUES (CURDATE(),'$filename',$filesize,'".$userdata["tid"]."',now())";
$result=@mysql_query($strsql,$my_con);
Testecho($strsql); //debug
}
/*------------------------------------------------------------
* 関数名 : LeadTimeShift()
* 返却値 : 1日曜有り、0日曜無し
* 引数 : リード日、納品日
* 説明 : //リードタイム中に日曜が含まれていたら、リードタイム日を一日延ばすために1を返す
* 使用例 : $orderda += LeadTimeShift($leadtime);
*------------------------------------------------------------
*/
Function LeadTimeShift($startday,$endday) {
//納品日と発注日の間に日曜が含まれていたら、発注日を1日マイナスにする。リードタイム日を一日延ばす。
for ($iii= $startday; $iii <=$endday; $iii++) {
$weeday = (int)date("w",strtotime ("".$iii." day")); //0sun,1Mon,2Tue...6Sat 納品の曜日
if ((int)$weeday==0) {
return(-1);
}
}
return(0);
}
/*------------------------------------------------------------
* 関数名 : CodeMaker()
* 返却値 : 暗号値
* 引数 : 1:ID用POST変数(週変り)、2:PASS用POST変数 3:PASS用受け取りPOST変数(1時間ズレ) 4~5:日変わり変数(日で変る) 6~8:ダミーランダム変数(毎回違う)
* 説明 : ログイン用暗号変数を作成する。
* 使用例 : CodeMaker(1)
* POSTするときCodeMaker(1)を変数名とする; 受け取るとき$_POST{CodeMaker(1)}
* POSTするときCodeMaker(2)を変数名とする; 受け取るとき$_POST{CodeMaker(2)}か$_POST{CodeMaker(3)}で受け取る
*------------------------------------------------------------
*/
function CodeMaker($type){
srand((double)microtime()*1000000);
$init1 = rand (12509,91955);
$init2 = rand (20659,81533);
$initword = array("XLS","RAT","ABS","CTC","LAX",
"OCT","DVD","JAN","NPN","ROW",
"KIX","FUK","PRO","NBA","JAL",
"NYC","BOB","CDR","ETC","ALC",
"NRT","SWF","EPS","STS","TYO",
"PNG","IMG","POP","FRI","SUN");
$identify2 = 28093 + $init2;
$identify = $initword[($init1%30)].$identify2;
$init0= 15 + (date("w",strtotime ("+6 day")))*6 ;
$weekdate = date("w",strtotime ("+0 day")).date("Ymd");
$word = $initword[(int)$weekdate%30].$weekdate;
$id = "z".substr(md5($word), 3, 10);
//echo $id;
$timecode1 = date("G") * $init0; //時刻を表す数字
$timecode2 = (date("G")-1) * $init0; //1時間前の時刻を表す数字 受信時
$pass = substr(crypt($word,$initword[date("w",strtotime ("+5 day"))]), 3, 7);
$daypass = crc32($initword[date("w",strtotime ("+2 day"))]);
$daypass2 = substr(crc32($initword[date("w",strtotime ("+2 day"))]),3,10);
//mt_srand(microtime()*100000);
$post1 = substr(md5($timecode1.$pass),3,10);
$post2 = substr(md5($timecode2.$pass),3,10);
$daypass = substr(md5($daypass),3,10);
$daypass2 = substr(md5($daypass2),3,10);
Switch($type) {
case 1:
return $id;break;
case 2:
return $post1;break;
case 3:
return $post2;break;
case 4:
return $daypass;break;
case 5:
return $daypass2;break;
case 6:
return $identify;break;
case 7:
return $identify2;break;
case 8:
return $rndpass;break;
default:
return $rndpass2;break;
//$_POST{$id}; $_POST{CodeMaker(1)}
//$_POST{$timecode1.$pass}; $_POST{CodeMaker(2)}
//$_POST{$timecode2.$pass}; $_POST{CodeMaker(3)}
}
}
/*------------------------------------------------------------
* 関数名 : CentercodeRestoration101()
* 返却値 : なし
* 引数 : なし
* 説明 : ordertableに101以外のセンターコードが入っていた場合は、101でないレコードのデータをLOGに出し
* 使用例 : CentercodeRestoration101();
*------------------------------------------------------------
*/
function CentercodeRestoration101(){
global $my_con,$datalocation; //DB接続
//オーダーテーブルのセンターコードに101でないものが入っていないかを
//確認する。101でない数を確認。
$data101 = dbselect("count(orderid)","ordersheet","centercode!=101",-1,-1);
$datacount = (int)$data101[0][0];
if ($datacount==0) {
//件数はゼロなので対処無し
//exit;
} else {
//件数は有り対処開始
//バックアップログ取得
$strsql = "SELECT * INTO OUTFILE '".$datalocation."backupdata/CenterCodeError".$_COOKIE[ckehonbu]."-".$_COOKIE[cketradex]."-".date("YmdGi").".csv' FIELDS TERMINATED BY ',' optionally enclosed by '\"' FROM ordersheet where centercode!='101'";
$result=@mysql_query($strsql,$my_con);
Testecho($strsql); //debug
//センターコード101以外を101に強制変更
$strsql = "UPDATE ordersheet SET centercode=101,centername='SIMS共配センター' where centercode!=101";
$result=@mysql_query($strsql,$my_con);
Testecho($strsql); //debug
//メール送信
$msg2 = "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n";
$msg2 .= "SIMSアラート インフォメーション \n";
$msg2 .= "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n";
$msg2 .= "注文テーブル ordersheetにセンターコードが101だったデータが\n";
$msg2 .= "$datacount 件ありました。\n";
$msg2 .= "このため、強制的に101に変更する注文締処理を行いました。\n詳細はログに記録されました。\n";
$msg2 .="━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n";
$msg2 = mb_convert_encoding($msg2, "iso-2022-jp", "UTF-8"); //メール送信コードに変換
$fromto = "FROM:\"TRADEX-SYSTEM\"
\nBCC:websystem@yahoo.co.jp\nX-mailer:PHP4";
mail("kmogi@eship.co.jp","SYSTEM AUTO ALART",$msg2,$fromto);
}
}
/*------------------------------------------------------------
* 関数名 : mysql_sql_log()
* 返却値 : なし
* 引数 : (1) str:実行SQL
* : (2) int:実行結果影響行
* : (3) str:実行ファイル名
* 説明 : 更新実行されたSQLを保管する
* 使用例 : mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__);
* mysql_queryの実行後にエラーではない句に投入する
*------------------------------------------------------------
*/
function mysql_sql_log($strsql,$affected_rows,$page)
{
global $datalocation,$databasenaming,$userdata;
$loc = $datalocation."sql_logs/".substr($databasenaming,0,7)."_".$userdata[tid]."_".date("md").".sql";
$fp = @fopen($loc, "a");
$strsql = ereg_replace("[\t|\r|\n]"," ",$strsql);
$strsql = str_replace("now()","'".date("Y-m-d G:i:s")."'",$strsql);
$strsql = str_replace("CURDATE()","'".date("Y-m-d")."'",$strsql);
// echo $strsql;
//now()はCURDATE()はSQLを入れ替えしておく
//SQL 時間 影響行(結果更新無しは0) スクリプト実行ファイル
// echo __LINE__.$loc."\n
";
system("chmod 666 ".$loc);
fputs($fp, $strsql.";\t".date("Y-m-d G:i:s")."\t".$affected_rows."\t".$page."\n");
fclose($fp);
return(0);
}
/*------------------------------------------------------------
* 関数名 : mysql_sql_log2()
* 返却値 : なし
* 引数 : (1) str:実行SQL(SELECT文)
* : (2) str:実行ファイル名
* 説明 : データ取得実行されたSQLを保管する
* 使用例 : mysql_sql_log2($strsql,$_SERVER['SCRIPT_NAME'].":".__LINE__);
* mysql_queryの実行後にエラーではない句に投入する
*------------------------------------------------------------
*/
function mysql_sql_log2($strsql,$page)
{
global $datalocation,$databasenaming,$userdata;
//$fp = @fopen($datalocation.date("Ymd-G").".sql", "a") or die("Error!!n");
/* $loc = $datalocation."sql_logs/sql_".$databasenaming."_".date("Ymd")."_select_".$userdata[tid].".sql";
$fp = @fopen($loc, "a");
$strsql = ereg_replace("[\t|\r|\n]"," ",$strsql);
$strsql = str_replace("now()","'".date("Y-m-d G:i:s")."'",$strsql);
$strsql = str_replace("CURDATE()","'".date("Y-m-d")."'",$strsql);
//now()はCURDATE()はSQLを入れ替えしておく
//SQL 時間 影響行(結果更新無しは0) ユーザーID スクリプト実行ファイル
fputs($fp, $strsql.";\t".date("Y-m-d G:i:s")."\t".$page."\n");
fclose($fp);
*/
return(0);
}
/*------------------------------------------------------------
* 関数名 : printlotnum()
* 返却値 : Print文
* 引数 : (1) str:ログナンバー
* 説明 : 渡されたログナンバーにハイフン付でプリントする
* 使用例 : printlotnum('10250167');
*------------------------------------------------------------
*/
function printlotnum($lotnum)
{
if ((int)$lotnum==0) {
return(0);
} else {
print (int)($lotnum/10000);
print "-";
print (int)(($lotnum % 10000) / 100);
print "-";
print (int)(($lotnum % 10000) % 100);
return(0);
}
}
/*------------------------------------------------------------
* 関数名 : returnlotnum()
* 返却値 : ハイフン付のロット番号
* 引数 : (1) str:ログナンバー
* 説明 : 渡されたログナンバーにハイフン付でプリントする
* 使用例 : returnlotnum('10250167');
*------------------------------------------------------------
*/
function returnlotnum($lotnum)
{
if ((int)$lotnum==0) {
return(0);
} else {
$str = (int)($lotnum/10000);
$str .= "-";
$str .= (int)(($lotnum % 10000) / 100);
$str .= "-";
$str .= (int)(($lotnum % 10000) % 100);
return($str);
}
}
/*------------------------------------------------------------
* 関数名 : locationcheck()
* 返却値 : 1:実在 0:実在しない
* 引数 : ロケーション番号
* 説明 : ロケーションが実在するかをチェックする
* 使用例 : locationcheck('240-05-05');
*------------------------------------------------------------
*/
function locationcheck($location)
{
//ロケーションテーブルを確認する
$locationdata = dbselect("count(loccode)","location","loccode='".$location."'",-1,-1);
return($locationdata[0][0]);
}
/*------------------------------------------------------------
* 関数名 : lookuplocation()
* 返却値 : ロケーション:実在する場合 空文字:実在しない or 固定ロケでない
* 引数 : 商品コード,センターコード、予備
* 説明 : 商品コードより固定ロケーションを返却
* 使用例 : lookuplocation($data["shohincd"],$data["centercode"],1);
*------------------------------------------------------------
*/
function lookuplocation($scd,$cd,$data)
{
global $userdata;
//商品マスタを参照する
$locationdata = dbselect("loccode","shohinlocation","honbuid = '".$userdata["honbuid"] ."' and shohincd='".$scd."' and centercode='".$cd."' and freeloc=1",-1,-1);
return($locationdata[0][0]);
}
/*------------------------------------------------------------
* 関数名 : PrintShomi()
* 返却値 : なし(HTML)
* 引数 : 商品マスタのshomiflg値
* 引数 : 簡易表示無し1,簡易表示有り0 SJISフル表記2 フル表記B3 echo無し 4
* 説明 : 商品の賞味期限管理方法を画面に表示する
* 用法 :
*------------------------------------------------------------
*/
function PrintShomi(
$flg,$flg2)
{
if ($flg2==0) {
Switch($flg) {
case 1:
echo "賞";
break;
case 2:
echo "製";
break;
case 3:
echo "入";
break;
case 4:
echo "出";
break;
default:
echo "?";
}
} elseif ($flg2==1) {
Switch($flg) {
case 1:
echo "賞味期限";
break;
case 2:
echo "製造日";
break;
case 3:
echo "入荷日";
break;
case 4:
echo "出荷日";
break;
default:
echo "不明";
}
} elseif ($flg2==2) {
Switch($flg) {
case 1:
echo "\"".Sjis("賞味期限")."\",";
break;
case 2:
echo "\"".Sjis("製造日")."\",";
break;
case 3:
echo "\"".Sjis("入荷日")."\",";
break;
case 4:
echo "\"".Sjis("出荷日")."\",";
break;
default:
echo "\"".Sjis("不明")."\",";
}
} elseif ($flg2==3) {
Switch($flg) {
case 1:
echo "賞味期限";
break;
case 2:
echo "製造日";
break;
case 3:
echo "入荷日";
break;
case 4:
echo "納品日";
break;
default:
echo "不明";
}
} elseif ($flg2==4) {
Switch($flg) {
case 1:
return "賞味期限";
break;
case 2:
return "製造日";
break;
case 3:
return "入荷日";
break;
case 4:
return "納品日";
break;
default:
return "不明";
}
} elseif ($flg2==5) {
Switch($flg) {
case 1:
return "賞";
break;
case 2:
return "製";
break;
case 3:
return "入";
break;
case 4:
return "納";
break;
default:
return "不明";
}
}
}
/*------------------------------------------------------------
* 関数名 : PrintRyutuType()
* 返却値 : なし(HTML)
* 引数 : 在庫型1 通過型2
* 説明 : 商品流通型を画面に表示する
* 用法 :
*------------------------------------------------------------
*/
function PrintRyutuType(
$flg,$flg2)
{
Switch($flg) {
case 1:
echo "DC";
break;
case 2:
echo "TC";
break;
default:
echo "不明";
}
}
/*------------------------------------------------------------
* 関数名 : PrintComeinFlg()
* 返却値 : なし(プリント)
* 引数 : 変数名、デフォルト
* 説明 : 入荷区分をSELECTリストとしてPRINTする。デフォルトを選択できる。
* 使用例 : PrintComeinFlg("kubun".$j",$data[kubun]);
*------------------------------------------------------------
*/
function PrintComeinFlg($flg1,$flg2){
echo "\n";
}
/*------------------------------------------------------------
* 関数名 : PrintComeinFlg2()
* 返却値 : なし(プリント)
* 引数 : 変数名、デフォルト
* 説明 : 入荷区分をSELECTリストとしてPRINTする。デフォルトを選択できる。
* 使用例 : PrintComeinFlg2($data[kubun]);
*------------------------------------------------------------
*/
function PrintComeinFlg2($flg1){
Switch($flg1) {
case 1:
echo "通常入荷\n";
break;
case 2:
echo "緊急入荷\n";
break;
case 3:
echo "入荷訂正";
break;
case 4:
echo "直送";
break;
default:
echo "その他";
}
}
/*------------------------------------------------------------
* 関数名 : DataSet()
* 返却値 : なし(変数代入)
* 引数 : なし
* 説明 : 業態、センター、サプライヤー、納品先のデータをセットする
* 使用例 : DataSet();
*------------------------------------------------------------
*/
function DataSet(){
global $company,$centerdata,$gyotaidata,$makerdata,$tenpodata,$companydata,$codedata,$deliverydata,$userdata,$strsqldbselect,$settingdata,$branddata,$strsqldbselect;
//センター
if ($userdata["kengen"]==30) {
$centerdata = dbselect("c.companyname,c.companyid,u.centershimetimeDC,u.centershimetimeTC,c.postcode,c.address1,c.address2,c.tel,c.fax,c.address3,u.ordershimetime","company as c,usecenter as u","c.companyid = u.companyid AND hcompanyid = '".$userdata["hcompanyid"]."' AND c.companyid = '".$userdata["companyid"]."'","c.companyid",-1);
$userdata["centerid"] = $userdata["companyid"];
} else {
if($userdata["centerid"] <> "") {
if(strpos($userdata["centerid"], "'") === false) {
$centerdata = dbselect("c.companyname,c.companyid,u.centershimetimeDC,u.centershimetimeTC,c.postcode,c.address1,c.address2,c.tel,c.fax,c.address3,u.ordershimetime","company as c,usecenter as u","c.companyid = u.companyid AND hcompanyid = '".$userdata["hcompanyid"]."' AND c.companyid = '".$userdata["centerid"]."'","c.companyid",-1);
} else {
$centerdata = dbselect("c.companyname,c.companyid,u.centershimetimeDC,u.centershimetimeTC,c.postcode,c.address1,c.address2,c.tel,c.fax,c.address3,u.ordershimetime","company as c,usecenter as u","c.companyid = u.companyid AND u.companyid in (".$userdata["centerid"].")","c.companyid",-1);
}
} else {
$centerdata = dbselect("c.companyname,c.companyid,u.centershimetimeDC,u.centershimetimeTC,c.postcode,c.address1,c.address2,c.tel,c.fax,c.address3,u.ordershimetime","company as c,usecenter as u","c.companyid = u.companyid AND hcompanyid = '".$userdata["hcompanyid"]."'","c.companyid",-1);
}
}
if($company == "ha_") {//自由が丘限定
if($userdata["centerid"] <> "") {
$centerdata = dbselect("centername,centercd,'0','1',postcode,address1,address2,tel,fax","v_center","centercd in (".$userdata["centerid"].")",-1,-1);
} else {
$centerdata = dbselect("centername,centercd,'0','1',postcode,address1,address2,tel,fax","v_center",-1,-1,-1);
}
}
//配送業者
if ($userdata["kengen"]==60) {
$deliverydata = dbselect("companyname,companyid,namedetail","company","companykind=60 AND companyid='".$userdata["companyid"]."'","companyid",-1);
$userdata["deliveryid"] = $userdata["companyid"];
} else {
$deliverydata = dbselect("companyname,companyid,namedetail","company","companykind=60","companyid",-1);
}
//サプライヤーリスト
if($company == "yks_") { $stradd = " and length(companyid) = 5 ";}
if ($userdata["kengen"] == 40) { //サプライヤーは自分だけ
$makerdata = dbselect("companyname,companyid,tel,fax","company","companykind=40 AND companyid='".$userdata["companyid"]."'",-1,-1);
//ユーザー情報セット
$userdata["supplyerid"] = $userdata["companyid"];
} else {
if($userdata["supplyerid"] <> "") {
$makerdata = dbselect("companyname,companyid,tel,fax","company","companykind=40 AND companyid='".$userdata["supplyerid"]."'". $stradd,"companyid",-1);
} else if($userdata["supplyerid2"] <> "") {
$makerdata = dbselect("companyname,companyid,tel,fax","company","companykind=40 AND companyid in(".$userdata["supplyerid2"].")". $stradd,"companyid",-1);
} else {
$makerdata = dbselect("companyname,companyid,tel,fax","company","companykind=40". $stradd,"companyid",-1);
}
}
//納品先データの取得
if ($userdata["kengen"] == 50) {
$tenpodata = dbselect("shozokuname,shozokuid,gyotaiid,centerid,brand,picktimes","`".$company."shozokumaster`","shozokuid='".$userdata["shozokuid"]."'","shozokuid",-1);
//ユーザー情報セット
$userdata["centerid"] = $tenpodata[0][3];
//ブランドはすでにセットされている $userdata["brand"] = $tenpodata[0][4];
$branddata = dbselect("cname,code","`".$company."code`","codekind = 105 and code ='".$tenpodata[0][4]."'","code",-1);
} else {
if($userdata["brand"] <> "") {
$branddata = dbselect("cname,code","`".$company."code`","codekind = 105 and code in (".$userdata["brand"].")","code",-1);
$tenpodata = dbselect("shozokuname,shozokuid,gyotaiid,centerid,route,picktimes","`".$company."shozokumaster`","shozokuid > 0 and brand in (".$userdata["brand"].")","shozokuid",-1);
} else {
$branddata = dbselect("cname,code","`".$company."code`","codekind = 105","code",-1);
$tenpodata = dbselect("shozokuname,shozokuid,gyotaiid,centerid,route,picktimes","`".$company."shozokumaster`","shozokuid > 0","shozokuid",-1);
}
}
//会社データの取得
$companydata = dbselect("companyname,companyid","company",-1,"companyid",-1);
$userdata["honshaname"] = GetList($companydata,$userdata["hcompanyid"]); //本社名称
//業態リスト
if ($userdata["kengen"]==30) { //センター
$gyotaidata = dbselect("gname,g.gyotaiid,hacchutime,nohinweek","`".$company."gyotai` as g,usecenter as u","g.gyotaiid = u.gyotaiid AND hcompanyid = '".$userdata["hcompanyid"]."' AND companyid = '".$userdata["companyid"]."'","gyotaiid",-1);
} elseif ($userdata["kengen"]==50) { //納品先
$gyotaidata = dbselect("gname,g.gyotaiid,hacchutime,nohinweek","`".$company."gyotai` as g,`".$company."shozokumaster` as s","g.gyotaiid = s.gyotaiid AND shozokuid = '".$userdata["shozokuid"]."'","gyotaiid",-1);
} elseif ($userdata["gyotaiid"] <> "") {
$gyotaidata = dbselect("gname,g.gyotaiid,hacchutime,nohinweek","`".$company."gyotai` as g","gyotaiid='".$userdata["gyotaiid"]."'","gyotaiid",-1);
} else {
$gyotaidata = dbselect("gname,g.gyotaiid,hacchutime,nohinweek","`".$company."gyotai` as g",-1,"gyotaiid",-1);
}
//温度帯
$codedata = dbselect("cname,code","`".$company."code`","codekind=1","code",-1);
//設定データ
$data = dbselect("settingid,setting_flg","`setting`",-1,-1,-1);
$i = 0;
while ($i < count($data)) {
$settingdata[$data[$i][0]] = $data[$i][1];
$i++;
}
}
/*------------------------------------------------------------
* 関数名 : FunctionDataSet()
* 返却値 : 変数代入
* 引数 : ユーザー名(COOKIE)
* 説明 : ユーザーが使える画面名、プログラム名をセットする
* 使用例 : FunctionDataSet();
*------------------------------------------------------------
*/
function FunctionDataSet(){
global $functiondata,$userdata,$strsqldbselect;
$functiondata = dbselect("functionname,pgname,kubunname,kubun","userrole as u,rolefunction as r,function as f","u.roleid=r.roleid AND r.functionid=f.functionid AND u.userroleid='".$userdata["userroleid"]."' AND dispmenu = '1'","kubun,level,f.functionid",-1);
mysql_sql_log($strsqldbselect,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__);
}
/*------------------------------------------------------------
* 関数名 : FunctionCheck()
* 返却値 : True/False
* 引数 : 機能ID、ユーザー名(COOKIE)
* 説明 : ユーザーが使える画面名、プログラム名をセットする
* 使用例 : FunctionCheck('0100');
*------------------------------------------------------------
*/
function FunctionCheck($funcid){
/* $functiondata = dbselect("functionname,pgname","userrole,rolefunction,`function`","userrole.roleid=rolefunction.roleid AND rolefunction.functionid=function.functionid AND tid='".$userdata["kengen"]."' AND rolefunction.functionid='".$funcid."'","kubun,level,f.functionid",-1);
if (sizeof($functiondata)==1) {
return True;
} else {
return False;
}
*/
}
/*------------------------------------------------------------
* 関数名 : PrintStatusArrow()
* 返却値 : なし(HTML)
* 引数 : (1) int: ステップ総数
* : (2) int: 実行ステップ数
* 説明 : 進捗状況を矢印のHTMLで出力
*------------------------------------------------------------
*/
function PrintStatusArrow(
$total,
$selected)
{
for ($i = 1; $i <= $total; $i++) {
if ($i<=$selected) {
echo "
";
} else {
echo "
";
}
}
}
/*------------------------------------------------------------
* 関数名 : PrintHikiateStatus()
* 返却値 : なし(HTML)
* 引数 : (1) int: ステップ総数
* 引数 : (2) int: statusテーブルのstatus
* 説明 : 文字で出力
*------------------------------------------------------------
*/
function PrintHikiateStatus(
$total,
$selected)
{
PrintStatusArrow($total,$selected);
echo "\n";
Switch($selected) {
case 0:
echo "受注中\n";
break;
case 1:
echo "1. 受注締め済・受注承認待ち\n";
break;
case 2:
echo "2. 受注承認済・仮引当待ち\n";
break;
case 3:
echo "3. 仮引当済・欠品対応待ち\n";
break;
case 4:
echo "4. 欠品対応済・出荷確定待ち\n ";
break;
case 5:
echo "5. 出荷確定済・引当確定待ち\n";
break;
case 6:
echo "6. 引当確定済\n";
break;
default:
echo "7. 出荷確定済\n";
}
}
/*------------------------------------------------------------
* 関数名 : MakeStatusData()
* 返却値 : なし
* 引数 : (1) int: 本日からの日付0は本日
* 説明 : $company.statusデータを作成する
*------------------------------------------------------------
*/
function MakeStatusData(
$int)
{
global $my_con,$company; //DB接続
$int = (int)$int;
//2日前からデータを作成する
for($str="", $pi=-4; $pi <= $int; $pi++) {
$str ="operatedate=DATE_ADD(CURDATE(),INTERVAL $pi DAY)";
//データがなければステータスデータにデータ挿入
$statusdata = dbselect("a.gyotaiid,centerid,picktimes","(SELECT gyotaiid,centerid,picktimes FROM `".$company."shozokumaster` group by centerid,gyotaiid,picktimes ) as a left join (SELECT operatedate,statusid,gyotaiid,centerid,picktimes FROM `".$company."status` where operatedate = DATE_ADD(CURDATE(),INTERVAL $pi DAY) ) as b using(gyotaiid,centerid,picktimes)"," b.statusid is null",-1,-1);
For ($zi = 0 ;$zi < sizeof($statusdata); $zi++) {
$strsql ="INSERT INTO `".$company."status` (operatedate,gyotaiid,centerid,picktimes) values(DATE_ADD(CURDATE(),INTERVAL $pi DAY),'".$statusdata[$zi][0]."','".$statusdata[$zi][1]."','".$statusdata[$zi][2]."')";
$result=mysql_query($strsql,$my_con);
Testecho ($strsql); #debug
mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__);
}
}
}
/*------------------------------------------------------------
* 関数名 : DataUpdate()
* 返却値 : なし
* 引数 : (1) str: 対象テーブル名
* 引数 : (2) str: キー項目名
* 引数 : (3) str: キー
* 引数 : (4) str: 対象項目名
* 引数 : (5) str: 更新内容
* 説明 : 対象テーブルの指定キーの対象項目を更新する valueには''を使用時につける
* 使用例 : DataUpdate("$company.status","statusid",$_POST[id],"grosstime","now()");
*------------------------------------------------------------
*/
function DataUpdate(
$table,
$key,
$keyvalue,
$columun,
$value)
{
global $my_con; //DB接続
$strsql ="UPDATE `$table` SET `$columun` = $value WHERE `$key`=$keyvalue LIMIT 1";
$result=mysql_query($strsql,$my_con);
Testecho ($strsql); #debug
mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__);
}
/*------------------------------------------------------------
* 関数名 : OperateDateSet()
* 返却値 : なし
* 引数 : 本日よりの日付0は本日
* 説明 : 発注データに作業日をセットする
* 使用例 : OperateDateSet(0);
*------------------------------------------------------------
*/
function OperateDateSet($intday){
global $HTTP_POST_VARS;
global $my_con;
global $company;
$intday2 = $intday + 1;
$strsql = "UPDATE `".$company."ordermain` SET operatedate=DATE_ADD(CURDATE(),INTERVAL $intday DAY) WHERE operatedate is null AND deliverdate=DATE_ADD(CURDATE(),INTERVAL $intday2 DAY)";
$result=@mysql_query($strsql,$my_con);
mysql_sql_log($strsql,mysql_affected_rows(),$_SERVER['SCRIPT_NAME'].":".__LINE__);
// Testecho ("作業日セットが実施されました。".$errcode." ".$strsql."\n
"); #debug
}
/*------------------------------------------------------------
* 関数名 : PrintMsg()
* 返却値 : echo文
* 引数 : エラーメッセージ,OKメッセージ,横幅(pix)
* 説明 : エラーメッセージを色つきで表示する
* 使用例 : PrintMsg($msgerr,$msgok,200);
*------------------------------------------------------------
*/
function PrintMsg($err,$ok,$width){
if(strlen($err)>0) {
echo "
".$err."
";
} elseif(strlen($ok)>0) {
echo "".$ok."
";
}
}
/*------------------------------------------------------------
* 関数名 : PrintSelectListB()
* 返却値 : echo文(SELECT)
* 引数 : (1) i: プルダウンリストの配列
* [i][0]表示文字列[i][1]value コード値は2番目
* : (2) i: リストの中でどれをSelectedにするか(配列要素番号)
* : (3) i: 行頭スペース数
* 説明 : 日付、日付、件数の配列からSELECT句を生成する 値は本日よりの経過日数
* 使用例 : PrintSelectListB($comeindata,$_POST[chgday],0); $comeindataはSELECT date,date,count(id)の配列
配列3番目の件数は無くても良い
* 生成例 :
*------------------------------------------------------------
*/
function PrintSelectListB(
$list,
$selected,
$spaceNo )
{
for($space=" ", $pi=1; $pi < $spaceNo; $pi++) {
$space .= " ";
}
$n = sizeof($list);
for ($pi = 0; $pi < $n; $pi++) {
$interval = getdate_diff($list[$pi][1],date("Y-m-d"));
$str = $space."\n";
echo $str;
}
}
/*------------------------------------------------------------
* 関数名 : date_diff()
* 返却値 : array 連想配列
* 引数 : (1) str:"YYYY-MM-DD"
* : (2) str:"YYYY-MM-DD"
* 説明 : (1)(2)の日付差分を返す PHP5.3より標準機能として装備するため5.3>ver用
* 使用例 : $interval = date_diff($list[$pi][1],date("Y-m-d")); 現在との時差
$interval["dayes"] : (int)5
*------------------------------------------------------------
*/
function xdate_diff($d1, $d2){
$d1 = (is_string($d1) ? strtotime($d1) : $d1);
$d2 = (is_string($d2) ? strtotime($d2) : $d2);
$diff_secs = abs($d1 - $d2);
$base_year = min(date("Y", $d1), date("Y", $d2));
$diff = mktime(0, 0, $diff_secs, 1, 1, $base_year);
$result = array(
"years" => date("Y", $diff) - $base_year,
"months_total" => (date("Y", $diff) - $base_year) * 12 + date("n", $diff) - 1,
"months" => date("n", $diff) - 1,
"days_total" => floor($diff_secs / (3600 * 24)),
"days" => date("j", $diff) - 1,
"hours_total" => floor($diff_secs / 3600),
"hours" => date("G", $diff),
"minutes_total" => floor($diff_secs / 60),
"minutes" => (int) date("i", $diff),
"seconds_total" => $diff_secs,
"seconds" => (int) date("s", $diff)
);
$result["days"] = $result["days_total"];
if (($d1 - $d2)<0) {
$result["days"] = -$result["days_total"];
$result["days_total"] = -$result["days_total"];
$result["months"] = -$result["months"];
$result["hours"] = -$result["hours"];
}
return $result;
}
/*------------------------------------------------------------
* 関数名 : getdate_diff()
* 返却値 : array 連想配列
* 引数 : (1) str:"YYYY-MM-DD"
* : (2) str:"YYYY-MM-DD"
* 説明 : (1)(2)の日付差分を返す PHP5.3より標準機能として装備するため5.3>ver用
* 使用例 : $interval = getdate_diff($list[$pi][1],date("Y-m-d")); 現在との時差
$interval["dayes"] : (int)5
*------------------------------------------------------------
*/
function getdate_diff($d1, $d2){
$d1 = (is_string($d1) ? strtotime($d1) : $d1);
$d2 = (is_string($d2) ? strtotime($d2) : $d2);
$diff_secs = abs($d1 - $d2);
$base_year = min(date("Y", $d1), date("Y", $d2));
$diff = mktime(0, 0, $diff_secs, 1, 1, $base_year);
$result = array(
"years" => date("Y", $diff) - $base_year,
"months_total" => (date("Y", $diff) - $base_year) * 12 + date("n", $diff) - 1,
"months" => date("n", $diff) - 1,
"days_total" => floor($diff_secs / (3600 * 24)),
"days" => date("j", $diff) - 1,
"hours_total" => floor($diff_secs / 3600),
"hours" => date("G", $diff),
"minutes_total" => floor($diff_secs / 60),
"minutes" => (int) date("i", $diff),
"seconds_total" => $diff_secs,
"seconds" => (int) date("s", $diff)
);
$result["days"] = $result["days_total"];
if (($d1 - $d2)<0) {
$result["days"] = -$result["days_total"];
$result["days_total"] = -$result["days_total"];
$result["months"] = -$result["months"];
$result["hours"] = -$result["hours"];
}
return $result;
}
/*------------------------------------------------------------
* 関数名 : InputItem()
* 返却値 : なし(HTML出力)
* 引数 : A.int:出力データ区分(1センター/2納品先/3サプライヤー/4温度帯/5配送/6会社/7業態/8商品/9ブランド)
B.int:自動サブミット(1ON/2OFF)
C.str:FORM名(-1:sww(デフォルト)/自動サブミットON時はその値)
D.int:選択してください表記(1ON/2OFF)
E.int:デフォルト値(1.POST使用/2.変数渡し)
F.str:デフォルト値(-1:なし/デフォルト値=2のとき)
G.int:全ての表示(1:有り/2:無し/3:選択して下さい表示)
* 説明 : INPUTのブロックをHTML出力する
* 使用例 :
InputItem(1,1,-1,2,1,-1,1); //センター
InputItem(2,1,-1,2,2,$shozokuid,1); //納品先
InputItem(3,1,-1,2,1,-1,1); //サプライヤー
InputItem(4,1,-1,2,1,-1,1); //温度帯
*------------------------------------------------------------
*/
function InputItem(
$datakubun,
$autosubmit,
$formname,
$pleaseselect,
$defalutkubun,
$defaltvalue,
$dispall){
global $company,$HTTP_POST_VARS,$centerdata,$centerdataAll,$gyotaidata,$makerdata,$tenpodata,$companydata,$codedata,$deliverydata,$userdata,$shohindata,$branddata;
//A.出力データ区分(1センター/2納品先/3サプライヤー/4温度帯/5配送/6会社/7業態)
Switch($datakubun) {
case 1:
if($company == "ha_") {
$strtitle = "在庫場所";
} else {
$strtitle = "センター";
}
$strpostname = "center";
$setdata = $centerdata;
if(sizeof($centerdataAll) > 1) {$setdata = $centerdataAll; }
if($userdata["kengen"] == 30) {
echo "";
return;
} elseif(sizeof($setdata) == 1) {
echo "";
return;
}
break;
case 2:
$strtitle = "納品先";
$strpostname = "tenpo";
$setdata = $tenpodata;
if ($userdata["kengen"] == 50) {
echo "";
return;
} elseif(($userdata["kengen"] > 30 ) and (sizeof($tenpodata) == 1)) {
echo "";
return;
}
break;
case 3:
$strtitle = "サプライヤー";
$strpostname = "maker";
$setdata = $makerdata;
if ($userdata["kengen"] == 40) {
echo "";
return;
} elseif(sizeof($makerdata) == 1) {
echo "";
return;
}
break;
case 4:
$strtitle = "温度帯";
$strpostname = "code";
$setdata = $codedata;
break;
case 5:
$strtitle = "配送";
$strpostname = "deliver";
$setdata = $deliverydata;
if ($userdata["kengen"] == 50) {
echo "";
return;
}
break;
case 6:
$strtitle = "会社";
$strpostname = "com";
$setdata = $companydata;
break;
case 7:
$strtitle = "業態";
$strpostname = "gyotai";
$setdata = $gyotaidata;
break;
case 8:
$strtitle = "商品";
$strpostname = "shohincd";
$setdata = $shohindata;
break;
case 9:
$strtitle = "ブランド";
$strpostname = "brand";
$setdata = $branddata;
if ($userdata["kengen"] == 50) {
echo "";
return;
} elseif(sizeof($tenpodata) == 1) {
echo "";
return;
}
break;
default:
break;
}
//E.F.デフォルト値(1.POST使用/2.変数渡し)
if($defalutkubun == 1) {
$defaltvalue = $_POST{$strpostname};
} else {
//$defaltvalue = $defaltvalue;
}
//HTML出力開始
echo " \n";
echo " $strtitle
\n";
//C.FORM名(-1:sww/自動サブミットON時はその値)
if($formname == -1) {
$formname = "sww";
}
//納品先リストだけ抽出機能有り
if ($datakubun == 2) {
echo "\n";
} elseif($datakubun == 8) {
echo "\n";
}
//B.自動サブミット(1ON/2OFF)
echo " \n";
echo " \n";
}
/*------------------------------------------------------------
* 関数名 : showSearchbox()
* 返却値 : HTML出力
* 引数 : (1) str:デフォルト表示の文字Value
(2) int:自動サブミット(1ON/2OFF)
(3) str:FORM名(-1:sww(デフォルト)/自動サブミットON時はその値)
* 説明 : 商品検索のINPUT BOXを出力
* 使用例 : showSearchbox($sw,1,-1); //商品検索
*------------------------------------------------------------
*/
function showSearchbox(
$sw,
$autosubmit,
$formname){
//3.FORM名(-1:sww/自動サブミットON時はその値)
if($formname == -1) {
$formname = "sww";
}
global $intEDITon; //1半角英数のみ 0:全文字OK
if($intEDITon == 1) { $strHTML = " class = \"EDIT\" ";}
echo "\t\n";
echo "\t品番・品名
\n";
//2.自動サブミット(1ON/2OFF)
echo "\t\n";
} else {
echo ">\n";
}
echo "\t\n";
}
/*------------------------------------------------------------
* 関数名 : showSearchbox3()
* 返却値 : HTML出力
* 引数 : (1) str:デフォルト表示の文字Value
(2) int:自動サブミット(1ON/2OFF)
(3) str:FORM名(-1:sww(デフォルト)/自動サブミットON時はその値)
(4) int:半角指定IME(1ON/2OFF)
(5) int:TAB INDEX番号指定 (1,2,3,4)
(6) str:変数
(7) str:文言
(8) 予備
(9) 予備
* 説明 : 商品検索のINPUT BOXを出力
* 使用例 : showSearchbox3($sw,2,-1,1,1,"searchword","品番",-1,-1); //商品検索
*------------------------------------------------------------
*/
function showSearchbox3(
$sw,
$autosubmit,
$formname,
$intIME,
$intTab,
$strHensu,
$strSTR,
$int1,
$int2){
//3.FORM名(-1:sww/自動サブミットON時はその値)
if($formname == -1) {
$formname = "sww";
}
if($intIME == 1) { $strHTML = " class = \"EDIT\" ";}
echo "\t\n";
echo "\t".$strSTR."
\n";
//2.自動サブミット(1ON/2OFF)
echo "\t\n";
} else {
echo ">\n";
}
echo "\t\n";
}
/*------------------------------------------------------------
* 関数名 : showColorBox()
* 返却値 : HTML出力
* 引数 : (1) str:デフォルト表示の文字Value
(2) int:自動サブミット(1ON/2OFF)
(3) str:FORM名(-1:sww(デフォルト)/自動サブミットON時はその値)
* 説明 : カラー検索のINPUT BOXを出力
* 使用例 : showColorBox($swcolor,1,-1); //商品検索
*------------------------------------------------------------
*/
function showColorBox(
$sw,
$autosubmit,
$formname){
global $intEDITon; //1半角英数のみ 0:全文字OK
if($intEDITon == 1) { $strHTML = " class = \"EDIT\" ";}
//3.FORM名(-1:sww/自動サブミットON時はその値)
if($formname == -1) {
$formname = "sww";
}
echo "\t\n";
echo "\tカラー
\n";
//2.自動サブミット(1ON/2OFF)
echo "\t\n";
} else {
echo ">\n";
}
echo "\t\n";
}
/*------------------------------------------------------------
* 関数名 : showSearchBotton()
* 返却値 : HTML出力
* 引数 : (1) str:ボタン文字(-1:デフォルト'検索表示'/またはその文字)
(2) str:FORM名(-1:sww(デフォルト)/自動サブミットON時はその値)
(3) str:予備
* 説明 : 商品検索の検索ボタンを出力
* 使用例 : showSearchBotton(-1,-1,-1); //検索ボタン
*------------------------------------------------------------
*/
function showSearchBotton(
$str1,
$formname,
$str3){
if($str1 == -1) {
$str1 = "検索";
}
//3.FORM名(-1:sww)
if($formname == -1) {
$formname = "sww";
}
echo "\t\n";
echo "\t
\n";
echo "\t";
echo "\t\n";
}
/*------------------------------------------------------------
* 関数名 : FunctionUseCheck
* 返却値 : true - 使用可能
* false - 使用不可
* 引数 : (1) str:機能ID
* 説明 : その機能IDが利用ユーザーが使用可能かをチェックする
* 使用例 : FunctionUseCheck('0100');
*------------------------------------------------------------
*/
function FunctionUseCheck($strfunction)
{
global $userdata,$strsqldbselect;
$data = dbselect("count(rolefunctionid)","`rolefunction`","roleid = '".$userdata["roleid"]."' and functionid like '".$strfunction."' and companyid = '".$userdata["hcompanyid"]."'",-1,-1);
if ($data[0][0] == 0) {
return false;
} else {
return true;
}
}
function FunctionUseCheck2(){
global $userdata,$strsqldbselect;
$test = explode(".",$_SERVER['SCRIPT_NAME']);
$test = explode("/",$test[0]);
if(!FunctionUseCheck($test[2])) {
echo "";
echo "";
title();
echo "";
echo "";
Logout();
echo "ログアウトします。
同一IDを同時に使用した、または一定時間が経過しました。
このままお待ちください。";
echo "not available ";
echo $_SERVER['SCRIPT_NAME'].$test[2];
var_dump($userdata);
echo "TKN:".$_SESSION[cketoken]." AND SSID:".$_COOKIE["PHPSESSID"];
echo "";
echo "";
exit;
}
}
/*------------------------------------------------------------
* 関数名 : MailSendMsg
* 返却値 : なし(メール送信)
* 引数 : (1) str:メール本文
* 引数 : (2) str:メールタイトル
* 引数 : (33) int:1:送信
* 説明 : メールをログインユーザーに送信する
* 使用例 : MailSendMsg($stremail,"注文確認メール",1);//メール送信
*------------------------------------------------------------
*/
function MailSendMsg(
$stremail,
$subject,
$flg)
{
global $userdata;
if($flg == 1) {
//$strmsg = "".strftime ("%G/%m/%d (%a) %T",time())."\n";
//$strmsg .= $stremail;
$fromname = mb_encode_mimeheader(mb_convert_encoding("LogiGate自動",'UTF-8','auto'));
//$fromto = "FROM:$fromname\nBCC:info-logigate@eship.co.jp\nX-mailer:PHP5";
//mb_send_mail($userdata["email"],$subject.strftime("%G/%m/%d",time()),$strmsg,$fromto);
MailSendMessage($stremail,$subject,$userdata["email"],$fromname,"info-logigate@eship.co.jp",1);
}
}
/*------------------------------------------------------------
* 関数名 : MailSendMessage
* 返却値 : なし(メール送信)
* 引数 : (1) str:メール本文
* 引数 : (2) str:メールタイトル
* 引数 : (3) str:メール送信先メールアドレス
* 引数 : (4) str:メール送信元名称
* 引数 : (5) str:メール送信元メールアドレス
* 引数 : (6) int:1:予備フラグ
* 説明 : メールをログインユーザーに送信する
* 使用例 : MailSendMessage($strmassage,$subject,$userdata["email"],$fromname,"info-logigate@eship.co.jp",1);
*------------------------------------------------------------
*/
function MailSendMessage(
$stremail,
$subject,
$toaddress,
$fromname,
$fromaddress,
$flg)
{
global $bccmailaddress;
$strmsg = "".strftime ("%G/%m/%d (%a) %T",time())."\n";
$strmsg .= $stremail;
$fromto = "FROM:$fromname<".$fromaddress.">\nBCC:info-logigate@eship.co.jp".$bccmailaddress."\nX-mailer:PHP5";
mb_send_mail($toaddress,$subject.strftime("%G/%m/%d",time()),$strmsg,$fromto);
}
/*------------------------------------------------------------
* 関数名 : gengo
* 返却値 : 元号年
* 引数 : (1) int:西暦
* 引数 : (2) int:1:年のみ、2:元号付き
* 説明 : 西暦より元号を作成する
* 使用例 : Gengo(date("Y",1);
*------------------------------------------------------------
*/
function Gengo(
$intyear,
$intflg){
$gengo = array("平成", "昭和", "大正", "明治");
$gengo_year = array(1988, 1925, 1911, 1867);
foreach($gengo_year as $key=>$val) {
if ($intyear > $val) {
if($intflg == 1) {
return($intyear - $val);
} else {
return $gengo[$key].($intyear - $val)."年";
}
}
}
return 0;
}
/*------------------------------------------------------------
* 関数名 : sqlinjection
* 返却値 : インジェクション対策された値
* 引数 : (1) str:POSTされた値
* 引数 : (2) str:予備
* 説明 : POSTされた値をインジェクション対策する
* 使用例 : sqlinjection($_POST["memo"],-1);
*------------------------------------------------------------
*/
function sqlinjection(
$string,
$yobi)
{
$string = trim($string);
$string = str_replace("'","’",$string);
$string = str_replace("\"","",$string);
$string = str_replace("%","%",$string);
$string = htmlspecialchars($string);
$string = stripslashes($string);
$string = mysql_real_escape_string($string);
return $string;
}
/*------------------------------------------------------------
* 関数名 : showStaffSearchbox()
* 返却値 : HTML出力
* 引数 : (1) str:デフォルト表示の文字Value
(2) int:自動サブミット(1ON/2OFF)
(3) str:FORM名(-1:sww(デフォルト)/自動サブミットON時はその値)
* 説明 : セラピスト検索のINPUT BOXを出力
* 使用例 : showStaffSearchbox($sw,1,-1); //商品検索
*------------------------------------------------------------
*/
function showStaffSearchbox(
$sw,
$autosubmit,
$formname){
global $userdata,$staff_data;
//3.FORM名(-1:sww/自動サブミットON時はその値)
if($formname == -1) {
$formname = "sww";
}
echo "\t\n";
if($userdata["roleid"] == 7) {
echo "\tセラピストコード
\n";
} else {
echo "\tセラピストコード/氏名
\n";
}
//2.自動サブミット(1ON/2OFF)
echo "\t\n";
} else {
echo ">\n";
}
if((sizeof($staff_data) > 1 ) and ($userdata["roleid"] <> 7) and ($sw <> "")) {
echo " \n";
}
echo "\t\n";
}
/*------------------------------------------------------------
* 関数名 : PrintSelectQty()
* 返却値 : なし
* 引数 : (1) int: 開始数
* 引数 : (2) int: 終了数
* : (3) str: サブミットするとび先のPHPファイル名 -1はサブミットしない
* : (4) int: 選ばれたデフォルトの数(整数)0.5除く
* : (5) str: 表示する文字列
* : (6) str: 変数名
* : (7) int: 入力切替有無(0:TEXT固定 1:プルダウン固定 2:スマホはプルダウン・パソコンテキスト入力)
* : (8) int: tabindex番号
* : (9) str: FORM名称
* : (10)str: 単位
* : (11)str: 端数 1:許可 1以外不許可
* 説明 : 数値入力フィールドを作成する。切り替え指定でTEXTまたは数字プルダウンを表示する。
* 使用例 : PrintSelectQty(0,20,-1,"","","id".$j."[1]",2,($j *2),"","個",-1)
*------------------------------------------------------------
*/
function PrintSelectQty(
$intstart,
$intend,
$filename,
$selected,
$strword,
$strname,
$intInputkubun,
$intTab,
$strformname,
$strunit,
$intHasuu){
global $smartphone;
//入力切替
if($intInputkubun == 2) {
if($smartphone == 2) {
$intInputkubun = 1; //smartphone
} else {
$intInputkubun = 0; //PC
}
}
echo $strword."\n";
//入力
if($intInputkubun == 0 ) {
//TEXT
if ($filename == -1){
//サブミット有無
echo "".$strunit."\n";
} else {
echo "".$strunit."\n";
}
} else {
//SELECT
if ($filename == -1){
//サブミット有無
echo "