|
本帖最后由 wutingting 于 2016-7-18 15:52 编辑
功能概括:
1.对采购申请单的明细数据进行导入,进行合同的制作。
2.合同明细数据可以自己新建,也可以导入物料信息以及申请明细数据。
UI原型图:
该窗体采用的是主从结构
UI预览以及 UI字段:
UI字段信息
ref参照:
采购员: 获取采购员表(puBuyer)中的 姓名,并且把采购员表中的iiden回写给合同头表(puorderhdr)中的采购员id。
供应商名称:采用lookup框 ,获取客商基础表(pbCustomer)中的客商名称,客商编号,并且把客商基础表中的iiden回写给合同头表的供应商id。在速查字段中查询出供应商 编号,及其名称。
币种: 采用lookup框,查询出币种表中的币种名称,编号,以及汇率,并且把汇率回写到cip界面的汇率字段中去。
单据状态: 采用引用常量(292).
单位: 采用lookup框, 查询出物料表下的住单位组下单位表中的单位名称,并且把单位名称,以及iiden回写给合同明细表的单位字段和单位id。
付款方式: 引用常量(600)。
贸易方式: 引用常量(1165)。
物料大类: 采用 下拉框, 查询出物料大类表中的物料名称和物料名称的id,并且把物料名称id回写到采购合同头表的物料大类id。
物料名称:采用lookup框,查询出物料表中的物料名称,物料编号以及单位,型号,并且把物料的iiden回写给合同头表的imaterialid,然后回写物料名称,物料编号,单位以及型号字段。
操作流程:
1.打开采购合同窗体(37682)
2.点击工具栏上边的新增按钮,
3.必填字段有(供应商名称,付款方式,贸易方式,币种,物料名称编号,单位以及交期。), 贸易方式默认为一般贸易。币种默认为人民币。付款方式默认为:现金。物料大类才菜单管理里配置为通用五金
4.明细可以导入采购申请明细,以及物料表中的数据信息。也可进行新建。
5.当数量或者单价为空 的时候 送审的时候会在后台进行校验报错提示。
窗体演示:
控件设置:
在formconfige四十项中添加两个到入 按钮,一个是导入物料,一个是导入采购申请明细信息。
Action:
(SELECT iStatus=(SELECT TOP 1 1
FROM dbo.puOrderHdr A(NOLOCK)
WHERE A.iBillStatus IN(2,6) AND A.iIden=:iIden)) -----------48464sql语句。
Entity.Retrive(OutParam,48464,mainEntitySet);----执行48464的sql语句 放到outparam中。
EntitySet.ValidateEmpty(mainEntitySet);-----------校验实体集是否为空。
RefreshControl(bbiEdit,:f[OutParam.iStatus]<>1); 如果存在48464sql的条件 则禁用编辑控件。
重要后台代码:
校验物料大类与物料是否一致
1. SELECT TOP 1 @iMaterialCategoryId=A.iMaterialCategoryId ----------查询当前采购合同头表中的物料类型后回写给变量
,@iCurrencyId=A.iCurrencyId,@nExchangeRate=A.nExchangeRate
FROM dbo.puOrderHdr A(NOLOCK)
WHERE A.iIden=@iBillId
2. SET @s=0x ---------定义变量@s
SELECT @s=dbo.fnpbConcatString(A.iRowNo) -------将行号串联后回写给变量@s
FROM dbo.puOrderDtl A(NOLOCK)------------从合同明细表关联物料表
JOIN dbo.mmMaterial B ON B.iIden=A.iMaterialId
WHERE A.iHdrId=@iBillId AND B.iMaterialCategoryId<>@iMaterialCategoryId-----筛选条件为当前单下物料类型不相等的数据。
IF @s<>0x
BEGIN
RAISERROR('行号[%s]物料与物料大类不一致',16,1,@s)---------给出明细物料与头表物料大类不一致提示
RETURN
END
二:
SELECT @nQty=nQty,@nPrice=nPrice,@bFree=bFree-----------------查询当前合同明细表中的数量,单价,以及是否赠品
FROM dbo.puOrderDtl A(NOLOCK)
WHERE A.iHdrId=@iBillId
IF @nQty IS NULL OR @nQty<=0--------------------------------------------------------- --判断合同明细中数量是否为空或这个数量小于
BEGIN
RAISERROR('请输入数量!',16,1)
END
IF @nPrice IS NULL OR @nPrice<=0---------------------------------------- --判断合同明细中含税单价是否为空或这个数量小于
BEGIN
RAISERROR('请输入含税单价!',16,1)
END
DECLARE @dd DATE
SELECT @dd= A.dDeliveryDate
FROM dbo.puOrderDtl A(NOLOCK)
WHERE A.iHdrId=@iBillId
IF DATEDIFF(DAY,@dd,GETDATE())>30
BEGIN
RAISERROR('当前时间超出规定时间!',16,1)--------------------------------------比较输入的与当前时间差如果大于30天则不可以送审
END
|
|