主讲人:徐凯时间:2020年-4月K/3WISE数据结构及案例分析供应链篇目录01020304基础资料供应链业务数据流案例分析基础资料01020304核算项目计量单位仓库物料基础资料-核算项目表核算项目类别表:t_ItemClass核算项目表:t_ItemFItemClassID>3000为自定义核算项目每个核算项目有单独对应的基础资料表基础资料-计量单位计量单位组:t_UnitGroupFDefaultUnitID缺省计量单位内码计量单位:t_MeasureUnit、FUnitGroupID计量单位组内码、FStandard是否为默认计量单位、FCoefficient:换算率基础资料-仓库仓库:t_StockFUnderStock是否允许负库存、FIsStockMgr是否进行仓位管理、FPropert仓库属性(10良品、11在检品、12不良品)、FIncludeAccounting是否核算FTypeid仓库类型(500普通仓(实仓)、501待检仓、502赠品仓、代管仓503)仓位组:t_StockPlaceGroup、仓位:t_StockPlace基础资料-物料物料:t_ICItem物料表为多个表组成的视图FErpClsID属性(1:外购、2:自制、3:委外加工、5:虚拟件……)、FUnitID基本计量单位、存货科目:FAcctIDFTrack计价方法(76:加权平均、77:移动平均、78:先进先出、79:后进先出、80:分批认定(批内移动平均)、81:计划成本)FISKFPeriod是否启用保质期、FKFPeriod保质期、FBatchManager是否启用批号管理、FIsSnManage是否启用序列号管理物料的上级组保存在t_Item表(FItemClassID=4andFdetail=0),而不存在t_ICItem中供应链01020304供应链单据表模板表余额表钩稽表供应链-供应链单据表供应链单据表名存在ICTransactionType中FID:单据类型ID,对应单据上FTranTypeFTemplateID:单据模板IDFHeadTable:单据头表FEntyryTable:单据体表供应链-供应链单据表单据编码规则表:ICBillNo(记录单据编号)单据内码进度表:ICMaxNum(记录单据最大内码)以外购入库单(ICStockBill.FTranType=1)为例,头表主键FInterID从ICMaxNum中取数,单据号FBillNo从ICBillNo中取数;体表主键为FInterID加FEntryID(分录号)供应链-模板表表名作用ICTransactionType单据事务类型表,描述单据的整体性配置属性,类似BOS的ICClassTypeICTemplate单据头模版表,描述单据头字段的配置情况,类似BOS的ICClassTableinfoICTemplateEntry单据体模版表,描述单据体字段的配置情况,类似BOS的ICClassTableinfoICBillAction单据扩展Action配置表,描述单据参数化选择性Action配置方案单据模板供应链-模板表ICTemplateICTemplateEntry供应链-模板表单据头模板表ICTemplateFID对应ICTransactionType.FTemplateIDFDefaultCtl=1为自定义字段,一般FHeadSelf开头供应链-模板表自定义字段一般FEntrySelf开头单据体模板表ICTemplateEntry供应链-模板表表名作用ICListTemplate序事簿类型模板表,类似于ICTransactionTypeICChatbillTitle序事簿字段,记录序事簿字段配置信息ICTablerelation叙事簿过滤条件,记录序事簿展示需要用到的表与表之间的关联关系ICSelbills选单模版表,下推/选单时单据间携带数据的对应关系序时簿与下推供应链-模板表序时簿字段表ICChatbillTitleICChatbillTitle.FTypeID=ICListTemplate.FTemplateID供应链-余额表实仓:初始化余额表:ICInvInitial分仓余额表:ICInvBal总仓余额表:ICBalVMI余额表:ICVMIInvbal实仓即时库存ICInventory虚仓:虚仓余额表POInvBal虚仓即时库存POInventory供应链-余额表余额表字段说明:1、FBegQty、FEndQty:期初/期末数量;FBegBal、FEndBal:期初金额/期末金额(实际成本);FReceive、FSend:本期收入/发出数量;FDebit、FCredit:本期收入金额/发出金额FbegDiff、FendDiff:期初和期末结存差异(计划成本法物料专用的字段)。2、FBatchNO字批号,用于启用业务批次管理、分批认定法的物料。3、FKFDate:生产日期、FKFPeriod:保质期,只有当物料使用保质期管理时,才使用FDFDate和FDFPeriod这两个字段。4、FBillInterID字段序号,用于先进/后进先出法物料,FBillInterID是系统自动分配的一个顺序号,用来区分各个批次的先后顺序。供应链-余额表余额表说明:5、ICInvInitIal表只保存初始化期间的数据,关闭初始化前,Fperiod=初始化所在期间;关闭初始化后,Fperiod=06、不同的核算方式,对ICBal数据保存方式不同。总仓核算:t_Stock.FGroupID=0ICBal.FStockGroupID=0分仓/仓组核算:t_Stock.FGroupID=t_Stock.FItemIDICBal.FStockGroupID=t_Stock.FItemID存在先进/后进先出法物料时,不可修改系统核算方式。供应链-钩稽表单据钩稽表:ICHookRelationsFHookType:钩稽类型0采购发票和采购入库单的钩稽1销售发票和销售出单的钩稽2费用发票和委外入库的钩稽5采购发票和委外入库单的钩稽FIBTag:单据类型0采购销售发票、1出入库单、2费用发票FEquityHook:0非对等核销、1对等核销业务数据流01020304单据录入即时库存单据钩稽暂估05期末结账业务数据流-单据录入单据录入过程0、从ICTableRelation、ICSelbills取单据/字段关联信息(下推、选单录入)1、从单据事务类型表ICTransactionType中提取单据模板id2、根据模板id从单据模板表ICTemplate,ICTemplateEntry提取模板3、用GetICMaxNum存储过程从ICMaxNum提取最大单据内码finterid从ICBillNo中提取单据号fBillNo4、插入数据到单据对应的表5、更新库存(如为保存时更新数据)6、更新ICMaxNum和ICBillNo7、根据源单信息(FSourceTranType,FSourceInterId,FSourceEntryID)反写源单关联数量/入库数量等关联字段(下推、选单录入)业务数据流-即时库存校对即时库存:EXECCheckInventory1、对于实仓,首先清除ICInventory表所有记录,从ICInvBal中取出本期初结存数量,再根据ICStockBill、ICStockBillEntry汇总出本期的收入/发出数量,计算出结存库存写入ICInventory表。虚仓POInventory类似。2、IcInventory表的主键是:FItemID,FBatchNO,FStockID,FStockPlaceID,FKFPeriod,FKFDate,FMTONo,FSupplyID即时库存按物料、批次、仓库、仓位、保质期、计划跟踪号,供应商来统计。其中供应商FSupplyID只在VMI仓使用。业务数据流-单据钩稽单据钩稽-ICHookRelations例:外购入库与采购发票的钩稽过程——1、判断钩稽数量是否相等;2、更新ICStckBill的FHookstatus、FYearPeriod、FHookInterID字段更新ICStckBillEntry的FAllHookQTY,FAllHookAmount字段;3、更新ICPurChase的FHookstatus、FYearPeriod、FHookInterID字段更新ICPurchaseEntry的FAllHookQTY,FAllHookAmount字段;4、向ICHookRelations表写入一组钩稽关系。ICStckBill.FHookInterID=ICHookRelations.FGroupNo业务数据流-工业暂估暂估汇总表t_MakeVouchTempFGroupID凭证字内码FVchInterID凭证内码(初始化暂估为-1)FPeriod会计期间FYear会计年度FTranType凭证类型(4000暂估、-4000暂估冲回;5委外暂估、301委外暂估冲回)FSCBillInterID暂估入库单内码FPreVchInterID“暂估冲回凭证”对应的原“暂估凭证”内码业务数据流-商业暂估商业暂估-差额调整差额调整生成的外购入库暂估补差单(101)表体ICStockBillEntry中FSourceInterID记录了外购入库单内码,FSourceEntryID记录外购入库单对应分录的分录号,同时在ICHookRelations中增加新增补差单的数据。商业暂估-单到冲回单到冲回生成的红蓝字入库单ICStockBillEntry中FSourceInterID记录了外购入库单内码,FSourceEntryID记录外购入库单对应分录的分录号,同时在ICHookRelations中增加红蓝字单据的钩稽数据。业务数据流-期末结账1、检查未审核的库存单据:检查未审核(FCheckerIDisnullorFCheckerID=0)的单据:收退料通知单(POInstock)、虚仓调拨单(POStockBill)、虚仓出入库(ZPStockBill)、受托加工出入库(ICSTJGBill)、实仓库存单据(ICStockBill)等;2、检查已审核未记帐的库存单据(系统选项)3、检查单价或金额不正确的委外工序接收单、出入库单据:业务数据流-期末结账4、处理ICBal、ICInvBal:将本期的收入、发出写入ICInvBal,求出ICInvBal的期末结存;将ICInvBal表FEndQty<>0orFEndBal<>0orFEndDiff<>0的记录结转到下期;汇总ICInvBal数据写入ICBal,将ICBal期末有结存的记录结转到下期5、处理虚仓余额POInvBal:收退料通知单(POInstock)、虚仓调拨单(POStockBill)、虚仓出入库(ZPStockBill)、受托加工出入库(ICSTJGBill)等虚仓单据的本期收发出写入POInvBal。POInvBal期末有结存的记录结转到下期。VMI余额表类似6、如果暂估冲回方式是月初一次冲回,则生成暂估冲回凭证execMakeVcherReZangu'0',-4000,16394,''案例案例11、单据保存时报错:“单据未能正确保存,插入重复键值“。分析:以采购订单为例,SQLServerProfiler跟踪,POOrder主键FInterID重复:FInterID是GetICMaxNum存储过程从表IC_MaxNum(用户最大内码表),ICMaxNum提取FMaxNum作为最大内码,比单据表中最大内码FInterID小,POOrder.MAX(finterid)