create procedure PRO_update_Goods_group_stock is
v_min_stock NUMBER(10, 2);
v_gg_stock NUMBER(10, 2);
v_goods_no number;
v_sum_cost NUMBER(10, 2);
begin
for g_goods_no in (select ggi.goods_no
from goods_group_item ggi
where ggi.is_delete = 'N'
GROUP by ggi.goods_no) loop
select count(*)
into v_goods_no
from goods_no_stock gn
where gn.goods_no = g_goods_no.goods_no;
if v_goods_no > 0 then
continue;
end if; --查询组合子商品的库存再除以绑定的数量 取最小值 gg主商品 g子商品
select min(TRUNC(g.available_stock /
decode(gg1.group_goods_amount,
0,
1,
gg1.group_goods_amount),
0))
into v_min_stock
from goods_group_item gg1, goods g, goods gg
where gg1.goods_no = g_goods_no.goods_no
and gg1.is_delete = 'N'
and gg.goods_id = gg1.goods_id
and gg.is_delete = 'N'
and g.goods_id = gg1.GROUP_GOODS_ID; --计算成本价格 gg主商品 g子商品
select trunc(sum(g.cost_price * gg1.group_goods_amount), 2)
into v_sum_cost
from goods_group_item gg1, goods g, goods gg
where gg1.goods_no = g_goods_no.goods_no
and gg1.is_delete = 'N'
and gg.goods_id = gg1.goods_id
and gg.is_delete = 'N'
and g.goods_id = gg1.GROUP_GOODS_ID; update goods
set available_stock = v_min_stock, COST_PRICE = v_sum_cost
where goods_no = g_goods_no.goods_no
and is_delete = 'N';
commit;
end loop; --下架问题组合码
insert into sys_user_message
(MESSAGE_ID,
PRODUCT_CODE,
TARGET_MODUL_ID,
MESSAGE_BODY,
MESSAGE_STAGE,
IS_DELETE)
select sys_user_message_seq.nextval,
p.product_code,
254,
'商品:'||p.product_code||' 没有维护组合码',
'',
'N'
from product p
where not exists (select 1
from goods_group_item ggi
where ggi.goods_no = p.product_code)
and p.is_delete = 'N'
and p.is_onsale = 'Y'
and p.product_code like 'A%'; update product p set p.is_onsale = 'N'
where not exists (select 1
from goods_group_item ggi
where ggi.goods_no = p.product_code)
and p.is_delete = 'N'
and p.is_onsale = 'Y'
and p.product_code like 'A%'; commit;
end; select * from goods_no_stock gn
where gn.goods_no in (select ggi.goods_no
from goods_group_item ggi
where ggi.is_delete = 'N'
GROUP by ggi.goods_no); select * from goods g where g.GOODS_NO='02-00056'; select * from goods g where g.GOODS_NO=''; select * from goods g where g.goods_no=''; select gn.goods_no from goods_no_stock gn;
goods_no_stock:库存同步黑名单表,在这张表中的数据,都不会进行相关的更新操作
 

最新文章

  1. Intellij IDEA 创建Web项目并在Tomcat中部署运行(不使用maven)【转载】
  2. Python类属性,实例属性
  3. jQuery ajax()使用serialize()提交form数据
  4. Elasticsearch集群中处理大型日志流的几个常用概念
  5. UITextField限制字数的方法
  6. HDU 2896 AC自动机 裸题
  7. linux 网络状态工具ss命令
  8. ASP.NET MVC5中的数据注解
  9. Int16 Int32 Int64
  10. Web Service学习笔记:动态调用WebService
  11. Linux常见命令(五)——rmdir
  12. 1-1hibernate数据库操作基础
  13. asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程
  14. Java基础13:反射详解
  15. php ip2long负数的问题
  16. windows拿到cmd权限之后常用命令
  17. Spring Cloud Eureka简介及原理
  18. OpenCV3.2.0+VS2017环境配置与常见问题(巨细坑爹版)
  19. linux同步机制2
  20. css3 2D转换(2D Transform) 动画(Animation)

热门文章

  1. Grafana+Prometheus实现Ceph监控和钉钉告警-转载(云栖社区)
  2. Python +appium baseview
  3. 从输入 URL 到页面展示到底发生了什么?
  4. 2019年牛客多校第一场 I题Points Division 线段树+DP
  5. 2019年牛客多校第一场 H题XOR 线性基
  6. less-3
  7. LeetCode 1039. Minimum Score Triangulation of Polygon
  8. shell grep的基本用法
  9. 检查cgroup v2 是否安装
  10. CSS块元素