649 lines
19 KiB
JavaScript
649 lines
19 KiB
JavaScript
|
|
function fnReplCell_advc(){
|
|
console.log(':: fnReplCell_advc ::'); // 함수 실행 로그
|
|
|
|
let smsTxtArea = $('#smsTxtArea').val(); // 문자 내용을 가져옴
|
|
const adTxt = $('.ad_txt').text(); // 광고 문구
|
|
const denyTxt = $('.deny_txt').text(); // 수신 거부 문구
|
|
const recTableData = tableL.getRows(); // 받는사람 리스트
|
|
|
|
// 광고 문구와 수신 거부 문구를 문자 내용에 추가
|
|
if (adTxt && denyTxt) {
|
|
smsTxtArea = `${adTxt}\n${smsTxtArea}\n${denyTxt}`;
|
|
}
|
|
|
|
// 문자 내용에 치환 문자열이 포함되어 있는지 확인
|
|
if (!SmsTextProcessor.hasPlaceholders(smsTxtArea)) return;
|
|
|
|
$('#txtReplYn').val("Y"); // 치환 여부 상태값 설정
|
|
|
|
// 받는사람 데이터가 없는 경우 종료
|
|
if (!recTableData.length) return;
|
|
|
|
try {
|
|
// 문자 내용을 처리하고 단문/장문 카운트를 얻음
|
|
const msgCount = SmsTextProcessor.processSmsText(smsTxtArea, recTableData);
|
|
|
|
// 총 가격 계산 및 업데이트
|
|
replTotalPriceSum(msgCount.short, msgCount.long, recTableData.length);
|
|
$('#txtReplYn').val("Y"); // 일괄변환문자 포함 여부 설정
|
|
} catch (error) {
|
|
console.error(error.message); // 오류 메시지 로그
|
|
}
|
|
}
|
|
|
|
//특정문구 일괄변환 문자길이 체크 하기
|
|
function fnReplCell(){
|
|
|
|
var smsTxtArea = $('#smsTxtArea').val();
|
|
var imgCnt = $("#imgCnt").val(); // 현재 페이지에 첨부된 이미지 갯수
|
|
var orgSmsTxt = smsTxtArea; // 광고문자 뺀 문자내용
|
|
|
|
var adTxt = $('.ad_txt').text();
|
|
var denyTxt = $('.deny_txt').text();
|
|
|
|
var adverTxt = "";
|
|
|
|
//이벤트 잔여 캐시 자동 처리 관련 변수
|
|
var evnRemainCash = parseFloat($("#eventRemainCash").val()); //이벤트 잔여 캐시 금액
|
|
var evnEachPrice = parseFloat($("#eachPrice").val());
|
|
var evnShortPrice = parseFloat($("#sPrice").val());
|
|
var evnLongPrice = parseFloat($("#mPrice").val());
|
|
var evnPhoneNumCnt = 0;
|
|
var evnShortMsgCnt = 0;
|
|
var evnLongMsgCnt = 0;
|
|
var evnMsgCntSts = true;
|
|
|
|
if(adTxt.length > 0 && denyTxt.length > 0){
|
|
|
|
adverTxt = adTxt + "\n" + smsTxtArea + "\n" + denyTxt;
|
|
smsTxtArea = adverTxt;
|
|
|
|
}
|
|
|
|
|
|
console.log('???smsTxtArea :: ', smsTxtArea);
|
|
if(smsTxtArea.indexOf("[*이름*]") > -1
|
|
|| smsTxtArea.indexOf("[*1*]") > -1
|
|
|| smsTxtArea.indexOf("[*2*]") > -1
|
|
|| smsTxtArea.indexOf("[*3*]") > -1
|
|
|| smsTxtArea.indexOf("[*4*]") > -1){
|
|
|
|
|
|
var rowData = tableL.getRows();
|
|
var recTableData = tableL.getRows(); // 받는사람 리스트의 전체 목록을 저장
|
|
//var tableData = [];
|
|
|
|
var msg_short = 0; //단문문자 갯수
|
|
var msg_long = 0; //장문문자 갯수
|
|
|
|
//일괄변환문자 포함 여부 변경 - 문자내용에 치환변환 문자는 있지만 받는사람 데이터에 치환 데이터를 안넣는 경우 오류가 발생하여 상태값 입력 위치 상단으로 변경함.
|
|
//치환데이터가 없는 경우 Alert 띄우고 빠져나가기 때문에 치환문자 상태 체크값이 누락되어서 변경함 - 20230407 우영두
|
|
$('#txtReplYn').val("Y");
|
|
|
|
var nmStatus = false;
|
|
var rep1Status = false;
|
|
var rep2Status = false;
|
|
var rep3Status = false;
|
|
var rep4Status = false;
|
|
|
|
if(smsTxtArea.indexOf("[*이름*]") > -1){
|
|
|
|
nmStatus = true;
|
|
}
|
|
|
|
if(smsTxtArea.indexOf("[*1*]") > -1){
|
|
|
|
rep1Status = true;
|
|
}
|
|
|
|
if(smsTxtArea.indexOf("[*2*]") > -1){
|
|
|
|
rep2Status = true;
|
|
}
|
|
|
|
if(smsTxtArea.indexOf("[*3*]") > -1){
|
|
|
|
rep3Status = true;
|
|
}
|
|
|
|
if(smsTxtArea.indexOf("[*4*]") > -1){
|
|
|
|
rep4Status = true;
|
|
}
|
|
|
|
|
|
//기존 받는사람 리스트를 배열에 미리 담아둔다.
|
|
if(recTableData.length > 0){
|
|
|
|
for(var j=0; j < recTableData.length; j++){
|
|
|
|
var smsTxt = smsTxtArea;
|
|
|
|
if(typeof recTableData[j].getData().name != 'undefined'
|
|
&& recTableData[j].getData().name != null
|
|
&& recTableData[j].getData().name != ""){
|
|
|
|
// console.log('name : ', name);
|
|
// console.log('smsTxt : ', smsTxt);
|
|
// console.log('orgSmsTxt : ', orgSmsTxt);
|
|
var name = recTableData[j].getData().name;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*이름*]", name);
|
|
orgSmsTxt = stringReplaceAll(orgSmsTxt, "[*이름*]", name);//광고, 선거 문자인 경우 상하단 문구 제거한 문자내용만 보여주도록 함. 치환문자 있으면 변환해서 보여줌
|
|
|
|
|
|
}/*else{
|
|
|
|
if(nmStatus){
|
|
alert("[*이름*] 치환 문자에 데이터가 없습니다. 받는사람 목록의 치환 데이터를 확인해 주세요.");
|
|
return false;
|
|
}
|
|
|
|
}*/
|
|
|
|
if(typeof recTableData[j].getData().rep1 != 'undefined' && recTableData[j].getData().rep1 != null && recTableData[j].getData().rep1 != ""){
|
|
|
|
var rep1 = recTableData[j].getData().rep1;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*1*]", rep1);
|
|
orgSmsTxt = stringReplaceAll(orgSmsTxt, "[*1*]", rep1);
|
|
|
|
}/*else{
|
|
|
|
if(rep1Status){
|
|
alert("[*1*] 치환 문자에 데이터가 없습니다. 받는사람 목록의 치환 데이터를 확인해 주세요.");
|
|
return false;
|
|
}
|
|
|
|
}*/
|
|
|
|
if(typeof recTableData[j].getData().rep2 != 'undefined' && recTableData[j].getData().rep2 != null && recTableData[j].getData().rep2 != ""){
|
|
|
|
var rep2 = recTableData[j].getData().rep2;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*2*]", rep2);
|
|
orgSmsTxt = stringReplaceAll(orgSmsTxt, "[*2*]", rep2);
|
|
|
|
}/*else{
|
|
|
|
if(rep2Status){
|
|
alert("[*2*] 치환 문자에 데이터가 없습니다. 받는사람 목록의 치환 데이터를 확인해 주세요.");
|
|
return false;
|
|
}
|
|
|
|
}*/
|
|
|
|
if(typeof recTableData[j].getData().rep3 != 'undefined' && recTableData[j].getData().rep3 != null && recTableData[j].getData().rep3 != ""){
|
|
|
|
var rep3 = recTableData[j].getData().rep3;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*3*]", rep3);
|
|
orgSmsTxt = stringReplaceAll(orgSmsTxt, "[*3*]", rep3);
|
|
|
|
}/*else{
|
|
|
|
if(rep3Status){
|
|
alert("[*3*] 치환 문자에 데이터가 없습니다. 받는사람 목록의 치환 데이터를 확인해 주세요.");
|
|
return false;
|
|
}
|
|
|
|
}*/
|
|
|
|
if(typeof recTableData[j].getData().rep4 != 'undefined' && recTableData[j].getData().rep4 != null && recTableData[j].getData().rep4 != ""){
|
|
|
|
var rep4 = recTableData[j].getData().rep4;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*4*]", rep4);
|
|
orgSmsTxt = stringReplaceAll(orgSmsTxt, "[*4*]", rep4);
|
|
|
|
}/*else{
|
|
|
|
if(rep4Status){
|
|
alert("[*4*] 치환 문자에 데이터가 없습니다. 받는사람 목록의 치환 데이터를 확인해 주세요.");
|
|
return false;
|
|
}
|
|
|
|
}*/
|
|
|
|
|
|
var msgLen = conByteLeng(smsTxt);
|
|
|
|
if(msgLen < 1){
|
|
|
|
|
|
}else if(msgLen > 2000){
|
|
|
|
alert("문자 내용은 2000byte를 넘을 수 없습니다.");
|
|
return false;
|
|
|
|
}else{
|
|
|
|
if(msgLen > 90){
|
|
|
|
msg_long++;
|
|
console.log(evnRemainCash + " === " + evnLongPrice);
|
|
if(evnRemainCash >= evnLongPrice && evnMsgCntSts == true){//이벤트 금액으로 보낼수 있으면 카운팅
|
|
|
|
evnRemainCash = evnRemainCash - evnLongPrice;
|
|
evnPhoneNumCnt++;
|
|
evnLongMsgCnt++;
|
|
$("#evnPhoneNumCnt").val(evnPhoneNumCnt);
|
|
$("#evnLongMsgCnt").val(evnLongMsgCnt);
|
|
|
|
}else{//이벤트 금액으로 보낼수 없으면 카운팅 중지
|
|
evnMsgCntSts = false;
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
msg_short++;
|
|
console.log(evnRemainCash + " === " + evnShortPrice);
|
|
if(evnRemainCash >= evnShortPrice && evnMsgCntSts == true){//이벤트 금액으로 발송할 수 있으면 카운팅
|
|
|
|
evnRemainCash = evnRemainCash - evnShortPrice;
|
|
evnPhoneNumCnt++;
|
|
evnShortMsgCnt++;
|
|
$("#evnPhoneNumCnt").val(evnPhoneNumCnt);
|
|
$("#evnShortMsgCnt").val(evnShortMsgCnt);
|
|
|
|
}else{//이벤트 금액으로 보낼수 없으면 카운티 중지
|
|
evnMsgCntSts = false;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
replTotalPriceSum(msg_short, msg_long, totRows);
|
|
|
|
//첫번째 수신자의 변환 텍스트 내용을 적용하여 미리보기 문자내용에 보여주자.
|
|
if(j == 0){
|
|
|
|
console.log('adverTxt : ', adverTxt);
|
|
//미리보기에 내용 입력해 주기
|
|
if(adverTxt.length > 0){
|
|
|
|
$('.realtime').text(orgSmsTxt);
|
|
|
|
}else{
|
|
|
|
$('.realtime').text(smsTxt);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//일괄변환문자 포함 여부 변경
|
|
//$('#txtReplYn').val("Y");
|
|
|
|
}
|
|
|
|
//변환후 문자 중에 장문이 1개 이상 있는 경우 문자 제목을 입력해 주기
|
|
/*var txtReplYn = $('#txtReplYn').val();
|
|
|
|
if(txtReplYn == 'Y' && (msg_long > 0 || imgCnt > 0)){
|
|
|
|
//장문, 그림 문자가 포함되어 있는 경우 제목을 입력하도록 처리
|
|
$('#mmsSubject').attr("disabled", false);
|
|
|
|
}else if(txtReplYn == 'Y' && msg_long < 1){
|
|
|
|
//일괄변환애 단문문자만 있는경우 제목 입력 안되도록 처리
|
|
$('#mmsSubject').val("");
|
|
$('#mmsSubject').attr("disabled", true);
|
|
|
|
}*/
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 문자 처리 객체
|
|
const SmsTextProcessor = {
|
|
// 치환 문자열 배열
|
|
placeholders: ["[*이름*]", "[*1*]", "[*2*]", "[*3*]", "[*4*]"],
|
|
|
|
// 치환 문자열이 포함되어 있는지 확인
|
|
hasPlaceholders(smsTxt) {
|
|
// smsTxt에서 placeholders 중 하나라도 포함되면 true 반환
|
|
return this.placeholders.some(ph => smsTxt.includes(ph));
|
|
},
|
|
|
|
// 문자 내용을 치환하는 함수
|
|
replacePlaceholders(text, data) {
|
|
// 치환 문자열 키와 값을 매핑하여 처리
|
|
return this.placeholders.reduce((result, ph, index) => {
|
|
// 치환 키 설정 (예: [*1*], [*2*])
|
|
const key = index === 0 ? "name" : `rep${index}`;
|
|
// 데이터 값이 없으면 치환 문자열 그대로 유지
|
|
const value = data[key] !== undefined && data[key] !== null ? data[key] : ph;
|
|
|
|
// console.log(`Replacing ${ph} with ${value}:`); // 디버깅 로그
|
|
// 현재 치환 문자열만 교체
|
|
// return result.replace(new RegExp(`\\${ph}(?!\\[)`, "g"), value);
|
|
return stringReplaceAll(result, ph, value)
|
|
}, text);
|
|
}
|
|
,
|
|
|
|
// 문자 길이를 계산하고 메시지 유형(단문/장문) 카운트
|
|
processMessageLength(smsTxt, msgCount) {
|
|
// 문자 길이(byte) 계산
|
|
const msgLen = conByteLeng(smsTxt);
|
|
//console.log('msgLen : ', msgLen);
|
|
//console.log('smsTxt : ', smsTxt);
|
|
|
|
// 2000byte 초과시 오류 발생
|
|
if (msgLen > 2000) {
|
|
alert("문자 내용은 2000byte를 넘을 수 없습니다.");
|
|
throw new Error("문자 내용 초과");
|
|
}
|
|
|
|
// 길이에 따라 장문/단문 카운트 증가
|
|
if (msgLen > 90) {
|
|
msgCount.long++;
|
|
} else {
|
|
msgCount.short++;
|
|
}
|
|
|
|
return msgCount; // 업데이트된 카운트 반환
|
|
},
|
|
|
|
// 문자 내용 처리 함수
|
|
processSmsText(smsTxtArea, rowData) {
|
|
const msgCount = { short: 0, long: 0 }; // 단문/장문 초기화
|
|
|
|
|
|
// 수신자 데이터가 없는 경우 원본 문자 유지
|
|
if (!rowData || rowData.length === 0) {
|
|
$('.realtime').text(smsTxtArea);
|
|
return msgCount;
|
|
}
|
|
|
|
// 받는사람 데이터 순회
|
|
rowData.forEach((row, index) => {
|
|
// 문자 내용을 개별 데이터로 치환
|
|
let smsTxt = this.replacePlaceholders(smsTxtArea, row.getData());
|
|
// 문자 길이를 계산하고 카운트를 업데이트
|
|
this.processMessageLength(smsTxt, msgCount);
|
|
|
|
// 첫 번째 수신자의 변환 결과를 미리보기로 설정
|
|
if (index === 0) {
|
|
// console.log('smsTxt : ',smsTxt);
|
|
$('.realtime').text(smsTxt); // 화면에 표시
|
|
}
|
|
});
|
|
|
|
return msgCount; // 최종 카운트 반환
|
|
}
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//특정문구 일괄변환 문자길이 체크 하기
|
|
function fnReplCellExcel(){
|
|
console.log('fnReplCellExcel');
|
|
var smsTxtArea = $('#smsTxtArea').val();
|
|
var imgCnt = $("#imgCnt").val(); // 현재 페이지에 첨부된 이미지 갯수
|
|
var orgSmsTxt = smsTxtArea; // 광고문자 뺀 문자내용
|
|
var adTxt = $('.ad_txt').text();
|
|
var denyTxt = $('.deny_txt').text();
|
|
|
|
var adverTxt = "";
|
|
|
|
//이벤트 잔여 캐시 자동 처리 관련 변수
|
|
var evnRemainCash = parseFloat($("#eventRemainCash").val()); //이벤트 잔여 캐시 금액
|
|
var evnEachPrice = parseFloat($("#eachPrice").val());
|
|
var evnShortPrice = parseFloat($("#sPrice").val());
|
|
var evnLongPrice = parseFloat($("#mPrice").val());
|
|
var evnPhoneNumCnt = 0;
|
|
var evnShortMsgCnt = 0;
|
|
var evnLongMsgCnt = 0;
|
|
var evnMsgCntSts = true;
|
|
|
|
if(adTxt.length > 0 && denyTxt.length > 0){
|
|
|
|
adverTxt = adTxt + "\n" + smsTxtArea + "\n" + denyTxt;
|
|
smsTxtArea = adverTxt;
|
|
|
|
}
|
|
|
|
if(smsTxtArea.indexOf("[*이름*]") > -1
|
|
|| smsTxtArea.indexOf("[*1*]") > -1
|
|
|| smsTxtArea.indexOf("[*2*]") > -1
|
|
|| smsTxtArea.indexOf("[*3*]") > -1
|
|
|| smsTxtArea.indexOf("[*4*]") > -1){
|
|
|
|
|
|
var rowData = tableR.getRows();
|
|
var recTableData = tableR.getRows(); // 받는사람 리스트의 전체 목록을 저장
|
|
//var tableData = [];
|
|
|
|
var msg_short = 0;
|
|
var msg_long = 0;
|
|
|
|
var nmStatus = false;
|
|
var rep1Status = false;
|
|
var rep2Status = false;
|
|
var rep3Status = false;
|
|
var rep4Status = false;
|
|
|
|
if(smsTxtArea.indexOf("[*이름*]") > -1){
|
|
|
|
nmStatus = true;
|
|
}
|
|
|
|
if(smsTxtArea.indexOf("[*1*]") > -1){
|
|
|
|
rep1Status = true;
|
|
}
|
|
|
|
if(smsTxtArea.indexOf("[*2*]") > -1){
|
|
|
|
rep2Status = true;
|
|
}
|
|
|
|
if(smsTxtArea.indexOf("[*3*]") > -1){
|
|
|
|
rep3Status = true;
|
|
}
|
|
|
|
if(smsTxtArea.indexOf("[*4*]") > -1){
|
|
|
|
rep4Status = true;
|
|
}
|
|
|
|
//일괄변환문자 포함 여부 변경 - 문자내용에 치환변환 문자는 있지만 받는사람 데이터에 치환 데이터를 안넣는 경우 오류가 발생하여 상태값 입력 위치 상단으로 변경함.
|
|
//치환데이터가 없는 경우 Alert 띄우고 빠져나가기 때문에 치환문자 상태 체크값이 누락되어서 변경함 - 20230407 우영두
|
|
$('#txtReplYn').val("Y");
|
|
|
|
//기존 받는사람 리스트를 배열에 미리 담아둔다.
|
|
if(recTableData.length > 0){
|
|
|
|
for(var j=0; j < recTableData.length; j++){
|
|
|
|
var smsTxt = smsTxtArea;
|
|
if(typeof recTableData[j].getData().name != 'undefined'
|
|
&& recTableData[j].getData().name != null
|
|
&& recTableData[j].getData().name != "")
|
|
{
|
|
|
|
var name = recTableData[j].getData().name;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*이름*]", name);
|
|
orgSmsTxt = stringReplaceAll(orgSmsTxt, "[*이름*]", name);//광고, 선거 문자인 경우 상하단 문구 제거한 문자내용만 보여주도록 함. 치환문자 있으면 변환해서 보여줌
|
|
|
|
}/*else{
|
|
|
|
if(nmStatus){
|
|
alert("[*이름*] 치환 문자에 데이터가 없습니다. 받는사람 목록의 치환 데이터를 확인해 주세요.");
|
|
return false;
|
|
}
|
|
|
|
}*/
|
|
|
|
if(typeof recTableData[j].getData().rep1 != 'undefined' && recTableData[j].getData().rep1 != null){
|
|
|
|
var rep1 = recTableData[j].getData().rep1;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*1*]", rep1);
|
|
orgSmsTxt = stringReplaceAll(orgSmsTxt, "[*1*]", rep1);
|
|
|
|
}/*else{
|
|
|
|
if(rep1Status){
|
|
alert("[*1*] 치환 문자에 데이터가 없습니다. 받는사람 목록의 치환 데이터를 확인해 주세요.");
|
|
return false;
|
|
}
|
|
|
|
}*/
|
|
|
|
if(typeof recTableData[j].getData().rep2 != 'undefined' && recTableData[j].getData().rep2 != null){
|
|
|
|
var rep2 = recTableData[j].getData().rep2;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*2*]", rep2);
|
|
orgSmsTxt = stringReplaceAll(orgSmsTxt, "[*2*]", rep2);
|
|
|
|
}/*else{
|
|
|
|
if(rep2Status){
|
|
alert("[*2*] 치환 문자에 데이터가 없습니다. 받는사람 목록의 치환 데이터를 확인해 주세요.");
|
|
return false;
|
|
}
|
|
|
|
}*/
|
|
|
|
if(typeof recTableData[j].getData().rep3 != 'undefined' && recTableData[j].getData().rep3 != null){
|
|
|
|
var rep3 = recTableData[j].getData().rep3;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*3*]", rep3);
|
|
orgSmsTxt = stringReplaceAll(orgSmsTxt, "[*3*]", rep3);
|
|
|
|
}/*else{
|
|
|
|
if(rep3Status){
|
|
alert("[*3*] 치환 문자에 데이터가 없습니다. 받는사람 목록의 치환 데이터를 확인해 주세요.");
|
|
return false;
|
|
}
|
|
|
|
}*/
|
|
|
|
if(typeof recTableData[j].getData().rep4 != 'undefined' && recTableData[j].getData().rep4 != null){
|
|
|
|
var rep4 = recTableData[j].getData().rep4;
|
|
smsTxt = stringReplaceAll(smsTxt, "[*4*]", rep4);
|
|
orgSmsTxt = stringReplaceAll(orgSmsTxt, "[*4*]", rep4);
|
|
|
|
}/*else{
|
|
|
|
if(rep4Status){
|
|
alert("[*4*] 치환 문자에 데이터가 없습니다. 받는사람 목록의 치환 데이터를 확인해 주세요.");
|
|
return false;
|
|
}
|
|
|
|
}*/
|
|
|
|
|
|
var msgLen = conByteLeng(smsTxt);
|
|
|
|
if(msgLen < 1){
|
|
|
|
|
|
}else if(msgLen > 2000){
|
|
|
|
alert("문자 내용은 2000byte를 넘을 수 없습니다.");
|
|
return false;
|
|
|
|
}else{
|
|
|
|
if(msgLen > 90){
|
|
|
|
msg_long++;
|
|
console.log(evnRemainCash + " === " + evnLongPrice);
|
|
if(evnRemainCash >= evnLongPrice && evnMsgCntSts == true){//이벤트 금액으로 보낼수 있으면 카운팅
|
|
|
|
evnRemainCash = evnRemainCash - evnLongPrice;
|
|
evnPhoneNumCnt++;
|
|
evnLongMsgCnt++;
|
|
$("#evnPhoneNumCnt").val(evnPhoneNumCnt);
|
|
$("#evnLongMsgCnt").val(evnLongMsgCnt);
|
|
|
|
}else{//이벤트 금액으로 보낼수 없으면 카운팅 중지
|
|
evnMsgCntSts = false;
|
|
}
|
|
|
|
}else{
|
|
|
|
msg_short++;
|
|
if(evnRemainCash >= evnShortPrice && evnMsgCntSts == true){//이벤트 금액으로 발송할 수 있으면 카운팅
|
|
|
|
evnRemainCash = evnRemainCash - evnShortPrice;
|
|
evnPhoneNumCnt++;
|
|
evnShortMsgCnt++;
|
|
$("#evnPhoneNumCnt").val(evnPhoneNumCnt);
|
|
$("#evnShortMsgCnt").val(evnShortMsgCnt);
|
|
|
|
}else{//이벤트 금액으로 보낼수 없으면 카운티 중지
|
|
evnMsgCntSts = false;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
replTotalPriceSum(msg_short, msg_long, totRows);
|
|
|
|
//첫번째 수신자의 변환 텍스트 내용을 적용하여 미리보기 문자내용에 보여주자.
|
|
if(j == 0){
|
|
|
|
//미리보기에 내용 입력해 주기
|
|
if(adverTxt.length > 0){
|
|
|
|
$('.realtime').text(orgSmsTxt);
|
|
|
|
}else{
|
|
|
|
$('.realtime').text(smsTxt);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//일괄변환문자 포함 여부 변경
|
|
//$('#txtReplYn').val("Y")
|
|
|
|
}
|
|
|
|
//변환후 문자 중에 장문이 1개 이상 있는 경우 문자 제목을 입력해 주기
|
|
/*var txtReplYn = $('#txtReplYn').val();
|
|
|
|
if(txtReplYn == 'Y' && (msg_long > 0 || imgCnt > 0 )){
|
|
|
|
//장문, 그림 문자가 포함되어 있는 경우 제목을 입력하도록 처리
|
|
$('#mmsSubject').attr("disabled", false);
|
|
|
|
}else if(txtReplYn == 'Y' && msg_long < 1){
|
|
|
|
//일괄변환에 단문문자만 있는경우 제목 입력 안되도록 처리
|
|
$('#mmsSubject').val("");
|
|
$('#mmsSubject').attr("disabled", true);
|
|
|
|
}*/
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//치환문자 replaceAll 기능 처리하는 함수
|
|
function stringReplaceAll(str, a, b){
|
|
|
|
return str.split(a).join(b);
|
|
}
|