U8API开发手册(C#版) 联系客服

发布时间 : 星期六 文章U8API开发手册(C#版)更新完毕开始阅读55e38b25770bf78a642954a3

2.2.3 库存管理

? 功能介绍

为了支持U8二次开发对业务单据的开发,本功能提供了实现库存业务单据各种操作功能的编程接口。使用库存管理的API开发接口,可以对库存管理中的采购入库单、其他入库单、其他出库单、产成品入库单、材料出库单、调拨单、组装单、拆卸单、形态转换单、盘点单、货位调整单、销售出库单、期初结存、不合格品记录单、不合格品处理单、期初不合格品、调拨申请单等单据进行审核、弃审、获取(或装载)、新增、修改、删除。

? 使用环境

必须安装.NET FrameWork 2.0; 必须安装U8-872版本的库存管理产品; 必须安装API适配器组件STAPIConcrete.dll

? 接口说明

库存管理二次开发接口说明:

? 审核单据-Audit方法

参数:

sVoucherType —— 单据类型:01 VoucherId —— 单据ID errMsg —— 错误信息

cnnFrom —— 连接对象(调用方控制事务时需要传入连接对象) TimeStamp —— 单据时间戳(用于检查单据是否修改,空串时不检查) domMsg —— 返回DOM格式的信息:主要是可用量信息 bCheck —— 是否进行业务检查(是否控制可用量) bBeforCheckStock —— 是否检查可用量 bList —— 传入false MakeWheres —— 传空 sWebXml —— 传入空串

oGenVouchIds —— 获取单据ID列表(返回审核时自动生成的单据的id

列表,传空)

? 弃审单据-CancelAudit方法

参数:

sVoucherType —— 单据类型:01 VoucherId —— 单据ID errMsg —— 错误信息

cnnFrom —— 连接对象(由调用方控制事务时必须传入) TimeStamp —— 单据时间戳(用于检查单据是否修改,空串时不检查) domMsg —— 超可用量提示信息DOM对象(返回DOM格式的信息) bCheck —— 是否进行业务检查 bBeforCheckStock —— 是否检查可用量 bList —— 传入false

? 装载单据-Load方法

参数:

sVoucherType —— 单据类型:01 sWhere —— 条件串

DomHead —— 表头DOM对象 domBody —— 表体DOM对象 domPos —— 货位DOM对象 errMsg —— 错误信息

bGetBlank —— 是否获取空白单据 sBodyWhere_Order —— 表体排序方式字段

注意:其中sWhere设计为:

如果按单据号加载,则语法为ccode=N'要加载的单据号',例如broker.AssignNormalValue(\;

如果按单据ID加载,则语法为id=XXX,例如broker.AssignNormalValue(\。

? 删除单据-Delete方法

参数:

sVoucherType —— 单据类型:01 VoucherId —— 单据ID errMsg —— 错误信息 cnnFrom —— 连接对象(由调用方控制事务时需要传入连接对象) TimeStamp —— 单据时间戳

domMsg —— 返回DOM格式的信息:主要是检查可用量和控制可

用量信息

bCheck —— 是否进行业务检查 BeforCheckStock —— 是否检查可用量 bList —— 传入false

? 添加新单据- Add方法

参数:

sVoucherType —— 单据类型:01 DomHead —— 表头DOM对象 domBody —— 表体DOM对象

domPosition —— 货位DOM对象:传空 errMsg —— 返回错误信息

cnnFrom —— 连接对象,如果由调用方控制事务,则需要设置

此连接对象,否则传空

VoucherId —— 返回单据ID

domMsg —— 返回DOM格式的信息:主要返回可用量和现存量

的错误信息

bCheck —— 是否进行业务检查(是否控制可用量) bBeforCheckStock —— 是否检查可用量(检查可用量) bIsRedVouch —— 是否红字单据 sAddedState —— 传空字符串 bReMote —— 是否远程

? 修改单据-Update方法

参数:

sVoucherType —— 单据类型:01 DomHead —— 表头DOM对象 domBody —— 表体DOM对象 domPosition —— 货位DOM对象 errMsg —— 错误信息 cnnFrom —— 连接对象

domMsg —— 超可用量提示信息DOM对象(返回DOM格式的信息) bCheck —— 是否进行业务检查 bBeforCheckStock —— 是否检查可用量 bIsRedVouch —— 是否红字单据 sAddedState —— 修改状态 bUpdateNeedEas —— 传true

? 开发步骤

实现库存单据某一功能,主要有以下七个步骤: 1. 构造u8login对象并登陆

声明和创建u8login类对象前应该先引用U8API类库中的Interop.U8Login.dll,代码示例如下:

U8Login.clsLogin u8Login = new U8Login.clsLogin(); //声明u8login对象 String sSubId = \String sYear = \String sUserID = \String sPassword = \String sDate = \String sServer = \

//登陆

String sAccID = \

String sSerial = \

if(!u8Login.Login(ref sSubId, ref sAccID, ref sYear, ref sUserID, ref sPassword, ref sDate, ref sServer, ref sSerial))

{

}

Console.WriteLine(\登陆失败,原因:\Marshal.FinalReleaseComObject(u8Login); return;

如果当前环境中有login对象则可以省去第一步。 2. 构造环境上下文对象,传入login

U8EnvContext envContext = new U8EnvContext();

envContext.U8Login = u8Login;

//构造环境上下文对象 //传入login

3. 设置API地址标识(Url)参数

//如当前API“新增或修改”的地址标识为:U8API/SaleOrder/Save

U8ApiAddress myApiAddress = new U8ApiAddress(\

4. 构造APIBroker

U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext);

5. API对象参数赋值

1) 给BO表头参数DomHead和表体参数domBody赋值有两种方法,如下: 方法一是直接传入MSXML2.DOMDocumentClass对象,代码如下

MSXML2.DOMDocumentClass domHead = new MSXML2.DOMDocumentClass(); domHead.load(\);

broker.AssignNormalValue(\, domHead);

方法二是构造BusinessObject对象,具体方法如下:

//首先通过GetBoParam方法获取表头表体参数

注意:设置行数为某个值,行数并不限定为该最大值,可以一直顺序添加至任意行,但有一个规则:例如当设置为10时,可以对第0、1、??9行赋值,当对第10行赋值时候,则会顺序添加一个新行,但此时是不能对第11行赋值的,当添加一个新行(第10行)后,又可以对第11行进行赋值。

/****************************** 以下是必输字段 ****************************/ BusinessObject DomHead = broker.GetBoParam(\DomHead.RowCount = 10; //设置行数

//其中,给BO对象的字段赋值,值可以是真实类型,也可以是无类型字符串 //以下代码示例只设置第一行值。各字段定义详见API服务接口定义