付款申请单参照订单生成问题张丽峰2011.12.15主要内容1.1引出客户问题2.1客户问题思路分析3.1数据跟踪3.2总结1.1客户问题•890版本,参照采购订单生成付款申请单,参照不到另外一个操作员做得采购订单?账套主管可以参照到?•系统服务-权限-数据权限控制设置,对用户进行控制,数据权限分配,对用户勾选“主管”可以参照到另外用户做得采购订单,数据权限分配,勾除“主管”,采购订单的制单人和审核人用户授权到可用状态,包含查询、删改、审核、弃审、撤销、关闭,重新登录,还是参照不到另外用户做得采购订单2.1客户问题思路分析•首先,一线人员描述,这几张单据,帐套主管可以参照得到,普通操作员无法参照,马上怀疑是数据权限问题,分析客户勾选的数据权限,发现在采购选项中,没有任何数据权限选项被选择了,此时考虑付款申请单还和应付模块有关,再查看应付模块的选项,也未有任何数据权限勾选了,看来不是数据权限中记录集控制导致的。再看字段级的权限,发现客户确实勾选了不少字段级方面的,但是和采购单据有关系的,也就只勾选了订单列表,尝试给普通操作员列表的所有字段权限,未果,那究竟原因在哪呢?下面进行数据跟踪。3.1数据跟踪•打造测试环境•A、确认没有勾选采购选项中的任何权限以普通操作员s02做一张采购订单3.1数据跟踪•以普通操作员s01登陆软件,参照刚刚做的订单生成付款申请单(此操作员在系统管理中的权限,包含了采购模块的所有权限)3.1数据跟踪•没有任何问题,能够看到此采购订单,正常生成付款申请单,那么客户处,到底问题出现在什么地方呢?•下面来进行数据跟踪,看看后台在系统判断时,有哪些判断条件?3.1数据跟踪•分析过滤条件的语句,并无可疑之处,根据单据号和过滤条件中的日期来判断,并且累计发票数量为0,客户处此段条件都符合,订单并未开具发票•SelectDistinctcordercodeFrom[TMPUF_7792619_482AP_PUOrderCopyT0]Where1=1And(1=1And((dPODate>=N'2010-02-01')And(dPODate<=N'2010-02-28'))And((cOrderCode>=N'0000000040')And(cOrderCode<=N'0000000040'))And(isnull(iinvqty,0)=0))3.1数据跟踪•从这段语句再往前分析,看看是否存在可疑之处,看看之前那段语句中的临时表是如何出现的•insertinto[TMPUF_7792619_482AP_PUOrderCopyT0](ufts,cbustype,dpodate,cvencode,cdepcode,cpersoncode,csccode,nflat,cexch_name,cexch_code,cptcode,cmaker,cpaycode,cmemo,cstate,cVerifier,idiscounttaxtype,cdefine1,cdefine2,cdefine3,cdefine4,cdefine5,cdefine6,cdefine7,cdefine8,cdefine9,cdefine10,cdefine11,cdefine12,cdefine13,cdefine14,cdefine15,cdefine16,cvenabbname,cAuthid,cdepname,cpayname,cpersonname,cscname,cptname,id,btaxcost,cinvcode,cinvaddcode,cinvname,cinvstd,cinvAuthid,bservice,binvtype,imassdate,cmassunit,bgsp,iquantity,inum,iunitprice,itaxprice,imoney,itax,isum,inatunitprice,inatmoney,inattax,imaxcost,inatsum,iarrqty,iarrnum,iinvqty,ireceivedqty,iinvrcost,cfree1,cfree2,cfree3,cfree4,cfree5,cfree6,cfree7,cfree8,cfree9,iinvmpcost,cfree10,bInvEntrust,cunitid,cinvm_unit,igrouptype,cinva_unit,iinvexchrate,cinvdefine1,cinvdefine2,cinvdefine3,cinvdefine4,cinvdefine5,cinvdefine6,cinvdefine7,cinvdefine8,cinvdefine9,cinvdefine10,cinvdefine11,cinvdefine12,cinvdefine13,cinvdefine14,cinvdefine15,cinvdefine16,cdefine22,cdefine23,cdefine24,cdefine25,cdefine26,cdefine27,cdefine28,cdefine29,cdefine30,cdefine31,cdefine32,cdefine33,cdefine34,cdefine35,cdefine36,cdefine37,ipertaxrate,citemcode,citemname,citem_class,citem_name,contractcode,contractrowno,cordercode,contractrowguid,sodid,irowno,sotype,isosid,cdemandmemo,csocode,iorderdid,iordertype,csoordercode,iorderseq,darrivedate,cwhcode,cwhname,fInExcess,cvenpuomprotocol,cvenpuomprotocolname,iexpiratdatecalcu,cchanger,cchangverifier,cchangaudittime,cchangauditdate,cbg_itemcode,cbg_itemname,cbg_caliberkey1,cbg_caliberkeyname1,cbg_caliberkey2,cbg_caliberkeyname2,cbg_caliberkey3,cbg_caliberkeyname3,cbg_calibercode1,cbg_calibername1,cbg_calibercode2,cbg_calibername2,cbg_calibercode3,cbg_calibername3,iflowid,cflowname,ibg_ctrl,bmanual,barrmanual,bpbmanual,bposourcearr,bposourceret,bposourcebill,ivouchrowno,contracttype,iPrePayAmount,iPrePayRate,dPrePayDate,iApplySum_f,iApplySum,iApplyAmt_f,iApplyAmt)selectA.*,C.strContractTypeascontracttype,NULLasiPrePayAmount,NULLasiPrePayRate,NULLasdPrePayDate,iApplySum_f,iApplySum,NULLasiApplyAmt_f,NULLasiApplyAmtfromcopypolistAINNERJOINAP_V_PUOrderApplyBonA.id=B.POsIDLEFTJOINVWCONTRACTPOSACONA.contractrowguid=C.RowGUIDwhereiApplySum_f>0and(cmakerIn('11',N'999',N'aa',N'demo',N'sa01',N'sa02',N'UFSOFT',N'白雪',N'白杨',N'陈凯',N'戴知知',N'杜军',N'冯建国',N'韩蝶儿',N'郝健',N'贾君鹏',N'姜科',N'李三',N'李伟',N'李五',N'李小双',N'李一',N'刘爽',N'卢林',N'罗红波',N'马丽',N'曲璐',N'孙亮',N'王铭',N'向心',N'谢勇江',N'徐萍',N'杨夕',N'易小天',N'张丽',N'张民',N'张一'))and1=1And((dPODate>=N'2010-02-01')And(dPODate<=N'2010-02-28'))And((cOrderCode>=N'0000000040')And(cOrderCode<=N'0000000040'))And(isnull(iinvqty,0)=0)3.1数据跟踪•仔细分析这段临时表的来源,发现其中有一段涉及了各操作员的名字,“cmakerin”•即制单人名字在系统管理中所有用户的名字中,难道问题出现在这里?•和客户进行沟通,发现客户是中途修改过采购订单制单人的名字,之前叫palu,后来修改名称为paluwang,导致系统在此时插入临时表时,形成的条件不满足过滤结果,和客户沟通确认,把涉及到改名字之前的palu做的采购订单的制单人后台修改为paluwang,再次参照订单做付款申请单,问题解决。3.2总结•890的付款申请单存在的问题较多,遇到比较特殊的情况,需要进行后台跟踪处理。•遇到此处的比较奇怪的问题,首先可以先查询对应的补丁情况,确认是否已经出现补丁。•针对客户此处问题,已经查询补丁,未发现有补丁解决。谢谢大家!