zoukankan      html  css  js  c++  java
  • 金蝶触发器,生成条码信息

    业务内容:通过新增生产任务单,自动产品条码信息    (解决方式:在金蝶生产任务单的数据库表上:ICMO里新增三个触发器:Insert触发器、Update触发器、Delete触发器)

    业务类型:生产一批产品,一批产品装入各自的箱中,每一箱一个条码,且条码末三位要求对应一箱内产品的个数

    例如:企业生产1000个产品,每箱装20个,就需要50箱,也需要50个条码

    难点:企业一次也可能生产103个产品,那么最后一箱数量就是3个,而不是20个,最后的三位不是020,而是003

    注意点:条码号必须保证决不能有相同出现,可以设置唯一键约束

    第一步:需要新建一张条码表

     1 create trigger [dbo].[xt_AddBarCode] on [dbo].[ICMO] for insert as            --创建触发器
     2 begin
     3 
     4 declare @fid int set @fid=(select finterid from inserted)        --单据内码
     5 declare @fmat int set @fmat=(select fitemid from inserted)        --物料内码
     6 declare @qty float set @qty=(select FHeadSelfJ01110 from inserted)        --装箱数量
     7 declare @prodate datetime set @prodate=(select FHeadSelfJ01111 from inserted)
     8 declare @pro float set @pro=(select FWorkShop from inserted)        --生产车间内码
     9 declare @CreateT datetime set @CreateT=(select FPlanCommitDate from inserted)    --计划生产日期
    10 declare @proNum float set @proNum=(select FAuxQty from inserted)                --计划生产数量
    11 declare @Num int set @Num=1        --计次
    12 declare @barid varchar(20) 
    13 declare @quyu float
    14 
    15 delete from xt_CodeInfo where billID=@fid            --插入时,删除一切与该生产任务单有关的条码,全部重新生产
    16 
    17 while(@Num*@qty<@proNum+@qty)                        --循环,判断需要生成条码数量
    18 begin
    19 
    20 if(@Num*@qty>@proNum-@qty and @Num*@qty<@proNum)
    21 set @quyu=@proNum-@Num*@qty
    22 else
    23 set @quyu=@qty
    24 
    25 set @barid=isnull((select cast(max(cast(substring(barCode,7,6) as int))+1 as varchar(20)) from xt_CodeInfo),0)
    26 
    27 set @barid=left('000000',6-len(@barid))+@barid
    28 
    29 set @barid=left('000000',6-len(@fmat))+CAST(@fmat as varchar(10))+@barid+LEFT('000',3-LEN(@quyu))+CAST(@quyu as varchar(50))
    30 
    31 insert into xt_CodeInfo (barcode,materialID,billType,billID,packing,qty,ProductID,CreateDate,printlabel,prodate,flag) values (@barid,@fmat,1,@fid,@qty,@quyu,@pro,@CreateT,0,@prodate,1)
    32 
    33 
    34 set @num=@num+1
    35 end
    36 
    37 end
  • 相关阅读:
    Nginx 知识
    web页面乱码之字符集
    P2633 Count on a tree 树上主席树
    HDU 1542 线段树扫描线
    P4513 小白逛公园 线段树
    牛客4 C sequence
    P4126 [AHOI2009]最小割 网络流
    P3980 [NOI2008]志愿者招募 网络流
    P3313 [SDOI2014]旅行 动态开点线段树 树链剖分
    Planting Trees 单调队列
  • 原文地址:https://www.cnblogs.com/erph/p/6992365.html
Copyright © 2011-2022 走看看