客户化解决方案
D8AC3D06-4AD4-47D8-9413-45131C4E9B7B 商品信息增加调售价单按钮
涉及改动
P64 商品信息专用窗体按钮方案 减少一些可视按钮 此按钮是否可视 设为0
增加postopen事件,将 相近品种 和 药易采 按钮隐藏了(49方案可以直接关掉的)
p49#cb_1.visible=false
p50#cb_1.visible=false
不然按钮太多了 分辨率太低的屏幕显示不出来全部按钮
按钮方案 代码
Dec ld_saleprice
Long ll_row
String ls_out[], ls_warecode, ls_sql[],ls_err
Int li_re
str_DBParam lstr_dbp[]
ll_row = dw_master.GetRow()
If ll_row <= 0 Then
MessageBox("提示", "请选中商品再操作!")
Return -1
End If
ls_warecode = dw_master.GetItemString(ll_row, 'warecode')
li_re = gf_get_input({"请输入商品售价"}, {""}, {"number"}, Ref ls_out[])
If li_re <> 1 Then Return 0
ld_saleprice = Dec(ls_out[1])
If ld_saleprice = 0 Then Return 0
ls_sql[1] = "BEGIN " + '~r~n' + &
"INSERT INTO tmp_disable_trigger (table_name) VALUES ('t_ware');" + '~r~n' + &
"update t_ware set lastsaleprice = " +String(ld_saleprice)+ " Where compid = " + String(gl_compid) + " and warecode = '" + ls_warecode + "';" + '~r~n' + &
"DELETE FROM tmp_disable_trigger WHERE table_name = 't_ware';" + '~r~n' + &
"END;"
If Not gnvo_datasource.of_exec(ls_sql, ls_err) Then
MessageBox("更新售价失败!", ls_err, stopsign!, ok!, 1)
Return -1
End If
lstr_dbp[1].Item[1].pname = 'p_warecode'
lstr_dbp[1].Item[1].pvalue = ls_warecode
lstr_dbp[1].Item[2].pname = 'p_compid'
lstr_dbp[1].Item[2].pvalue = gl_compid
lstr_dbp[1].Item[3].pname = 'p_createuser'
lstr_dbp[1].Item[3].pvalue = gl_userid
lstr_dbp[1].Item[4].pname = 'p_saleprice'
lstr_dbp[1].Item[4].pvalue = ld_saleprice
If Not gnvo_datasource.of_execproc({'cproc_商品更新售价到调售价单'} ,Ref lstr_dbp,Ref ls_err) Then
// p_warecode IN NUMBER,
// p_compid IN NUMBER,
// p_createuser IN NUMBER,
// p_saleprice IN NUMBER
gf_wait_end()
MessageBox('错误',"更新售价失败,请检查 'cproc_商品更新售价到调售价单' ~r~n"+ls_err,stopsign!,ok!,1)
Return 0
End If
MessageBox("提示","商品: " + ls_warecode+" 更新售价成功!" )
dw_master.SetItem(ll_row, 'lastsaleprice',Dec(ls_out[1]))
dw_master.ResetUpdate()
Return 0
存储过程 cproc_商品更新售价到调售价单 的代码
CREATE OR REPLACE PROCEDURE cproc_商品更新售价到调售价单(
p_warecode IN NUMBER,
p_compid IN NUMBER,
p_createuser IN NUMBER,
p_saleprice IN NUMBER
)
AS
v_adjustno VARCHAR2(50);
v_wareid NUMBER;
v_purtax NUMBER;
BEGIN
v_adjustno := f_get_serial('ADJ','1');
BEGIN
SELECT wareid, purtax
INTO v_wareid, v_purtax
FROM t_ware
WHERE warecode = p_warecode
AND compid = p_compid;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20001, '错误:商品编码['||p_warecode||']在公司['||p_compid||']中不存在!');
END;
IF v_wareid IS NULL THEN
RAISE_APPLICATION_ERROR(-20002, '错误:获取商品内码失败,无法更新售价!');
END IF;
IF v_purtax IS NULL THEN
RAISE_APPLICATION_ERROR(-20003, '错误:商品['||p_warecode||']的进项税率为空,无法更新售价!');
END IF;
IF p_saleprice = 0 THEN
RAISE_APPLICATION_ERROR(-20004, '错误:无法更新售价为 0 !');
END IF;
INSERT INTO t_adjust_saleprice_h
(compid, adjustno, adjusttime, proposer, status,
checkbit1, checkbit2, checkbit3, checkbit4, checkbit5,
createuser, createtime, busno, lastmodify, lasttime, account_date, notes)
VALUES
(p_compid, v_adjustno, sysdate, p_createuser, 0,
0, 0, 0, 0, 0,
p_createuser, sysdate, 1001, p_createuser, sysdate, trunc(sysdate),
'账号 '||p_createuser||' 在[商品信息]调整售价自动生成');
INSERT INTO t_adjust_saleprice_d
(adjustno, salegroupid, wareid, maxsaleprice, salepriceb,
salepricea, minpriceb, minpricea, mempriceb, mempricea,
purprice, saletax, rowno, memminpriceb, memminpricea,
memprice2, memminprice2, memprice3, memminprice3, memprice4,
memminprice4, memprice5, memminprice5, memprice6, memminprice6,
memprice7, memminprice7, memcardflag, compid, salegroupids,
salegroupnames, minsalepriceb)
SELECT
v_adjustno, 8888, v_wareid, 0, NVL(saleprice,0), p_saleprice,
0, 0, NVL(memprice,0), NVL(memprice,0), NVL(lastpurprice,0), NVL(v_purtax,0),
ROWNUM, 0, 0, 0, 0,
0, 0, 0, 0, 0,
0, 0, 0, 0, 0,
1, p_compid, '全部', '全部', 0
FROM t_ware_saleprice
WHERE wareid = v_wareid AND salegroupid = 1;
UPDATE t_adjust_saleprice_h
SET checkbit1 = 1,
checker1 = p_createuser,
status = 1,
execdate = sysdate
WHERE adjustno = v_adjustno;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RAISE;
END cproc_商品更新售价到调售价单;
V2.0 增加调会员价
客户化解决方案
EBB1D794-D0F5-4B78-B7D0-0B6B334E6C24 商品信息增加调价格按钮
代码调整
按钮代码
Dec ld_saleprice,ld_memprice
Long ll_row
String ls_out[], ls_warecode, ls_sql[],ls_err
Int li_re
str_DBParam lstr_dbp[]
ll_row = dw_master.GetRow()
If ll_row <= 0 Then
MessageBox("提示", "请选中商品再操作!")
Return -1
End If
ls_warecode = dw_master.GetItemString(ll_row, 'warecode')
li_re = gf_get_input({"请输入售价","请输入会员价"}, {"",""},{"number","number"}, Ref ls_out[])
If li_re <> 1 Then Return 0
ld_saleprice = Dec(ls_out[1])
ld_memprice = Dec(ls_out[2])
If IsNull(ld_saleprice) Then ld_saleprice = 0
If IsNull(ld_memprice) Then ld_memprice = 0
If ld_saleprice = 0 And ld_memprice = 0 Then Return 0
ls_sql[1] = "BEGIN " + '~r~n' + &
"INSERT INTO tmp_disable_trigger (table_name) VALUES ('t_ware');" + '~r~n' + &
"update t_ware set lastsaleprice = " +String(ld_saleprice)+ ",lastmemprice = " +String(ld_memprice)+ " Where compid = " + String(gl_compid) + " and warecode = '" + ls_warecode + "';" + '~r~n' + &
"DELETE FROM tmp_disable_trigger WHERE table_name = 't_ware';" + '~r~n' + &
"END;"
If Not gnvo_datasource.of_exec(ls_sql, ls_err) Then
MessageBox("更新价格失败!", ls_err, stopsign!, ok!, 1)
Return -1
End If
lstr_dbp[1].Item[1].pname = 'p_warecode'
lstr_dbp[1].Item[1].pvalue = ls_warecode
lstr_dbp[1].Item[2].pname = 'p_compid'
lstr_dbp[1].Item[2].pvalue = gl_compid
lstr_dbp[1].Item[3].pname = 'p_createuser'
lstr_dbp[1].Item[3].pvalue = gl_userid
lstr_dbp[1].Item[4].pname = 'p_saleprice'
lstr_dbp[1].Item[4].pvalue = ld_saleprice
lstr_dbp[1].Item[5].pname = 'p_memprice'
lstr_dbp[1].Item[5].pvalue = ld_memprice
If Not gnvo_datasource.of_execproc({'cproc_商品更新价格到调售价单'} ,Ref lstr_dbp,Ref ls_err) Then
// p_warecode IN NUMBER,
// p_compid IN NUMBER,
// p_createuser IN NUMBER,
// p_saleprice IN NUMBER,
// p_memprice IN NUMBER
gf_wait_end()
MessageBox('错误',"更新售价失败,请检查 'cproc_商品更新价格到调售价单' ~r~n"+ls_err,stopsign!,ok!,1)
Return 0
End If
MessageBox("提示","商品: " + ls_warecode+" 更新价格成功!" )
dw_master.SetItem(ll_row, 'lastsaleprice',Dec(ls_out[1]))
dw_master.SetItem(ll_row, 'lastmemprice',Dec(ls_out[1]))
dw_master.ResetUpdate()
Return 0
存储过程
CREATE OR REPLACE PROCEDURE cproc_商品更新价格到调售价单(
p_warecode IN NUMBER,
p_compid IN NUMBER,
p_createuser IN NUMBER,
p_saleprice IN NUMBER,
p_memprice IN NUMBER
)
AS
v_adjustno VARCHAR2(50);
v_wareid NUMBER;
v_purtax NUMBER;
v_old_saleprice NUMBER;
v_old_memprice NUMBER;
BEGIN
-- 获取调价单号
v_adjustno := f_get_serial('ADJ', '1');
-- 获取商品信息
BEGIN
SELECT wareid, purtax
INTO v_wareid, v_purtax
FROM t_ware
WHERE warecode = p_warecode
AND compid = p_compid;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20001, '错误:商品编码[' || p_warecode || ']在公司[' || p_compid || ']中不存在!');
END;
-- 验证商品信息
IF v_wareid IS NULL THEN
RAISE_APPLICATION_ERROR(-20002, '错误:获取商品内码失败,无法更新售价!');
END IF;
IF v_purtax IS NULL THEN
RAISE_APPLICATION_ERROR(-20003, '错误:商品[' || p_warecode || ']的进项税率为空,无法更新售价!');
END IF;
-- 获取原价格
BEGIN
SELECT saleprice, memprice
INTO v_old_saleprice, v_old_memprice
FROM t_ware_saleprice e
WHERE e.wareid = v_wareid
AND e.compid = p_compid
AND e.salegroupid = 1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;
-- 检查价格有效性
IF p_saleprice < 0 OR p_memprice < 0 THEN
RAISE_APPLICATION_ERROR(-20002, '错误:商品售价或会员价无法更新为负数,请检查!');
END IF;
-- 根据不同价格组合情况处理
-- 情况1: 销售价=0且会员价>0
IF p_saleprice = 0 AND p_memprice > 0 THEN
-- 插入调价单头
INSERT INTO t_adjust_saleprice_h (
compid, adjustno, adjusttime, proposer, status,
checkbit1, checkbit2, checkbit3, checkbit4, checkbit5,
createuser, createtime, busno, lastmodify, lasttime, account_date, notes
)
VALUES (
p_compid, v_adjustno, SYSDATE, p_createuser, 0,
0, 0, 0, 0, 0,
p_createuser, SYSDATE, 1001, p_createuser, SYSDATE, TRUNC(SYSDATE),
'账号 ' || p_createuser || ' 在[商品信息]调整价格自动生成'
);
-- 插入调价单明细
INSERT INTO t_adjust_saleprice_d (
adjustno, salegroupid, wareid, maxsaleprice, salepriceb,
salepricea, minpriceb, minpricea, mempriceb, mempricea,
purprice, saletax, rowno, memminpriceb, memminpricea,
memprice2, memminprice2, memprice3, memminprice3, memprice4,
memminprice4, memprice5, memminprice5, memprice6, memminprice6,
memprice7, memminprice7, memcardflag, compid, salegroupids,
salegroupnames, minsalepriceb
)
SELECT
v_adjustno, 8888, v_wareid, 0, NVL(v_old_saleprice, 0), NVL(saleprice, v_old_saleprice),
0, 0, NVL(v_old_memprice, 0), NVL(p_memprice, v_old_memprice), NVL(lastpurprice, 0), NVL(v_purtax, 0),
ROWNUM, 0, 0, 0, 0,
0, 0, 0, 0, 0,
0, 0, 0, 0, 0,
1, p_compid, '全部', '全部', 0
FROM t_ware_saleprice
WHERE wareid = v_wareid AND salegroupid = 1;
-- 情况2: 销售价>0且会员价=0
ELSIF p_saleprice > 0 AND p_memprice = 0 THEN
-- 插入调价单头
INSERT INTO t_adjust_saleprice_h (
compid, adjustno, adjusttime, proposer, status,
checkbit1, checkbit2, checkbit3, checkbit4, checkbit5,
createuser, createtime, busno, lastmodify, lasttime, account_date, notes
)
VALUES (
p_compid, v_adjustno, SYSDATE, p_createuser, 0,
0, 0, 0, 0, 0,
p_createuser, SYSDATE, 1001, p_createuser, SYSDATE, TRUNC(SYSDATE),
'账号 ' || p_createuser || ' 在[商品信息]调整价格自动生成'
);
-- 插入调价单明细
INSERT INTO t_adjust_saleprice_d (
adjustno, salegroupid, wareid, maxsaleprice, salepriceb,
salepricea, minpriceb, minpricea, mempriceb, mempricea,
purprice, saletax, rowno, memminpriceb, memminpricea,
memprice2, memminprice2, memprice3, memminprice3, memprice4,
memminprice4, memprice5, memminprice5, memprice6, memminprice6,
memprice7, memminprice7, memcardflag, compid, salegroupids,
salegroupnames, minsalepriceb
)
SELECT
v_adjustno, 8888, v_wareid, 0, NVL(v_old_saleprice, 0), NVL(p_saleprice, v_old_saleprice),
0, 0, NVL(v_old_memprice, 0), NVL(memprice, v_old_memprice), NVL(lastpurprice, 0), NVL(v_purtax, 0),
ROWNUM, 0, 0, 0, 0,
0, 0, 0, 0, 0,
0, 0, 0, 0, 0,
1, p_compid, '全部', '全部', 0
FROM t_ware_saleprice
WHERE wareid = v_wareid AND salegroupid = 1;
-- 情况3: 销售价>0且会员价>0
ELSIF p_saleprice > 0 AND p_memprice > 0 THEN
-- 插入调价单头
INSERT INTO t_adjust_saleprice_h (
compid, adjustno, adjusttime, proposer, status,
checkbit1, checkbit2, checkbit3, checkbit4, checkbit5,
createuser, createtime, busno, lastmodify, lasttime, account_date, notes
)
VALUES (
p_compid, v_adjustno, SYSDATE, p_createuser, 0,
0, 0, 0, 0, 0,
p_createuser, SYSDATE, 1001, p_createuser, SYSDATE, TRUNC(SYSDATE),
'账号 ' || p_createuser || ' 在[商品信息]调整价格自动生成'
);
-- 插入调价单明细
INSERT INTO t_adjust_saleprice_d (
adjustno, salegroupid, wareid, maxsaleprice, salepriceb,
salepricea, minpriceb, minpricea, mempriceb, mempricea,
purprice, saletax, rowno, memminpriceb, memminpricea,
memprice2, memminprice2, memprice3, memminprice3, memprice4,
memminprice4, memprice5, memminprice5, memprice6, memminprice6,
memprice7, memminprice7, memcardflag, compid, salegroupids,
salegroupnames, minsalepriceb
)
SELECT
v_adjustno, 8888, v_wareid, 0, NVL(v_old_saleprice, 0), NVL(p_saleprice, v_old_saleprice),
0, 0, NVL(v_old_memprice, 0), NVL(p_memprice, v_old_memprice), NVL(lastpurprice, 0), NVL(v_purtax, 0),
ROWNUM, 0, 0, 0, 0,
0, 0, 0, 0, 0,
0, 0, 0, 0, 0,
1, p_compid, '全部', '全部', 0
FROM t_ware_saleprice
WHERE wareid = v_wareid AND salegroupid = 1;
END IF;
-- 更新调价单状态为已审核
UPDATE t_adjust_saleprice_h
SET checkbit1 = 1,
checker1 = p_createuser,
status = 1,
execdate = SYSDATE
WHERE adjustno = v_adjustno;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RAISE;
END;