BPOS关于“相邻库存查询”的调整
“相邻库存查询”的应用场景:主要是实现门店间,相互查看商品库存状况,但出于公司对门店的查看权限控制要求,不能一次性查看到相关店铺的所有库存,所以产生了“相邻库存查询”的功能,通过后台系统给指定门店定义相关联的店仓,让门店可以按照单款查询到的方式查询到已定义的“相邻店铺”的商品库存分布状况。
但是标准产品里面设计的“相邻库存查询”,因对查询条件的匹配限制(当输入“款号”能查询所有尺码的库存分布情况,输入“条码”时只能查询次条码的库存情况),这样的方式降低“相邻看下查询”的功能效果,接收很多客户的反馈之后,重新调整自定义了相关程序(getBarcodeQtyCanByUserId_C.jsp),添加条码解析函数(oracle数据库自定义函数get_mpda_no_mpt),实现了扫入条码,直接查询所有尺码的库存情况。

修改后的jsp

自定义函数get_mpda_no_mpt的代码
create or replace function get_mpda_no_mpt(p_no in varchar2) return number as v_seqname varchar2(80);
pos number(10);
m_pda_id number(10); begin --1条码
begin
EXECUTE IMMEDIATE '
select t.m_product_id from m_product_alias t where t.no = :1'
into m_pda_id
using p_no; exception
when no_data_found then
m_pda_id := null;
end;
if m_pda_id is not null then
return m_pda_id;
end if; --2条码
begin
EXECUTE IMMEDIATE '
select t.id from m_product t where t.name = :1'
into m_pda_id
using p_no; exception
when no_data_found then
m_pda_id := null;
end;
if m_pda_id is not null then
return m_pda_id;
end if; --3流水码(截取位数)
pos := ad_param_value(37, 'portal.6001', 0);
begin
--raise_application_error(-20201,pos);
FOR v IN (SELECT regexp_substr(pos, '[^,]+', 1, LEVEL, 'i') AS text
FROM dual
CONNECT BY LEVEL <=
length(pos) - length(REPLACE(pos, ',')) + 1) LOOP
EXECUTE IMMEDIATE 'select max(m_product_id) from m_product_alias where no=:1'
INTO m_pda_id
USING substr(p_no, 1, length(p_no) - v.text);
IF m_pda_id > 0 THEN
return m_pda_id;
END IF;
END LOOP;
exception
when no_data_found then
m_pda_id := null;
end;
if m_pda_id is not null then
return m_pda_id;
end if; --4国标码
begin
EXECUTE IMMEDIATE '
select t.m_product_id
from m_product_alias t
where t.INTSCODE = :1'
into m_pda_id
using p_no;
exception
when no_data_found then
m_pda_id := null;
end;
if m_pda_id is not null then
return m_pda_id;
end if; --5新旧条码对照
begin
EXECUTE IMMEDIATE '
select a.m_product_id
from m_pdt_alias_con t, m_product_alias g,m_product_alias a
where t.m_pda_old_id = g.id
and t.m_pda_new_id=a.id
and g.no = :1'
into m_pda_id
using p_no; exception
when no_data_found then
m_pda_id := null;
end; if m_pda_id is not null then
return m_pda_id;
end if; return m_pda_id; end;
后台“相邻店铺”维护调整,标准的“相邻店铺”维护只能是一一对应维护,例如定义A店铺的“相邻店铺”为B、C店铺,则需要再A店铺的店仓档案下的“相邻店铺”table也页添加B、C店铺后,再到B、C店铺的店仓档案下添加A店铺,维护起来很是不方便。
解决方案:通过给店仓档案添加新的标签,修改对应的店仓档案程序,在对店仓档案修改的时候,识别将统一标签的店仓直接相互更新到对应的“相邻店铺”。
1 /*根据店仓性质更新相邻店铺*/
2 --先删除原明细
3 delete from C_STORENEB;
4
5 for v in (select a.id, a.c_storekind_id
6 from c_store a
7 where a.isactive='Y') loop
8
9 --插入新的明细
10 insert into C_STORENEB t
11 (id,
12 ad_client_id,
13 ad_org_id,
14 c_neb_store_id,
15 c_store_id,
16 ownerid,
17 modifierid,
18 creationdate,
19 modifieddate,
20 isactive)
21 select get_sequences('C_STORENEB'),
22 a.ad_client_id,
23 a.ad_org_id,
24 a.id,
25 v.id,
26 ownerid,
27 modifierid,
28 creationdate,
29 modifieddate,
30 isactive
31 from c_store a
32 where a.isactive='Y';
33 end loop;
BPOS关于“相邻库存查询”的调整的更多相关文章
- Hamilton回路的判定与构造
定理1:在一个具有n个顶点的无向连通图G中,如果任意两个顶点的度数之和大于n,则G具有Hamilton回路.此条件为充分条件 定理2:设图G = <V,E>,是Hamilton图,则对于v ...
- 8大排序算法的java实现--做个人收藏
排序算法分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因为数据量太大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.这里只讨论内部排序,常见的内部排序算法有:插入排序 ...
- Careercup | Chapter 3
3.1 Describe how you could use a single array to implement three stacks. Flexible Divisions的方案,当某个栈满 ...
- tmux 入门教程
tmux 本教程是基于ACWing的<Linux基础课>所做,希望大家支持ACWing 功能 分屏 当需要同时运行两个终端,并且进行比对着输入时,来回切换比较麻烦,就可以利用分屏 可以在一 ...
- lintcode: 最小调整代价
题目 最小调整代价 给一个整数数组,调整每个数的大小,使得相邻的两个数的差小于一个给定的整数target,调整每个数的代价为调整前后的差的绝对值,求调整代价之和最小是多少. 样例 对于数组,最小的调整 ...
- Ubuntu14.0使用gparted调整分区大小
不知道为什么,我总会碰到一些疑难杂症,别人的分区都是在同一个目录下,直接通过,不断调整同一目录下相邻分区之间的空间来达到调整目标分区大小的目的 但我的不一样,我的主要分区在扩展分区下,极其魔性,图片里 ...
- 算法进阶面试题04——平衡二叉搜索树、AVL/红黑/SB树、删除和调整平衡的方法、输出大楼轮廓、累加和等于num的最长数组、滴滴Xor
接着第三课的内容和讲了第四课的部分内容 1.介绍二叉搜索树 在二叉树上,何为一个节点的后继节点? 何为搜索二叉树? 如何实现搜索二叉树的查找?插入?删除? 二叉树的概念上衍生出的. 任何一个节点,左比 ...
- Linux下调整ext3分区大小【转】
本文转载自:https://blog.csdn.net/cruise_h/article/details/22403529 本文讨论如何再不丢失数据的情况下调整已有ext3分区的大小,包括: 压缩已有 ...
- 剑指offer十三之调整数组顺序使奇数位于偶数前面
一.题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 二.思路 此题可 ...
随机推荐
- 1、tensorflow 框架理解
2020/10/31 参考:https://blog.csdn.net/mzpmzk/article/details/78636127 1. 两大步骤:定义图define the graph, 进行计 ...
- html标签和body标签的区别
首先想要总结这个问题就是因为在开发的过程中,在设置body的高度的时候,在浏览器窗口中并不起作用,一直都会显示是浏览器窗口的大小,所以想要搞清楚这面的原因. 一.前提 在页面的设计中,当我们没有为一个 ...
- 响应式网站css reset
响应式网站 css reset /* core.css v1.1 | MIT License | corecss.io */ html { font-family: sans-serif; font- ...
- 数组编程题(github每日一题)
/** * 随机生成一个长度为 10 的整数类型的数组,例如 [2, 10, 3, 4, 5, 11, 10, 11, 20], * 将其排列成一个新数组,要求新数组形式如下,例如 [[2, 3, 4 ...
- 人社部新职业,Panda Global发现区块链新职业榜上有名!
近日,为了助力新冠肺炎疫情的防控,扎实做好"六稳"工作,全面落实"六保"任务,促就业拓岗位,人力资源社会保障部联合市场监管总局.国家统计局近日正式向社会发布一批 ...
- Python不同包之间调用注意事项
1.不同包之间调用,因为在不同文件夹下,引用的时候加上包名就可以了.运行时,在eclipse直接运行没有问题.但是在,命令行运行时出现找不到模块的错误.原因是,Python只搜索当前目录和内置模块以及 ...
- Feign使用注意事项
使用Feign时,为了不写重复代码,需要写feign公共接口方便调用,这时候需要注意以下问题,以发邮件为例 定义公共接口 /** * @author liuyalong * @date 2020/10 ...
- Docker(一):Docker安装
简介 Docker是dotcloud公司开源的一款产品,主要基于PAAS平台为开发者提供服务.是解决运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术. Docker组件 ...
- vue第八单元(组件通信 子父,父子组件通信 自定义事件 事件修饰符 v-model props验证 )
第八单元(组件通信 子父,父子组件通信 自定义事件 事件修饰符 v-model props验证 ) #课程目标 掌握使用props让父组件给子组件传参(重点) 掌握props属性的使用以及prop验证 ...
- 一文搞懂 CountDownLatch 用法和源码!
CountDownLatch 是多线程控制的一种工具,它被称为 门阀. 计数器或者 闭锁.这个工具经常用来用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用).下面我们就来一起 ...