销售明细中产品一次性扣除实现

--模拟环境表与数据

/*

通过销售单号查找到销售明细中的产品,通过查询语句判断该明细中的产品是否在库存中充足,如果每一个产品都充足,则一次性扣除,有一个不足则不扣除。

测试通过,未在生产环境中实验。

*/
CREATE TABLE [dbo].[ssmx](
[ssdh] [int] NULL,
[cpid] [varchar](5) NULL,
[sl] [int] NULL
) ON [PRIMARY]

CREATE TABLE [dbo].[ss](
[ssdh] [int] NULL,
[ckzt] [int] NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[kc](
[id] [varchar](5) NULL,
[sl] [int] NULL
) ON [PRIMARY]

INSERT [dbo].[ssmx] ([ssdh], [cpid], [sl]) VALUES (1512150001, N‘10001‘, 100)
INSERT [dbo].[ssmx] ([ssdh], [cpid], [sl]) VALUES (1512150001, N‘10002‘, 400)
INSERT [dbo].[ssmx] ([ssdh], [cpid], [sl]) VALUES (1512150002, N‘10003‘, 100)
INSERT [dbo].[ssmx] ([ssdh], [cpid], [sl]) VALUES (1512150002, N‘10002‘, 200)

INSERT [dbo].[ss] ([ssdh], [ckzt]) VALUES (1512150001, 0)
INSERT [dbo].[ss] ([ssdh], [ckzt]) VALUES (1512150002, 0)

INSERT [dbo].[kc] ([id], [sl]) VALUES (N‘10001‘, 100)
INSERT [dbo].[kc] ([id], [sl]) VALUES (N‘10002‘, 500)
INSERT [dbo].[kc] ([id], [sl]) VALUES (N‘10003‘, 200)

--创建存储过程,自动出库
--入参销售单号
create proc zdck(@ssdh int)
as
begin
declare @count int=0;
select t2.* into #ssmx from ss t1 inner join ssmx t2 on t1.ssdh=t2.ssdh where [email protected] and t1.ckzt=0;
select @count=COUNT(1) from #ssmx;
if @count>0
begin
declare @kccount int=0;
select @kccount=COUNT(1) from kc t1 inner join ssmx t2 on t1.id=t2.cpid where [email protected];
if @[email protected]
begin

declare @zg int=0;--库存是否足够减
select @zg=sum(case when t1.sl-t2.sl>=0 then 1 else 0 end) from kc t1 inner join ssmx t2 on t1.id=t2.cpid
where [email protected] group by t2.ssdh
print ‘zg‘+cast(@zg as varchar(100));
if @[email protected]
begin
update kc set sl=t1.sl-t2.sl from kc t1 inner join ssmx t2 on t1.id=t2.cpid
where [email protected];
update ss set ckzt=1 where [email protected];
end
end
end
end

--开始测试

--查看原始库存表
select * from kc
10001 100
10002 500
10003 200
--销售表 0表示该销售单未出库
--两张销售单
select * from ss
1512150001 0
1512150002 0

--销售明细表
select * from ssmx

1512150001 10001 100
1512150001 10002 400
1512150002 10003 100
1512150002 10002 200

--执行存储过程
--尝试 1512150001 单据出库
exec zdck 1512150001

--销售表ckzt=1 表示出库成功
select * from ss
1512150001 1
1512150002 0

--查看库存相应产品的数量减掉
select * from kc
10001 0
10002 100
10003 200

--执行存储过程
--尝试 1512150002 单据出库
exec zdck 1512150002

--查看库存相应产品的数量减掉
--查看库存数量未变
select * from kc

--查看1512150002销售单号的出库情况,ckzt还是0
select * from ss where ssdh=1512150002

--删除测试表及存储过程
drop table ssmx;
drop table ss;
drop table kc;
drop proc zdck;

时间: 2024-11-05 07:44:54

销售明细中产品一次性扣除实现的相关文章

李新海:销售自己或者产品,永远离不开它

各位朋友,最近有一个视频,特别的火,在网络上到处转载.说的是,一名盲人,在路边乞讨,旁边放着一个纸壳,纸壳上面写着英文,翻译过来就是"我是盲人,请帮助我" 这个文字的介绍没有错,这个人确实是盲人,确实需要别人的帮助,可是结果如何呢,100个人,也就有1个人,会给他一枚硬币. 过了很久也依然是这样,后来过来一位女孩子,修改了上面的英文. 至于修改的什么内容,我们不得而知. 可最后的结果,发生了意想不到的结果. 当人们看见了这个新的内容,给这个盲人很多钱,而且越来越多,不断有人过来献出自己

An odoo功能介绍(13) 公司如何定义销售的订阅产品

SaaS公司通过CRM销售自己的订阅产品时,首先需要在系统中维护好产品定义,这样才能实现在线营销和销售,在线分析销售业绩.那么c如何定义SaaS公司销售的订阅产品呢,下面将通过5个步骤来演示一下Odoo + Anodoo中的功能: 首先是订阅模板定义.系统支持创建不同的订阅模板.一般地,根据模板中的关键属性来设置,如创建按月,按季度,按年订阅.如下图,增加了3种常用的订阅模板: 需要编辑订阅模板信息,包括周期,发票形式,客户是否可以关闭,未交费时多久后自动关闭等.如下图,是对"按月订阅"

在自己的apple中展示App Store中产品使用KStoreProductViewController

KStoreProductViewController类是UIViewController的子类,.希望向用户展示App Store中产品时,需要: 1.实例化一个SKStoreProductViewController类2.设置它的delegate3.把sotre product视图控制器显示给消费者 剩下的就交给操作系统来处理了.需要记住一点的是SKStoreProductViewController只能以模态的方式显示. SKStoreProductViewControllerDelega

AngularJS 1.3中的一次性数据绑定(one-time bindings)

谈谈AngularJS 1.3中的一次性数据绑定(one-time bindings) 不久之前,AngularJS 1.3版本正式发布,其中添加了很多的性特性,同时也对之前的一些bug做了修复,最重要的是其中包含一些突破性的变化.其中最重要的一项就是添加了一次性数据绑定. 等等,一次性数据绑定?这听起来似乎和AngularJS一直宣扬的双向数据绑定思想完全背离了吗?当然,AngularJS的双向数据绑定一直是AngularJS最重要的特性之一.然而,为了实现双向数据绑定,AngularJS需要

(33)odoo中产品价格字段

打开product.template 和 product.product 模型发现有很多关于价格描述的字段 product.template:        price        list_price        lst_price        standard_price product.product:        price        price_extra        lst_price            price:        这个在product.templa

用 Joomla 网站销售可下载产品的实现

在网上赚钱"是很多网友最想做的事情,我们来谈谈如何通过 Joomla 帮助你在网上发财.在网络上可以销售任何商品,但更适合销售数字产品(digital products),也可以称作可下载商品(downloadable merchandise).因为可下载商品无需通过快递.邮政等物流手段进行配送,从而不产生邮费:也无需担心运输途中货物受到"暴力分拣"而损坏,每一个买家得到的商品都是完完全全一模一样的:对于生产商来说,更无需担心厂址的选择.生产设备的购买,有一台电脑.一根网线,

山寨机制造及销售探秘(中):设计只需40~50天

酷似佳能的公司标志 笔者还采访了山寨机的设计及制造企业.前者在中国大都被称为“设计工作室”.主要工作是将外观设计方案变成CAD数据,以及调整软硬件的参考设计注2).在设计工作室业务中,要想实现更多的优秀设计案,其关键就在于与实际销售商品的流通企业建立密切的关系. 注2)山寨机不为消费者提供充分质保,对于联发科技而言,这“还起到了提高参考设计完成度的作用”(深圳市半导体行业协会). 笔者此次采访了在山寨机设计行业中排名深圳前5位的香港凯信通讯科技(Caixon,以下简称凯信).在该公司位于深圳的办

Highcharts在IE8中不能一次性正常显示的一种解决办法

由于客户要求必须在IE浏览器下兼容图表,故选用了兼容性较好的Highcharts.另外说一句,博主尝试过ichartjs.ECharts.YUI,兼容性都没有Highcharts给力(所有的兼容性问题都出现在IE上). 1.环境 IE8 Highcharts-4.2.3 jquery-1.8.3 2.现象 在火狐.谷歌浏览器中均正常显示. 在IE浏览器中: 调试的情况:正常显示. 非调试的情况:不能正常显示,但在F12时又能正常显示.退出且关闭F12,再进去还是不能正常显示.这就是个死循环……

FastReport报表设计

目录 5.1 前言 5.2 基本概念及操作 5.3 报表设计与范例 5.4 常用功能及函数 5.5 报表设计常用技巧 5.1 前言 汽车业务管理系统(VBMS)使用FastReport3.0报表系统设计报表.    本文主要描述使用FastReport设计报表的基本概念.使用方法.设计技巧和范例,不是FastReport的用户手册因此并不针对每个细节进行阐述.立足于建立设计报表的概念和实用技巧范例的讲解,面对的是具有一定计算机操作水平的用户.在VBMS中使用FastReport设计报表应该掌握以