环思产品论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 2667|回复: 0
打印 上一主题 下一主题

[37682]采购合同

[复制链接]

6

主题

6

帖子

65

积分

版主

Rank: 7Rank: 7Rank: 7

积分
65
跳转到指定楼层
楼主
发表于 2016-7-13 20:09:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|上海环思 ( 沪ICP备11022428号 )

GMT+8, 2025-5-15 01:59 , Processed in 0.104252 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表