金蝶ERP实现产品入库冲减生产现场虚仓毛坯数,销售成品代码前一位数对应毛坯件的唯一代码,一一对应,其中增加委外加工时的半成品冲减功能。具体语句如下:
if exists(select 1 from sysobjects where name = 'icstockbill_jade01') drop trigger icstockbill_jade01
go

create  trigger icstockbill_jade01 on icstockbill
for insert,update,delete
as
declare @frob int,@finterid int,@ftrantype int,@fstatus int
select  @frob = frob,@finterid = finterid,@ftrantype = ftrantype,@fstatus = fstatus 
from inserted
--from icstockbill where finterid = 26864

declare @fstatus1 smallint,@fstatus2 smallint,@fbillno varchar(40)
select @fbillno = fbillno,@fstatus1 = fstatus from inserted
--from icstockbill where finterid = 26864
select @fstatus2 = fstatus from deleted
--select @fstatus2 = 0
--更新蓝字,未审核状态的 '销售出库单','领料单','委外出库单','其他出库单'的单价和金额
--更新步骤:供应商供货信息,以前月份的期末单价,以前月份的发出单价
--供应商供货信息只取RMB的平均单价
if @frob = 1 and @fstatus = 0 and (@ftrantype = 21 or @ftrantype = 24 or @ftrantype = 28 or @ftrantype = 29)
    begin        
 --更新供应商供货信息平均单价
     update a set fprice = isnull(b.fprice,0),famount = isnull(b.fprice,0) * fqty,fauxprice = isnull(b.fprice,0)
     from icstockbillentry a ,(select fitemid,convert(decimal(18,2),avg(fprice)) as fprice from t_supplyentry where fcyid = 1 group by fitemid) b
 where a.fitemid = b.fitemid and a.finterid = @finterid
if @ftrantype = 24
     --更新以前月的平均单价
     update x set fprice = y.fprice,famount = y.fprice * fqty,fauxprice = y.fprice
     from icstockbillentry x,
     (select fstockid,fitemid,fyear * 100 + fperiod as fperiods,
     convert(decimal(18,2),avg(case when fendqty = 0 then case when fsend <> 0 then fcredit/fsend end else fendbal / fendqty end)) as fprice
     from icinvbal 
     where fsend <> 0 or fendqty <> 0
     group by fstockid,fitemid,fyear * 100 + fperiod) y,
     (select fstockid,fitemid,max(fyear * 100 + fperiod) as fperiods from icinvbal
     where fsend <> 0 or fendqty <> 0 
     group by fstockid,fitemid) z
     where y.fstockid = z.fstockid and y.fitemid = z.fitemid and y.fperiods = z.fperiods
     and x.fscstockid = y.fstockid and x.fitemid = y.fitemid and x.finterid = @finterid

else
     --更新以前月的平均单价
     update x set fprice = y.fprice,famount = y.fprice * fqty,fauxprice = y.fprice
     from icstockbillentry x,
     (select fstockid,fitemid,fyear * 100 + fperiod as fperiods,
     convert(decimal(18,2),avg(case when fendqty = 0 then case when fsend <> 0 then fcredit/fsend end else fendbal / fendqty end)) as fprice
     from icinvbal 
     where fsend <> 0 or fendqty <> 0
     group by fstockid,fitemid,fyear * 100 + fperiod) y,
     (select fstockid,fitemid,max(fyear * 100 + fperiod) as fperiods from icinvbal
     where fsend <> 0 or fendqty <> 0 
     group by fstockid,fitemid) z
     where y.fstockid = z.fstockid and y.fitemid = z.fitemid and y.fperiods = z.fperiods
     and x.fdcstockid = y.fstockid and x.fitemid = y.fitemid and x.finterid = @finterid
    end

if @ftrantype  = 2 and ((isnull(@fstatus1,0) = 1 and isnull(@fstatus2,0) = 0) or (isnull(@fstatus1,0) = 0 and isnull(@fstatus2,0) = 1))
    begin
declare @finterid_zp int
 declare @fitemid_mp int,@fstockid_mp as int,@fqty_mp decimal(18,2)
 --虚仓入库单最大内码
 select @finterid_zp = isnull(max(finterid),0) + 1 from zpstockbill
 --产品入库单第一行产品对应的毛坯
 select @fitemid_mp = c.fitemid from icstockbillentry a,t_icitem b,t_icitem c
 where a.fitemid = b.fitemid and finterid = @finterid
 and c.fnumber = case left(b.fnumber,3) when '11.' then '15.001' when '12.' then '15.001' when '13.' then '15.002' when '14.' then '15.003' when '20.' then '15.002' end
 and fentryid = 1
if isnull(@fitemid_mp,0) = 0 goto ext
--产品入库单第一行产品对应的毛坯虚仓
 select @fstockid_mp = c.fitemid from icstockbillentry a,t_icitem b,t_stock c
 where a.fitemid = b.fitemid and finterid = @finterid
 and c.fnumber = case left(b.fnumber,3) when '11.' then '22' when '12.' then '22' when '13.' then '23' when '14.' then '22' when '20.' then '23' end
 and fentryid = 1
 --仓库入库单总数量
 select @fqty_mp = sum(fqty) from icstockbillentry where finterid = @finterid
 
 --审核过程
        if isnull(@fstatus1,0) = 1 and isnull(@fstatus2,0) = 0 
     begin
  --新增单据头
  insert into zpstockbill(fbrno,finterid,ftrantype,frob,fdate,fbillno,fcheckerid,ffmanagerid,fsmanagerid,fbillerid,fdeptid,fstatus,fcheckdate,fbilltypeid)
  select fbrno,@finterid_zp as finterid,26 as ftrantype,frob,fdate,fbillno,fcheckerid,ffmanagerid,fsmanagerid,fbillerid,fdeptid,fstatus,fcheckdate,12551 as fbilltypeid
  from icstockbill where finterid = @finterid
  --新增单据体
  insert into zpstockbillentry(fbrno,finterid,fentryid,fitemid,fqty,funitid,fauxqty,fdcstockid)
  select 0 as fbrno,@finterid_zp as finterid,1 as fentryid,
  @fitemid_mp as fitemid,
  @fqty_mp as fqty,@fqty_mp as fauxqty,
  (select funitid from t_icitem where fitemid = @fitemid_mp) as funitid,
  @fstockid_mp as fdcstockid
--审核减少库存数量
  select @fqty_mp = - @fqty_mp
     end
--反审核过程
        if isnull(@fstatus1,0) = 0 and isnull(@fstatus2,0) = 1
     begin
  update zpstockbill set fstatus = 0,fcheckerid = 0 where fbillno = @fbillno
  delete zpstockbill where fbillno = @fbillno
     end
--更新库存
 if exists (select * from poinventory where fitemid = @fitemid_mp and fstockid = @fstockid_mp)
  update poinventory set fqty = fqty + @fqty_mp where fitemid = @fitemid_mp and fstockid = @fstockid_mp
 else
  insert into poinventory(fbrno,fitemid,fstockid,fqty,fstocktypeid)
  select 0,@fitemid_mp,@fstockid_mp,@fqty_mp,(select ftypeid from t_stock where fitemid = @fstockid_mp)
end

ext:
/*
alter table icstockbill disable trigger icstockbill_jade01
alter table icstockbill enable trigger icstockbill_jade01
*/

附件:http://down.51cto.com/data/2347799

本文转自redking51CTO博客,原文链接:http://blog.51cto.com/redking/22192,如需转载请自行联系原作者

金蝶ERP实现产品入库及委外加工冲减生产现场虚仓毛坯数相关推荐

  1. 金蝶ERP实现产品入库及委外加工冲减生产现场虚仓毛坯数(终结版)

    金蝶ERP实现产品入库及委外加工冲减生产现场虚仓毛坯数(修正委外出库的入库及销售出库的入库冲减两次毛坯的问题) SET QUOTED_IDENTIFIER ON  GO SET ANSI_NULLS ...

  2. 金蝶ERP实现产品入库及委外加工冲减生产现场虚仓毛坯数(修正虚仓不能保存)...

    金蝶ERP实现产品入库冲减生产现场虚仓毛坯数,销售成品代码前一位数对应毛坯件的唯一代码,一一对应,其中增加委外加工时的半成品冲减功能.在此语句具体操作中出现虚仓入库单不能保存,提示不能删除己审核的单据 ...

  3. 金蝶ERP实现产品入库冲减生产现场虚仓毛坯数

    金蝶ERP实现产品入库冲减生产现场虚仓毛坯数,销售成品代码前一位数对应毛坯件的唯一代码,一一对应,具体语句如下: if exists(select 1 from sysobjects where na ...

  4. 学习金蝶ERP 之 K3 介绍

    第1章 金蝶ERP K3 介绍 学习重点: l         金蝶ERP K/3系统数据流程图 l         金蝶ERP K/3 应用流程 1.1 金蝶ERP K/3 系统介绍 金的ERP K ...

  5. 金蝶ERP K3 介绍

    学习重点: l 金蝶ERP K/3系统数据流程图 l 金蝶ERP K/3 应用流程 1.1 金蝶ERP K/3 系统介绍 金的ERP K/3共有56个子系统,在这里主要讲述了销售管理系统.生产数据系统 ...

  6. 委外订单_ERP软件教程:金蝶ERP的委外加工业务流程(一)

    ERP软件教程:金蝶ERP的委外加工业务流程 关注我,我将定期分享更多的ERP解决方案 转发关注并私信我,了解更多的解决方案及操作方法哦 欢迎大家随时咨询关于金蝶ERP的任何问题! 一.应用软件版本: ...

  7. 用友和金蝶ERP产品私有云部署方案

    用友和金蝶ERP产品私有云部署方案 [摘要] 用友 金蝶 私有云 部署 架构图 用友和金蝶ERP产品私有云部署方案 一. 前言 此文档用于用友.金蝶ERP服务端在云环境下部署说明.用友产品包括U8+. ...

  8. 金蝶K3如何根据生产领料情况控制产品入库

    需求: 1.如何控制没有领料不允许做产品入库单? 2.如何控制领料领多少,入库就入库多少? 3.系统能不能控制必须领足够入库的材料才可以入库? 4.想实现材料没有生产领料完不允许产品入库? 5.做产品 ...

  9. el-date-picker设置默认日期_ERP入门教程:快速掌握金蝶ERP的基础-物料批次管理的应用及设置...

    ERP入门教程:快速掌握金蝶ERP的基础-物料的批次管理的应用及设置 关注我,我将定期分享更多的ERP解决方案 转发关注并私信我,了解更多的解决方案及操作方法哦 一.应用软件版本:金蝶KIS旗舰版6. ...

最新文章

  1. 先定一个小目标,自己封装个ajax
  2. mysql 以时间段分组_根据mysql 按日期或者时间段 分组 统计的查询
  3. windows server 2008 让domain user有本地administrator权限
  4. Java基础语法 第2节 Java语言基本语法
  5. Canvas 渐变特效
  6. 粉丝回馈 | 用30天换来了这辈子独一无二的纪念
  7. j2ee和mysql怎么连接_J2EE数据库连接不再烦恼
  8. 车羊问题c语言编程,C语言-人狼羊菜问题-最容易看懂的解决方法及代码
  9. mysql 数据库 更新_mysql数据库更新
  10. c/cpp中怎样切割字符串,相似于split的功能
  11. 计蒜客 第一场 搜狗输入法
  12. Linux下安装gcc报错的情况解决方案
  13. ANX9833|硅谷数模ANX9833方案电路|ANX9833中文设计资料|ANX9833代理
  14. 使用VS2019配置EDK2安装教程
  15. Pycharm远程调试服务器代码出错:[Errno 2] No such file or directory
  16. 爬虫基础_urllib
  17. 【汇编】OllyDbg使用方法
  18. FCPX教程|如何在Final Cut Pro 的时间线中调整转场?
  19. 当人工智能(AI)撞上供应链
  20. 大型ERP系统在线体验账号

热门文章

  1. 【系统集成项目管理】之信息系统集成
  2. 李宏毅的机器学习课程!
  3. 股指期货成交价(股指期货成交价计算公式)
  4. X浏览器 v3.2.2.441 官方版-好用的手机浏览器 for Android
  5. v-if与perssimion结合实现权限控制
  6. 老年用计算机手写板,什么样的手写板才适合老年朋友使用
  7. 【Android App】获取照片里的位置信息及使用全球卫星导航系统(GNSS)获取位置实战(附源码和演示 超详细)
  8. 认识Excel的第二天(格式的删除、数据的转置、数据交换)
  9. 统计学笔记:赤裸裸的数据任人打扮
  10. 第一章——如何将stm32407移植到stm32427