[CUSTOMER, ORDER] Added ERP integration

This commit is contained in:
Hyojin Ahn 2026-01-13 10:31:35 -05:00
parent 06718fc388
commit a16ab81b7e
12 changed files with 1139 additions and 206 deletions

View File

@ -5,6 +5,8 @@
require_once getenv("DOCUMENT_ROOT")."/assets/conf.inc.php"; require_once getenv("DOCUMENT_ROOT")."/assets/conf.inc.php";
require_once getenv("DOCUMENT_ROOT")."/assets/dbCon.php"; require_once getenv("DOCUMENT_ROOT")."/assets/dbCon.php";
include getenv("DOCUMENT_ROOT")."/include/session_include.php";
include_once getenv("DOCUMENT_ROOT")."/lib/erp_api.php";
error_reporting(E_ALL); error_reporting(E_ALL);
ini_set('display_errors', '1'); ini_set('display_errors', '1');
@ -371,7 +373,31 @@ class API extends CONF {
public function updtPoint(){ public function updtPoint(){
try { try {
qry("UPDATE tbl_customer SET c_geolat=".$_POST['lat'].", c_geolon=".$_POST['lon']." WHERE c_uid=".(int)$_POST['id']); qry("UPDATE tbl_customer SET c_geolat=".$_POST['lat'].", c_geolon=".$_POST['lon'].", c_is_transfer='N' WHERE c_uid=".(int)$_POST['id']);
// ====================
// Integration to ERP
// ====================
$erp = new ErpApi();
try {
$columns = array();
$values = array();
$columns[] = "c_accountno";
$columns[] = "c_geolat";
$columns[] = "c_geolon";
$values[] = $_POST['accountno'];
$values[] = $_POST['lat'];
$values[] = $_POST['lon'];
$lguserid = $_SESSION['ss_UID'];
$erp->updateCustomerFromMis($columns, $values, $lguserid);
// 성공 시 c_is_transfer='Y'
qry("UPDATE tbl_customer SET c_is_transfer = 'Y' WHERE c_uid = ".(int)$_POST['id']);
} catch (Exception $e) {
// 여기서는 아무것도 안함.
}
$this->response($this->json(array("markerIndex"=>$_POST['marker_index'], "lat"=>$_POST['lat'], "lon"=>$_POST['lon'], "name"=>$_POST['name'], "qty"=>$_POST['qty'], "property"=>$_POST['property'])), 200); $this->response($this->json(array("markerIndex"=>$_POST['marker_index'], "lat"=>$_POST['lat'], "lon"=>$_POST['lon'], "name"=>$_POST['name'], "qty"=>$_POST['qty'], "property"=>$_POST['property'])), 200);
} catch(Exception $e) { } catch(Exception $e) {
@ -384,9 +410,34 @@ class API extends CONF {
try { try {
qry("UPDATE tbl_customer qry("UPDATE tbl_customer
SET c_location='".addslashes($_POST['location'])."', SET c_location='".addslashes($_POST['location'])."',
c_comment_ri='".addslashes($_POST['comment'])."' c_comment_ri='".addslashes($_POST['comment'])."',
c_is_transfer='N'
WHERE c_uid=".(int)$_POST['id']); WHERE c_uid=".(int)$_POST['id']);
// ====================
// Integration to ERP
// ====================
$erp = new ErpApi();
try {
$columns = array();
$values = array();
$columns[] = "c_accountno";
$columns[] = "c_location";
$columns[] = "c_comment_ri";
$values[] = $_POST['accountno'];
$values[] = addslashes($_POST['location']);
$values[] = addslashes($_POST['comment']);
$lguserid = $_SESSION['ss_UID'];
$erp->updateCustomerFromMis($columns, $values, $lguserid);
// 성공 시 c_is_transfer='Y'
qry("UPDATE tbl_customer SET c_is_transfer = 'Y' WHERE c_uid = ".(int)$_POST['id']);
} catch (Exception $e) {
// 여기서는 아무것도 안함.
}
$this->response($this->json(array("result"=>"success")), 200); $this->response($this->json(array("result"=>"success")), 200);
} catch(Exception $e) { } catch(Exception $e) {
$error = array($e->getMessage()); $error = array($e->getMessage());
@ -956,6 +1007,7 @@ class API extends CONF {
try { try {
$sqShortInfo = qry("SELECT $sqShortInfo = qry("SELECT
c_uid, c_uid,
c_accountno,
c_name, c_name,
c_paymenttype, c_paymenttype,
c_comment_ri, c_comment_ri,
@ -1015,6 +1067,7 @@ class API extends CONF {
$result = array( $result = array(
"id" => $_POST['id'], "id" => $_POST['id'],
"accountno" => $rstShortInfo['c_accountno'],
"name" => $rstShortInfo['c_name'], "name" => $rstShortInfo['c_name'],
"payment_type" => $rstShortInfo['c_paymenttype'], "payment_type" => $rstShortInfo['c_paymenttype'],
"paymentstring" => $d_paystatusSTR, "paymentstring" => $d_paystatusSTR,
@ -1055,38 +1108,93 @@ class API extends CONF {
if ($rstCheckOrder['rowcnt'] > 0) { if ($rstCheckOrder['rowcnt'] > 0) {
$this->response($this->json(array("msg"=>"This order already exists.", "c_index"=>$_POST['c_index'], "c_return"=>"0")), 200); $this->response($this->json(array("msg"=>"This order already exists.", "c_index"=>$_POST['c_index'], "c_return"=>"0")), 200);
return;
} }
// 고객 정보 조회
// 오늘 날짜 $customer_uid = (int)$_POST['customer_uid'];
$today = new DateTime(date("Y-m-d")); $sqCus = qry("SELECT * FROM tbl_customer WHERE c_uid = {$customer_uid}");
//$today = new DateTime('20240425'); if (db_num_rows($sqCus) === 0) {
// 지정한 날짜 throw new Exception("Customer not found");
$searchDate = new DateTime($_POST['orderdate']); }
// 두 날짜 간 차이 계산 $customer = fetch_array($sqCus);
$interval = $today->diff($searchDate);
//$estquantity = (c_fullquantity - c_fullquantitydaily + (".(int)$interval->days." * c_fullquantitydaily)); // 예상 수량 계산
$today = new DateTime(date("Y-m-d"));
qry("INSERT INTO tbl_daily ( $searchDate = new DateTime($_POST['orderdate']);
d_orderdate, d_driveruid, d_customeruid, d_accountno, $interval = $today->diff($searchDate);
d_name, d_paymenttype, d_cycle, d_rate, d_form_eu, d_form_corsia, d_maincontainer, d_container, d_location, d_address, $days = (int)$interval->days;
d_city, d_postal, d_oil_2y, d_oil_1y, d_oil_0y, d_fullcycle, d_fullcycleforced, d_fullcycleflag, $estquantity = max(
d_lastpickupdate, d_lastpickupquantity, d_lastpaiddate, 0,
d_estquantity, ($customer['c_fullquantity'] - $customer['c_fullquantitydaily']) + ($days * $customer['c_fullquantitydaily'])
d_createruid, d_createddate, d_status) );
SELECT '".$_POST['orderdate']."', '".$_POST['driveruid']."', c_uid, c_accountno, // insert into tbl_daily
c_name, c_paymenttype, c_paymentcycle, c_rate, c_form_eu, c_form_corsia, c_maincontainer, c_container, c_location, c_address, $c_name = addslashes($customer['c_name']);
c_city, c_postal, 0, 0, 0, c_fullcycle, c_fullcycleforced, c_fullcycleflag, qry("
c_lastpickupdate, c_lastpickupquantity, c_lastpaiddate, INSERT INTO tbl_daily (
IFNULL((c_fullquantity - c_fullquantitydaily + (".(int)$interval->days." * c_fullquantitydaily)),0), d_orderdate, d_driveruid, d_customeruid, d_accountno,
'".$_POST['d_createruid']."', '".date('YmdHis')."', 'A' d_name, d_paymenttype, d_cycle, d_rate,
FROM tbl_customer d_estquantity, d_createruid, d_createddate, d_status
WHERE c_uid=".(int)$_POST['customer_uid']); ) VALUES (
'{$_POST['orderdate']}',
'{$_POST['driveruid']}',
{$customer_uid},
'{$customer['c_accountno']}',
'{$c_name}',
'{$customer['c_paymenttype']}',
'{$customer['c_paymentcycle']}',
'{$customer['c_rate']}',
{$estquantity},
'{$_POST['d_createruid']}',
'".date("YmdHis")."',
'A'
)
");
qry("UPDATE tbl_customer SET c_orderdate='".$_POST['orderdate']."', c_orderflag = 1 WHERE c_uid = ".(int)$_POST['customer_uid']); // d_uid 가져오기
$sqId = qry("SELECT MAX(d_uid) AS d_uid FROM tbl_daily");
$this->response($this->json(array("msg"=>"Order has been successfully added.", "c_index"=>$_POST['c_index'])), 200); $rtId = fetch_array($sqId);
$d_uid = $rtId['d_uid'];
// ====================
// Integration to ERP
// ====================
$columns = array();
$columns[] = "d_ordertype";
$columns[] = "d_orderdate";
$columns[] = "d_driveruid";
$columns[] = "d_accountno";
$columns[] = "d_paymenttype";
$columns[] = "d_cycle";
$columns[] = "d_rate";
$columns[] = "d_status";
$columns[] = "d_estquantity";
// Data
$values = array();
$values[] = "N";
$values[] = $_POST['orderdate'];
$values[] = $_POST['driveruid'];
$values[] = $customer['c_accountno'];
$values[] = $customer['c_paymenttype'];
$values[] = $customer['c_paymentcycle'];
$values[] = $customer['c_rate'];
$values[] = "A";
$values[] = $estquantity;
//
$erp = new ErpApi();
$erp->createDailyOrderFromMis($columns, $values, $_POST['d_createruid']);
// 성공시
qry("UPDATE tbl_daily SET d_is_transfer = 'Y' WHERE d_uid = ".(int)$d_uid);
// customer 상태 업데이트 (이건 ERP에서는 트리거로)
qry("UPDATE tbl_customer SET c_orderdate='".$_POST['orderdate']."', c_orderflag = 1 WHERE c_uid = ".(int)$_POST['customer_uid']);
//
$this->response($this->json(array("msg"=>"Order has been successfully added.", "c_index"=>$_POST['c_index'], "c_return"=>1)), 200);
return;
} catch(Exception $e) { } catch(Exception $e) {
$error = array($e->getMessage()); $error = array($e->getMessage());
$this->response($this->json($error), 417); $this->response($this->json($error), 417);
@ -1111,31 +1219,58 @@ class API extends CONF {
AND d_status = 'F' AND d_status = 'F'
ORDER BY d_orderdate DESC LIMIT 1"); ORDER BY d_orderdate DESC LIMIT 1");
$rstrmInfo = fetch_array($sqrmInfo); $rstrmInfo = fetch_array($sqrmInfo);
// 완료(F) 데이터가 없으면 customer 마지막값 초기화
if (empty($rstrmInfo)) {
qry("UPDATE tbl_customer SET c_lastpickupdate = '', c_lastpickupquantity = '', c_lastpaiddate = '' WHERE c_uid = '".$_POST['id']."'");
} else {
// tbl_daily 의 마지막 데이터중 cash 이고 paid 면 c_lastpaiddate
// 그렇지 않으면 다시 tbl_daily 에서 cash 이고 paid 인 마지막 데이터를 가져옴. 없으면 null 처리
if (($rstrmInfo['d_paymenttype'] ?? '') === "CA" && ($rstrmInfo['d_paystatus'] ?? '') === "P") {
$addQry = ", c_lastpaiddate = '".($rstrmInfo['d_visitdate'] ?? '')."' ";
} else {
$sqrmInfoLast = qry("SELECT
d_visitdate
FROM tbl_daily
WHERE
d_customeruid = '".$_POST['id']."'
AND d_status = 'F'
AND d_paymenttype = 'CA' AND d_paystatus = 'P'
ORDER BY d_orderdate DESC LIMIT 1");
$rstrmInfoLast = fetch_array($sqrmInfoLast);
// tbl_daily 의 마지막 데이터중 cash 이고 paid 면 c_lastpaiddate if (!empty($rstrmInfoLast) && !empty($rstrmInfoLast['d_visitdate'])) {
// 그렇지 않으면 다시 tbl_daily 에서 cash 이고 paid 인 마지막 데이터를 가져옴. 없으면 null 처리 $addQry = ", c_lastpaiddate = '".$rstrmInfoLast['d_visitdate']."' ";
if ($rstrmInfo['d_paymenttype']== "CA" && $rstrmInfo['d_paystatus'] == "P") $addQry = ", c_lastpaiddate = '".$rstrmInfo['d_visitdate']."' "; } else {
else { $addQry = ", c_lastpaiddate = '' ";
$sqrmInfoLast = qry("SELECT }
d_visitdate }
FROM tbl_daily // last pickup 업데이트
WHERE qry("UPDATE tbl_customer
d_customeruid = '".$_POST['id']."' SET c_lastpickupdate='".$rstrmInfo['d_orderdate']."', c_lastpickupquantity = '".$rstrmInfo['d_quantity']."' ". $addQry ."
AND d_status = 'F' WHERE c_uid = '".$_POST['id']."'");
AND d_paymenttype = 'CA' AND d_paystatus = 'P' }
ORDER BY d_orderdate DESC LIMIT 1");
$rstrmInfoLast = fetch_array($sqrmInfoLast); // ====================
// Integration to ERP
// 나머지는 trigger 처리
// ====================
$columns = array();
$values = array();
$columns[] = "d_accountno";
$columns[] = "d_orderdate";
$columns[] = "d_status";
$values[] = $_POST['accountno'];
$values[] = $_POST['orderdate'];
$values[] = "D";
$lguserid = $_POST['createruid'];
// ERP로 전송 (payload 내부에서 자동 매핑)
$erp = new ErpApi();
$erp->updateDailyOrderFromMis($columns, $values, $lguserid);
if ($rstrmInfoLast && $rstrmInfoLast["d_visitdate"] == !'') $addQry = ", c_lastpaiddate = '".$rstrmInfoLast['d_visitdate']."' "; // 성공 시 플래그 & 로그 (지웠음)
else $addQry = ", c_lastpaiddate = '' "; // $jdb->uQuery("tbl_daily", ["d_is_transfer"], ["Y"], " WHERE d_uid = '$d_uid'");
}
//
qry("UPDATE tbl_customer
SET c_lastpickupdate='".$rstrmInfo['d_orderdate']."', c_lastpickupquantity = '".$rstrmInfo['d_quantity']."' ". $addQry ."
WHERE c_uid = '".$_POST['id']."'");
$this->response($this->json(array("msg"=>"Order has been successfully removed.", "c_index"=>$_POST['c_index'])), 200); $this->response($this->json(array("msg"=>"Order has been successfully removed.", "c_index"=>$_POST['c_index'])), 200);
} catch(Exception $e) { } catch(Exception $e) {
$error = array($e->getMessage()); $error = array($e->getMessage());
@ -1255,10 +1390,16 @@ class API extends CONF {
"d_note" => $_POST['note'] "d_note" => $_POST['note']
); );
if ($_POST['paymenttype'] == 'CA') $paystatusSTR = $_POST['paystatus']; if ($_POST['paymenttype'] == 'CA') $paystatusSTR = $_POST['paystatus'];
else $paystatusSTR = ""; else $paystatusSTR = "";
if(strlen($_POST['uid']) > 0) { //update // for integration
$d_uid = null;
$columns = array();
$values = array();
//
if(strlen($_POST['uid']) > 0) { //update
qry("UPDATE tbl_daily qry("UPDATE tbl_daily
SET d_orderdate = '".$_POST['visitdate']."', SET d_orderdate = '".$_POST['visitdate']."',
d_driveruid = '".$_POST['driveruid']."', d_driveruid = '".$_POST['driveruid']."',
@ -1271,7 +1412,8 @@ class API extends CONF {
d_visit = 'Y', d_visit = 'Y',
d_visitdate = '".$_POST['visitdate']."000000', d_visitdate = '".$_POST['visitdate']."000000',
d_payeename = '".$_POST['payeename']."', d_payeename = '".$_POST['payeename']."',
d_status='F' d_status='F',
d_is_transfer='N'
WHERE d_uid='".(int)$_POST['uid']."'"); WHERE d_uid='".(int)$_POST['uid']."'");
$sqNote = qry("SELECT n_uid FROM tbl_note WHERE n_dailyuid = '".(int)$_POST['uid']."'"); $sqNote = qry("SELECT n_uid FROM tbl_note WHERE n_dailyuid = '".(int)$_POST['uid']."'");
@ -1294,7 +1436,7 @@ class API extends CONF {
} }
} }
$d_uid = (int)$_POST['uid'];
}else{ //new }else{ //new
@ -1304,6 +1446,29 @@ class API extends CONF {
AND d_customeruid = '".$_POST['customeruid']."'"); AND d_customeruid = '".$_POST['customeruid']."'");
if(db_num_rows($sqData) <= 0) { if(db_num_rows($sqData) <= 0) {
// 1) 고객 정보 먼저 조회
$sqCus = qry("
SELECT
c_paymenttype, c_paymentcycle, c_rate,
c_fullquantity, c_fullquantitydaily
FROM tbl_customer
WHERE c_uid = '".(int)$_POST['customeruid']."'
");
$customer = fetch_array($sqCus);
// 2) 예상수량 계산
$estqty = max(
0,
($customer['c_fullquantity'] - $customer['c_fullquantitydaily']) +
($interval->days * $customer['c_fullquantitydaily'])
);
// 3) set values to erp
$columns[] = "d_cycle"; $values[] = $customer['c_paymentcycle'];
$columns[] = "d_rate"; $values[] = $customer['c_rate'];
$columns[] = "d_estquantity"; $values[] = $estqty;
$columns[] = "d_ordertype"; $values[] = "N";
// 기존 insert 문 그대로 사용
qry("INSERT INTO tbl_daily ( qry("INSERT INTO tbl_daily (
d_orderdate, d_driveruid, d_customeruid, d_accountno, d_name, d_orderdate, d_driveruid, d_customeruid, d_accountno, d_name,
@ -1334,6 +1499,7 @@ class API extends CONF {
AND d_orderdate='".$_POST['visitdate']."' AND d_orderdate='".$_POST['visitdate']."'
ORDER BY d_uid DESC LIMIT 1 "); ORDER BY d_uid DESC LIMIT 1 ");
$rstDailyUid = fetch_array($sqDailyUid); $rstDailyUid = fetch_array($sqDailyUid);
$d_uid = $rstDailyUid['d_uid'];
if(strlen(trim($_POST['note'])) > 0){ if(strlen(trim($_POST['note'])) > 0){
qry("INSERT INTO tbl_note ( qry("INSERT INTO tbl_note (
@ -1361,7 +1527,9 @@ class API extends CONF {
$setFilenameNew = str_replace("T_", "", $setFilename); $setFilenameNew = str_replace("T_", "", $setFilename);
rename($folderPath."/".$setFilename, $folderPath."/".$setFilenameNew); rename($folderPath."/".$setFilename, $folderPath."/".$setFilenameNew);
qry("UPDATE tbl_daily SET d_payeesign='".$setFilenameNew."' qry("UPDATE tbl_daily SET d_payeesign='".$setFilenameNew."'
WHERE d_uid = '".$rstDailyUid['d_uid']."' "); WHERE d_uid = '".$rstDailyUid['d_uid']."' ");
// for integration
$columns[] = "d_payeesign"; $values[] = $setFilenameNew;
} }
} }
@ -1418,10 +1586,41 @@ class API extends CONF {
".$add_sludge." ".$add_sludge."
c_orderflag = 0 c_orderflag = 0
WHERE c_uid = '".$_POST['customeruid']."' ". $addWhereQry ." "); WHERE c_uid = '".$_POST['customeruid']."' ". $addWhereQry ." ");
// ====================
// Integration to ERP
// ====================
$columns[] = "d_accountno"; $values[] = $_POST['customerno']; // c_accountno
$columns[] = "d_orderdate"; $values[] = $_POST['visitdate']; // yyyymmdd (ERP에서 LocalDate로 변환)
$columns[] = "d_driveruid"; $values[] = $_POST['driveruid']; // external driver id (MIS)
$columns[] = "d_quantity"; $values[] = $_POST['quantity'];
$columns[] = "d_sludge"; $values[] = $_POST['sludge'];
$columns[] = "d_paymenttype"; $values[] = $_POST['paymenttype'];
$columns[] = "d_payamount"; $values[] = $_POST['payamount'];
$columns[] = "d_payeename"; $values[] = $_POST['payeename'];
$columns[] = "d_paystatus"; $values[] = $paystatusSTR;
$columns[] = "d_status"; $values[] = "F"; // 완료 상태
$columns[] = "d_visit"; $values[] = "Y"; // 방문 상태
$columns[] = "d_inputdate"; $values[] = date('YmdHis'); // 입력 시간
if(strlen(trim($_POST['note'])) > 0){
$columns[] = "d_pickupnote"; $values[] = $_POST['note'];
}
// ERP로 전송
$erp = new ErpApi();
$lguserid = $_POST['createruid'];
if(strlen($_POST['uid']) > 0) {
$erp->updateDailyOrderFromMis($columns, $values, $lguserid);
} else {
$erp->createDailyOrderFromMis($columns, $values, $lguserid);
}
// 성공 시 플래그 & 로그
qry("UPDATE tbl_daily SET d_is_transfer = 'Y' WHERE d_uid = ".(int)$d_uid);
//
$this->response($this->json(array("msg"=>"Input has been successfully saved.")), 200); $this->response($this->json(array("msg"=>"Input has been successfully saved.")), 200);
//$this->response($this->json(array("result"=>$result)), 200); //$this->response($this->json(array("result"=>$result)), 200);
return;
} catch(Exception $e) { } catch(Exception $e) {
$error = array($e->getMessage()); $error = array($e->getMessage());
$this->response($this->json($error), 417); $this->response($this->json($error), 417);
@ -1489,7 +1688,6 @@ class API extends CONF {
} }
} }
} }
$api = new API; $api = new API;

View File

@ -26,7 +26,7 @@ if ($mode == "create" || $mode == "") {
} }
else if ($mode == "update") { else if ($mode == "update") {
$btnName = "UPDATE"; $btnName = "UPDATE";
$admTag = "DISABLED"; //$admTag = "DISABLED";
} }
// User data query // User data query
@ -1055,7 +1055,12 @@ $(document).ready(function()
<tr> <tr>
<td class="td-title-info">Account No</td> <td class="td-title-info">Account No</td>
<td class="td-text-info"> <td class="td-text-info">
<input class="accountNo" type="text" id="c_accountno" name="c_accountno" required='required' onBlur="checkAccountNo();" VALUE="<?=$c_accountno?>" <?=$admTag?>> <?php if($mode == "update"): ?> <!-- erp 연동키값(c_accountno)을 전달하기위해 hidden 을 추가하고 admTag 사용안함 -->
<input class="accountNo" type="text" id="c_accountno" name="c_accountno" required='required' onBlur="checkAccountNo();" VALUE="<?=$c_accountno?>" disabled>
<input type="hidden" name="c_accountno" value="<?=$c_accountno?>">
<?php else: ?>
<input class="accountNo" type="text" id="c_accountno" name="c_accountno" required='required' onBlur="checkAccountNo();" VALUE="<?=$c_accountno?>">
<?php endif; ?>
</td> </td>
<td class="td-title-info">Status</td> <td class="td-title-info">Status</td>
@ -2293,7 +2298,7 @@ $(document).ready(function(){
<td class="td-text-info"> <td class="td-text-info">
<div class="number-input"> <div class="number-input">
<button class="left" type="button"></button> <button class="left" type="button"></button>
<input type="number" class="d_sludge" id="d_sludge" name="d_sludge" value="<?=$d_sludge?>" min="0" max="100" placeholder="50"> <input type="number" class="d_sludge" id="d_sludge" name="d_sludge" value="<?= isset($d_sludge) && $d_sludge !== '' ? $d_sludge : $c_sludge ?>" min="0" max="100" placeholder="50">
<button class="right" type="button"></button> <button class="right" type="button"></button>
</div> </div>

View File

@ -2,6 +2,7 @@
include getenv("DOCUMENT_ROOT")."/include/session_include.php"; include getenv("DOCUMENT_ROOT")."/include/session_include.php";
@include getenv("DOCUMENT_ROOT")."/config/config_shopInfo.php"; @include getenv("DOCUMENT_ROOT")."/config/config_shopInfo.php";
include_once getenv("DOCUMENT_ROOT") . "/lib/erp_api.php";
$goStr = "switched=$switched&page=$page&key_word=$key_word&column=$column&sorting_type=$sorting_type&switch=$switch&cstatus=$cstatus"; $goStr = "switched=$switched&page=$page&key_word=$key_word&column=$column&sorting_type=$sorting_type&switch=$switch&cstatus=$cstatus";
@ -50,8 +51,12 @@ if ($actionStr == "CUSTOMERINFO" && $mode == "delete") {
} }
$jdb->nQuery("UPDATE tbl_customer SET c_status='D' WHERE c_uid = '$c_uid'", "delete error"); $jdb->nQuery("UPDATE tbl_customer SET c_status='D', c_is_transfer = 'N' WHERE c_uid = '$c_uid'", "delete error");
$jdb->CLOSE();
// ====================
// Integration to ERP
// ====================
// 화면에서 기능이 없음
$msg = "Deleted successfully."; $msg = "Deleted successfully.";
$urlSTR = "/index_intranet.php?view=customer_list&$goStr"; $urlSTR = "/index_intranet.php?view=customer_list&$goStr";
@ -83,10 +88,9 @@ if ($actionStr == "CUSTOMERINFO") {
if($mode == "create") { if($mode == "create") {
//$columns[] = "c_uid"; //$columns[] = "c_uid";
$columns[] = "c_accountno";
$columns[] = "c_createddate"; $columns[] = "c_createddate";
} }
$columns[] = "c_accountno";
//$columns[] = "c_gid"; //$columns[] = "c_gid";
$columns[] = "c_form_us"; $columns[] = "c_form_us";
$columns[] = "c_form_eu"; $columns[] = "c_form_eu";
@ -140,19 +144,18 @@ if ($actionStr == "CUSTOMERINFO") {
$columns[] = "c_expoilmonth"; $columns[] = "c_expoilmonth";
$columns[] = "c_hstno"; $columns[] = "c_hstno";
$columns[] = "c_identcode"; $columns[] = "c_identcode";
// integration flag
$columns[] = "c_is_transfer";
//////////// ////////////
// data // data
//////////// ////////////
if($mode == "create") { if($mode == "create") {
//$values[] = $c_uid; //$values[] = $c_uid;
$values[] = $c_accountno;
$values[] = date("YmdHis"); $values[] = date("YmdHis");
} }
$values[] = $c_accountno;
//$values[] = $c_gid; //$values[] = $c_gid;
$values[] = $c_form_us; $values[] = $c_form_us;
$values[] = str_replace("-", "", trim($c_form_eu)); $values[] = str_replace("-", "", trim($c_form_eu));
$values[] = str_replace("-", "", trim($c_form_corsia)); $values[] = str_replace("-", "", trim($c_form_corsia));
@ -226,7 +229,8 @@ if ($actionStr == "CUSTOMERINFO") {
$values[] = $c_expoilmonth; $values[] = $c_expoilmonth;
$values[] = str_replace("\\", "", trim($c_hstno)); $values[] = str_replace("\\", "", trim($c_hstno));
$values[] = str_replace("\\", "", trim($c_identcode)); $values[] = str_replace("\\", "", trim($c_identcode));
// c_is_transfer
$values[] = "N";
//for ($i=0; $i < count($columns); $i++) //for ($i=0; $i < count($columns); $i++)
//echo "[$columns[$i]][$values[$i]]<br>"; //echo "[$columns[$i]][$values[$i]]<br>";
@ -244,9 +248,6 @@ if ($actionStr == "CUSTOMERINFO") {
addLog ("add", "CUSTOMER DETAIL", "CREATE", $lguserid, "", $c_uid); addLog ("add", "CUSTOMER DETAIL", "CREATE", $lguserid, "", $c_uid);
$func -> modalMsg ($msg, "/index_intranet.php?view=customer_detail&mode=update&c_uid=$c_uid&$goStr");
exit();
//$query = "select max(uid) from tbl_members "; //$query = "select max(uid) from tbl_members ";
//$user_id = $jdb->rQuery($query, "max query error"); //$user_id = $jdb->rQuery($query, "max query error");
} }
@ -318,12 +319,35 @@ if ($actionStr == "CUSTOMERINFO") {
addLog ("add", "CUSTOMER DETAIL - SLUDGE, RATE, PAYMENTCYCLE, PAYMENTTYPE", "UPDATE", $lguserid, $qry_driverr, $c_uid); addLog ("add", "CUSTOMER DETAIL - SLUDGE, RATE, PAYMENTCYCLE, PAYMENTTYPE", "UPDATE", $lguserid, $qry_driverr, $c_uid);
} }
$func -> modalMsg ($msg, "/index_intranet.php?view=customer_detail&mode=update&c_uid=$c_uid&$goStr");
exit();
} }
// ====================
// Integration to ERP
// ====================
$erp = new ErpApi();
try {
if ($mode == "create") {
// MIS → ERP CREATE (payload 매핑은 ErpApi 내부에서 자동 처리)
$erp->createCustomerFromMis($columns, $values, $lguserid);
}
else if ($mode == "update") {
// MIS → ERP UPDATE
$erp->updateCustomerFromMis($columns, $values, $lguserid);
}
// 성공 시 c_is_transfer='Y'
$jdb->uQuery("tbl_customer", ["c_is_transfer"], ["Y"], " WHERE c_uid = '$c_uid'");
//
$func->modalMsg($msg, "/index_intranet.php?view=customer_detail&mode=update&c_uid=$c_uid&$goStr");
exit();
} catch (Exception $e) {
$msg = "Check Integration Log.";
$func->modalMsg($msg, "/index_intranet.php");
exit();
}
$msg = "Invalid data. Please try again."; $msg = "Invalid data. Please try again.";
$func -> modalMsg ($msg, ""); $func -> modalMsg ($msg, "");

View File

@ -345,10 +345,11 @@
<SCRIPT LANGUAGE='JAVASCRIPT'> <SCRIPT LANGUAGE='JAVASCRIPT'>
function popup(){ function popup(){
var orderdate = jQuery("#map-modal-input .d_orderdate").val(); var orderdate = jQuery("#map-modal-input .d_orderdate").val();
var customeruid = jQuery("#map-modal-input .d_customeruid").val(); var customeruid = jQuery("#map-modal-input .d_customeruid").val();
var uid = jQuery("#map-modal-input .d_uid").val(); var customerno = jQuery("#map-modal-input .d_customerno").val();
var str = '/lib/signature.php?'+'uid=' + uid + '&orderdate=' + orderdate + '&customeruid=' + customeruid; var uid = jQuery("#map-modal-input .d_uid").val();
var str = '/lib/signature.php?'+'uid=' + uid + '&orderdate=' + orderdate + '&customeruid=' + customeruid + '&customerno=' + customerno;
window.open(str, '_blank', 'width=450,height=450,resizable=0,scrollbars=0'); window.open(str, '_blank', 'width=450,height=450,resizable=0,scrollbars=0');
} }
@ -369,6 +370,7 @@ function popup(){
<form name="pickupOrder" id="pickupOrder" method="POST" novalidate="novalidate"> <form name="pickupOrder" id="pickupOrder" method="POST" novalidate="novalidate">
<input type="hidden" class="d_uid"> <input type="hidden" class="d_uid">
<input type="hidden" class="d_customeruid"> <input type="hidden" class="d_customeruid">
<input type="hidden" class="d_customerno">
<input type="hidden" class="d_orderdate"> <input type="hidden" class="d_orderdate">
<input type="hidden" class="d_paymenttype"> <input type="hidden" class="d_paymenttype">
@ -489,6 +491,7 @@ function popup(){
<div class="modal-body"> <div class="modal-body">
<form name="order-form" method="POST"> <form name="order-form" method="POST">
<input type="hidden" class="d_customeruid"> <input type="hidden" class="d_customeruid">
<input type="hidden" class="d_customerno">
<input type="hidden" class="d_orderdate"> <input type="hidden" class="d_orderdate">
<input type="hidden" class="c_index"> <input type="hidden" class="c_index">
@ -610,6 +613,7 @@ function popup(){
<input type="hidden" name="actionStr" value="SHORTINFO"> <input type="hidden" name="actionStr" value="SHORTINFO">
<input type="hidden" name="actionPage" value=""> <input type="hidden" name="actionPage" value="">
<input type="hidden" name="c_uid" class="c_uid" value="3888"> <input type="hidden" name="c_uid" class="c_uid" value="3888">
<input type="hidden" name="c_accountno" class="c_accountno" value="">
<input type="hidden" name="mode" class="mode" value="update"> <input type="hidden" name="mode" class="mode" value="update">
<table class="tb-info-box"> <table class="tb-info-box">
<tbody> <tbody>
@ -765,6 +769,7 @@ function popup(){
<input type="hidden" class="id" value=""> <input type="hidden" class="id" value="">
<input type="hidden" class="duid" value=""> <input type="hidden" class="duid" value="">
<input type="hidden" class="c_index" value=""> <input type="hidden" class="c_index" value="">
<input type="hidden" class="accountno" value="">
<p>Are you sure to remove order?</p> <p>Are you sure to remove order?</p>
<br> <br>
@ -1189,6 +1194,7 @@ function popup(){
"ruid" : jQuery("#map-modal-order .d_ruid").val(), "ruid" : jQuery("#map-modal-order .d_ruid").val(),
"driveruid" : jQuery("#map-modal-order .d_driveruid").val(), "driveruid" : jQuery("#map-modal-order .d_driveruid").val(),
"customer_uid" : jQuery("#map-modal-order .d_customeruid").val(), "customer_uid" : jQuery("#map-modal-order .d_customeruid").val(),
"customer_no" : jQuery("#map-modal-order .d_customerno").val(),
"c_index" : jQuery("#map-modal-order .c_index").val() "c_index" : jQuery("#map-modal-order .c_index").val()
} }
@ -1202,6 +1208,7 @@ function popup(){
let data = { let data = {
"uid" : jQuery("#map-modal-input .d_uid").val(), "uid" : jQuery("#map-modal-input .d_uid").val(),
"customeruid" : jQuery("#map-modal-input .d_customeruid").val(), "customeruid" : jQuery("#map-modal-input .d_customeruid").val(),
"customerno" : jQuery("#map-modal-input .d_customerno").val(),
"orderdate" : jQuery("#map-modal-input .d_orderdate").val(), "orderdate" : jQuery("#map-modal-input .d_orderdate").val(),
//"ordertype" : jQuery("#map-modal-input .d_ordertype").val(), //"ordertype" : jQuery("#map-modal-input .d_ordertype").val(),
//"ruid" : jQuery("#map-modal-input .d_ruid").val(), //"ruid" : jQuery("#map-modal-input .d_ruid").val(),
@ -1317,11 +1324,12 @@ function popup(){
$('#popupMessage').fadeIn().delay(2000).fadeOut(); $('#popupMessage').fadeIn().delay(2000).fadeOut();
} }
function removeOrder(id, duid, index) { function removeOrder(id, duid, index, accountno) {
jQuery("#modal-confirm .order-date").val(jQuery("#orderdate").val()); jQuery("#modal-confirm .order-date").val(jQuery("#orderdate").val());
jQuery("#modal-confirm .id").val(id); jQuery("#modal-confirm .id").val(id);
jQuery("#modal-confirm .duid").val(duid); jQuery("#modal-confirm .duid").val(duid);
jQuery("#modal-confirm .c_index").val(index); jQuery("#modal-confirm .c_index").val(index);
jQuery("#modal-confirm .accountno").val(accountno);
/* /*
if(confirm('Are you sure you want to remove the order?')) { if(confirm('Are you sure you want to remove the order?')) {
let data = { let data = {
@ -1341,7 +1349,9 @@ function popup(){
"orderdate" : jQuery("#modal-confirm .order-date").val(), "orderdate" : jQuery("#modal-confirm .order-date").val(),
"id" : jQuery("#modal-confirm .id").val(), "id" : jQuery("#modal-confirm .id").val(),
"duid" : jQuery("#modal-confirm .duid").val(), "duid" : jQuery("#modal-confirm .duid").val(),
"c_index" : jQuery("#modal-confirm .c_index").val() "c_index" : jQuery("#modal-confirm .c_index").val(),
"accountno" : jQuery("#modal-confirm .accountno").val(),
"createruid" : <?=$_SESSION['ss_UID']?>
} }
api('removeOrder', data, rstRemoveOrder); api('removeOrder', data, rstRemoveOrder);
@ -1375,7 +1385,7 @@ function popup(){
return true; return true;
} }
function initInput(customer_id){ function initInput(customer_id, customer_no){
// input modal 에서 저장버튼 클릭 후 다시 오픈할 때, modal 내부에 포커스가 남아있어서 modal 이 오픈되지 않는 이슈 (modal-backdrop 만 열려서 전체 클릭이 막힘) // input modal 에서 저장버튼 클릭 후 다시 오픈할 때, modal 내부에 포커스가 남아있어서 modal 이 오픈되지 않는 이슈 (modal-backdrop 만 열려서 전체 클릭이 막힘)
// 1. 현재 포커스를 가진 요소에서 포커스를 제거하고 body에 포커스 // 1. 현재 포커스를 가진 요소에서 포커스를 제거하고 body에 포커스
jQuery(':focus').blur(); jQuery(':focus').blur();
@ -1387,9 +1397,10 @@ function popup(){
let loadingTxt = 'Loading...'; let loadingTxt = 'Loading...';
jQuery("#map-modal-input .shortinput-store-name").text(loadingTxt); jQuery("#map-modal-input .shortinput-store-name").text(loadingTxt);
jQuery("#map-modal-input .d_uid, #map-modal-input .d_customeruid, #map-modal-input .orderdate, #map-modal-input .d-ruid, #map-modal-input .d_visitdate, #map-modal-input .d_quantity, #map-modal-input .d_sludge, #map-modal-input .d_note").val(''); jQuery("#map-modal-input .d_uid, #map-modal-input .d_customeruid, #map-modal-input .d_customerno, #map-modal-input .orderdate, #map-modal-input .d-ruid, #map-modal-input .d_visitdate, #map-modal-input .d_quantity, #map-modal-input .d_sludge, #map-modal-input .d_note").val('');
jQuery("#map-modal-input .d_payamount, #map-modal-input .d_payeename").val(''); jQuery("#map-modal-input .d_payamount, #map-modal-input .d_payeename").val('');
jQuery("#map-modal-input .d_customeruid").val(customer_id); jQuery("#map-modal-input .d_customeruid").val(customer_id);
jQuery("#map-modal-input .d_customerno").val(customer_no);
jQuery("#map-modal-input .d_paystatusunpaid").prop("checked", true); jQuery("#map-modal-input .d_paystatusunpaid").prop("checked", true);
jQuery("#map-modal-input .d_orderdate").val(jQuery("#orderdate").val()); jQuery("#map-modal-input .d_orderdate").val(jQuery("#orderdate").val());
<? if ($_SESSION['ss_LEVEL'] == 9) { ?> <? if ($_SESSION['ss_LEVEL'] == 9) { ?>
@ -1690,6 +1701,7 @@ function popup(){
let updtPointdata = { let updtPointdata = {
"marker_index" : i, "marker_index" : i,
"id" : json.result[i]['id'], "id" : json.result[i]['id'],
"accountno" : json.result[i]['accountno'],
"lat" : latitude, "lat" : latitude,
"lon" : longitude, "lon" : longitude,
"property" : property, "property" : property,
@ -2206,6 +2218,7 @@ function popup(){
var rstInqShortInfo = function(json) { var rstInqShortInfo = function(json) {
jQuery("#customerShortInfo .c_uid").val(json.result['id']); jQuery("#customerShortInfo .c_uid").val(json.result['id']);
jQuery("#customerShortInfo .c_accountno").val(json.result['accountno']);
jQuery("#customerShortInfo .shortinfo-store-name").text(json.result['name']); jQuery("#customerShortInfo .shortinfo-store-name").text(json.result['name']);
jQuery("#customerShortInfo .shortinfo-payment-type").text(json.result['payment_type']); jQuery("#customerShortInfo .shortinfo-payment-type").text(json.result['payment_type']);
jQuery("#customerShortInfo .shortinfo-payment-string").text(json.result['paymentstring']); jQuery("#customerShortInfo .shortinfo-payment-string").text(json.result['paymentstring']);
@ -2225,6 +2238,7 @@ function popup(){
function updtShortInfo(){ function updtShortInfo(){
let data = { let data = {
"id" : jQuery("#customerShortInfo .c_uid").val(), "id" : jQuery("#customerShortInfo .c_uid").val(),
"accountno" : jQuery("#customerShortInfo .c_accountno").val(),
"comment" : jQuery(".shortinfo-comment").val(), "comment" : jQuery(".shortinfo-comment").val(),
"location" : jQuery(".shortinfo-container-location").val() "location" : jQuery(".shortinfo-container-location").val()
} }
@ -2474,14 +2488,14 @@ function popup(){
<button type="submit" class="mapBtn btn-grey-modal" onClick="javascript:initHistory(${property.customerid});" data-toggle="modal" data-target="#map-modal-history"><i class="bi bi-folder2-open"></i> History</button>`; <button type="submit" class="mapBtn btn-grey-modal" onClick="javascript:initHistory(${property.customerid});" data-toggle="modal" data-target="#map-modal-history"><i class="bi bi-folder2-open"></i> History</button>`;
if(`${property.date}` === 'null') { if(`${property.date}` === 'null') {
innerHtml += `<button type="button" class="mapBtn btn-primary-modal addOrderBtn_${property.index}" data-toggle="modal" onClick="javascript:initAddOrder(${property.customerid},${property.index});"><i class="fa-solid fa-plus"></i> Add</button>`; innerHtml += `<button type="button" class="mapBtn btn-primary-modal addOrderBtn_${property.index}" data-toggle="modal" onClick="javascript:initAddOrder(${property.customerid},${property.index});"><i class="fa-solid fa-plus"></i> Add</button>`;
innerHtml += `<button type="button" class="mapBtn btn-red-modal hidden removeOrderBtn_${property.index}" data-toggle="modal" data-target="#modal-confirm" onClick="javascript:removeOrder(${property.customerid},${property.duid},${property.index});"><i class="fa-solid fa-xmark"></i> Remove</button>`; innerHtml += `<button type="button" class="mapBtn btn-red-modal hidden removeOrderBtn_${property.index}" data-toggle="modal" data-target="#modal-confirm" onClick="javascript:removeOrder(${property.customerid},${property.duid},${property.index},'${property.accountno}');"><i class="fa-solid fa-xmark"></i> Remove</button>`;
}else{ }else{
innerHtml += `<button type="button" class="mapBtn btn-primary-modal addOrderBtn_${property.index} hidden" data-toggle="modal" onClick="javascript:initAddOrder(${property.customerid},${property.index});"><i class="fa-solid fa-plus"></i> Add</button>`; innerHtml += `<button type="button" class="mapBtn btn-primary-modal addOrderBtn_${property.index} hidden" data-toggle="modal" onClick="javascript:initAddOrder(${property.customerid},${property.index});"><i class="fa-solid fa-plus"></i> Add</button>`;
innerHtml += `<button type="button" ${property.orderFlag} class="mapBtn btn-red-modal removeOrderBtn_${property.index}" data-toggle="modal" data-target="#modal-confirm" onClick="javascript:removeOrder(${property.customerid},${property.duid},${property.index});"><i class="fa-solid fa-xmark"></i> Remove</button>`; innerHtml += `<button type="button" ${property.orderFlag} class="mapBtn btn-red-modal removeOrderBtn_${property.index}" data-toggle="modal" data-target="#modal-confirm" onClick="javascript:removeOrder(${property.customerid},${property.duid},${property.index},'${property.accountno}');"><i class="fa-solid fa-xmark"></i> Remove</button>`;
} }
innerHtml += `<button type="submit" class="mapBtn btn-nearby" onClick="javascript:inqNearby('${property.lat}:${property.lon}');"><i class="fa-solid fa-diamond-turn-right"></i> Nearby</button> innerHtml += `<button type="submit" class="mapBtn btn-nearby" onClick="javascript:inqNearby('${property.lat}:${property.lon}');"><i class="fa-solid fa-diamond-turn-right"></i> Nearby</button>
<button type="submit" class="mapBtn btn-orange-modal ${(property.rnote && /\S/.test(property.rnote)) ? 'blink' : ''}" data-toggle="modal" data-target="#map-modal-note" onClick="javscript:showShortNotice(${property.duid});"><i class="fa fa-thumb-tack"></i> Notice</button> <button type="submit" class="mapBtn btn-orange-modal ${(property.rnote && /\S/.test(property.rnote)) ? 'blink' : ''}" data-toggle="modal" data-target="#map-modal-note" onClick="javscript:showShortNotice(${property.duid});"><i class="fa fa-thumb-tack"></i> Notice</button>
<button type="submit" class="mapBtn btn-purple-modal" data-toggle="modal" data-target="#map-modal-input" onClick="javascript:initInput(${property.customerid});"><i class="bi bi-truck"></i> Input</button> <button type="submit" class="mapBtn btn-purple-modal" data-toggle="modal" data-target="#map-modal-input" onClick="javascript:initInput(${property.customerid},'${property.accountno}');"><i class="bi bi-truck"></i> Input</button>
</div> </div>
</div> </div>
</div> </div>

550
public_html/lib/erp_api.php Normal file
View File

@ -0,0 +1,550 @@
<?php
// /common/erp_api.php
include getenv("DOCUMENT_ROOT")."/include/session_include.php";
class ErpApi {
private $baseUrl;
private $token;
private $enabled = false;
public function __construct() {
global $jdb;
$row = $jdb->fQuery("SELECT cfg_erp_api_url, cfg_erp_api_token FROM tbl_config LIMIT 1", "config fetch error");
$url = isset($row['cfg_erp_api_url']) ? trim($row['cfg_erp_api_url']) : '';
$token = isset($row['cfg_erp_api_token']) ? trim($row['cfg_erp_api_token']) : '';
// URL 없으면 바로 예외 (서버 아직 준비 안됨)
if ($url === '' || $url === null) {
$this->enabled = false;
$this->baseUrl = '';
$this->token = '';
return;
}
$this->enabled = true;
$this->baseUrl = rtrim($url, '/');
$this->token = $token;
}
/**
* 공통 HTTP 요청 처리
*/
private function request($method, $endpoint, $data = null) {
// ERP 비활성화면 아무것도 하지 않고 조용히 반환
if (!$this->enabled) {
return [
"disabled" => true,
"skipped" => true,
"endpoint" => $endpoint,
];
}
$url = $this->baseUrl . $endpoint;
$headers = [
"Authorization: Bearer {$this->token}",
"Content-Type: application/json"
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if ($data !== null) {
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
}
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($response === false) {
$err = curl_error($ch);
curl_close($ch);
throw new Exception("cURL Error: $err");
}
curl_close($ch);
$result = json_decode($response, true);
if ($result === null && json_last_error() !== JSON_ERROR_NONE) {
throw new Exception("JSON Decode Error: " . json_last_error_msg() . " - Response: $response");
}
if ($httpCode >= 400) {
$msg = isset($result['message']) ? $result['message'] : $response;
throw new Exception("HTTP $httpCode Error: $msg");
}
return $result;
}
// -------------------------------------------------------
// 기본 Customer API
// -------------------------------------------------------
public function createCustomer($data) {
return $this->request("POST", "/customer", $data);
}
public function updateCustomer($cusNo, $data) {
return $this->request("PATCH", "/customer/no/" . $cusNo, $data);
}
public function deleteCustomer($cusNo) {
return $this->request("DELETE", "/customer/no/" . $cusNo);
}
// -------------------------------------------------------
// 공통 유틸
// -------------------------------------------------------
private function convertDate($dateStr) {
if (!$dateStr || !is_string($dateStr)) {
return null;
}
// YYYYMMDD (8)
if (strlen($dateStr) === 8) {
return substr($dateStr, 0, 4) . '-' .
substr($dateStr, 4, 2) . '-' .
substr($dateStr, 6, 2);
}
// YYYYMMDDHHIISS (14)
if (strlen($dateStr) === 14) {
return substr($dateStr,0,4)."-"
. substr($dateStr,4,2)."-"
. substr($dateStr,6,2)."T"
. substr($dateStr,8,2).":"
. substr($dateStr,10,2).":"
. substr($dateStr,12,2);
}
// 지원하지 않는 포맷
return null;
}
private function normalizeValue($value) {
if ($value === '' || $value === false) return null;
if (is_string($value) && trim($value) === '') return null;
return $value;
}
private function getValue($columns, $values, $col) {
$idx = array_search($col, $columns);
return $idx !== false ? $values[$idx] : null;
}
// -------------------------------------------------------
// MIS → ERP Customer Payload 빌드 (완전 자동 변환)
// -------------------------------------------------------
public function buildCustomerPayload($columns, $values, $loginUser) {
$payload = [];
// MIS → ERP 매핑 규칙
$map = [
"cusNo" => "c_accountno",
"cusName" => "c_name",
"cusStatus" => "c_status",
"cusAreaId" => "c_area",
"cusAddress1" => "c_address",
"cusAddress2" => "c_mailingaddr",
"cusPostalCode" => "c_postal",
"cusCity" => "c_city",
"cusProvince" => "c_province",
"cusEmail" => "c_email",
"cusPhone" => "c_phone",
"cusPhoneExt" => "c_phoneext",
"cusRate" => "c_rate",
"cusPayMethod" => "c_paymenttype",
"cusContractDate" => "c_contractdate",
"cusContractedBy" => "c_contractby",
"cusInstallDate" => "c_installdate",
// full cycle 필요하면 나중에 추가 2025-12-16
// "cusFullCycle" => "c_fullcycle",
// "cusFullCycleFlag" => "c_fullcycleflag",
// "cusFullCycleForced" => "c_fullcycleforced",
// "cusFullCycleForcedDate"=> "c_forceddate",
"cusSchedule" => "c_schedule",
"cusScheduledays" => "c_scheduleday",
"cusIsccDate" => "c_form_eu",
"cusCorsiaDate" => "c_form_corsia",
"cusHstNo" => "c_hstno",
"cusComment" => "c_comment_ri",
"cusContactComment" => "c_comment_ci",
"cusGeoLat" => "c_geolat",
"cusGeoLon" => "c_geolon",
"cusInstallLocation" => "c_location",
];
// 날짜 변환 필드 목록
$dateCols = [
"c_contractdate",
"c_installdate",
"c_forceddate",
"c_form_eu",
"c_form_corsia"
];
// 기본 필드 채우기
foreach ($map as $erpKey => $misCol) {
$value = $this->getValue($columns, $values, $misCol);
if ($value && in_array($misCol, $dateCols)) {
$value = $this->convertDate($value);
}
$payload[$erpKey] = $value;
}
// 로그인 사용자
$payload["cusLoginUser"] = $loginUser;
return $payload;
}
// -------------------------------------------------------
// MIS → ERP Customer CREATE
// -------------------------------------------------------
public function createCustomerFromMis($columns, $values, $loginUser) {
// 비활성화면 로그도 남기지 말고 바로 종료
if (!$this->enabled) {
return ["disabled" => true, "skipped" => true];
}
$payload = $this->buildCustomerPayload($columns, $values, $loginUser);
try {
// 테스트용
// addLog("add"
// , "/customer"
// , "ERP - SUCCESS"
// , $loginUser
// , json_encode($payload, JSON_PRETTY_PRINT)
// , ''
// );
return $this->createCustomer($payload);
} catch (Exception $e) {
$logBody =
"[EXCEPTION]\n" .
$e->getMessage() . "\n\n" .
"[PAYLOAD]\n" .
json_encode($payload, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
addLog("add"
, "/customer"
, "ERP - FAILED"
, $loginUser
, $logBody
, ''
);
// 사용자에게는 아무것도 안 알려줌
return [
"success" => false,
"queued" => true
];
}
}
// -------------------------------------------------------
// MIS → ERP Customer UPDATE (cusNo 기준)
// -------------------------------------------------------
public function updateCustomerFromMis($columns, $values, $loginUser) {
// 비활성화면 로그도 남기지 말고 바로 종료
if (!$this->enabled) {
return ["disabled" => true, "skipped" => true];
}
// accountno 찾기
$cusNo = $this->getValue($columns, $values, "c_accountno");
if (!$cusNo) {
throw new Exception("updateCustomerFromMis: Missing c_accountno");
}
$payload = $this->buildCustomerPayload($columns, $values, $loginUser);
try {
// 테스트용
// addLog("add"
// , "/customer/no/" . $cusNo
// , "ERP - SUCCESS"
// , $loginUser
// , json_encode($payload, JSON_PRETTY_PRINT)
// , $cusNo
// );
return $this->updateCustomer($cusNo, $payload);
} catch (Exception $e) {
$logBody =
"[EXCEPTION]\n" .
$e->getMessage() . "\n\n" .
"[PAYLOAD]\n" .
json_encode($payload, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
addLog("add"
, "/customer/no/" . $cusNo
, "ERP - FAILED"
, $loginUser
, $logBody
, $cusNo
);
// 사용자에게는 아무것도 안 알려줌
return [
"success" => false,
"queued" => true
];
}
}
// -------------------------------------------------------
// MIS → ERP Customer 단일필드 업데이트 (update_column.php 용)
// -------------------------------------------------------
public function updateCustomerFieldFromMis($cusNo, $field, $value, $loginUser) {
if (!$this->enabled) {
return ["disabled" => true, "skipped" => true];
}
$payload = [
"cusLoginUser" => $loginUser,
$field => $value
];
return $this->updateCustomer($cusNo, $payload);
}
// -------------------------------------------------------
// Customer Daily Order 관련 API (RAW 호출)
// -------------------------------------------------------
/**
* POST /customer-daily-order
*/
public function createOrder($data) {
return $this->request("POST", "/customer-daily-order", $data);
}
/**
* PATCH /customer-daily-order/customer/{customerNo}/{orderDate}
* - customerNo : ERP customer.cus_no
* - orderDate : yyyy-MM-dd
*/
public function updateOrder($customerNo, $orderDate, $data) {
return $this->request(
"PATCH",
"/customer-daily-order/customer/" . $customerNo . "/" . $orderDate,
$data
);
}
/**
* DELETE /customer-daily-order/{uuid}
*/
public function deleteOrder($uuid) {
return $this->request("DELETE", "/customer-daily-order/" . $uuid);
}
// -------------------------------------------------------
// Customer Daily Order - MIS 연동용 헬퍼
// (tbl_daily $columns / $values 기반으로 payload 생성)
// -------------------------------------------------------
/**
* MIS tbl_daily ( $columns, $values ) ERP CustomerDailyOrderRequestDto 변환
*
* @param array $columns tbl_daily insert 사용한 컬럼명 배열
* @param array $values 컬럼에 대한 배열
* @param string $loginUser MIS 로그인 사용자 ID
* @return array ERP에 보낼 payload
*/
public function buildDailyOrderPayload($columns, $values, $loginUser) {
$payload = [];
// MIS → ERP 매핑 규칙
// (필요에 따라 계속 보강 가능)
$map = [
"cdoOrderDate" => "d_orderdate",
"cdoOrderType" => "d_ordertype",
"cdoRequestNote" => "d_requestnote",
"cdoCustomerNo" => "d_accountno",
"cdoCycle" => "d_cycle",
"cdoPaymentType" => "d_paymenttype",
"cdoRate" => "d_rate",
"cdoStatus" => "d_status",
"cdoEstimatedQty" => "d_estquantity",
"cdoQuantity" => "d_quantity",
"cdoSludge" => "d_sludge",
"cdoPayStatus" => "d_paystatus",
"cdoPayAmount" => "d_payamount",
"cdoPayeeName" => "d_payeename",
"cdoPayeeSign" => "d_payeesign",
"cdoExternalDriverId" => "d_driveruid",
"cdoVisitFlag" => "d_visit",
"cdoPickupNote" => "d_pickupnote",
"cdoPickupAt" => "d_inputdate",
];
// 날짜 변환이 필요한 컬럼들
$dateColumns = [
"d_orderdate",
"d_inputdate",
];
// 로그인 사용자
$payload["cdoLoginUser"] = $loginUser;
// map 에 따라 값 채우기
foreach ($map as $erpKey => $misCol) {
$idx = array_search($misCol, $columns);
$value = ($idx !== false) ? $values[$idx] : null;
// 빈 문자열 → null
if (is_string($value)) {
$value = trim($value);
if ($value === '') {
$value = null;
}
}
// 날짜 변환
if ($value !== null && in_array($misCol, $dateColumns, true)) {
$value = $this->convertDate($value);
}
$payload[$erpKey] = $value;
}
/* Rule */
// 연결 key
if (!$payload['cdoCustomerNo']) {
throw new Exception("DailyOrder Error: Missing CustomerNo");
}
if (!$payload['cdoOrderDate']) {
throw new Exception("DailyOrder Error: Missing OrderDate");
}
// quantity 있는데 sludge 없으면 sludge = 0
if (
array_key_exists('cdoQuantity', $payload)
&& $payload['cdoQuantity'] !== null
&& $payload['cdoSludge'] === null
) {
$payload['cdoSludge'] = 0;
}
return $payload;
}
/**
* MIS ERP : Daily Order 신규 생성 편의 함수
*
* user_process.php 에서:
* $erp = new ErpApi();
* $payload = $erp->buildDailyOrderPayload($columns, $values, $lguserid);
* $erp->createOrder($payload);
*
* 또는:
* $erp->createDailyOrderFromMis($columns, $values, $lguserid);
*/
public function createDailyOrderFromMis($columns, $values, $loginUser) {
if (!$this->enabled) {
return ["disabled" => true, "skipped" => true];
}
$payload = $this->buildDailyOrderPayload($columns, $values, $loginUser);
try {
// 테스트용
// addLog("add"
// , "/customer-daily-order"
// , "ERP - SUCCESS"
// , $loginUser
// , json_encode($payload, JSON_PRETTY_PRINT)
// , ''
// );
return $this->createOrder($payload);
} catch (Exception $e) {
$logBody =
"[EXCEPTION]\n" .
$e->getMessage() . "\n\n" .
"[PAYLOAD]\n" .
json_encode($payload, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
addLog("add"
, "/customer-daily-order"
, "ERP - FAILED"
, $loginUser
, $logBody
, ''
);
// 사용자에게는 아무것도 안 알려줌
return [
"success" => false,
"queued" => true
];
}
}
/**
* MIS ERP : Daily Order 업데이트 (customerNo + orderDate 기준)
*/
public function updateDailyOrderFromMis($columns, $values, $loginUser) {
// 비활성화면 로그도 남기지 말고 바로 종료
if (!$this->enabled) {
return ["disabled" => true, "skipped" => true];
}
$payload = $this->buildDailyOrderPayload($columns, $values, $loginUser);
// customerNo / orderDate 추출
$customerNo = $payload['cdoCustomerNo'];
$orderDate = $payload['cdoOrderDate'];
try {
// 테스트용
// addLog("add"
// , "/customer-daily-order/customer/" . $customerNo . "/" . $orderDate
// , "ERP - SUCCESS"
// , $loginUser
// , json_encode($payload, JSON_PRETTY_PRINT)
// , $customerNo
// );
return $this->updateOrder($customerNo, $orderDate, $payload);
} catch (Exception $e) {
$logBody =
"[EXCEPTION]\n" .
$e->getMessage() . "\n\n" .
"[PAYLOAD]\n" .
json_encode($payload, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
addLog("add"
, "/customer-daily-order/customer/" . $customerNo . "/" . $orderDate
, "ERP - FAILED"
, $loginUser
, $logBody
, $customerNo
);
// 사용자에게는 아무것도 안 알려줌
return [
"success" => false,
"queued" => true
];
}
}
}
?>

View File

@ -89,7 +89,7 @@ if ($_SESSION['ss_LEVEL'] == 9) $add_qry = " AND m_uid = '".$_SESSION['ss_UID'].
else $add_qry = ""; else $add_qry = "";
// Get Sludge Info // Get Sludge Info
$qry_sludge = "SELECT c_sludge FROM tbl_customer WHERE c_uid ='$d_customeruid' "; $qry_sludge = "SELECT IFNULL(c_sludge,0) FROM tbl_customer WHERE c_uid ='$d_customeruid' ";
$rt_sludge = $jdb->fQuery($qry_sludge, "fetch query error"); $rt_sludge = $jdb->fQuery($qry_sludge, "fetch query error");
@ -374,6 +374,7 @@ $(document).ready(function(){
<input type=hidden name=d_uid id=d_uid value="<?=$d_uid?>"> <input type=hidden name=d_uid id=d_uid value="<?=$d_uid?>">
<input type=hidden name=d_paymenttype id=d_paymenttype value="<?=$d_paymenttype?>"> <input type=hidden name=d_paymenttype id=d_paymenttype value="<?=$d_paymenttype?>">
<input type=hidden name=d_customeruid id=d_customeruid value="<?=$d_customeruid?>"> <input type=hidden name=d_customeruid id=d_customeruid value="<?=$d_customeruid?>">
<input type=hidden name=d_customerno id="d_customerno"value="<?=$d_accountno?>">
<input type=hidden name=mode id=mode value="update"> <input type=hidden name=mode id=mode value="update">
<? if (trim($d_payeesign) != "") { ?> <? if (trim($d_payeesign) != "") { ?>

View File

@ -1,6 +1,7 @@
<?php <?php
include getenv("DOCUMENT_ROOT")."/include/session_include.php"; include getenv("DOCUMENT_ROOT")."/include/session_include.php";
include_once getenv("DOCUMENT_ROOT")."/lib/erp_api.php";
//$func->checkAdmin("index.php"); //$func->checkAdmin("index.php");
@ -46,7 +47,7 @@ $columns[] = "d_visitdate";
$columns[] = "d_status"; $columns[] = "d_status";
$columns[] = "d_payeename"; $columns[] = "d_payeename";
$columns[] = "d_is_transfer"; // Integration to ERP
//////////// ////////////
// data // data
@ -66,7 +67,7 @@ $values[] = $d_visitdate."000000"; // d_visitdate
$values[] = "F"; $values[] = "F";
$values[] = $d_payeename; $values[] = $d_payeename;
$values[] = "N"; // Integration to ERP
// Signiture // Signiture
if ($signednew == 1) $putSignFlag = 1; if ($signednew == 1) $putSignFlag = 1;
@ -106,7 +107,24 @@ $jdb->uQuery("tbl_daily", $columns, $values, " where d_uid = '$d_uid' ");
$logSTR = "[d_uid=$d_uid][d_quantity=$d_quantity][d_paystatus=$d_paystatus][d_payamount=".number_format(floatval($d_payamount), 2, '.', ',')."]"; $logSTR = "[d_uid=$d_uid][d_quantity=$d_quantity][d_paystatus=$d_paystatus][d_payamount=".number_format(floatval($d_payamount), 2, '.', ',')."]";
addLog ("add", "ORDER PICKUP - ORDER", "PICKUP", $lguserid, $logSTR, $d_uid); addLog ("add", "ORDER PICKUP - ORDER", "PICKUP", $lguserid, $logSTR, $d_uid);
// ====================
// Integration to ERP
// ====================
$lguserid = $_SESSION['ss_UID'];
$columns[] = "d_accountno";
$columns[] = "d_pickupnote";
$values[] = $_POST['d_customerno']; // c_accountno
$values[] = str_replace("\\", "", trim($d_note));
try {
$erp = new ErpApi();
// ERP로 전송 (payload 내부에서 자동 매핑)
$erp->updateDailyOrderFromMis($columns, $values, $lguserid);
// 성공 시 플래그 & 로그
$jdb->uQuery("tbl_daily", ["d_is_transfer"], ["Y"], " WHERE d_uid = '$d_uid'");
} catch (Exception $e) {
// 여기서는 아무것도 안함
}
//////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////

View File

@ -94,6 +94,7 @@ if ($c_paymenttype =="CA") {
<input type=hidden name=actionStr value="SHORTINFO"> <input type=hidden name=actionStr value="SHORTINFO">
<input type=hidden name=actionPage value=""> <input type=hidden name=actionPage value="">
<input type=hidden name=c_uid id=c_uid value="<?=$c_uid?>"> <input type=hidden name=c_uid id=c_uid value="<?=$c_uid?>">
<input type=hidden name=c_accountno id=c_accountno value="<?=$c_accountno?>">
<input type=hidden name=mode id=mode value="update"> <input type=hidden name=mode id=mode value="update">

View File

@ -1,6 +1,7 @@
<?php <?php
include getenv("DOCUMENT_ROOT")."/include/session_include.php"; include getenv("DOCUMENT_ROOT")."/include/session_include.php";
include_once getenv("DOCUMENT_ROOT")."/lib/erp_api.php";
//$func->checkAdmin("index.php"); //$func->checkAdmin("index.php");
@ -44,13 +45,38 @@ $c_locationSTR = str_replace("\\", "", trim($c_location));
$qry_customer = "UPDATE tbl_customer $qry_customer = "UPDATE tbl_customer
SET SET
c_comment_ri = '".addslashes($c_comment_riSTR)."', c_comment_ri = '".addslashes($c_comment_riSTR)."',
c_location = '".addslashes($c_locationSTR)."' c_location = '".addslashes($c_locationSTR)."',
c_is_transfer = 'N'
WHERE c_uid = '$c_uid' "; WHERE c_uid = '$c_uid' ";
//echo "[$qry_customer]<br>"; //echo "[$qry_customer]<br>";
$jdb->nQuery($qry_customer, "update error"); $jdb->nQuery($qry_customer, "update error");
// ====================
// Integration to ERP
// ====================
$erp = new ErpApi();
try {
$columns = array();
$values = array();
$columns[] = "c_accountno";
$columns[] = "c_comment_ri";
$columns[] = "c_location";
$values[] = $c_accountno;
$values[] = addslashes($c_comment_riSTR);
$values[] = addslashes($c_locationSTR);
$lguserid = $_SESSION['ss_UID'];
$erp->updateCustomerFromMis($columns, $values, $lguserid);
// 성공 시 c_is_transfer='Y'
$jdb->uQuery("tbl_customer", ["c_is_transfer"], ["Y"], " WHERE c_uid = ".(int)$_POST['id']);
} catch (Exception $e) {
// 여기서는 아무것도 안함.
}
addLog ("add", "SHORT INFO", "UPDATE", $lguserid, $qry_customer, $c_uid); addLog ("add", "SHORT INFO", "UPDATE", $lguserid, $qry_customer, $c_uid);
echo 1; echo 1;

View File

@ -157,6 +157,7 @@ if($uid == "") {
<input type=hidden name=uid id=uid value="<?=$uid?>"> <input type=hidden name=uid id=uid value="<?=$uid?>">
<input type=hidden name=orderdate id=orderdate value="<?=$orderdate?>"> <input type=hidden name=orderdate id=orderdate value="<?=$orderdate?>">
<input type=hidden name=customeruid id=customeruid value="<?=$customeruid?>"> <input type=hidden name=customeruid id=customeruid value="<?=$customeruid?>">
<input type=hidden name=customerno id=customerno value="<?=$customerno?>">
<input type=hidden name=mode id=mode value="update"> <input type=hidden name=mode id=mode value="update">
<? if (trim($d_payeesign) != "") { ?> <? if (trim($d_payeesign) != "") { ?>

View File

@ -24,7 +24,8 @@ $addCronLog = file_get_contents($setFILENAME);
$addCronLog .= "[upfilename=$upfilename][upfield=$upfield]\n"; $addCronLog .= "[upfilename=$upfilename][upfield=$upfield]\n";
// c_is_transfer
$updated = false;
// ################# 차후 uptype 에 따른 if 구분이 필요함 // ################# 차후 uptype 에 따른 if 구분이 필요함
// echo "[action=$action]"; // echo "[action=$action]";
// log file upload // log file upload
@ -65,43 +66,54 @@ if ($mode == "insert" && $upfilename != "" && $upfield != "") {
if ($rt_customer[0]) { if ($rt_customer[0]) {
if ($upfield == "c_status") if ($upfield == "c_status") {
$qry = "UPDATE tbl_customer SET c_status='".$updateTMP."' WHERE c_accountno = '".$d_accountno."'"; $qry = "UPDATE tbl_customer SET c_status='".$updateTMP."' WHERE c_accountno = '".$d_accountno."'";
else if ($upfield == "c_payableto") $updated = true;
} else if ($upfield == "c_payableto") {
$qry = "UPDATE tbl_customer SET c_payableto='".$updateTMP."' WHERE c_accountno = '".$d_accountno."'"; $qry = "UPDATE tbl_customer SET c_payableto='".$updateTMP."' WHERE c_accountno = '".$d_accountno."'";
else if ($upfield == "c_paymenttype") { $updated = true;
} else if ($upfield == "c_paymenttype") {
$updateTMP = strtoupper($updateTMP); $updateTMP = strtoupper($updateTMP);
$qry = "UPDATE tbl_customer SET c_paymenttype='".$updateTMP."' WHERE c_accountno = '".$d_accountno."'"; $qry = "UPDATE tbl_customer SET c_paymenttype='".$updateTMP."' WHERE c_accountno = '".$d_accountno."'";
} $updated = true;
else if ($upfield == "c_paymentcycle") } else if ($upfield == "c_paymentcycle") {
$qry = "UPDATE tbl_customer SET c_paymentcycle='".$updateTMP."' WHERE c_accountno = '".$d_accountno."'"; $qry = "UPDATE tbl_customer SET c_paymentcycle='".$updateTMP."' WHERE c_accountno = '".$d_accountno."'";
else if ($upfield == "c_rate") $updated = true;
} else if ($upfield == "c_rate") {
$qry = "UPDATE tbl_customer SET c_rate='".$updateTMP."' WHERE c_accountno = '".$d_accountno."'"; $qry = "UPDATE tbl_customer SET c_rate='".$updateTMP."' WHERE c_accountno = '".$d_accountno."'";
else if ($upfield == "c_sludge") { } else if ($upfield == "c_sludge") {
// 2025-12-09 history 안건드리기 // 2025-12-09 history 안건드리기
// $qry1 = "UPDATE tbl_daily SET d_sludge='".$updateTMP."' WHERE d_accountno = '".$d_accountno."'"; // $qry1 = "UPDATE tbl_daily SET d_sludge='".$updateTMP."' WHERE d_accountno = '".$d_accountno."'";
// $jdb->nQuery($qry1, "Update error"); // $jdb->nQuery($qry1, "Update error");
$qry = "UPDATE tbl_customer SET c_sludge='".$updateTMP."' WHERE c_accountno = '".$d_accountno."'"; $qry = "UPDATE tbl_customer SET c_sludge='".$updateTMP."' WHERE c_accountno = '".$d_accountno."'";
} $updated = true;
else if ($upfield == "c_mainvolume") } else if ($upfield == "c_mainvolume") {
$qry = "UPDATE tbl_customer SET c_mainvolume='".$updateTMP."' WHERE c_accountno = '".$d_accountno."'"; $qry = "UPDATE tbl_customer SET c_mainvolume='".$updateTMP."' WHERE c_accountno = '".$d_accountno."'";
else if ($upfield == "c_driveruid") { $updated = true;
} else if ($upfield == "c_driveruid") {
//$qry1 = "UPDATE tbl_daily SET d_driveruid='".$updateTMP."' WHERE d_accountno = '".$d_accountno."'"; //$qry1 = "UPDATE tbl_daily SET d_driveruid='".$updateTMP."' WHERE d_accountno = '".$d_accountno."'";
//$jdb->nQuery($qry1, "Update error"); //$jdb->nQuery($qry1, "Update error");
$qry = "UPDATE tbl_customer SET c_driveruid='".$updateTMP."' WHERE c_accountno = '".$d_accountno."'"; $qry = "UPDATE tbl_customer SET c_driveruid='".$updateTMP."' WHERE c_accountno = '".$d_accountno."'";
} $updated = true;
else if ($upfield == "c_hstno") { } else if ($upfield == "c_hstno") {
//$qry1 = "UPDATE tbl_daily SET d_driveruid='".$updateTMP."' WHERE d_accountno = '".$d_accountno."'"; //$qry1 = "UPDATE tbl_daily SET d_driveruid='".$updateTMP."' WHERE d_accountno = '".$d_accountno."'";
//$jdb->nQuery($qry1, "Update error"); //$jdb->nQuery($qry1, "Update error");
$qry = "UPDATE tbl_customer SET c_hstno='".$updateTMP."' WHERE c_accountno = '".$d_accountno."'"; $qry = "UPDATE tbl_customer SET c_hstno='".$updateTMP."' WHERE c_accountno = '".$d_accountno."'";
$updated = true;
} }
$jdb->nQuery($qry, "Update error"); $jdb->nQuery($qry, "Update error");
//echo "[$qry]<br>"; //echo "[$qry]<br>";
// ERP 전송 전 transfer flag setting
if ($updated) {
$q = "UPDATE tbl_customer SET c_is_transfer='N' WHERE c_accountno='".$d_accountno."'";
$jdb->nQuery($q, "Update error: c_is_transfer");
}
$qry_customera = "SELECT * FROM tbl_customer WHERE c_accountno = '".$d_accountno."' "; $qry_customera = "SELECT * FROM tbl_customer WHERE c_accountno = '".$d_accountno."' ";
$rt_customera = $jdb->fQuery($qry_customera, "query error"); $rt_customera = $jdb->fQuery($qry_customera, "query error");
@ -109,6 +121,30 @@ if ($mode == "insert" && $upfilename != "" && $upfield != "") {
if ($updateTMP != $rt_customera[$upfield]) $fontColor = "#00DD37"; if ($updateTMP != $rt_customera[$upfield]) $fontColor = "#00DD37";
// ====================
// Integration to ERP
// ====================
$columns = array();
$values = array();
$columns[] = $upfield;
$columns[] = "c_accountno";
$values[] = $updateTMP;
$values[] = $d_accountno;
$erp = new ErpApi();
try {
// ERP로 전송 (payload 내부에서 자동 매핑)
$erp->updateCustomerFromMis($columns, $values, $lguserid);
// 성공 시 플래그 & 로그
$jdb->uQuery("tbl_customer", ["c_is_transfer"], ["Y"], " WHERE c_accountno = '$d_accountno'");
} catch (Exception $e) {
// 여기서는 아무것도 안함
}
//
echo "<font color=$fontColor>[cnt=$lineCnt][ACCOUNTNO=$d_accountno][RNAME FILE/DB =".$d_name." / ".$rt_customer['c_name']."][".$upfield." FILE/DB/AFTER=".$updateTMP." / ".$rt_customer[$upfield]." / ".$rt_customera[$upfield]."]</font><br>"; echo "<font color=$fontColor>[cnt=$lineCnt][ACCOUNTNO=$d_accountno][RNAME FILE/DB =".$d_name." / ".$rt_customer['c_name']."][".$upfield." FILE/DB/AFTER=".$updateTMP." / ".$rt_customer[$upfield]." / ".$rt_customera[$upfield]."]</font><br>";
$addCronLog .= "[cnt=$lineCnt][ACCOUNTNO=$d_accountno][RNAME FILE/DB =".$d_name." / ".$rt_customer['c_name']."][".$upfield." FILE/DB/AFTER=".$updateTMP." / ".$rt_customer[$upfield]." / ".$rt_customera[$upfield]."]\n"; $addCronLog .= "[cnt=$lineCnt][ACCOUNTNO=$d_accountno][RNAME FILE/DB =".$d_name." / ".$rt_customer['c_name']."][".$upfield." FILE/DB/AFTER=".$updateTMP." / ".$rt_customer[$upfield]." / ".$rt_customera[$upfield]."]\n";
} }

View File

@ -2,10 +2,10 @@
include getenv("DOCUMENT_ROOT")."/include/session_include.php"; include getenv("DOCUMENT_ROOT")."/include/session_include.php";
@include getenv("DOCUMENT_ROOT")."/config/config_shopInfo.php"; @include getenv("DOCUMENT_ROOT")."/config/config_shopInfo.php";
include_once getenv("DOCUMENT_ROOT") . "/lib/erp_api.php";
if ($goStr == "") $goStr = "switched=$switched&page=$page&key_word=$key_word&column=$column&sorting_type=$sorting_type&switch=$switch"; if ($goStr == "") $goStr = "switched=$switched&page=$page&key_word=$key_word&column=$column&sorting_type=$sorting_type&switch=$switch";
$lguserid = $_SESSION['ss_UID'];
/* /*
for($i=0; $i<sizeof($_POST); $i++) { for($i=0; $i<sizeof($_POST); $i++) {
@ -101,7 +101,7 @@ if ($actionStr == "PICKUPORDERCUSTOMER") {
$columns[] = "d_ruid"; $columns[] = "d_ruid";
$columns[] = "d_driveruid"; $columns[] = "d_driveruid";
$columns[] = "d_customeruid"; $columns[] = "d_customeruid";
$columns[] = "d_accountno"; //$columns[] = "d_accountno";
$columns[] = "d_name"; $columns[] = "d_name";
$columns[] = "d_paymenttype"; $columns[] = "d_paymenttype";
$columns[] = "d_cycle"; $columns[] = "d_cycle";
@ -131,14 +131,15 @@ if ($actionStr == "PICKUPORDERCUSTOMER") {
$columns[] = "d_createruid"; $columns[] = "d_createruid";
$columns[] = "d_createddate"; $columns[] = "d_createddate";
$columns[] = "d_inputdate"; //$columns[] = "d_inputdate";
} }
else { else {
$columns[] = "d_modifydate"; $columns[] = "d_modifydate";
} }
$columns[] = "d_accountno";
$columns[] = "d_orderdate"; $columns[] = "d_orderdate";
$columns[] = "d_inputdate";
$columns[] = "d_quantity"; $columns[] = "d_quantity";
$columns[] = "d_sludge"; $columns[] = "d_sludge";
@ -149,6 +150,7 @@ if ($actionStr == "PICKUPORDERCUSTOMER") {
$columns[] = "d_status"; $columns[] = "d_status";
$columns[] = "d_payeename"; $columns[] = "d_payeename";
$columns[] = "d_is_transfer"; // Integration to ERP
//////////// ////////////
// data // data
@ -162,7 +164,7 @@ if ($actionStr == "PICKUPORDERCUSTOMER") {
$values[] = ""; // d_ruid $values[] = ""; // d_ruid
$values[] = $d_driveruid; $values[] = $d_driveruid;
$values[] = $c_uid; $values[] = $c_uid;
$values[] = $c_accountno; //$values[] = $c_accountno;
$values[] = $c_name; $values[] = $c_name;
$values[] = $c_paymenttype; $values[] = $c_paymenttype;
$values[] = $c_paymentcycle; $values[] = $c_paymentcycle;
@ -192,13 +194,15 @@ if ($actionStr == "PICKUPORDERCUSTOMER") {
$values[] = $_SESSION['ss_UID']; // d_createruid $values[] = $_SESSION['ss_UID']; // d_createruid
$values[] = date("YmdHis"); // d_createddate $values[] = date("YmdHis"); // d_createddate
$values[] = date("YmdHis"); // d_inputdate //$values[] = date("YmdHis"); // d_inputdate
} }
else { else {
$values[] = date("YmdHis"); // d_modifydate $values[] = date("YmdHis"); // d_modifydate
} }
$values[] = $c_accountno;
$values[] = $d_visitdate; $values[] = $d_visitdate;
$values[] = date("YmdHis"); // d_inputdate
$values[] = $d_quantity; $values[] = $d_quantity;
$values[] = $d_sludge; $values[] = $d_sludge;
@ -209,6 +213,7 @@ if ($actionStr == "PICKUPORDERCUSTOMER") {
$values[] = "F"; $values[] = "F";
$values[] = $d_payeename; $values[] = $d_payeename;
$values[] = "N"; // Integration to ERP
// Signiture // Signiture
if ($signednew == 1) $putSignFlag = 1; if ($signednew == 1) $putSignFlag = 1;
@ -237,12 +242,6 @@ if ($actionStr == "PICKUPORDERCUSTOMER") {
} }
//for ($i=0; $i < count($columns); $i++)
//echo "IN[$columns[$i]][$values[$i]]<br>";
//exit;
if($d_mode == "create") { if($d_mode == "create") {
$jdb->iQuery("tbl_daily", $columns, $values); $jdb->iQuery("tbl_daily", $columns, $values);
@ -253,9 +252,44 @@ if ($actionStr == "PICKUPORDERCUSTOMER") {
$logSTR = "[d_uid=$d_uid][d_driveruid=$d_driveruid][d_quantity=$d_quantity][d_paystatus=$d_paystatus][d_payamount=".number_format(floatval($d_payamount), 2, '.', ',')."]"; $logSTR = "[d_uid=$d_uid][d_driveruid=$d_driveruid][d_quantity=$d_quantity][d_paystatus=$d_paystatus][d_payamount=".number_format(floatval($d_payamount), 2, '.', ',')."]";
addLog ("add", "ORDER PICKUP - CUSTOMER", "PICKUP-INSERT", $lguserid, $logSTR, $d_uid); addLog ("add", "ORDER PICKUP - CUSTOMER", "PICKUP-INSERT", $lguserid, $logSTR, $d_uid);
// ====================
// Integration to ERP
// ====================
$columns[] = "d_pickupnote";
$values[] = str_replace("\\", "", trim($d_note));
$erp = new ErpApi();
try {
// ERP로 전송 (payload 내부에서 자동 매핑)
$erp->createDailyOrderFromMis($columns, $values, $lguserid);
// 성공 시 플래그 & 로그
$jdb->uQuery("tbl_daily", ["d_is_transfer"], ["Y"], " WHERE d_uid = '$d_uid'");
} catch (Exception $e) {
// 여기서는 아무것도 안함
}
} else { } else {
$jdb->uQuery("tbl_daily", $columns, $values, " where d_uid = '$d_uid' "); $jdb->uQuery("tbl_daily", $columns, $values, " where d_uid = '$d_uid' ");
// ====================
// Integration to ERP
// ====================
$columns[] = "d_pickupnote";
$values[] = str_replace("\\", "", trim($d_note));
$erp = new ErpApi();
try {
// ERP로 전송 (payload 내부에서 자동 매핑)
$erp->updateDailyOrderFromMis($columns, $values, $lguserid);
// 성공 시 플래그 & 로그
$jdb->uQuery("tbl_daily", ["d_is_transfer"], ["Y"], " WHERE d_uid = '$d_uid'");
} catch (Exception $e) {
// 여기서는 아무것도 안함
}
$logSTR = "[d_uid=$d_uid][d_driveruid=$d_driveruid][d_quantity=$d_quantity][d_paystatus=$d_paystatus][d_payamount=".number_format(floatval($d_payamount), 2, '.', ',')."]"; $logSTR = "[d_uid=$d_uid][d_driveruid=$d_driveruid][d_quantity=$d_quantity][d_paystatus=$d_paystatus][d_payamount=".number_format(floatval($d_payamount), 2, '.', ',')."]";
addLog ("add", "ORDER PICKUP - CUSTOMER", "PICKUP-UPDATE", $lguserid, $logSTR, $d_uid); addLog ("add", "ORDER PICKUP - CUSTOMER", "PICKUP-UPDATE", $lguserid, $logSTR, $d_uid);
@ -318,6 +352,10 @@ if ($actionStr == "PICKUPORDERCUSTOMER") {
//echo "[$qry_customer]<br>"; //echo "[$qry_customer]<br>";
$jdb->nQuery($qry_customer, "update error"); $jdb->nQuery($qry_customer, "update error");
// ====================
// Integration to ERP
// ERP 에서는 Trigger로 처리
// ====================
addLog ("add", "ORDER PICKUP - CUSTOMER", "UPDATE", $lguserid, $qry_customer, $d_customeruid); addLog ("add", "ORDER PICKUP - CUSTOMER", "UPDATE", $lguserid, $qry_customer, $d_customeruid);
@ -575,6 +613,32 @@ if ($actionStr == "ORDERINFO" && $mode == "delete") {
$jdb->nQuery($qry_customer, "update error"); $jdb->nQuery($qry_customer, "update error");
addLog ("add", "ORDER DELETE", "UPDATE", $lguserid, $qry_customer, $d_accountno); addLog ("add", "ORDER DELETE", "UPDATE", $lguserid, $qry_customer, $d_accountno);
// ====================
// Integration to ERP
// 나머지는 trigger 처리
// ====================
$columns = array();
$values = array();
$columns[] = "d_accountno";
$columns[] = "d_orderdate";
$columns[] = "d_status";
$values[] = $d_accountno;
$values[] = $d_orderdate;
$values[] = "D";
$erp = new ErpApi();
try {
// ERP로 전송 (payload 내부에서 자동 매핑)
$erp->updateDailyOrderFromMis($columns, $values, $lguserid);
// 성공 시 플래그 & 로그 (지웠음)
// $jdb->uQuery("tbl_daily", ["d_is_transfer"], ["Y"], " WHERE d_uid = '$d_uid'");
} catch (Exception $e) {
// 여기서는 아무것도 안함
}
//else { //else {
// $msg = "Invalid data. Please try again. [Err - c_orderflag]"; // $msg = "Invalid data. Please try again. [Err - c_orderflag]";
@ -747,6 +811,26 @@ if ($actionStr == "ORDEROIL" && $mode == "insert") {
$rtvalue = $jdb->iQuery("tbl_daily", $columns, $values); $rtvalue = $jdb->iQuery("tbl_daily", $columns, $values);
// get d_uid
$qry_max = "SELECT max(d_uid) FROM tbl_daily ";
$rt_max = $jdb->fQuery($qry_max, "fetch query error");
$d_uid = $rt_max[0];
// ====================
// Integration to ERP
// ====================
$erp = new ErpApi();
try {
// ERP로 전송 (payload 내부에서 자동 매핑)
$erp->createDailyOrderFromMis($columns, $values, $lguserid);
// 성공 시 플래그 & 로그
$jdb->uQuery("tbl_daily", ["d_is_transfer"], ["Y"], " WHERE d_uid = '$d_uid'");
} catch (Exception $e) {
// 여기서는 아무것도 안함
}
//
$qry_customer = "UPDATE tbl_customer $qry_customer = "UPDATE tbl_customer
SET c_orderdate='$orderdate', c_orderflag = 1 SET c_orderdate='$orderdate', c_orderflag = 1
WHERE c_uid = '$c_uid'"; WHERE c_uid = '$c_uid'";
@ -801,6 +885,11 @@ if ($actionStr == "CUSTOMERINFO" && $mode == "delete") {
$jdb->CLOSE(); $jdb->CLOSE();
addLog ("add", "CUSTOMER DELETE", "DELETE", $lguserid, $qry_delete, $c_uid); addLog ("add", "CUSTOMER DELETE", "DELETE", $lguserid, $qry_delete, $c_uid);
// ====================
// Integration to ERP
// ====================
// 화면에서 기능이 없음
$msg = "Deleted successfully."; $msg = "Deleted successfully.";
$urlSTR = "/index_intranet.php?view=customer_list&$goStr"; $urlSTR = "/index_intranet.php?view=customer_list&$goStr";
@ -1353,11 +1442,6 @@ if ($actionStr == "ADDREQUEST" && $mode == "create") {
$logSTR = "tbl_request[".$result['c_accountno']."][".$r_driveruid."][".date("YmdHis")."]"; $logSTR = "tbl_request[".$result['c_accountno']."][".$r_driveruid."][".date("YmdHis")."]";
addLog ("add", "REQUEST", "ADD", $lguserid, $logSTR, $lgno); addLog ("add", "REQUEST", "ADD", $lguserid, $logSTR, $lgno);
//for ($i=0; $i < count($columns); $i++)
//echo "[$columns[$i]][$values[$i]]<br>";
//echo "[UID=$uid][ID=$userid][MAXUID=$maxuid]";
//exit;
$jdb->iQuery("tbl_request", $columns, $values); $jdb->iQuery("tbl_request", $columns, $values);
$msg = "Created successfully."; $msg = "Created successfully.";
@ -1365,54 +1449,6 @@ if ($actionStr == "ADDREQUEST" && $mode == "create") {
$rt_max = $jdb->fQuery($qry_max, "fetch query error"); $rt_max = $jdb->fQuery($qry_max, "fetch query error");
$r_uidMAX = $rt_max[0]; $r_uidMAX = $rt_max[0];
/*
if (strlen(trim($r_note)) > 0) {
///////////////
// Add note
///////////////
$ccolumns = array();
$vvalues = array();
$ccolumns[] = "n_memberuid";
$ccolumns[] = "n_customeruid";
//$ccolumns[] = "n_dailyuid";
$ccolumns[] = "n_type";
$ccolumns[] = "n_level";
$ccolumns[] = "n_view";
$ccolumns[] = "n_note";
$ccolumns[] = "n_createddate";
////////////
// data
////////////
$vvalues[] = $r_memberuid;
$vvalues[] = $r_customeruid;
//$vvalues[] = $n_dailyuid;
$vvalues[] = "A";
$vvalues[] = $_SESSION['ss_LEVEL'];
$vvalues[] = "1";
//$noteMsg = "Request Pickup. Request Date : ".trim($r_requestdate)."<br>";
$vvalues[] = $noteMsg.str_replace("\\", "", trim($r_note));
$vvalues[] = date("YmdHis");
//for ($i=0; $i < count($ccolumns); $i++)
//echo "[$ccolumns[$i]][$vvalues[$i]]<br>";
//echo "[UID=$uid][ID=$userid][MAXUID=$maxuid]";
//exit;
$jdb->iQuery("tbl_note", $ccolumns, $vvalues);
}
*/
// 날짜간 일수 계산 // 날짜간 일수 계산
$getPeriodOrderTmp = new DateTime($r_requestdateSTR); $getPeriodOrderTmp = new DateTime($r_requestdateSTR);
@ -1471,21 +1507,11 @@ if ($actionStr == "ADDREQUEST" && $mode == "create") {
$columns[] = "d_lastpickupquantity"; $columns[] = "d_lastpickupquantity";
$columns[] = "d_lastpaiddate"; $columns[] = "d_lastpaiddate";
$columns[] = "d_estquantity"; $columns[] = "d_estquantity";
//$columns[] = "d_sludge";
//$columns[] = "d_paystatus";
//$columns[] = "d_payamount";
//$columns[] = "d_visit";
//$columns[] = "d_visitdate";
$columns[] = "d_createruid"; $columns[] = "d_createruid";
$columns[] = "d_createddate"; $columns[] = "d_createddate";
$columns[] = "d_status"; $columns[] = "d_status";
//$columns[] = "d_inputdate";
//$columns[] = "d_quantity";
// Data
// Data
$values[] = $r_requestdateSTR; $values[] = $r_requestdateSTR;
$values[] = "R"; // d_ordertype $values[] = "R"; // d_ordertype
$values[] = $r_uidMAX; $values[] = $r_uidMAX;
@ -1495,7 +1521,6 @@ if ($actionStr == "ADDREQUEST" && $mode == "create") {
$values[] = $c_name; $values[] = $c_name;
$values[] = $c_paymenttype; $values[] = $c_paymenttype;
$values[] = $c_paymentcycle; $values[] = $c_paymentcycle;
$values[] = $c_rate; // d_rate $values[] = $c_rate; // d_rate
$values[] = $c_form_eu; // d_form_eu $values[] = $c_form_eu; // d_form_eu
$values[] = $c_form_corsia; // d_form_corsia $values[] = $c_form_corsia; // d_form_corsia
@ -1505,7 +1530,6 @@ if ($actionStr == "ADDREQUEST" && $mode == "create") {
$values[] = $c_address; // d_address $values[] = $c_address; // d_address
$values[] = $c_city; // d_city $values[] = $c_city; // d_city
$values[] = $c_postal; // d_postal $values[] = $c_postal; // d_postal
//$values[] = $rt_customer['c_area']; // d_area
$values[] = 0; // d_oil_2y $values[] = 0; // d_oil_2y
$values[] = 0; // d_oil_1y $values[] = 0; // d_oil_1y
$values[] = 0; // d_oil_0y $values[] = 0; // d_oil_0y
@ -1517,33 +1541,43 @@ if ($actionStr == "ADDREQUEST" && $mode == "create") {
$values[] = $c_lastpaiddate; // d_lastpaiddate $values[] = $c_lastpaiddate; // d_lastpaiddate
// 이미 내일일자의 예상오일량이 저장되어 있으므로 -1 해줌 (2023.11.13) // 이미 내일일자의 예상오일량이 저장되어 있으므로 -1 해줌 (2023.11.13)
$values[] = round(floatval($c_fullquantity + (($dDiff-1) * $c_fullquantitydaily))); // d_estquantity $values[] = round(floatval($c_fullquantity + (($dDiff-1) * $c_fullquantitydaily))); // d_estquantity
//$values[] = $d_sludge; // d_sludge
//$values[] = ""; // d_paystatus
//$values[] = ""; // d_payamount
//$values[] = ""; // d_visit
//$values[] = ""; // d_visitdate
$values[] = $_SESSION['ss_UID']; // d_createruid $values[] = $_SESSION['ss_UID']; // d_createruid
$values[] = date("YmdHis"); // d_createddate $values[] = date("YmdHis"); // d_createddate
$values[] = "A"; // d_status $values[] = "A"; // d_status
//
//$values[] = ""; // d_inputdate
//$values[] = $d_quantity; // d_quantity
//for ($ii=0; $ii < count($columns); $ii++)
//echo "[$columns[$ii]][$values[$ii]]<br>";
//exit;
$rtvalue = $jdb->iQuery("tbl_daily", $columns, $values); $rtvalue = $jdb->iQuery("tbl_daily", $columns, $values);
// get d_uid
$qry_max = "SELECT max(d_uid) FROM tbl_daily ";
$rt_max = $jdb->fQuery($qry_max, "fetch query error");
$d_uid = $rt_max[0];
// ====================
// Integration to ERP
// ====================
$erp = new ErpApi();
try {
$columns[] = "d_requestnote";
$values[] = str_replace("\\", "", trim($r_note));
// ERP로 전송 (payload 내부에서 자동 매핑)
$erp->createDailyOrderFromMis($columns, $values, $lguserid);
// 성공 시 플래그 & 로그
$jdb->uQuery("tbl_daily", ["d_is_transfer"], ["Y"], " WHERE d_uid = '$d_uid'");
} catch (Exception $e) {
// 여기서는 아무것도 안함
}
$qry_customer = "UPDATE tbl_customer $qry_customer = "UPDATE tbl_customer
SET c_orderdate='$r_requestdateSTR', c_orderflag = 1 SET c_orderdate='$r_requestdateSTR', c_orderflag = 1
WHERE c_uid = '$r_customeruid'"; WHERE c_uid = '$r_customeruid'";
$jdb->nQuery($qry_customer, "update error"); $jdb->nQuery($qry_customer, "update error");
//
$logSTR = "tbl_daily[".$c_accountno."][r_driveruid=".$r_driveruid."][c_driveruid=".$c_driveruid."][".date("YmdHis")."]"; $logSTR = "tbl_daily[".$c_accountno."][r_driveruid=".$r_driveruid."][c_driveruid=".$c_driveruid."][".date("YmdHis")."]";
addLog ("add", "REQUEST", "ADD", $lguserid, $logSTR, $lgno); addLog ("add", "REQUEST", "ADD", $lguserid, $logSTR, $lgno);
@ -1844,10 +1878,35 @@ if ($actionStr == "SIGNATURE") {
$file = $folderPath ."/". $orderdate. "_". $uniquevalue . '.'.$image_type; $file = $folderPath ."/". $orderdate. "_". $uniquevalue . '.'.$image_type;
$d_payeesignSTR = $orderdate. "_". $uniquevalue . '.'.$image_type; $d_payeesignSTR = $orderdate. "_". $uniquevalue . '.'.$image_type;
$qry_customer = "UPDATE tbl_daily $qry_customer = "UPDATE tbl_daily
SET d_payeesign='$d_payeesignSTR' SET d_payeesign='$d_payeesignSTR', d_is_transfer='N'
WHERE d_uid = '$uid'"; WHERE d_uid = '$uid'";
$jdb->nQuery($qry_customer, "update error"); $jdb->nQuery($qry_customer, "update error");
// ====================
// Integration to ERP
// ====================
$columns = array();
$values = array();
$columns[] = "d_accountno";
$columns[] = "d_orderdate";
$columns[] = "d_payeesign";
$values[] = $customerno;
$values[] = $orderdate;
$values[] = $d_payeesignSTR;
$erp = new ErpApi();
try {
// ERP로 전송 (payload 내부에서 자동 매핑)
$erp->updateDailyOrderFromMis($columns, $values, $lguserid);
// 성공 시 플래그 & 로그
$jdb->uQuery("tbl_daily", ["d_is_transfer"], ["Y"], " WHERE d_uid = '$d_uid'");
} catch (Exception $e) {
// 여기서는 아무것도 안함
}
} }
else { else {
$file = $folderPath ."/". "T_". $orderdate. "_". $uniquevalue . '.'.$image_type; $file = $folderPath ."/". "T_". $orderdate. "_". $uniquevalue . '.'.$image_type;