昨天营业前台同事测试换机时出错让我找原因。
通过不断换机,生成日志,定位错误。今天下午终于解决——测试库中的数据残缺不全,程序在验证信息时出错。出错后没有及时报错。直到业务进行到最后一步旧手机入库时崩溃。
换机流程:
给新机,走购机流程。
收旧机,走返销流程。根据旧机串号,从tf_b_trade_phricetosub查询,提出时的原购机流水号。按原购机流水号返销。
返销流程:
将手机重新入库(crm.tf_r_mophonetrade)。部分信息从tf_b_trade表取出(通过原购机流水号查询)。
因为测试库中的数据不齐,测试时,查询原购机流水号时返回空。从tf_b_trade中无法查询到交易信息。返销失败。
==================================================================================
程序中的缺陷:
原购机流水不能为空,程序没有对此进行判断。
==================================================================================
我添加的代码:
---------------------------------------------------------------------------------------------------------
// 取手机出库流水
exec sql select max(a.mophonetradeid) into
:vv_tradeid_new
from crm.tf_r_mophonetrade a
where a.mophonecode =
:vv_mophonecode
and a.mophoneno = :vv_mophoneno
and
a.tradetypecode = 'S0'
and a.canceltag = '0';
//測試庫中的數據教亂,為快速定位錯誤加入判斷. added by libin 2007/03/07 15:52
strcpy(errmsg,
"call_inout_mophone2 查詢手機齣庫流水失敗(老流水)");
rtrim(vv_tradeid_new);
if
(strlen(vv_tradeid_new) <= 0)
{
setcbsreturn(rqstbuf, "00001",
errmsg);
return
-1;
}
------------------------------------------------------------------------------------------------------
//cuserlog(" 將舊手機返銷 and vc_canceltradeid is %s",
vc_canceltradeid);
strcpy(vc_canceltag,"C");
strcpy(vc_tradetypecode,"0S");
exec sql select acptoptrid, acptsiteid into :vc_optrid,
:vc_acptsiteid
from tf_b_trade where tradeid =
:vc_canceltradeid;
//cuserlog(" vc_acptsiteid is [%s] and
vc_optrid is [%s] , vc_acptsiteid is [%s]", vc_acptsiteid, vc_optrid,
vc_acptsiteid);
//測試庫中的數據教亂,為快速定位錯誤加入判斷. added by libin 2007/03/07
15:52
rtrim(vc_optrid);
if (strlen(vc_acptsiteid) <= 0)
{
strcpy(errmsg, "inout_mophone2 根據(原購機)流水號從tf_b_trade查詢歷史記錄失敗");
setcbsreturn(rqst, "00001", errmsg);
return -1;
}
---------------------------------------------------------------------------------------------------------
阅读(1453) | 评论(0) | 转发(0) |