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十三之调整数组顺序使奇数位于偶数前面
一.题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 二.思路 此题可 ...
随机推荐
- PyQt(Python+Qt)学习随笔:Qt Designer中部件的geometry几何属性
geometry属性保存部件相对于其父级对象的位置和大小,Qt实际上是以一个长方形来表示部件的位置和大小的,包括左上角的坐标位置.长度和宽带. 当部件的geometry调整时,部件如果可见将立即接收m ...
- NET CORE通过NodeService调用js
在 .NET Framework 时,我们可以通过V8.NET等组件来运行 JavaScript,不过目前我看了好几个开源组件包括V8.NET都还不支持 .NET Core ,我们如何在 .NET C ...
- 冰点文库下载器 v3.2.12(0314) 去广告单文件
冰点文库,免积分免登陆文档下载神器!付费文档免费下载工具.百度文库免费下载工具. 冰点文库下载器,免费下载文档工具,无需积分也无需登陆就能自由下载百度文库.豆丁网.丁香网.电器网.MBA ...
- 2020 AC Saber夏季赛 游记
看着 \(\text{Acwing}\) 成长的我,还是写一下游记吧(?). 刚刚中考完,手速本来就老年,更慢,算法每次写完都要调,而且还查不出错.. Day 1 初赛.紧张,因为中考四五个月没打了, ...
- 题解-CF677D Vanya and Treasure
CF677D Vanya and Treasure 有一个 \(n\times m\) 的矩阵 \(a(1\le a_{i,j}\le p)\),求从起点 \((1,1)\) 出发依次遍历值为 \(1 ...
- Fabric v2.0中的隐私数据
文章来源于https://hyperledger-fabric.readthedocs.io/en/release-2.0/ 私有数据集在v1.4中提出,一直使用的是隐私数据集方式,即建立一个隐私数据 ...
- Office Word文件批量生成软件
一.软件用途 如果Word文件模板固定,只是要素信息不同,则可以使用本软件批量生成Word文件. 软件下载地址(2020-12-6更新):https://files.cnblogs.com/files ...
- STL——容器(deque)deque 的删除 clear() erase()
deque.clear(); //移除容器的所有数据 1 #include <iostream> 2 #include <deque> 3 4 using namespace ...
- 自顶向下redis4.0(1)启动
redis4.0的启动流程 目录 redis4.0的启动流程 简介 正文 全局server对象 初始化配置 初始化服务器 事件主循环 参考文献 简介 redis 在接收客户端连接之前,大概做了以下几件 ...
- Jmeter连接redis
介绍:现在有很多数据不是存储在数据库而是存储在Redis中 Redis数据库存储数据环境 不用每次都去数据库读取数据 可以有效的优化服务器性能. 下面介绍使用jmeter如何读取redis 一.首先创 ...