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十三之调整数组顺序使奇数位于偶数前面
一.题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 二.思路 此题可 ...
随机推荐
- 项目测试环境自动化部署[jenkins前后端配置、Nginx配置]
持续部署:关注点在于项目功能部署到服务器后可以正常运行,为下一步测试环节或最终用户正式使用做准备.(问题点:一个环节有问题,其他环节跟着有问题) 持续集成:关注点是在于尽早发现项目整体运行问题,尽早解 ...
- windows+jenkins+iis 部署
1.安装jenkins 下载地址:https://www.jenkins.io/download/ 2.需要配置java环境 配置教程:https://www.cnblogs.com/liuxiaoj ...
- 测试window安装的客户端
1.win10 安装了客户端,测试一下,
- 四、java多线程核心技术——synchronized同步方法与synchronized同步快
一.synchronized同步方法 论:"线程安全"与"非线程安全"是多线程的经典问题.synchronized()方法就是解决非线程安全的. 1.方法内的变 ...
- js中的bind、apply、call、callee、caller的区别
1.bind.apply与call的区别与使用 相同点:2者是函数原型的一个方法,因此调用者都必须是函数,第1个参数都是对象.作用是,用另一个对象替换当前对象,另一对象也即是你传的第一个参数.通常用于 ...
- Jwt令牌创建
添加依赖 <dependencies> <!-- jwt --> <dependency> <groupId>io.jsonwebtoken</g ...
- 正交实验法之 Allpairs电商项目用例设计实战
一.正交实验法概述 正交实验法是研究多因素多水平的一种方法,它是通过正交表挑选部分有代表性的水平组合试验替代全面试验.这些有代表性的组合试验具备了"均匀分散,整齐可比"的特点.正交 ...
- JavaSE15-集合·其二
1.Set集合 1.1 Set集合概述和特点 Set集合的特点 元素存取无序 没有索引.只能通过迭代器或增强for循环遍历 不能存储重复元素 1.2 哈希值 哈希值简介 是JDK根据对象的地址或者字符 ...
- Spring(一)--简介
一.概述(什么是spring): Spring是分层的Java SE/EE应用full-stack(一站式)轻量级开源框架.他解决的是业务逻辑层和其他各层的松耦合问题,将面向接口的编程思想贯穿整个系统 ...
- Javascript JQuery select选择之Safari与Firefox
发现在苹果IOS手机及Safari浏览其中,如下代码不工作. $("#users option[value='hello']").attr("selected" ...