版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
203/203供給鏈開發(fā)幫助手冊金蝶軟件(中國)有限公司研發(fā)中心K/3供給開發(fā)組解釋目錄 K/3老單單據(jù)平臺開發(fā)手冊 4 整體框架和設(shè)計思路 4一、 設(shè)計思路 4二、 UML圖 4 模版 5一,單據(jù)構(gòu)造模版: 5二、選單模版 9三,單據(jù)控制 10四,單據(jù)套打 10 單據(jù)調(diào)用接口 11一、 客戶端調(diào)用接口 11二、 中間層調(diào)用接口 13 單據(jù)流程 15一、 新建單據(jù)流程 15二、 查看或修改單據(jù)流程: 16三、 錄單流程: 17四、 單據(jù)的保存流程 22五、 對下一版本的一些建議 24 單據(jù)選單的實現(xiàn)說明 25一,實現(xiàn)思路: 25二,實現(xiàn)方式: 25 單據(jù)模板Action說明文檔 28一、 概述 28二、 關(guān)鍵詞 28三、 分類 28四、 功能標準定義 28五、 標準過程指南 31 單據(jù)打印、連續(xù)打印、合并打印實現(xiàn)說明 32一、 GUI上單據(jù)打印的實現(xiàn)方式: 32 常見問題分析 32一、 對于KDInputTool.DLL組件的日期控件的日期格式 32二、 對于Spread控件的取值賦值 33三、 模板數(shù)據(jù)冗余: 33四、 選單結(jié)構(gòu)不靈活: 34五、 ICTemplate表、ICTemplateEntry表的問題 34六、 單據(jù)選單的關(guān)聯(lián)關(guān)系: 34 單據(jù)二次開發(fā)手冊 34 屬性 35 方法 36 用戶可實現(xiàn)自己功能的事件 37 中間層事件 40 應(yīng)用例如 41 K/3序時簿開發(fā)手冊 45 整體框架和設(shè)計思路 45 模版 45一、 ICListTemplate:該表反映了供需鏈所有序時簿的總體情況。 45二、 ICChatbilltitle:該表反映了所有序時簿的顯示的字段詳細情況。 46三、 ICListToolbar:該表反映了序時簿菜單和工具欄詳細情況。 47四、 ICTableRelation:選單中涉及的所有表之間的連接關(guān)系。 47 接口函數(shù)描述 48一、 相關(guān)組件 48 序時簿二次開發(fā) 48一、 創(chuàng)立一個中間層組件,實現(xiàn)一個接口 48二、 注冊組件 49 常見問題分析 50一、 模板數(shù)據(jù)冗余: 51二、 序時簿幾種狀態(tài) 51 采購價格管理開發(fā)手冊 51 流程 51 表結(jié)構(gòu) 51 代碼結(jié)構(gòu) 51 銷售價格/折扣管理開發(fā)手冊 51 流程 51 表結(jié)構(gòu) 51 代碼結(jié)構(gòu) 52 進出口開發(fā)手冊 52 流程 52 表結(jié)構(gòu) 52 代碼結(jié)構(gòu) 52 發(fā)票鉤稽開發(fā)手冊 52 流程 52 表結(jié)構(gòu) 52 代碼結(jié)構(gòu) 52 盤點開發(fā)手冊 52 盤點作業(yè) 52 盤點方案查詢 53 盤點方案新建 54 盤點方案刪除 54 備份盤點數(shù)據(jù) 55 盤點數(shù)據(jù)引入/引出 57 盤點選單 57 生成盤點單據(jù) 57 序列號開發(fā)手冊 59 流程 59 表結(jié)構(gòu) 59一、 序列號流轉(zhuǎn)表ICSerialFlow表結(jié)構(gòu): 59二、 序列號表ICSerial 59三、 ICSerial_FXXX 60 根本操作 61一、 新增單據(jù) 61二、 審核單據(jù): 62三、 刪除單據(jù): 62四、 作廢單據(jù): 62五、 更新庫存后序列號狀態(tài)單據(jù)類型對應(yīng)表: 63 代碼結(jié)構(gòu) 63 入庫核算開發(fā)手冊 64 流程 64 表結(jié)構(gòu) 64 代碼結(jié)構(gòu) 64 委外核銷開發(fā)手冊 64 流程 64 表結(jié)構(gòu) 64 代碼結(jié)構(gòu) 64 出庫核算開發(fā)手冊 64 表說明 64 算法說明 65 代碼結(jié)構(gòu) 65一,所有計價方法的入口函數(shù): 65二,每一種計價方法的處理邏輯: 66 核算常見問題匯總 69 出庫核算核算報錯問題 70 憑證開發(fā)手冊 72 表說明 72 憑證模版 72 代碼結(jié)構(gòu) 74 憑證常見問題說明 75 分銷開發(fā)手冊 75 流程 75 表結(jié)構(gòu) 75 代碼結(jié)構(gòu) 81 門店開發(fā)手冊 81 流程 81 表結(jié)構(gòu) 81 代碼結(jié)構(gòu) 81 銷售前臺開發(fā)手冊 81 流程 81 表結(jié)構(gòu) 81 工業(yè)報表開發(fā)手冊 81 簡介: 81 主要函數(shù): 82 處理過程順序圖: 83 代碼結(jié)構(gòu) 83 門戶報表開發(fā)手冊 83 流程 錯誤!未定義書簽。 表結(jié)構(gòu) 錯誤!未定義書簽。 代碼結(jié)構(gòu) 錯誤!未定義書簽。 VB編程經(jīng)驗總結(jié)開發(fā)手冊 86 VB中精確數(shù)據(jù)的四舍五入處理 86 假設(shè)VB中有如下的變量聲明: 87 VB中的對象是自動回收的,類似java 87 對對象變量賦值應(yīng)該用setobj=AnOtherObj這種方式 88 VB中字符串的內(nèi)部存儲格式是Unicode,它可以自動轉(zhuǎn)化為ANSI字符(單字節(jié)字符)或者DBCS字符(雙字節(jié)字符) 88 字符串的比較應(yīng)該是用strCmp函數(shù),而不是簡單的用=號 89 VB中字符串處理的函數(shù)有三種版本: 89 VB程序代碼中的以下標識符不能含有雙字節(jié)字符: 91K/3老單單據(jù)平臺開發(fā)手冊整體框架和設(shè)計思路設(shè)計思路UML圖模版單據(jù)主要是在模版的基礎(chǔ)上實現(xiàn)的。單據(jù)的模版有以下幾張表:ICTransactionType,ICTemplate,ICTemplateEntry,ICSelBills,ICTableRelation。前三張表用于構(gòu)造顯示單據(jù),后兩張表用于選單。一,單據(jù)構(gòu)造模版:1.ICTransactionType:該表反映了供需鏈所有單據(jù)的總體情況。ICTransactionTypeFbrNoFID單據(jù)事務(wù)類型內(nèi)部IDFROB紅藍字標記:1表示該單據(jù)區(qū)分紅藍字,0表示沒有紅藍字之分Fname單據(jù)名稱Ftype單據(jù)類別FtempalteID單據(jù)模版ID(與ICTemplate,ICTemplateEntry表中的FID對應(yīng)FvchTempalteID(未用)FheadTable單據(jù)表頭對應(yīng)的數(shù)據(jù)庫表名FentryTable單據(jù)表體對應(yīng)的數(shù)據(jù)庫表名FcheckPro(未用)FformWidth單據(jù)錄入時的缺省寬度FformHeight單據(jù)錄入時的缺省高度FfixCols單據(jù)的固定列數(shù)目2.ICTemplate:該表反映了所有單據(jù)的表頭的詳細情況。ICTemplateFID單據(jù)模版IDFctlIndex表頭控件編號,連續(xù)且唯一FtabIndex控件的Tab跳動次序Fcaption控件標題Fctltype控件類型0文本,1日期,2查找,3數(shù)量,4編號,5選單,6單據(jù)標題,7單據(jù)分錄,8審核,9制單,10批號,11金額,12單價,13稅率,14會計科目,15生產(chǎn)訂單狀態(tài),16生產(chǎn)訂單來源,17要求缺省為空的日期,18記賬,20匯率,21含稅價30自定義單據(jù)使用的字符串類型,31自定義單據(jù)使用的數(shù)字類型,32自定義單據(jù)使用的日期類型,33自定義單據(jù)使用的整數(shù)類型FlookUpCls如為查找類型則與表t_ItemClass(核算工程表)中的FItemClassID對應(yīng)?;蛘邽檩o助資料的ID(t_submestype中的FtypeID)FneedSave是否需要保存到數(shù)據(jù)庫中FvalueType值的類型0字符串,1數(shù)字,2日期,3整數(shù)FsaveValue保存值的類型0名稱,1內(nèi)部ID,2代碼FfieldName該字段對應(yīng)在數(shù)據(jù)庫表中的字段。在同一個單據(jù)的模版中不能重復(fù)。Fleft該單據(jù)頭控件的位置FtopFwidthFheightFenable控件在各種狀態(tài)下是否可錄入:新增、修改、觀察、審核、下達、單價金額修改。用一個六位的二進制數(shù)表示,可錄入則對應(yīng)位為1否則為0。常用值:0、32、48。Fprint是否打?。〞何从茫〧fontname字體類型FfontSize字體大小FselBill如果該控件可以選擇其它單據(jù)作為數(shù)據(jù)的輸入來源,則該值對應(yīng)為被選擇單據(jù)的敘事簿ID(ICListTemplate表中的FID)FmustInput是否必須錄入Ffilter過濾條件。一般用于選單或查找某類基礎(chǔ)資料時過濾掉一些不符合選擇條件的單據(jù)或基礎(chǔ)資料。FrelationID表示哪一個字段的改變會導(dǎo)致當前控件值的改變。它的值為對應(yīng)字段的數(shù)據(jù)庫字段名。如有多個這樣的字段可以用逗號隔開。Faction為前面Frelationid定義的字段的改變時該執(zhí)行什么樣的操作。例如匯率這個字段,它的FrelationID為FcurrencyID,F(xiàn)action為“.,FExchangeRate〞表示當改變幣別時,把對應(yīng)幣別的默認匯率填入?yún)R率欄中。FlockA為1表示選單過來的數(shù)據(jù)不能再添加刪除分錄FROB1只在藍字單據(jù)中可見,2只在紅字單據(jù)中可見3在紅藍字單據(jù)中都可見FdefaultCtl系統(tǒng)自帶控件為1,自定義的為0FvisForBillType控件在各種狀態(tài)下的可見性:新增、修改、觀察、審核、下達。用一個五位的二進制數(shù)表示,可見則對應(yīng)位為1,否則為0。常用值:0、31。FVBACtlType自定義單據(jù)用來區(qū)分是什么類型的控件有Frame,Label,Kdtext三種FrelateOutTbl如果該控件為其它選擇類型的屬性則為1例如:銷售發(fā)票有個客戶開戶銀行賬號就是此類FSystemMustInputItem如果是系統(tǒng)規(guī)定必須輸入,即使自定義單據(jù)也不能把它變?yōu)榉潜劁洝?.ICTemplateEntry:該表反映了所有單據(jù)的分錄的詳細情況。ICTemplateEntryFID單據(jù)模版IDFctlOrder分錄列的排列前后順序FctlIndex分錄列編號,連續(xù)且唯一Fctltype分錄列類型0文本,1日期,2查找,3數(shù)量,4編號,5選單,6單據(jù)標題,7單據(jù)分錄,8審核,9制單,10批號,11金額,12單價,13稅率,14會計科目,15生產(chǎn)訂單狀態(tài),16生產(chǎn)訂單來源,17要求缺省為空的日期,18記賬,20匯率,21含稅價,30自定義單據(jù)使用的字符串類型,31自定義單據(jù)使用的數(shù)字類型,32自定義單據(jù)使用的日期類型,33自定義單據(jù)使用的整數(shù)類型FlookUpCls如為查找類型則與表t_ItemClass(核算工程表)中的FItemClassID對應(yīng)?;蛘邽檩o助資料的ID(t_submestype中的FtypeID)FneedSave是否需要保存到數(shù)據(jù)庫中FvalueType值的類型0字符串,1數(shù)字,2日期,3整數(shù)FsaveValue保存值的類型0名稱,1內(nèi)部ID,2代碼FfieldName該字段對應(yīng)在數(shù)據(jù)庫表中的字段。在同一個單據(jù)的模版中不能重復(fù)。Fenable該分錄列在各種狀態(tài)下是否可錄入:新增、修改、觀察、審核、下達、單價金額修改。用一個六位的二進制數(shù)表示,可錄入則對應(yīng)位為1否則為0。常用值:0、48、49。Fprint是否打印該列(暫未用)FheadCaption該分錄列的表頭標題Fwidth該分錄列的寬度FneedCount該分錄列是否需要合計,1:需要0:不需要FrelationID表示哪一個字段的改變會導(dǎo)致當前列值的改變。它的值為對應(yīng)字段的數(shù)據(jù)庫字段名。如有多個這樣的字段可以用逗號隔開。Faction為前面Frelationid定義的字段的改變時該執(zhí)行什么樣的操作。例如金額這個字段,它的FrelationID為“FauxQty,FAuxPrice〞,F(xiàn)action為“(),FAuxQty,*,FAuxPrice〞表示當數(shù)量或單價改變時,計算數(shù)量與單價的乘積,并填入金額列中。FmustInput是否必須錄入Ffilter過濾條件。一般用于查找某類基礎(chǔ)資料時過濾掉一些不符合選擇條件的基礎(chǔ)資料。FSaveRule該列值的保存規(guī)則,例如“U:0〞表示該列的值不能為0。FdefaultCtl系統(tǒng)自帶分錄列為1,自定義的為0FvisForBillType該列在各種狀態(tài)下的可見性:新增、修改、觀察、審核、下達。用一個五位的二進制數(shù)表示,可見則對應(yīng)位為1,否則為0。常用值:0、31。FRelateOutTbl如果該分錄列為其它選擇類型的屬性則為1例如:銷售發(fā)票有個客戶開戶銀行賬號就是此類FSystemMustInputItem如果是系統(tǒng)規(guī)定必須輸入,即使自定義單據(jù)也不能把它變?yōu)榉潜劁洝螕?jù)構(gòu)造模版的根本用途是:根據(jù)要顯示哪一種單據(jù),首先去ICTransactionType表中獲取該種單據(jù)的總體信息,包括表頭模版號、分錄模版號、單據(jù)寬高等等。然后根據(jù)表頭模版號去查表頭模版ICTemplate,構(gòu)造該種單據(jù)的表頭,根據(jù)分錄模版號去查分錄模版ICTemplateEntry,構(gòu)造單據(jù)的分錄。函數(shù):Bills.SetPropDescFSaveRule說明:操作符功能例子備注@該字段不能為空@該字段不能為空U該字段不能=某個值U:0該字段不能=0〉該字段必須〉某個值1.>:0;2.>:Fqty1.該字段必須>0;2.該字段>FQty^該字段必須〉0^該字段必須〉0~該字段大于等于0并且小于某數(shù)或者某列的值1.~;2.~:Fqty;3.~:1001.該字段必須>0;2.該字段<FQty;3.該字段<100#該字段必須〉0#V該字段必須大于單據(jù)頭日期V:Fdate該字段必須大于單據(jù)頭Fdate$該字段不能與某字段同時=0$:FAuxQty該字段不能與FAuxQty同時=0D該字段不能大于另個日期的值D,FStartWorkDate該字段不能大于FStartWorkDate!幾列不能全部為空!,FWorkerID,FDeviceIDFWorkerID,FDeviceID不能全部為空A:DEPEND依賴的某一列不能為空FDCSPID保存規(guī)則:A:DEPEND,FStockIDFStockID不能為空二、選單模版ICSelbills:選單要取得哪些值,這些值是如何而來的,以及需回填到哪個對應(yīng)的控件里。ICSelbillsFID單據(jù)的模版IDFFieldName單據(jù)上可以選單的字段的字段名FdstCtlField回填的目標字段名FselType目標字段的類型:0表示單據(jù)分錄字段,2表示單據(jù)頭字段,1表示該目標字段的當前值將會作為選單序時薄的過濾條件。FDK用于表頭控件,表示對于同一個目標字段,該回填值是作為FID或Fname或Fnumber。0:FID1:Fname2:FnumberFcolName源字段的別名Fname源字段名FtableName源表名FtableAlias源表別名Faction用于處理一些需對字段值進行判斷,或需要在字段之間進行一些運算的情況。 重點事項:單據(jù)頭的字段如果有選單數(shù)據(jù)來源,則必須有三行,分別填入對應(yīng)的ID,名稱,代碼。如果沒有ID,代碼,則隨便傳入一個數(shù)。而且這個順序不能改變。 2.ICTableRelation:選單中涉及的所有表之間的連接關(guān)系。ICTableRelationFtypeid用于序時薄模版FinterID用于序時薄模版FtableName表1名FtableNameAlias表1的別名FfieldName表1的字段名Ftablename11表2名FtableNameAlias11表2的別名FfieldName11表2的字段名Flogic表1和表2的兩個字段之間的關(guān)系FBillID選單模版號,與ICSelbills中的FID相對應(yīng)FFieldID選單字段名,與ICSelbills中的FFieldName相對應(yīng)選單的根本過程是:由當前錄入的是哪一種單據(jù),以及是在哪一個控件上進行選單(即需要選何種單據(jù)),得到選單模版號FID、FieldName。從ICSelbills和ICTableRelation中選出對應(yīng)的模版信息,拼裝成一個SQL語句,執(zhí)行取得相應(yīng)的記錄集。再根據(jù)ICSelbills中的數(shù)據(jù)回填信息,將該記錄集的值回填到對應(yīng)的目標字段中。三,單據(jù)控制 1、ICBillNo ICBillNoFBillID單據(jù)ID,對應(yīng)于ICTransactiontype中的FIDFBillName單據(jù)名稱FPreLetter前綴名FSufLetter后綴名FCurNo當前單據(jù)序號FFormat當前序號的格式FPos 2、ICMaxNum ICMaxNumFTableName表名FMaxNum當前最大的FInterID四,單據(jù)套打 1、GLNoteType:單據(jù)套打表,記錄單據(jù)與套打編號的關(guān)系。GLNoteTypeFTemplateID單據(jù)ID,對應(yīng)于ICTransactiontype中的FTemplateIDFnoteType單據(jù)套打名稱FnoteTypeID單據(jù)套打ID 2、GLNoteCitation:單據(jù)套打關(guān)系表,記錄單據(jù)套打字段的屬性。GLNoteCitationFTemplateID單據(jù)ID,對應(yīng)于ICTransactiontype中的FTemplateIDFID在同一單據(jù)套打模板中,作為唯一的序列號FNoteTypeID套打ID,對應(yīng)于GLNoteType中的FNoteTypeIDFcode數(shù)據(jù)來源字段名FCitationName套打模板取數(shù)名稱FIsEntry當前字段是否是分錄FIsMoney當前字段是否是金額FCtlIndex當前字段在單據(jù)中的位置(已經(jīng)沒用)FIsSum當前字段是否要合計FKeyFieldName擴展字段。表示要取FtableName表中的FextFieldName字段,通過FkeyFieldName字段與當前字段關(guān)聯(lián)FExtFieldNameFTableNameFRelationID當前字段的屬性標識1:表頭2:表體3:匯總4:擴展表頭5:主計量單位6:主計量單位數(shù)量7:主計量單位單價8:擴展分錄 相關(guān)說明:FRelationID與FIsEntry不同,F(xiàn)IsEntry是用來在套打定義中區(qū)分表頭、表體(如:在表頭欄里只顯示表頭字段、表體欄里只顯示表體字段),F(xiàn)RelationID是套打在填充數(shù)值時,判斷字段屬性用的。單據(jù)調(diào)用接口客戶端調(diào)用接口組件K3Bills.Bill,K3Bills.Bills方法PublicPropertyLetRemoteCnn(ByValstrCnnAsString) 單據(jù)的遠程SQLServer數(shù)據(jù)庫連接字符串 PublicPropertyLetLocalCnn(ByValstrCnnAsString) 單據(jù)的本地ACCESS數(shù)據(jù)庫連接字符串,主要用于套打PublicPropertyLetListRecordset(ByValrsAsADODB.Recordset) 由序時薄等進入單據(jù)時,將序時薄上顯示的紀錄作為一個Recordset傳給單據(jù)。單據(jù)在實現(xiàn)上一條、下一條的瀏覽功能時,就根據(jù)該Recordset去移動與構(gòu)造。PublicPropertyLetListRSFieldVect(ByValvDataAsKFO.Vector)與ListRecordset相配套,主要用于說明該Recordset中哪個字段代表FinterID(單據(jù)內(nèi)碼),哪個字段代表FtranType(單據(jù)事務(wù)類型)。 ListRSFieldVect是包含若干KFO.Dictionary的一個KFO.Vector,每個Dictionary包含有兩個值:FcolName和FISPrimary。當FISPrimary=1時,對應(yīng)的FcolName的值為單據(jù)內(nèi)碼字段名;當FISPrimary=3時,對應(yīng)的FcolName的值為單據(jù)事務(wù)類型字段名。PublicPropertyLetbillValueChanged(ByValValueChangedAsBoolean) 設(shè)置單據(jù)是否經(jīng)過修改。PublicPropertyGetbillValueChanged()AsBoolean 返回單據(jù)是否經(jīng)過修改,從而可確定顯示時是否需刷新數(shù)據(jù)。PublicPropertyLetNewBillTransType(ByValtranstypeAsLong) 由序時薄新增單據(jù)時,新增單據(jù)的事物類型。PublicSubSetOpt(ByValIDAsLong,OptionalByValNameAsString) 設(shè)置操作員的ID和Name。PublicPropertyLetTheSaleMode(ByValvNewAsEnu_SaleMode)銷售方式內(nèi)銷0;外銷1;PublicPropertyLetShowForModeExt(ByValvDataAsInteger) 單據(jù)顯示狀態(tài)。有六種狀態(tài)0:ShowForSelectBill,新增單據(jù)1:ShowForModifyBill,修改單據(jù)2:ShowForViewBill,查看單據(jù)3:ShowForCheckBill,審核單據(jù)4:ShowForConveyBill,下達單據(jù)5:ShowForPriceCal,核算時單據(jù)的單價金額修改PublicSubShow(ByValeBillClsAsEnu_BillCls,ByValShowTypeAsEnu_ShowBillType)顯示想要調(diào)用的單據(jù)EbillCls:單據(jù)的類型PublicEnumEnu_BillClsBillBuyReq=100 采購申請單據(jù)billBuyOrder=101 采購訂單BillBuyRec=102 采購收貨單據(jù)BillBuyCancel=112 采購?fù)素泦螕?jù)BillBuyInvoice=103 采購發(fā)票BillCheckedInStock=200 驗收入庫單據(jù)BillSendMaterials=201 領(lǐng)料發(fā)貨單據(jù)BillStockMove=202 倉庫調(diào)撥單據(jù)BillStockAdjust=204 庫存調(diào)整單據(jù)BillProductOrder=207 生產(chǎn)訂單BillSellOrder=300 銷售訂單BillSellSendBackGoods=311 銷售退貨單據(jù)BillSellSendGoods=301 銷售發(fā)貨單據(jù)BillSellInvoice=302 銷售發(fā)票BillReqForPrice=400 詢價問價單據(jù)BillAdjustPrice=500 調(diào)價單據(jù)billAll=1000 所有單據(jù)EndEnumEshowType:單據(jù)的狀態(tài)PublicEnumEnu_ShowBillTypeShowinput=0 錄入Showedit=1 修改Showview=2 查看Showcheck=3 審核showconvey=4 生產(chǎn)訂單下達EndEnum中間層調(diào)用接口組件BillDataAccess.SaveData方法SaveBillEx(ByValsDsnAsString,ByValBillVectAsKFO.Vector)AsObject參數(shù)sDsn:連接字符串BillVect:KFO.Vector的對象,對象包含多少個元素可由Size()方法獲得。第一個元素為KFO.Dictionary對象;第二個元素為KFO.Vector對象,保存二次開發(fā)組件傳遞的信息。對于第一個元素,其中保存著單據(jù)的一些根本信息,相應(yīng)的關(guān)鍵字見下面說明:TransType:單據(jù)類型,為long型BillInterID:單據(jù)內(nèi)碼,新增單據(jù)時為0,為long型IsROBBill:單據(jù)是否區(qū)分紅藍單,為boolean型IsRedBill:單據(jù)是否為紅單,為boolean型TableHeadName:單據(jù)表頭對應(yīng)的物理表名,為string型TableEntryName:單據(jù)表體對應(yīng)的物理表名,為string型AutoBillNO:系統(tǒng)自動生成的單據(jù)編碼,為string型BillNo:單據(jù)編碼,為string型BillNoFldName:單據(jù)編碼對應(yīng)的物理字段名,為string型IsAppendItemBill:單據(jù)能否追加物料,為boolean型,默認值為FalseEntryKeyWord:分錄關(guān)鍵字,為string型UserID:操作者ID,為long型,默認值為16394UserName:操作者名稱,為string型AppendItem:是否追加了物料,為boolean型SplitBill:是否拆單,為boolean型AcctName:帳套名稱,為string型CurBillUpStockWhenSave:保存庫存單據(jù)時,是否更新庫存,為long型,0表示否,從已有單據(jù)的FUpStockWhenSave字段獲得,默認為0。。IgnoreCredit:是否進行信用控制,為boolean型,默認值為TrueEntrySQL:單據(jù)體數(shù)據(jù)的SQL語句的數(shù)組,記錄單據(jù)保存時,提交的數(shù)據(jù)庫更新SQL語句,為單據(jù)體SQL,為Variant型HeadSQL:單據(jù)頭數(shù)據(jù)的SQL語句,記錄單據(jù)保存時,提交的數(shù)據(jù)庫更新SQL語句,為單據(jù)頭SQL,為string型JustForAccInput:本錢核算系統(tǒng)單據(jù)調(diào)用時的特殊控制參數(shù),用來控制保存和界面處理。Boolean型ReSave:重新保存單據(jù)時的狀態(tài),每個字位代表一個意思,為long型,中間層若取不到值,默認值為7。 1:表示忽略負庫存、2:忽略庫存警告、4:忽略鎖庫檢查、8:忽略所有檢查返回值: 為KFO.Dictionary對象,相應(yīng)的關(guān)鍵字見下面說明: Success:保存是否成功,為boolean型 RetCode:返回的代碼值,為long型。3:信用提示、2:最高最低庫存提示、1:負庫存提示、-200:鎖庫物料為負庫存、-201:庫存數(shù)缺乏以鎖庫、-204:銷售最低限價提示、-205:采購最高限價提示 ReturnMsg:返回的信息,為string型 BillInterID:單據(jù)內(nèi)碼,為long型 ReturnBillNo:單據(jù)編碼,為string型 CheckItemInfo:超出最高最低平安庫存時存儲相應(yīng)的物料,為KFO.Vector對象單據(jù)流程新建單據(jù)流程新建單據(jù)時,首先設(shè)置單據(jù)的屬性值(包括RemoteCnn、LocalCnn、SetOpt、TheSaleMode、ShowForModeExt、NewBillTransType),然后再調(diào)用過程PublicSubShow(ByValeBillClsAsEnu_BillCls,ByValeShowTypeAsEnu_ShowBillType),顯示想要新建的某種單據(jù),對于新建單據(jù),參數(shù)eShowType應(yīng)傳值為0。過程Show通過激發(fā)窗體frmBill的Form_Load()事件,顯示新建的單據(jù)樣式。Form_Load()事件主要完成以下操作:調(diào)用函數(shù)FillBillTypeCtl(ByValctlAsObject,OptionalByValtranstype),從表ICTransactionType中取出新建單據(jù)類(可能包括多種單據(jù))的根本屬性值,包括單據(jù)名稱、單據(jù)模版號、單據(jù)對應(yīng)的數(shù)據(jù)庫表名、單據(jù)窗體寬高等等。將每種單據(jù)的屬性值拼成一個字符串,作為cmbTransType(comboBox控件)的一個列表值,依次添加到cmbTransType中。激發(fā)cmbTransType的cmbTransType_Click()事件,根據(jù)當前cmbTransType的列表值,取出該種單據(jù)有關(guān)屬性值,設(shè)置窗體的寬高及固定列,再由該屬性列表值通過調(diào)用過程BuildBill(ByValstrTemplateIDAsString)建立整張單據(jù)(包括單據(jù)頭及單據(jù)分錄)。設(shè)置菜單及工具條的Visible以及Enabled屬性。設(shè)置套打的本地、遠程的連接屬性,以及套打模版號。過程BuildBill(ByValstrTemplateIDAsString)是構(gòu)建單據(jù)的關(guān)鍵。它完成以下操作:根據(jù)傳過來參數(shù)strTemplateID取得單據(jù)模版號、單據(jù)表頭對應(yīng)的數(shù)據(jù)庫表名、單據(jù)分錄對應(yīng)的數(shù)據(jù)庫表名、單據(jù)事務(wù)類型內(nèi)部ID。根據(jù)單據(jù)模版號,從表ICTemplate中取得表頭模版,從表ICTemplateEntry中取得分錄模版。根據(jù)分錄模版,調(diào)用過程BuildEntryCtls()構(gòu)造單據(jù)的分錄。根據(jù)表頭模版,調(diào)用過程BuildHeadCtls()構(gòu)造單據(jù)的表頭。過程BuildEntryCtls(rsTmpEntryAsADODB.Recordset)完成單據(jù)分錄的構(gòu)造工作,參數(shù)rsTmpEntry是從ICTemplateEntry取出的一個記錄集,它反映了該單據(jù)所有分錄列的屬性值,也就是該單據(jù)的分錄模版。該過程主要是將分錄模版信息存儲在分錄屬性數(shù)組TentryCtl中,并根據(jù)這些模版信息去設(shè)置單據(jù)分錄的列數(shù)、列寬、列標題、數(shù)據(jù)類型等屬性。過程BuildHeadCtls(RstmpAsADODB.Recordset)完成單據(jù)頭的構(gòu)造工作,參數(shù)rsTmp是從ICTemplate取出的一個記錄集,它反映了該單據(jù)所有表頭的屬性值,也就是該單據(jù)的表頭模版。該過程主要是將表頭模版信息存儲在表頭屬性數(shù)組THeadCtl中,并根據(jù)這些模版信息去設(shè)置單據(jù)表頭控件的大小、位置、標題、數(shù)據(jù)類型等屬性。查看或修改單據(jù)流程:對于由報表或序時薄進入單據(jù),首先設(shè)置單據(jù)的屬性值(包括RemoteCnn、LocalCnn、SetOpt、TheSaleMode、ShowForModeExt、NewBillTransType,以及ListRecordset、ListRSFieldVect),然后再調(diào)用過程PublicSubShow(ByValeBillClsAsEnu_BillCls,ByValeShowTypeAsEnu_ShowBillType),顯示想要修改的某種單據(jù)。如果是修改單據(jù),參數(shù)eShowType傳值為1;如果是查看單據(jù),參數(shù)eShowType傳值為2。查看或修改單據(jù)的主要操作也是在窗體frmBill的Form_Load()事件中完成。流程如下:函數(shù)PublicFunctionFillBillData(ByValInterIDAsLong,ByValtranstypeAsInteger)AsInteger完成將某張單據(jù)數(shù)據(jù)填入空白單據(jù)的操作,參數(shù)InterID指該張單據(jù)的內(nèi)碼,參數(shù)transtype指該張單據(jù)的事物類型。這兩個參數(shù)可確定唯一一張單據(jù)。FillBillData的流程如下:錄單流程:在錄單的過程中,表頭控件及分錄列都設(shè)置了一定的屬性,即只能錄入特定的數(shù)據(jù)。對于基礎(chǔ)資料和選單,都有兩種錄入方式:按F7或F8選取或手工直接錄入。其它的如數(shù)量、單價、單據(jù)號碼等,就只能手工錄入。過程PrivateSubLookUp(OptionalByValbQuickViewAsInteger=1)實現(xiàn)了按F7或F8鍵查看并選取某項基礎(chǔ)資料數(shù)據(jù)的功能。參數(shù)bQuickView=0表示是查看基礎(chǔ)資料詳細的樹狀圖,對應(yīng)的是F7鍵;bQuickView=1表示是查看基礎(chǔ)資料編碼列表,對應(yīng)的是F8鍵。LookUp的主要流程如下:函數(shù)PublicSubFillBillDataExt(_ByValRsTransAsADODB.Recordset,_ByValBillTemplateIDAsString,_ByValFieldNameAsString,_OptionalByValSelBillData,_OptionalByValAction)完成將選單返回數(shù)據(jù)填入到表頭控件及分錄列中。參數(shù)說明如下:RsTrans:選單返回數(shù)據(jù)記錄集BillTemplateID:選單模版號FieldName:選單控件名SelBillData:選單返回單據(jù)的內(nèi)碼及分錄號數(shù)據(jù)集Action:選單控件需執(zhí)行的某些操作,如是否需要按BOM展開返回的物料,是否需要將物料進行合計。根本流程如下:對于手工錄入選單號碼進行選單,首先是根據(jù)錄入的單據(jù)號碼,構(gòu)造一個KFO.Vector對象。該對象同由序時薄選單返回的對象性質(zhì)是一致的,都包含了所選單據(jù)的FInterID和FEntryID。余下的過程兩者都一致,即由該對象取得選單返回數(shù)據(jù)集,再調(diào)用函數(shù)FillBillDataExt,將記錄集數(shù)據(jù)依次填入到相應(yīng)的表頭控件及分錄列中。對于查找類型的控件,當離開該控件時,要進行一系列的合法性檢查(表頭控件激發(fā)Validate事件,分錄控件激發(fā)Validate事件和LeaveCell事件)。這些事件里主要通過函數(shù)PrivateFunctionGetData(CancelAsBoolean,_bChangedAsBoolean,_OptionalByValbEntryAsBoolean=False,_OptionalByValcolAsLong,_OptionalByValRowAsLong)AsBoolean實現(xiàn)數(shù)據(jù)合法性檢查。該函數(shù)通過調(diào)用存儲過程GetItemDetail返回一個記錄集,如果該記錄集為空記錄集,則控件里的數(shù)據(jù)不合法,要求重新輸入數(shù)據(jù)或恢復(fù)以前合法數(shù)據(jù);如果該記錄集不為空,則記錄集里包含了與當前控件值有關(guān)的所有輔助信息。(比方當前控件為物料欄,則該記錄集包含了該物料的所用屬性值,包括計量單位內(nèi)碼及名稱等等。)。對應(yīng)于當前控件是表頭控件或分錄列,記錄集里的某些值會填入到相應(yīng)的表頭控件數(shù)組TheadCtl中或分錄控件數(shù)組TentryCtl中。在Validate事件或LeaveCell事件中,還會調(diào)用一個重要的過程DoActions。該過程完成的操作就是根據(jù)當前控件填入的值,在其它與它相關(guān)的控件也填入相應(yīng)的值。(例如錄入供給商帶出計算方式,錄入物料代碼帶出物料名稱,計量單位等等,錄入單價,數(shù)量后算出金額等等)。DoActions的根本操作是根據(jù)填入到THeadCtl數(shù)組和TEntryCtl數(shù)組中的模版信息FrelationID,找出與當前控件相關(guān)的所有控件,將這些控件按照FCtlIndex升序排序,然后按照這個順序依次調(diào)用過程DoAction,完成在某個控件中填入適當?shù)臄?shù)操作。過程PrivateSubDoAction(ByValParentIDAsLong,ByValIndexAsLong,ByReforiObjAsObject,objTypeAsEnu_ObjType)中定義了模版Faction中每種符號的實際操作意義。參數(shù)ParentID指明是哪一個控件激發(fā)了DoAction事件,從而導(dǎo)致其它控件的值變化;Index表示當前是輪到處理哪一個控件;oriObj傳遞表頭控件數(shù)組或分錄控件的引用,objType指明ParentID所指控件是表頭控件還是分錄控件。DoAction定義了以下模版操作符號的意義:“.〞:取基礎(chǔ)資料的附屬屬性值。例:FrelationID為“FitemID〞,F(xiàn)action為“.,Fname〞,表示由物料代碼帶出物料名稱?!?A〞:取基礎(chǔ)資料附帶的其他基礎(chǔ)資料屬性。例:FrelationID為FitemID,F(xiàn)action為“.A,FunitID,t_MeasureUnit〞,表示由物料代碼帶出計量單位的內(nèi)碼、名稱、代碼?!癡>=K〞:表示某分錄控件的值應(yīng)大于或等于某表頭控件的值。例:表頭模版ICTemplate中FrelationID為“FDate〞,F(xiàn)action為“V>=K,Fdate〞,表示分錄里的日期應(yīng)大于等于表頭的日期。“=〞:處理是否允許錄入批次。例:FrelationID為“FitemID〞,F(xiàn)action為“=,Ftrack,80”,表示物料計價方法為分批認定時(Ftrack=80),鎖定控件不讓錄入,否則允許錄入?!?lt;=〞:表示當前控件的值應(yīng)小于等于某值。例:FrelationID為“FDescount〞,F(xiàn)action為“<=,100〞,表示當前格的值應(yīng)小于等于100?!?〞:取分錄某幾列的值,從左到右依次進行四則運算。運算式中不能包含常量。例:FrelationID為“FAuxQty,FAuxPrice,FQty〞,F(xiàn)action為“!,FAuxQty,*,FAuxPrice〞,表示當數(shù)量、單價、根本單位數(shù)量任一個發(fā)生改變時,計算數(shù)量x單價的值,填入當前格(金額)。注:“!〞完全可被“!1〞取代。“!1〞、“()〞:取分錄某幾列的值,從左到右依次進行四則運算。運算式中可包含常量。例:FrelationID為“FAuxQty,FAuxPrice,FQty〞,F(xiàn)action為“!,FAuxQty,*,FauxPrice,+,0”,表示當數(shù)量、單價、根本單位數(shù)量任一個發(fā)生改變時,計算數(shù)量x單價+0的值,填入當前格(金額)。注:“()〞最多只能定義三項之間的運算。主要是用于自定義單據(jù)中。 而“!1”則不受限制??煽紤]將兩者統(tǒng)一?!?2〞:特殊計算,由折扣率或折扣額之一計算金額(折扣率或折扣額中某一列必不可見)。例:Faction為“!2,FAmount,*,FTaxRate,/,100;!2,FAuxQty,*,FUniDiscount〞,表示當使用折扣率時,計算金額x折扣率/100的值;當使用折扣額時,計算數(shù)量x單位折扣額的值?!?3〞:前一項與后幾項的運算結(jié)果進行運算。 例:Faction為“!3,FAuxPrice,*,100,+,FTaxRate,/,100”,表示計算單價x(100+稅率/100)的值。注:任何“!〞、“!1〞式子都可改裝為“!3〞的式子,因此,可考慮用“!3〞替換“!〞、“!1〞?!?4〞前一項與后幾項的運算結(jié)果進行運算,但數(shù)據(jù)是取界面上顯示的數(shù)。注:因為VaSpread的特殊性,界面上看見的數(shù)與實際表格里面的數(shù)可能有尾差,從而有可能導(dǎo)致計算上的誤差,例如在發(fā)票上金額與稅額的和不等于價稅合計。故引入“!4〞解決該問題。“&〞:取基礎(chǔ)資料附帶的其他基礎(chǔ)資料屬性。例:FrelationID為“FcustID〞,F(xiàn)action為“&,FSetID,FSetName,FSetNumber〞,表示由供給商帶出結(jié)算方式的內(nèi)碼、名稱、代碼。注:可考慮與“.A〞合并。“~〞:方案價調(diào)價單據(jù)中,得到物料的記價方法為方案價調(diào)價的當前庫存數(shù)?!?〞:處理其他入庫單單據(jù)頭只能錄供給商和部門中的一種,其他出庫單單據(jù)頭只能錄客戶和部門中的一種?!癆〞:在錄入盤贏盤虧單時自動帶出某種物料在某個倉庫中的帳存數(shù)量?!癆*〞:在錄入盤贏盤虧單時倉庫改變時自動帶出錄入的所有物料在該倉庫中的帳存數(shù)量?!癆1〞:當數(shù)量改變時,相應(yīng)的改變根本單位數(shù)量。“A2〞:當根本單位數(shù)量改變時,相應(yīng)的改變數(shù)量。單據(jù)的保存流程單據(jù)保存之前,首先調(diào)用函數(shù)PreventDirtyData(),以確保當前單據(jù)上的數(shù)據(jù)是正確有效的,然后再調(diào)用函數(shù)Save()保存單據(jù)。函數(shù)Save()的主要流程如下:單據(jù)的審核、下達在單據(jù)錄入或修改完成以后,可在單據(jù)界面直接完成審核與反審核,下達與反下達,結(jié)案與反結(jié)案的操作(發(fā)票除外)。這些操作都是調(diào)用中間層K3McheckBill.DLL實現(xiàn)的,具體的操作可參看類K3MCheckBill.CheckNow中的函數(shù)CheckBill()的說明。在單據(jù)審核或下達完畢以后,要調(diào)用過程InitMenuAndBar(),使某些菜單、控件鎖定或解鎖,以控制輸入。對下一版本的一些建議在本版中,因為生產(chǎn)任務(wù)單沒有分錄,所以很多地方需要進行特殊處理。在下一版中,所有單據(jù)都有分錄,故可去掉對生產(chǎn)任務(wù)單的特殊判斷。單據(jù)選單時,參加過濾條件及排序條件,便于快速查找。可考慮做成一個通用過濾排序條件,對所有選單起作用(主要是日期過濾排序)。本版中,審核、下達兩種單據(jù)顯示狀態(tài)都未用上,單據(jù)的修改界面上就可進行審核或下達。下一版中可考慮去掉審核、下達兩種單據(jù)狀態(tài)。同時將ShowForModeExt和ShowBillType合并,單據(jù)顯示類型有以下四種: (1).Showinput=0 錄入 (2).Showedit=1 修改 (3).Showview=2 查看(4).ShowForPriceCal=3 核算時單據(jù)的單價金額修改目前單據(jù)的DoAction較混亂,有的功能定義比較不通用,或功能不夠強大(如表頭和分錄之間的關(guān)聯(lián)動作較欠缺)。下一版中可改造過程DoActions()和DoAction(),以及模版ICTemplate和ICTemplateEntry中的Action和RelationID字段,定義更具通用性的動作關(guān)聯(lián),以便于自定義。還可參加一個是否使用公式選項,以控制某些關(guān)聯(lián)動作。目前單據(jù)較慢,一個主要原因是較多的調(diào)用了中間層。下版中應(yīng)盡量減少中間層的調(diào)用次數(shù),或?qū)⒄{(diào)用合并。改造單據(jù)保存的邏輯控制。單據(jù)構(gòu)造時,從中間層取得模版,保存單據(jù)時,又將該模版?zhèn)骰刂虚g層,顯得有些冗余。對于數(shù)據(jù)的合法性校驗,一般都是在客戶端做的,中間層做的極少。可考慮加強中間層的數(shù)據(jù)校驗功能。自定義單據(jù)中,應(yīng)參加一個恢復(fù)功能,即當用戶的自定義操作影響到現(xiàn)有單據(jù)的正確性時,可快速恢復(fù)原單模版。這樣用戶也可放心使用。單據(jù)選單的實現(xiàn)說明選單生成是指從已有的一張單生成另一類型的新單的過程。一,實現(xiàn)思路:通過模板方式實現(xiàn),模板記錄源單的表、字段,和與新單之間的字段對應(yīng)關(guān)系,以及其他要用到的信息。通過模板記錄的源單的表字段信息,構(gòu)建源單數(shù)據(jù)記錄集;通過字段對應(yīng)關(guān)系信息,可以確定源單數(shù)據(jù)記錄集中的字段與新單字段的對應(yīng)關(guān)系,并通過這種對應(yīng)關(guān)系回填單據(jù)。二,實現(xiàn)方式:建立選單關(guān)系模板 選單模板包括ICSelBills,ICTableRelation兩張表。 1、ICSelBills: 記錄源單和新單之間的字段對應(yīng)關(guān)系和要使用的關(guān)鍵字段。一種選單關(guān)系可以根據(jù)單據(jù)模板(ICTemplate)的FID和FFieldName來確定:FID表示新單的模板號,F(xiàn)fieldName表示源單(具體表示是那種單由FselBill字段的內(nèi)容確定,參見:單據(jù)模板說明文檔)。選單關(guān)系的具體內(nèi)容就由ICSelBills來記錄,由ICSelBills的FID、F確定。對于一個新增的選單結(jié)構(gòu),以下幾個字段是必須的:FselTypeFDKFcolNameFNameFTableNameFTableAlias-200-1FInterID-100-1FEntryID-1-1FQtyDecimal-1-1FPriceDecimal-1-1FTrack-1-1FItemID-1-1FBillNO具體的FID,F(xiàn)fieldName,F(xiàn)Name,F(xiàn)tableName等其他信息可根據(jù)實際情況填寫。對于FtableAlias模板規(guī)定主表使用v1,從表使用u1,t_ICItem使用t4。單據(jù)頭的字段如果有選單數(shù)據(jù)來源,則必須有三行,分別填入對應(yīng)的ID,名稱,代碼。如果沒有ID,代碼,則隨便傳入一個數(shù)。而且這個順序不能改變。對于表體的字段,如果是查找類型,也必須有三行,分別填入對應(yīng)的ID,名稱,代碼。 2、ICTableRelation:記錄ICSelBills中某一選單關(guān)系中有關(guān)聯(lián)關(guān)系的表的關(guān)聯(lián)信息。具體內(nèi)容由FbillID(與FID相同)、FfieldID(與FfieldName相同)確定。需要具體說明的是,表示關(guān)聯(lián)方式的字段Flogic使用的是“=*〞、“*=〞來表示右連接、左連接。例如:發(fā)票選定單的選單關(guān)系中,主表和從表是通過FInterID關(guān)聯(lián)的,則可添加記錄FtableNameFtableNameAliasFfieldNameFtableName11FtableNameAlias11FfieldName11FLogicFBillIDFFieldIDPOOrderV1FInterIDPOOrderEntryU1FInterID=I02FOrderInterID 選單關(guān)系模板結(jié)構(gòu)參見:單據(jù)模板說明文檔 二、調(diào)用單據(jù)組件接口,生成新單據(jù) 調(diào)用接口如下: LocalCnn屬性(String):連接本地數(shù)據(jù)庫的連接字符串,主要用于單據(jù)套打。 SystemName屬性(String):當前調(diào)用單據(jù)的系統(tǒng)。 采購:"Purchase"銷售:"SaleIn"方案:"Plan"車間:"ShopFloor"倉存:"Stock"核算:"Calculate" SetOpt(用戶ID,用戶名稱)方法:設(shè)置當前的操作員,兩個參數(shù)用戶ID和用戶名稱。 BuildFromSelBill屬性(Boolean):說明當前單據(jù)的生成方式。為真說明單據(jù)是選單生成 SelBillVect屬性(KFO.Vector):當BuildFromSelBill為真時,傳遞單據(jù)的必要參數(shù)。該參數(shù)的結(jié)構(gòu)如下:該Vector包括三個Item,第一個是字符型,為當前單據(jù)的模板號,即ICTransactionType中的FTemplateID;第二個是字符型,為當前單據(jù)的選單號,即上述關(guān)系模板中(ICSelBills表)中的FfieldName對應(yīng)的值。第三個是一個Vector,是包含分錄信息的集合:必須包含至少兩個信息,F(xiàn)InterID、FentryID,該信息用kfo.Dictionary保存并打包到Vector中。 BillROB屬性(長整型):表示當前單據(jù)是紅單還是蘭單,1表示蘭單,-1表示紅單,默認是蘭單 NewBillTransType屬性(字符型):為要生成單據(jù)的事物類型,即ICTransactionType中的FID。 Show(ByValeBillClsAsLong,ByValeShowTypeAsLong)方法:該方法根據(jù)上面的參數(shù)設(shè)置,調(diào)起單據(jù)界面。EBillCls為要生成的單據(jù)的類型ID,即ICTransactionType中的Ftype;EshowType為單據(jù)的顯示方式,0–新增、1–修改、2–查看、3–審核、4–下達、5–作廢、6–關(guān)閉。這里一般使用0。 BillValueChanged屬性(Boolean型):在單據(jù)調(diào)用完成后,返回單據(jù)是否更新的標志,為true時,表示當前單據(jù)修改保存成功 BillInterID屬性(長整型):單據(jù)完成之后,獲取當前單據(jù)的數(shù)據(jù)的InterID。三、ICSelBills的特殊使用方式 參見“通過記錄集直接調(diào)用單據(jù)接口生成單據(jù)〞說明文檔四、增加一套選單的模板例子五、改良v10增加了舊單據(jù)選單對新單據(jù)的支持,參看文檔單據(jù)模板Action說明文檔概述介紹單據(jù)Action實現(xiàn)的方式以及各種Action的說明。關(guān)鍵詞單據(jù)、模板。分類 功能標準定義一、Action的實現(xiàn)方式 與Action的應(yīng)用相關(guān)的字段FCtlIndex、FRelationID 由FCtlIndex定義了Action的執(zhí)行順序,通過訪問FRelationID確定需要執(zhí)行Action的字段,然后調(diào)用DoAction函數(shù)執(zhí)行相關(guān)字段的Action。 對于一些需要關(guān)聯(lián)計算的字段,大致有兩種情況:一、如供給商改變,要改變攜帶的單價,而單價的改變又要影響金額。二、如單價改變影響金額,而金額的改變又要影響稅額。對于第一種情況,第一項(供給商)和第三項(金額)沒有必然的聯(lián)系,只有在攜帶單價后,再次調(diào)用DoActions,進行計算。對于第二種情況,可以使用變通的方法,如:將稅額的計算公式改成由金額的計算公式所涉及到的字段來計算,而不是直接使用金額進行計算。 關(guān)于rsItem:rsItem屬性是在對當前觸發(fā)字段進行校驗時(即GetData中)生成的臨時屬性記錄集,然后在隨后的DoAction中使用,并在DoActions中(GetData結(jié)束前)清空。二、Action介紹類別標準過程備注“.〞攜帶一般附屬信息,后面跟的是要攜帶信息在記錄集rsItem中的字段名。觸發(fā)的條件是:觸發(fā)字段的rsItem屬性不為空。然后,讀取該Action記錄的值。如:當FItemID觸發(fā)時,對于字段FItemName的值就是直接在記錄集rsItem中取Faction對應(yīng)字段的值。.A1設(shè)置倉位的信息,格式為“.A1,FDCStockID,FSPID,t_StockPlace,FSPID“處理物料默認倉位的攜帶。FDCStockID:獲取倉庫信息,控制物料設(shè)置的默認倉庫和單據(jù)錄入的倉庫是否一致。FSPID:獲取物料信息(t_ICItem)的默認倉位信息t_StockPlace:當前FSPID取數(shù)的關(guān)聯(lián)表FSPID:當前關(guān)聯(lián)表的關(guān)鍵字,用于FSPID的過濾=設(shè)置物料是否進行批次管理。格式為“=,Ftrack,80”B*錄入物料或倉庫時若物料的倉存和默認倉庫不一致時報警提示。格式為:“B*,FDCStockID〞A1當數(shù)據(jù)改變時,更改對應(yīng)的根本數(shù)據(jù)。一般格式為:“A1,FAuxQty〞,A1后面跟的就是改變的數(shù)據(jù)對應(yīng)的字段名。KFDate設(shè)置是否允許錄入生產(chǎn)/采購日期KFPeriod設(shè)置是否允許錄入保質(zhì)期.A3如果用戶自定義的取數(shù)是核算工程的自定義字段或自定義核算工程的自定義字段,單據(jù)模版的Action要用.A3規(guī)則。規(guī)則:.A3,主表ID的值,關(guān)聯(lián)表1,關(guān)聯(lián)表1的Key,關(guān)聯(lián)表1與關(guān)聯(lián)表2的連接字段,關(guān)聯(lián)表3,關(guān)聯(lián)表3的關(guān)鍵字。兩種情況分別是:固定核算工程的自定義屬性是取核算工程或輔助資料(從t_itempropdesc中可以查到他的取數(shù)的關(guān)聯(lián)表);自定義核算工程的自定義字段。三、舉例說明: 1.表頭倉庫發(fā)生改變:(10.2中表頭倉庫移到表體)順序Action說明1B*檢查倉庫和物料默認倉庫是否一致2.B,FEmpID,t_Emp將倉庫的默認保管等填充到表尾的“倉管〞3.A1,FDCStockID,FSPID,t_StockPlace,FSPID將倉庫的默認倉位攜帶出4.A,FStockPlaceID,t_stockplace,fspid帶關(guān)聯(lián)附屬信息 2.物料發(fā)生改變順序Action說明1#,FDCStockID,FItemID,FBatchNo,FAuxQty,FUnitID2.B*,FDCStockID3P*,FSupplyID,FCurrencyID,FExchangeRate,FItemID,FUnitID,FAuxQty,FAuxPrice,FTaxRate4.,Fname5.,Fmodel6.,FPlanPrice7!,FAmount,/,FAuxQty8=,Ftrack,809.,FUnitName,FUnitID10A1,FAuxQtyMust11A1,FAuxQty,FQty12P*,FSupplyID,FCurrencyID,FExchangeRate,FItemID,FUnitID,FAuxQty,FAuxPrice,FTaxRate13.,FPlanprice14(),FAuxQty,*,FAuxPlanPrice15KFDate16.,FKFDate17KFPeriod18.,FKFPeriod19.A1,FDCStockID,FSPID,t_StockPlace,FSPID設(shè)置倉位信息20.A,FStockPlaceID,t_stockplace,fspid21MI22MI23.,FMapName24.,FIsSNManage25.,FSecUnitName,FSecUnitID26.,FSecCoefficient27標準過程指南(1)需求分析1.標準2.范例(2)設(shè)計編碼1.標準2.范例(3)測試1.標準2.范例單據(jù)打印、連續(xù)打印、合并打印實現(xiàn)說明GUI上單據(jù)打印的實現(xiàn)方式: 1、標準打印:使用Ledger控件的Printer實現(xiàn)。 實現(xiàn)思路:1、設(shè)置Ledger控件的屬性,直接設(shè)置表頭的數(shù)據(jù)。 2、調(diào)用Ledger的預(yù)覽功能,使用Ledger的FillRow事件填充數(shù)據(jù)。 實現(xiàn):1、調(diào)用PrintBills函數(shù),該函數(shù)對當前單據(jù)上的表頭數(shù)據(jù),區(qū)分頭數(shù)據(jù)(Header)和腳數(shù)據(jù)(Footer),按每一數(shù)據(jù)的Top,Left排序,分別賦值給Ledger.Printer.Header和Ledger.Printer.Footer,同時設(shè)置分錄的數(shù)量(Ledger..Face.Rows)。2、直接調(diào)用Ledger.Printer.Preview,或Ledger.Printer.PrintDirect進行打印預(yù)覽或打印,控件將觸發(fā)Ledger_FillRow事件,在該事件編寫代碼填充分錄數(shù)據(jù)。 2、套打: 使用Note控件實現(xiàn)。 實現(xiàn)思路: 1、使用套打文件。 2、在預(yù)覽或打印時,使用Note的QueryData事件填充數(shù)據(jù)。 實現(xiàn): 1、在Form_Load事件中初始化Note控件,為其設(shè)置套打文件。2、預(yù)覽或打印時,執(zhí)行Note.Action=KN_PrintPreview或Note.Action=KN_PrintDirect動作,顯示或打印套打文件。此時將觸發(fā)QueryData事件,根據(jù)該事件返回的參數(shù),填充套打數(shù)據(jù)。 3、連續(xù)打印 4、合并打印常見問題分析 單據(jù)現(xiàn)有模板存在兩個比較大的問題有待改良:對于KDInputTool.DLL組件的日期控件的日期格式"d"Theone-ortwo-digitday."dd"Thetwo-digitday.Single-digitdayvaluesareprecededbyazero."ddd"Thethree-characterweekdayabbreviation."dddd"Thefullweekdayname."h"Theone-ortwo-digithourin12-hourformat."hh"Thetwo-digithourin12-hourformat.Single-digitvaluesareprecededbyazero."H"Theone-ortwo-digithourin24-hourformat."HH"Thetwo-digithourin24-hourformat.Single-digitvaluesareprecededbyazero."m"Theone-ortwo-digitminute."mm"Thetwo-digitminute.Single-digitvaluesareprecededbyazero."M"Theone-ortwo-digitmonthnumber."MM"Thetwo-digitmonthnumber.Single-digitvaluesareprecededbyazero."MMM"Thethree-charactermonthabbreviation."MMMM"Thefullmonthname."t"Theone-letterAM/PMabbreviation(thatis,AMisdisplayedas"A")."tt"Thetwo-letterAM/PMabbreviation(thatis,AMisdisplayedas"AM")."yy"Thelasttwodigitsoftheyear(thatis,1996wouldbedisplayedas"96")."yyyy"Thefullyear(thatis,1996wouldbedisplayedas"1996").對于Spread控件的取值賦值 1、取值:Spread取值必須使用Variant變量進行GetText讀取 2、Spread的賦值,必須格式化成對應(yīng)的數(shù)據(jù)類型,才能成功賦值 對于日期賦值,建議使用value,使用MMDDYYYY的格式進行賦值,這樣就算系統(tǒng)改變了日期格式,Spread顯示的會和系統(tǒng)一致。如果使用Text進行日期賦值,必須保證當前單元格的日期格式設(shè)置要和Text所賦值的日期格式一致,否則會錯誤。Date"10/29/2001""10292001"
Whensetting,providedatevalueas"MMDDYYYY".模板數(shù)據(jù)冗余:當前單據(jù)模板的模板數(shù)據(jù)是對應(yīng)每一張單存在的,所以有許多相同類型的單據(jù)的共有數(shù)據(jù)被重復(fù)使用,如:庫存單據(jù)的收料倉庫、日期、審核、制單、驗收、多級審核、記賬、保管等等。由此導(dǎo)致的另一問題就是,用戶無法針對每一類型的單據(jù)自定義一個字段,例如:用戶要自定義一個A字段,應(yīng)用于所有庫存單據(jù),他必須在每一種庫存單據(jù)上進行自定義才能實現(xiàn),這也造成的數(shù)據(jù)表在物理結(jié)構(gòu)上的冗余。選單結(jié)構(gòu)不靈活:當前單據(jù)的選單實現(xiàn),是一個字段對應(yīng)一種選單關(guān)系,也就是說:一張單如果可以由十張單關(guān)聯(lián)生成,則必須在該單據(jù)的物理表上增加十個記錄關(guān)聯(lián)關(guān)系的字段。無法實現(xiàn)靈活的控制,同時也導(dǎo)致自定義業(yè)務(wù)流程的無法實現(xiàn)。ICTemplate表、ICTemplateEntry表的問題FCtlIndex字段的用途:lFCtlIndex字段用來標識模板各字段的內(nèi)部順序(如:單據(jù)中Action的執(zhí)行順序)和控件索引,由于此關(guān)系存在,導(dǎo)致它的值在同一模板中必須唯一且連續(xù),由此造成維護復(fù)雜、繁瑣、易出錯。Flookupcls字段的統(tǒng)一:lFlookupcls的來源為t_ItemClass、t_SubMessage、t_SubMesType,但存在一些沒有標準處理的FLookupCls,對程序的統(tǒng)一處理帶來問題,也影響了自定義的標準處理FAction字段的使用:Action的定義和使用,是單據(jù)中的核心問題之一,單據(jù)界面上的大局部信息處理,都要通過該功能實現(xiàn)。該功能現(xiàn)有的優(yōu)點是靈活、易維護。但同時也存在一些嚴重的缺陷:l、執(zhí)行順序不易控制,計算容易造成混亂(如:字段在不同情況下的計算問題)。2、公式不夠靈活,每有一種處理(特別是計算公式),就要新增一種Action,造成Action過多,不易整理。而且對于同一字段在不同條件下的不同計算公式,必須在程序中作特殊處理,造成控制不統(tǒng)一。單據(jù)選單的關(guān)聯(lián)關(guān)系:由于是通過程序解析生成,整個生成的SQL語句的執(zhí)行效率很低,并且有些還使用了非標準的語法(如:*=、=*)。單據(jù)二次開發(fā)手冊概述單據(jù)二次開發(fā)是針對現(xiàn)目前單據(jù)的一些功能無法滿足一些客戶的特殊要求,同時分公司又有能力進行二次開發(fā)而提出的,這樣既可以在現(xiàn)有的系統(tǒng)不做變動的情況下面滿足用戶的需求,同時也增強了系統(tǒng)的穩(wěn)定性。注意:本篇所介紹所用到的動態(tài)連接庫名為:K3BillTransfer.dll通過該說明文檔,你可以了解到1.如何通過K3BillTransfer組件在錄單過程中對單據(jù)上各工程加以控制。2.如何通過K3BillTransfer組件實現(xiàn)自定義功能菜單。3.如何通過K3BillTransfer組件控制數(shù)據(jù)的保存。4.應(yīng)用例如。該文檔閱讀的適用對象需要在K/3工業(yè)供需鏈系統(tǒng)單據(jù)上進行二次開發(fā)的開發(fā)者。屬性1.PropertyCnnstringAsString當前數(shù)據(jù)庫的MMTS.PropsString連接串。2.PropertySystemNameAsString當前系統(tǒng)名稱。3.PropertyLastInfoAsString最后一次系統(tǒng)返回的各種信息4.PropertyBillFormAsObject整個單據(jù)窗體對象??赏ㄟ^該對象訪問單據(jù)上的任何一個對象,包括控件,菜單。共有的方法有:InsertRow(),在Grid的當前行追加一行,它沒有參數(shù)。5.PropertyBillFuncasObject代表單據(jù)對象。目前沒什么用途。6.PropertyHeadAsObject單據(jù)表頭控件,是一個KDText控件數(shù)組7.PropertyGridAsObject單據(jù)分錄控件,為FpSpread控件8.PropertySumGridAsObject單據(jù)分錄合計控件,為FpSpread控件9.PropertyHeadCtlAsVariant對應(yīng)表頭控件數(shù)組,記錄每個表頭工程各屬性的數(shù)組如果要改變HeadCtl中的某個屬性值,需先對HeadCtl做一個備份,然后修改此備份的相應(yīng)屬性值,再將此備份賦值給HeadCtl。10.PropertyEntryCtlAsVariant對應(yīng)分錄各列,記錄每個分錄列各屬性的數(shù)組如果要改變EntryCtl中的某個屬性值,需先對EntryCtl做一個備份,然后修改此備份的相應(yīng)屬性值,再將此備份賦值給EntryCtl。11.PropertySaveVectAsKFO.Vector二次開發(fā)外部數(shù)據(jù)存取接口。在錄單過程中,用戶可將某些數(shù)據(jù)保存在此Vector中,在單據(jù)保存時,再通過二次開發(fā)中間層組件,將此Vector中的數(shù)據(jù)保存到指定位置。SaveVect.Item(1)為一個KFO.Dictionary對象該對象包含以下四個系統(tǒng)數(shù)據(jù)SaveVect.Item(1).Value("FInterID"):單據(jù)內(nèi)碼SaveVect.Item(1).Value("FTransType"):單據(jù)事務(wù)類型SaveVect.Item(1).Value("ISRedBill"):是否紅字單據(jù)SaveVect.Item(1).Value("BillChecked"):是否審核。方法1.FunctionAddUserMenuItem(ByValCaptionAsString,[ByValRootMenuCaptionAsString=""])說明:添加一個用戶自定義菜單項,系統(tǒng)一共預(yù)設(shè)了五個菜單項供二次開發(fā)使用參數(shù):Caption:菜單名稱RootMenuCaption:根菜單名稱。缺省為“自定義菜單〞2.FunctionGetGridText(ByValRowAsLong,ByValColAsLong)AsString說明:獲取分錄某單元格的值參數(shù):Row:分錄行Col:分錄列3.FunctionGetHeadNumber(ByValCtlIndexAsLong)AsString說明:獲取表頭某項的代碼參數(shù):CtlIndex:表頭控件索引4.FunctionGetHeadText(ByValCtlIndexAsLong)AsString說明:獲取表頭某項的文本參數(shù):CtlIndex:表頭控件索引5.FunctionGetSumGridText(ByValRowAsLong,ByValColAsLong)AsString說明:獲取合計行某列的值參數(shù):Row:行。一般為1Col:分錄列6.FunctionSetGridText(ByValRowAsLong,ByValColAsLong,ByValValue,[ByValInterIDAsLong=0],[ByValsNameAsString=""])AsBoolean說明:設(shè)置分錄某單元格的值,當分錄為查找類型時,會把相應(yīng)的信息一起攜帶到相應(yīng)的位置,如當為物料代碼時,它會攜帶物料的一些根本信息物料名稱等。參數(shù):Row:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025天津津彩投資公司面向社會選聘1人(第25期)模擬筆試試題及答案解析
- 2025河南商丘梁園區(qū)招聘安全服務(wù)人員50人備考考試題庫及答案解析
- 2025年鄭大考試中心題庫及答案
- 三模必考語文試卷及答案
- 2025年考中級消防證題庫及答案
- 城鎮(zhèn)污水管網(wǎng)改造工程運營管理方案
- 工業(yè)園廠房建設(shè)項目運營管理方案
- 2025重慶市銅梁區(qū)市場監(jiān)督管理局食品藥品監(jiān)管公益性崗位招聘5人模擬筆試試題及答案解析
- 2025福建莆田市國睿產(chǎn)業(yè)園區(qū)運營管理有限公司招聘企業(yè)員工8人參考考試題庫及答案解析
- 安全設(shè)備管理考試題集
- 老年人穿衣搭配課件
- 【2025年】嘉興市委宣傳部所屬事業(yè)單位選聘工作人員考試試卷及參考答案
- 二手房意向金合同范本
- 充電樁與后臺服務(wù)器通訊協(xié)議V2G
- 抵御宗教極端思想課件
- 體育會展融合策略分析報告
- 如何調(diào)解婚姻家庭糾紛講座
- 重大活動網(wǎng)絡(luò)安全保障方案
- 江蘇省蘇州市吳中學、吳江、相城區(qū)2024-2025學年化學九上期末質(zhì)量檢測模擬試題含解析
- 建筑公司發(fā)展策劃方案
- 教育培訓銷售管理制度及主要工作流程
評論
0/150
提交評論