產品版本: | 1089-T6-企業管理軟件V6.0 | 適用產品: | T6系列 |
產品模塊: | 18-庫存管理 | 提交時間: | 2012-06-12 |
問題現象: | 同一張到貨單上,同一個存貨編碼有四行記錄,只有一行記錄在采購入庫單參照到貨單生單界面可以顯示;檢查發現該存貨檔案未啟用質檢,到貨單也未入庫,刪除到貨單提示單據已被其他單據引用無法刪除。詢問客戶得知這張到貨單做過入庫后來刪除了入庫單后就出現故障。 | ||
原因分析: |
因為客戶做過入庫后又刪除了,所以懷疑是后臺數據錯掉導致入庫無法顯示完全。數據庫后臺跟蹤采購入庫單參照到貨單生單時使用的腳本:select distinct pu_ArrHead.caccountpdate,pu_ArrHead.caccountpid,pu_ArrHead.caccountpname,pu_ArrHead.cpayname,pu_ArrHead.cpaycode,pu_ArrHead.ivtid, pu_ArrHead.ufts, pu_ArrHead.ccode, pu_ArrHead.ddate, pu_ArrHead.id, pu_ArrHead.cptcode, pu_ArrHead.cptname,pu_ArrHead.cbustype, pu_ArrHead.cvencode, pu_ArrHead.cvenabbname, pu_ArrHead.cdepcode, pu_ArrHead.cdepname, pu_ArrHead.cpersoncode, pu_ArrHead.cpersonname, pu_ArrHead.cpaycode, pu_ArrHead.cpayname, pu_ArrHead.cexch_name, pu_ArrHead.cexch_code, pu_ArrHead.iexchrate, pu_ArrHead.cmemo,pu_ArrHead.cmaker, pu_ArrHead.bnegative, cvendefine1,cvendefine2,cvendefine3,cvendefine4,cvendefine5,cvendefine6,cvendefine7,cvendefine8,cvendefine9,cvendefine10,cvendefine11,cvendefine12,cvendefine13,cvendefine14,cvendefine15,cvendefine16, pu_ArrHead.cdefine1,pu_ArrHead.cdefine2, pu_ArrHead.cdefine3, pu_ArrHead.cdefine4, pu_ArrHead.cdefine5, pu_ArrHead.cdefine6, pu_ArrHead.cdefine7, pu_ArrHead.cdefine8, pu_ArrHead.cdefine9, pu_ArrHead.cdefine10, pu_ArrHead.cdefine11, pu_ArrHead.cdefine12, pu_ArrHead.cdefine13, pu_ArrHead.cdefine14, pu_ArrHead.cdefine15, pu_ArrHead.cdefine16, pu_ArrHead.iTaxRate , pu_ArrHead.csccode, pu_ArrHead.cscname, pu_ArrHead.cauthid,convert(char,convert(money,pu_arrhead.ufts),2) as coufts from pu_arrhead inner join pu_arrbody on pu_arrhead.id=pu_arrbody.id left outer join qm_ncheckvouchers on pu_arrbody.autoid=qm_ncheckvouchers.isourceautoid and pu_arrbody.bgsp='是' left outer join qm_ncheckvoucher on qm_ncheckvouchers.id=qm_ncheckvoucher.id and (qm_ncheckvoucher.cvouchtype='qm10' and qm_ncheckvoucher.csourcecardnumber='26') where ( ( isnull(pu_arrbody.irejid,'')='' and pu_arrbody.bgsp='否' and (abs(isnull(pu_arrbody.iQuantity,0))>abs(isnull(pu_arrbody.fValidInQuan,0)) or (pu_arrbody.igrouptype=2 and abs(isnull(pu_arrbody.inum,0))>abs(isnull(pu_arrbody.fValidInnum,0)))) ) or (isnull(pu_arrbody.irejid,'')='' and pu_arrbody.bgsp='是' and isnull(qm_ncheckvoucher.cverifier,'')<>'' and ( (case when isnull(pu_arrbody.fvalidQuantity,0)>isnull(pu_arrbody.iquantity,0) then abs(isnull(pu_arrbody.iquantity,0)) else abs(isnull(pu_arrbody.fvalidquantity,0)) end ) > abs(isnull(pu_arrbody.fValidInQuan,0)) or (pu_arrbody.igrouptype=2 and ( case when isnull(pu_arrbody.fvalidnum,0)>isnull(pu_arrbody.inum,0) then abs(isnull(pu_arrbody.inum,0)) else abs(isnull(pu_arrbody.fvalidnum,0)) end )>abs(isnull(pu_arrbody.fValidInnum,0)))) ) ) And pu_ArrHead.cCode = 'th201108004' order by pu_arrHead.ccode 逐個檢查where條件后面的字段值,發現該張入庫單的fvalidinquan和fvalidinnum都是負數且分別是iQuantity和inum的相反數,所以導致abs(isnull(pu_arrbody.iQuantity,0))>abs(isnull(pu_arrbody.fValidInQuan,0)和abs(isnull(pu_arrbody.inum,0))>abs(isnull(pu_arrbody.fValidInnum,0))這樣的條件不符合。 | ||
解決方案: | 因為該張入庫單的fvalidinquan和fvalidinnum都是負數且分別是iQuantity和inum的相反數導致查詢條件不符所以采購入庫時無法過濾出到貨單記錄,該到貨單未入庫,所以修改iQuantity和inum的值為0,pu_arrbody是根據表pu_arrivalvouchs 創建的視圖,備份賬套后執行以下語句問題解決:update pu_arrivalvouchs set fvalidinquan=0,fvalidinnum=0 where id=(select id from pu_arrivalvouch where ccode='0000008324') |