<신규개발>

통합테스트목록 . 548
This commit is contained in:
kdh0120 2021-11-17 02:42:07 +00:00
parent 93cfa94a95
commit 49ab15228b
10 changed files with 199 additions and 9 deletions

View File

@ -876,6 +876,7 @@ namespace NP.BO.Controllers
ht.Add("etaxdate", string.IsNullOrEmpty(vm.stringval9) ? null : (vm.stringval9 + " 23:59:59"));
ht.Add("pstatus", vm.stringval10);
ht.Add("taxnos", vm.stringval11);
ht.Add("ischeck", vm.stringval12);
if (!string.IsNullOrEmpty(vm.stringval3))
{
if(vm.stringval3 == "2")

View File

@ -43,6 +43,7 @@
<td class="text-left">
@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", ":발행상태;0:미발행;1:발행;2:발행취소" }, { "name", "stringval3" }, { "selected", Model.stringval3 } })
@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", ":결제상태;p21:결제대기;p22:입금대기;p1:결제완료;rf1:환불요청;r1:부분환불;r2:전액환불;p41,42,43:결제취소" }, { "name", "stringval10" }, { "selected", Model.stringval10 } })
@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", ":확인상태;1:확인;0:미확인" }, { "name", "stringval12" }, { "selected", Model.stringval12 } })
@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "valuetext", ":전체검색;username:신청자이름;userid:신청자ID;manname:담당자이름;itemname:상품명;cname:교육과정명;paynos:결제번호;asname:회사명" }, { "name", "stringval4" }, { "selected", Model.stringval4 } })
@Html.Partial("./Partial/Text", Model.stringval5, Helpers.DicText(new NP.Model.TextDic() { Name = "stringval5", Value = Model.stringval5, PH = "", CssClass = "ff" }))
@Html.Partial("./Partial/Button", new NP.Model.Button() { Special = "search" })
@ -57,6 +58,8 @@
@Html.Partial("./Partial/pagerow", new ViewDataDictionary { { "tbodyid", "tbody1" }, { "searchmethod", "submit()" }, { "pagesize", Model.pagerowcount } })
@*<a href="#" onclick="javascript:exceldown('mform', '/croom/tax', 'tbody1', '계산서요청');" class="btn btn-s-xs btn-success" style="margin-left: 5px;">엑셀다운로드</a>*@
<a href="#" onclick="javascript:callexcel();" class="btn btn-s-xs btn-success" style="margin-left: 5px;">엑셀다운로드</a>
<a href="#" onclick="javascript:taxcheck();" class="btn btn-s-xs btn-info" style="margin-left: 5px;">일괄확인</a>
<a href="#" onclick="javascript:taxuncheck();" class="btn btn-s-xs btn-danger" style="margin-left: 5px;">일괄확인취소</a>
</div>
<section class="panel panel-default">
<div class="table-responsive" id="excel1">
@ -78,13 +81,14 @@
<th>발행한날</th>
<th>영수구분</th>
<th>상태</th>
<th>확인상태</th>
</tr>
</thead>
<tbody class="data" id="tbody1">
@foreach (var d in Model.PayTaxes)
{
<tr>
<td><input type="checkbox" class="autocheck" value="@d.taxno" /></td>
<td><input type="checkbox" class="autocheck" value="@d.taxno" data-ischeck="@d.ischeck" data-status="@d.status" /></td>
<td>@d.rno</td>
<td>@d.payno</td>
<td class="left">@Html.Raw(string.Format("<span class=\"isjoin{0}\">{1}</span> {2}", d.isjoin, d.isjoin == 1 ? "정" : "비", d.asname))</td>
@ -99,6 +103,7 @@
<td>@(d.realtaxdate == null ? "" : d.realtaxdate.Value.ToString("yyyy-MM-dd"))</td>
<td>@(d.isreceipt == 0 ? "청구" : "영수")</td>
<td class="taxdate@(d.status =="미발행" ? "x" :"")" @(!string.IsNullOrEmpty(d.mgtkey) && d.statecode == 0 ? "style=color:blue;" : "" )>@(d.status)</td>
<td class="taxdate@(d.ischeck == 1 ? "" : "x")">@(d.ischeckname)</td>
</tr>
}
@ -152,5 +157,84 @@
exceldown('mform', '/croom/tax', 'tbody1', '계산서요청');
}
}
function taxcheck() {
if ($("#tbody1 tr td input.autocheck:checked").length < 1) {
msg("확인 처리 할 요청서가 없습니다.");
} else {
var taxnos = "";
var chk = false;
var cnt = 0;
$.each($("#tbody1 tr td input.autocheck:checked"), function (i, c) {
if ($(c).attr("data-ischeck") == 1) {
chk = false;
return false;
} else {
chk = true;
cnt++;
taxnos += "," + $(c).val();
}
});
if (chk == false) {
msg("확인 완료 건이 포함되어 있습니다. 다시 확인해주세요.");
} else {
if(confirm("선택한 "+cnt+"건을 확인 처리 하시겠습니까?"))
capp("/acommon/taxcheck", { taxnos: taxnos.substr(1), ischeck: 1 }, "cbtaxcheck");
}
}
}
function cbtaxcheck() {
if (capResult.code == 1000) {
if (capResult.obj == -1) {
msg("확인 처리 할 요청서가 없습니다.");
} else if (capResult.obj == -2) {
//우연의 확률..
msg("확인 완료 건이 포함되어 있습니다. 다시 확인해주세요.", null, null, null, null, "submit()");
} else {
msg("일괄확인 처리 되었습니다.", null, null, null, null, "submit();");
}
} else {
msgdev();
}
}
function taxuncheck() {
if ($("#tbody1 tr td input.autocheck:checked").length < 1) {
msg("확인 취소 할 요청서가 없습니다.");
} else {
var taxnos = "";
var chk = false;
var cnt = 0;
$.each($("#tbody1 tr td input.autocheck:checked"), function (i, c) {
if ($(c).attr("data-ischeck") == 0) {
chk = false;
return false;
} else {
chk = true;
cnt++;
taxnos += "," + $(c).val();
}
});
if (chk == false) {
msg("미확인 건이 포함되어 있습니다. 다시 확인해주세요.");
} else {
if (confirm("선택한 " + cnt + "건을 일괄로 확인취소 처리 하시겠습니까?")) {
capp("/acommon/taxcheck", { taxnos: taxnos.substr(1), ischeck: 0 }, "cbtaxuncheck");
}
}
}
}
function cbtaxuncheck() {
if (capResult.code == 1000) {
if (capResult.obj == -1) {
msg("확인 취소 할 요청서가 없습니다.");
} else if (capResult.obj == -2) {
//우연의 확률..
msg("미확인 건이 포함되어 있습니다. 다시 확인해주세요.", null, null, null, null, "submit()");
} else {
msg("일괄확인취소 처리 되었습니다.", null, null, null, null, "submit();");
}
} else {
msgdev();
}
}
</script>
}

View File

@ -23,10 +23,14 @@
<th>상품명</th>
<th>수량<br />(인원)</th>
<th>발행요청금액</th>
<th>결제상태</th>
<th>신청일</th>
<th>계산서날짜</th>
<th>실제날짜</th>
<th>발행일</th>
<th>영수구분</th>
<th>상태</th>
<th>확인상태</th>
</tr>
</thead>
<tbody class="data" id="tbody1">
@ -39,10 +43,14 @@
<td class="left">@d.itemname @(d.ccount > 1 ? string.Format("외 {0}건", d.ccount - 1) : "")</td>
<td>@d.pcnt</td>
<td class="right">@d.taxamt.ToString("#,0")</td>
<td>@d.pstatusname2</td>
<td>@d.cdtymd</td>
<td>@(d.taxdatereq == null ? "" : d.taxdatereq.Value.ToString("yyyy-MM-dd"))</td>
<td>@(d.taxdate == null ? "" : d.taxdate.Value.ToString("yyyy-MM-dd"))</td>
<td>@(d.realtaxdate == null ? "" : d.realtaxdate.Value.ToString("yyyy-MM-dd"))</td>
<td>@(d.isreceipt == 0 ? "청구" : "영수")</td>
<td class="taxdate@(d.status =="미발행" ? "x" : "")">@(d.status)</td>
<td class="taxdate@(d.ischeck == 1 ? "" : "x")">@(d.ischeckname)</td>
</tr>
}
@ -222,7 +230,7 @@
</tbody>
</table>
</section>
<input type="hidden" name="taxno" value="@t.taxno" />
<input type="hidden" id="taxno" name="taxno" value="@t.taxno" />
<input type="hidden" name="payno" value="@t.payno" />
<input type="hidden" name="cno" value="@t.cno" />
<input type="hidden" name="mgtkey" value="@t.mgtkey" />
@ -231,12 +239,19 @@
<input type="hidden" name="fgno" value="@t.fgno" />
<input type="hidden" name="taxdatereq" value="@t.taxdatereq" />
<div class="text-center">
@if(t.ischeck == 1)
{
<a href="#" class="btn btn-success" onclick="taxcheck(0);">관리자확인취소</a>
}
else
{
<a href="#" class="btn btn-success" onclick="taxcheck(1);">관리자확인</a>
}
@if (t.iscancel == null || t.iscancel.Value != 1)
{
if (t.statecode == 0)
{
<a href="#" class="btn btn-primary" onclick="save();">저장</a>
<a href="#" class="btn btn-primary" onclick="save();">저장</a>
<a href="#" class="btn btn-success" onclick="tempsave();">임시저장</a>
<a href="#" class="btn btn-success" onclick="registIssue();">계산서 즉시발행</a>
}
@ -416,5 +431,30 @@
}
}
}
var txt = "";
var txt2 = "";
function taxcheck(ischeck) {
txt = (ischeck == 0 ? "확인취소" : "확인");
txt2 = (ischeck == 0 ? "미확인" : "확인완료");
if (confirm(txt + " 처리 하시겠습니까?")) {
capp("/acommon/taxcheck", { taxno: $("#taxno").val(), ischeck: ischeck }, "cbtaxcheck");
}
}
function cbtaxcheck() {
if (capResult.code == 1000) {
if (capResult.obj == -1) {
msg(txt + "할 요청서가 없습니다.");
txt = "";
txt2 = "";
} else if (capResult.obj == -2) {
//우연의 확률..
msg(txt2 + " 건이 포함되어 있습니다. 다시 확인해주세요.", null, null, null, null, "rfs(0,'sform');");
} else {
msg(txt + " 처리 되었습니다.", null, null, null, null, "rfs(0,'sform');");
}
} else {
msgdev();
}
}
</script>
}

View File

@ -1508,5 +1508,18 @@ namespace NP.Base.Controllers
{
return JsonOK(Dao.Save("pay.untax", new Hashtable() { { "payno", payno }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }));
}
[HttpPost]
public JsonResult taxcheck(String taxnos,int ischeck,int? taxno)
{
if (string.IsNullOrEmpty(taxnos) && taxno == null)
{
return JsonBack(new JsonRtn() { code = 1000, obj = -1 });
}
if(Dao.Get<int>("cr.paytax.byischeck", new Hashtable() { { "taxnos", taxnos },{"taxno",taxno }, { "ischeck",ischeck } }).FirstOrDefault() > 0)
{
return JsonBack(new JsonRtn() {code = 1000, obj = -2 });
}
return JsonOK(Dao.Save("pay.taxcheck", new Hashtable() { { "taxnos", taxnos }, { "taxno", taxno }, {"ischeck",ischeck }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }));
}
}
}

View File

@ -1014,6 +1014,7 @@ create table paytax (
,taxdatereq datetime
,statecode INT(11) NULL DEFAULT NULL
,realtaxdate datetime default null
,ischeck tinyint(4) NOT NULL DEFAULT 0
,primary key(taxno));
create table paytaxitem (

View File

@ -1290,7 +1290,7 @@
select a.*
from (
select a.taxno,ifnull(a.cname, ifnull(a.exname, a.bkname)) itemname,a.asaddr,a.pcnt,a.ccount,b.iscancel
,b.payno,b.asname,b.taxamt,b.cdt,b.taxdate,b.ceoname,b.brno,b.grno,b.btype,b.bkind,b.manname,b.fgno,b.taxinfo,b.isreceipt,b.mgtkey,b.taxdatereq,b.realtaxdate,b.statecode
,b.payno,b.asname,b.taxamt,b.cdt,b.taxdate,b.ceoname,b.brno,b.grno,b.btype,b.bkind,b.manname,b.fgno,b.taxinfo,b.isreceipt,b.mgtkey,b.taxdatereq,b.realtaxdate,b.statecode,b.ischeck
,CAST(AES_DECRYPT(UNHEX(b.telno), <include refid="sql.digest"></include>) AS char) telno
,CAST(AES_DECRYPT(UNHEX(b.email), <include refid="sql.digest"></include>) AS char) email
,u.userno cno,u.username,u.userid,CAST(AES_DECRYPT(UNHEX(u.mobile), <include refid="sql.digest"></include>) AS char) mobile
@ -1334,6 +1334,7 @@
<isNotNull property="staxdate" prepend="and">a.taxdate &gt;= #staxdate#</isNotNull>
<isNotNull property="etaxdate" prepend="and">a.taxdate &lt;= #etaxdate#</isNotNull>
<isNotNull property="asname" prepend="and">a.asname like concat('%',#asname#,'%')</isNotNull>
<isNotNull property="ischeck" prepend="and">a.ischeck = #ischeck#</isNotNull>
<isNotEmpty property="taxnos" prepend="and">a.taxno in ($taxnos$)</isNotEmpty>
</dynamic>
group by a.taxno
@ -1362,6 +1363,26 @@
<include refid="sql.pagedynamic"></include>
order by rno
</select>
<select id="cr.paytax.byischeck" parameterClass="hashtable" resultClass="int">
select count(a.taxno)
from paytax a
<dynamic prepend="where">
<isNotEmpty property="taxnos" prepend="and">a.taxno in ($taxnos$)</isNotEmpty>
<isNotNull property="ischeck" prepend="and">a.ischeck = #ischeck#</isNotNull>
<isNotNull property="taxno" prepend="and">a.taxno = #taxno#</isNotNull>
</dynamic>
</select>
<update id="pay.taxcheck" parameterClass="hashtable">
update paytax a
set a.ischeck = #ischeck#
,a.udt = now()
,a.uno = #uno#
,a.uip = #uip#
<dynamic prepend="where">
<isNotEmpty property="taxnos" prepend="and">a.taxno in ($taxnos$)</isNotEmpty>
<isNotNull property="taxno" prepend="and">a.taxno = #taxno#</isNotNull>
</dynamic>
</update>
<select id="cr.paytaxitem" parameterClass="long" resultClass="payitem">
select case pi.ptype when 2 then bk.bkname when 3 then ex.exname else cm.cname end itemname,pi.payamt,pi.pcnt,pi.ptype
,p.isgroup,p.payamt ppayamt,p.payoktime,p.ptype pptype

View File

@ -1729,7 +1729,7 @@
,f.estart,f.eend
,cc.cname studyplacename
,cc.ccode studyplace
,pt.taxno,pt.taxdate taxdate2,pt.mgtkey,pt.iscancel,pt.statecode
,pt.taxno,pt.taxdate taxdate2,pt.mgtkey,pt.iscancel,pt.statecode,pt.ischeck
,a.cdt
,e.cdt paycdt
,pv.cshrpgkey

View File

@ -161,6 +161,9 @@
{
@*<a href="#" onclick="viewtaxinvoice('@(item.payno)')">[인쇄]</a>*@
<a href="#" onclick="msg('요청하신 메일로 확인바랍니다.<br/>감사합니다.')">[계산서발행완료]</a>
}else if (item.iscancel != 1 && item.taxdate2 != null && item.ischeck == 1)
{
<a href="#" onclick="msg('요청하신 메일로 확인바랍니다.<br/>감사합니다.')">[계산서발행완료]</a>
}
else if (item.iscancel == 1) /*취소시 일반영수증*/
{
@ -168,7 +171,14 @@
}
else
{
<a href="#" onclick="showtax('@(item.payno)')">[신청중]</a>
if(item.ischeck == 1)
{
<a href="#" onclick="msg('요청하신 메일로 확인바랍니다.<br/>감사합니다.')">[계산서발행완료]</a>
}
else
{
<a href="#" onclick="showtax('@(item.payno)')">[신청중]</a>
}
}
}
else
@ -192,7 +202,11 @@
{
if (item.iscancel != 1 && item.taxdate2 != null && !string.IsNullOrEmpty(item.mgtkey) && item.statecode >= 300) /*취소 and 발행일 and 세금계산서문서번호 */
{
<a href="#" onclick="viewtaxinvoice('@(item.payno)')">[인쇄]</a>
@*<a href="#" onclick="viewtaxinvoice('@(item.payno)')">[인쇄]</a>*@
<a href="#" onclick="msg('요청하신 메일로 확인바랍니다.<br/>감사합니다.')">[계산서발행완료]</a>
}else if(item.iscancel != 1 && item.taxdate2 != null && item.ischeck == 1)
{
<a href="#" onclick="msg('요청하신 메일로 확인바랍니다.<br/>감사합니다.')">[계산서발행완료]</a>
}
else if (item.iscancel == 1) /*취소시 일반영수증*/
{
@ -200,7 +214,14 @@
}
else
{
<a href="#" onclick="showtax('@(item.payno)')">[신청중]</a>
if(item.ischeck == 1)
{
<a href="#" onclick="msg('요청하신 메일로 확인바랍니다.<br/>감사합니다.')">[계산서발행완료]</a>
}
else
{
<a href="#" onclick="showtax('@(item.payno)')">[신청중]</a>
}
}
}
else if (item.ptype == 3 && item.ispg == 1 && item.iscashrct != 1)

View File

@ -1361,6 +1361,7 @@ namespace NP.Model
}
public int? cmino { get; set; }
public int ischeck { get; set; }
}
/// <summary>
/// 자격검정시험

View File

@ -1171,6 +1171,14 @@ namespace NP.Model
}
}
public String mobile { get; set; }
public Int32 ischeck { get; set; }
public String ischeckname
{
get
{
return ischeck == 0 ? "미확인" : "확인";
}
}
}
[Serializable]
public class PayRfd : BaseModel