본문으로 건너뛰기

상품 엑셀 업로드 시 단위가격 반영 개선

PHP 8 · GODO26
변경 파일 수: 1개
변경 파일 목록
총 1개
변경 파일 코드
추가삭제
Component/Excel/ExcelGoodsConvert.php+22-1
변경 전ExcelGoodsConvert.php
use Component\Database\DBTableField;
use Framework\Utility\ArrayUtils;
use Framework\Utility\ComponentUtils;
 
use Framework\Utility\ProducerUtils;
use Framework\Utility\StringUtils;
use Framework\Http\Parameter;
$goodsData['goodsNmFl'] = 'e';
}
switch ($dbKey) {
 
 
 
 
 
 
 
 
case 'kcmarkFl':
case 'kcmarkDivFl':
case 'kcmarkNo':
}
 
// 단위 가격 자동 계산 (올림)
$goodsPrice = floatval($goodsData['goodsPrice']);
 
 
 
 
 
 
 
 
 
 
 
 
$calcUnitPrice = ($goodsPrice > 0 && floatval($unitQuantity) > 0)
? ceil(($goodsPrice / floatval($unitQuantity)) * floatval($unitBaseQuantity))
: 0;
 
변경 후ExcelGoodsConvert.php
use Component\Database\DBTableField;
use Framework\Utility\ArrayUtils;
use Framework\Utility\ComponentUtils;
use Framework\Utility\NumberUtils;
use Framework\Utility\ProducerUtils;
use Framework\Utility\StringUtils;
use Framework\Http\Parameter;
$goodsData['goodsNmFl'] = 'e';
}
switch ($dbKey) {
case 'goodsPrice':
// 엑셀 셀이 텍스트 서식이면 '10,000' 처럼 콤마가 섞여 들어온다. 콤마를 둔 채 숫자 컬럼에 저장하면
// 앞자리만 남고 잘리므로, 저장과 단위가격 계산이 같은 값을 보도록 여기서 정규화한다
$goodsPrice = NumberUtils::numberFormatToFloat($goodsData[$dbKey]);
if ($goodsPrice !== false) {
$goodsData[$dbKey] = $goodsPrice;
}
break;
case 'kcmarkFl':
case 'kcmarkDivFl':
case 'kcmarkNo':
}
 
// 단위 가격 자동 계산 (올림)
// 판매가는 엑셀 값을 우선 사용하고, 컬럼 누락·권한 제외 등으로 쓸 수 없는 행만 저장이 끝난 DB 값으로 보완한다
$goodsPrice = $this->hasGoodsPriceAuth
? NumberUtils::numberFormatToFloat($goodsData['goodsPrice'] ?? null)
: false;
if ($goodsPrice === false) {
$arrBind = [];
$this->db->bind_param_push($arrBind, 'i', $goodsData['goodsNo']);
$strSQL = 'SELECT goodsPrice FROM ' . DB_GOODS . ' WHERE goodsNo = ?';
$goodsRow = $this->db->query_fetch($strSQL, $arrBind, false);
unset($arrBind);
$goodsPrice = floatval($goodsRow['goodsPrice'] ?? 0);
}
 
$calcUnitPrice = ($goodsPrice > 0 && floatval($unitQuantity) > 0)
? ceil(($goodsPrice / floatval($unitQuantity)) * floatval($unitBaseQuantity))
: 0;