【官方】常用计算列、计算列大全:
问题补充:2013-08-20常用计算列、计算列大全:
批发单中取客户手机号码:
db_data2('select b.cust_tel from t_pf_out_master a, t_cust_info b where a.cust_No=b.cust_no and a.sheet_No=?',sheet_No)
批发销售单中取客户名称:
db_data2(~"select cust_name from t_cust_info where cust_no=?~",describe(~"cdw_cust_No$$.text~"))
品牌名称:
db_data2('select a.brand_name from t_item_brand a,t_item_info b where a.item_brand=b.item_brand and b.item_no=?',item_No)
单据中添加操作员的名字而非代码:
dbdata2('select user_name from t_sys_user where user_id=?',describe('cdw_user_id$$'))
现有的操作员的那列不要删,要把其宽度弄为0
前台套打中取总样数:db_data2('select count(distinct(item_no)) from view_pos_sale_detail where sheet_no=?',sheet_No)
折扣计算列:如8.8折
if(real_price/org_price<1,string(real_price/org_price*10)+"折","")
批发销售单中打印多种支付方式:
db_data3('select a.total_amt from t_cust_accout_master a,t_cust_accout_detail b where a.sheet_no =b.sheet_No and b.voucher_no=? and a.pay_way=?',sheet_no,'01')
操作流程:一,做批发销售单,在单据中点快速结算,使用现金结算部分货款。
二,也是快速结算,使用其他支付方式结算完剩余货款。
打印格式中,添加上面给的计算列,‘01’代表的的支付方式现金,其他的支付方式按具体的输入,支付方式的查看点在“基本档案”下面的“支付方式”中看。
台账中取货商名称:db_data2(~"select b.sup_name from t_cg_in_master a,t_sup_info b where a.sup_no=b.sup_No and a.sheet_no=?~", voucher_no)
台账中取客户名称:db_data2('select b.cust_name from t_pf_out_master a,t_cust_info b where a.cust_no=b.cust_No and a.sheet_no=?',voucher_no)
取税额函数:db_data3('select inside_tax_amt from view_pos_sale_detail where sheet_no=? and item_no=?',sheet_no,item_no)
批发销售单中取会员的积分:
报表打印中:if(isnull(db_data2(~"select sum(a.value_amt) from t_vip_money a,t_vip_info b where a.money_type=5 and a.vip_no =b.vip_No and b.vip_dispno=? group by a.vip_no~",describe(~"cdw_vip_dispno$$.text~"))),~"0~",db_data2(~"select sum(a.value_amt) from t_vip_money a,t_vip_info b where a.money_type=5 and a.vip_no =b.vip_No and b.vip_dispno=? group by a.vip_no~",describe(~"cdw_vip_dispno$$.text~")))
布局设置中:if(isnull(db_data2(~"select sum(a.value_amt) from t_vip_money a,t_vip_info b where a.money_type=5 and a.vip_no =b.vip_No and b.vip_dispno=? group by a.vip_no~",vip_dispno)),0,dec(db_data2(~"select sum(a.value_amt) from t_vip_money a,t_vip_info b where a.money_type=5 and a.vip_no =b.vip_No and b.vip_dispno=? group by a.vip_no~",vip_dispno)))
标签中增加如果有会员特价就显示会员特价,如果没有就显示会员价,如果会员价也没有就显示为空的:
if( sv_price>0,string(sv_price),if( vip_price>0,string( vip_price),""))
预付款结余金额:db_data2('select sum(total_amt-use_amt) from t_cust_prepay_flow where cust_No=? group by cust_No',describe('cdw_cust_No$$.text'))
前台套打中添加会员累计消费金额:db_data2(~"select a.collect_amt from t_vip_collect a,t_vip_info b where a.vip_No=b.vip_no and b.vip_dispno=?~",vip_dispno)
批发销售单中添加已生效未生效、部分付款、全部付款、未付款信息:
已生效未生效:
if (db_data2(~"select app_sign from t_pf_out_master where sheet_no=?~",sheet_No)=~"1~",~"已生效~",~"未生效~")
部分付款、全部付款、未付款信息:
if (db_data2(~"select app_sign from t_pf_out_master where sheet_no=?~",sheet_No)=~"1~",case( db_data2(~"select case when sheet_amt-order_amt-paid_amt-free_amt=sheet_amt then 0 when sheet_amt-order_amt-paid_amt-free_amt>0 then 1 else 2 end from t_cust_accout_flow where sheet_No=?~",sheet_No) when ~"0~" then ~"没有付款~" when ~"1~" then ~"部分付款~" else ~"全部付款~") ,~"~"
)
批量修改采购,出库默认为大单位:
update t_item_unit set is_cg=1,is_pf=1 where unit_type='1'
update t_item_unit set is_cg=0,is_pf=0 where unit_type='0'
i7餐饮的账单支付列表中添加赠送金额:
赠送金额:dec(db_data2(~"select isnull(sum(org_price),0) from view_cypos_fullbill_detail where give_yes =1 and bill_No=?~",bill_No))
--结算单中取单据的业务类型。
db_data2('SELECT a.sheet_name FROM dbo.t_sys_module_no a,t_cust_accout_flow b where a.module_code=b.trans_no and b.sheet_No=?',voucher_no)
--批发销售单中取收支账户名称
db_data2('select a.visa_name from t_visa_info a,t_cust_accout_master b,(select max(sheet_No) sheet_No from t_cust_accout_detail where voucher_no=?) c where a.visa_no=b.visa_no and b.sheet_No=c.sheet_no ',sheet_No)
--批发销售单中增加预付冲销显示:
if(dec(db_data2(~"select convert(varchar(100),cast (prepay_amt as numeric(18,2))) from t_cust_accout_detail where voucher_no=?~",sheet_No))>0,'预付金额:'+db_data2(~"select convert(varchar(100),cast (prepay_amt as numeric(18,2))) from t_cust_accout_detail where voucher_no=?~",sheet_No),'')
--营业员名称
db_data2('select b.emp_name from view_pos_sale_detail a,t_emp_info b where a.sale_man=b.emp_no and a.sheet_no=?',sheet_no)
--营业员编号
db_data2('select a.sale_man from view_pos_sale_detail a where a.sheet_no=?',sheet_no)
--批发销售单中显示支付金额(不含免付、预付)
db_data2('select paid_amt from t_cust_accout_flow where sheet_no=?',sheet_no)
在收支费用表-收支明细里面添加一个计算列显示其它支出表里面的备注信息
明细备注:db_data3('select mx_memo from t_visa_detail where sheet_no=? and fees_NO=? ',sheet_No,fees_No)
单据备注:db_data2('select memo from t_visa_master where sheet_no=?',sheet_No)
--批发销售单中添加件跟包的单位数量(只限两个单位)
1、大包装的计算列:if(dec(db_data2(~"SELECT count(*) FROM t_item_unit WHERE item_no=?~",item_no))>1 , int(『数量小计』/dec(db_data2(~"SELECT isnull(item_pack,0) FROM t_item_unit WHERE item_no=? AND unit_type=1~",item_no))),0)
2、小单位的计算列:if(dec(db_data2(~"SELECT count(*) FROM t_item_unit WHERE item_no=?~",item_no))>1 , mod (sub_qty,dec(db_data2(~"SELECT isnull(item_pack,0) FROM t_item_unit WHERE item_no=? AND unit_type=1~",item_no))),sub_qty)
a、大包装数量后加单位:if(dec(db_data2(~"SELECT count(*) FROM t_item_unit WHERE item_no=?~",item_no))>1 , string(int(『数量小计』/dec(db_data2(~"SELECT isnull(item_pack,0) FROM t_item_unit WHERE item_no=? AND unit_type=1~",item_no))))+db_data2(~"SELECT item_unit_No FROM t_item_unit WHERE item_no=? AND unit_type=1~",item_no),~"~")
b、大包装数量合计:if(sum(if(dec(db_data2(~"SELECT count(*) FROM t_item_unit WHERE item_no=?~",item_no))>1 , int(『数量小计』/dec(db_data2(~"SELECT isnull(item_pack,0) FROM t_item_unit WHERE item_no=? AND unit_type=1~",item_no))),0))>0,string(sum(if(dec(db_data2(~"SELECT count(*) FROM t_item_unit WHERE item_no=?~",item_no))>1 , int(『数量小计』/dec(db_data2(~"SELECT isnull(item_pack,0) FROM t_item_unit WHERE item_no=? AND unit_type=1~",item_no))),0)))+~"件~",~"~")
--档案中添加现有机构默认的库存数量
gf_item_stock_qty(item_no,db_data2('SELECT param_data FROM t_sys_param WHERE param_id=?','gs_defa_branch'),'1')
--标签中添加打印失效日期(在现有系统时间上加上档案中的有效日期)
db_data2(~"SELECT CONVERT(varchar(100), dateadd(dd,item_valid_day,getdate()), 23) FROM t_item_info WHERE item_No=?~",item_No)
--小票上当实价为0的时候,打印赠送两个字
if(string(real_price)='0','赠送',string(real_price,'0.00'))
--批发单中添加客户上次退货时间和金额以及客户最近一次结算日期跟金额
--上次退货时间和金额
db_data4(~"select top 1 convert(varchar(100),oper_date,23)+?+cast(sheet_amt-order_amt-paid_amt-free_amt as varchar(12)) from t_cust_accout_flow where trans_no=? and cust_no =? order by 『单据编号』 desc~",~"退货~",~"RI~",db_data2(~"select cust_no from t_cust_accout_flow where sheet_no=?~",sheet_no))
--最近一次结算日期跟金额
db_data4(~"select top 1 convert(varchar(100),a.app_date,23)+?+CONVERT(VARCHAR(10),cast(a.pay_amt as NUMERIC(18,2)) ),a.sheet_no from t_cust_accout_master a WHERE not EXISTS (SELECT 1 FROM t_cust_accout_detail b WHERE b.voucher_no=? AND a.sheet_no=b.sheet_no) AND a.cust_no=? ORDER BY a.sheet_no DESC~",~"付款~",sheet_no,db_data2(~"select cust_no from t_cust_accout_flow where sheet_no=?~",sheet_no))
---截取名字
if(len(item_name)>20,left(item_name,20),item_name)
if(len(item_name)>20,right(item_name,len(item_name)-20),'')
20代表10个汉字,根据需求变化。
其它计算列参考这里:http://www.yt-pos.com/a/fuwuyuxiazai/zaixianjishushouce/chanpinchangjian/2011/0201/76.html
- 提问者: 李祥
- 等级:问不倒翁
- 时间:2013-08-20 17:33
- 悬赏:0
- 解决时间:2013-08-23 14:53
对最佳答案的评论 共 8 条
批发销售单中添加上一单的欠款以及上次欠款之和。
上一单的欠款:
db_data2(~"select a.sheet_amt- a.order_amt- a.paid_amt- a.free_amt From t_cust_accout_flow a, (select top 1 sheet_no From t_pf_out_master where sheet_no in( select top 2 sheet_no From t_pf_out_master where cust_no=? order by sheet_no desc) order by sheet_no ) b where a.sheet_no =b.sheet_no~",db_data2(~"select cust_no from t_pf_out_master where sheet_no=?~",sheet_no))
上次欠款:
db_data2('SELECT SUM(a.sheet_amt-a.order_amt-a.paid_amt-a.free_amt) FROM dbo.t_cust_accout_flow a,dbo.t_cust_accout_flow b WHERE a.cust_no=b.cust_no AND b.sheet_no=? AND a.oper_date<b.oper_date',sheet_no)
上一单的欠款:
db_data2(~"select a.sheet_amt- a.order_amt- a.paid_amt- a.free_amt From t_cust_accout_flow a, (select top 1 sheet_no From t_pf_out_master where sheet_no in( select top 2 sheet_no From t_pf_out_master where cust_no=? order by sheet_no desc) order by sheet_no ) b where a.sheet_no =b.sheet_no~",db_data2(~"select cust_no from t_pf_out_master where sheet_no=?~",sheet_no))
上次欠款:
db_data2('SELECT SUM(a.sheet_amt-a.order_amt-a.paid_amt-a.free_amt) FROM dbo.t_cust_accout_flow a,dbo.t_cust_accout_flow b WHERE a.cust_no=b.cust_no AND b.sheet_no=? AND a.oper_date<b.oper_date',sheet_no)
- 评论者:ytkf007
放到脚注区的话请用:
上一单的欠款:
db_data2(~"select a.sheet_amt- a.order_amt- a.paid_amt- a.free_amt From t_cust_accout_flow a, (select top 1 sheet_no From t_pf_out_master where sheet_no in( select top 2 sheet_no From t_pf_out_master where cust_no=? order by sheet_no desc) order by sheet_no ) b where a.sheet_no =b.sheet_no~",db_data2(~"select cust_no from t_pf_out_master where sheet_no=?~",max(sheet_no)))
上次欠款:
db_data2('SELECT SUM(a.sheet_amt-a.order_amt-a.paid_amt-a.free_amt) FROM dbo.t_cust_accout_flow a,dbo.t_cust_accout_flow b WHERE a.cust_no=b.cust_no AND b.sheet_no=? AND a.oper_date<b.oper_date',max(sheet_no))
上一单的欠款:
db_data2(~"select a.sheet_amt- a.order_amt- a.paid_amt- a.free_amt From t_cust_accout_flow a, (select top 1 sheet_no From t_pf_out_master where sheet_no in( select top 2 sheet_no From t_pf_out_master where cust_no=? order by sheet_no desc) order by sheet_no ) b where a.sheet_no =b.sheet_no~",db_data2(~"select cust_no from t_pf_out_master where sheet_no=?~",max(sheet_no)))
上次欠款:
db_data2('SELECT SUM(a.sheet_amt-a.order_amt-a.paid_amt-a.free_amt) FROM dbo.t_cust_accout_flow a,dbo.t_cust_accout_flow b WHERE a.cust_no=b.cust_no AND b.sheet_no=? AND a.oper_date<b.oper_date',max(sheet_no))
- 评论者:ytkf007
---批发销售大包装合计
db_data2('SELECT SUM(CONVERT(INT,(a.now_qty/b.item_pack))) FROM t_pf_out_detail a LEFT JOIN dbo.t_item_unit b on a.item_no=b.item_no and b.unit_type=1
where a.sheet_no=?',MAX(sheet_no))
--批发销售小单位合计
db_data2('SELECT SUM(CASE when b.item_pack IS NULL THEN CONVERT(INT,a.now_qty) else CONVERT(INT,(a.now_qty%b.item_pack))END) FROM t_pf_out_detail a LEFT JOIN dbo.t_item_unit b on a.item_no=b.item_no and b.unit_type=1
where a.sheet_no=?',MAX(sheet_no))
---采购入库大包装合计
db_data2('SELECT SUM(CONVERT(INT,(a.now_qty/b.item_pack))) FROM t_cg_in_detail a LEFT JOIN dbo.t_item_unit b on a.item_no=b.item_no and b.unit_type=1
where a.sheet_no=?',MAX(sheet_no))
--采购入库小单位合计
db_data2('SELECT SUM(CASE when b.item_pack IS NULL THEN CONVERT(INT,a.now_qty) else CONVERT(INT,(a.now_qty%b.item_pack))END) FROM t_cg_in_detail a LEFT JOIN dbo.t_item_unit b on a.item_no=b.item_no and b.unit_type=1
where a.sheet_no=?',MAX(sheet_no))
---批发退货大包装合计
db_data2('SELECT SUM(CONVERT(INT,(a.now_qty/b.item_pack))) FROM t_pf_return_detail a LEFT JOIN dbo.t_item_unit b on a.item_no=b.item_no and b.unit_type=1
where a.sheet_no=?',MAX(sheet_no))
--批发退货小单位合计
db_data2('SELECT SUM(CASE when b.item_pack IS NULL THEN CONVERT(INT,a.now_qty) else CONVERT(INT,(a.now_qty%b.item_pack))END) FROM t_pf_return_detail a LEFT JOIN dbo.t_item_unit b on a.item_no=b.item_no and b.unit_type=1
where a.sheet_no=?',MAX(sheet_no))
---采购退货大包装合计
db_data2('SELECT SUM(CONVERT(INT,(a.now_qty/b.item_pack))) FROM t_cg_return_detail a LEFT JOIN dbo.t_item_unit b on a.item_no=b.item_no and b.unit_type=1
where a.sheet_no=?',MAX(sheet_no))
--采购退货小单位合计
db_data2('SELECT SUM(CASE when b.item_pack IS NULL THEN CONVERT(INT,a.now_qty) else CONVERT(INT,(a.now_qty%b.item_pack))END) FROM t_cg_return_detail a LEFT JOIN dbo.t_item_unit b on a.item_no=b.item_no and b.unit_type=1
where a.sheet_no=?',MAX(sheet_no))
db_data2('SELECT SUM(CONVERT(INT,(a.now_qty/b.item_pack))) FROM t_pf_out_detail a LEFT JOIN dbo.t_item_unit b on a.item_no=b.item_no and b.unit_type=1
where a.sheet_no=?',MAX(sheet_no))
--批发销售小单位合计
db_data2('SELECT SUM(CASE when b.item_pack IS NULL THEN CONVERT(INT,a.now_qty) else CONVERT(INT,(a.now_qty%b.item_pack))END) FROM t_pf_out_detail a LEFT JOIN dbo.t_item_unit b on a.item_no=b.item_no and b.unit_type=1
where a.sheet_no=?',MAX(sheet_no))
---采购入库大包装合计
db_data2('SELECT SUM(CONVERT(INT,(a.now_qty/b.item_pack))) FROM t_cg_in_detail a LEFT JOIN dbo.t_item_unit b on a.item_no=b.item_no and b.unit_type=1
where a.sheet_no=?',MAX(sheet_no))
--采购入库小单位合计
db_data2('SELECT SUM(CASE when b.item_pack IS NULL THEN CONVERT(INT,a.now_qty) else CONVERT(INT,(a.now_qty%b.item_pack))END) FROM t_cg_in_detail a LEFT JOIN dbo.t_item_unit b on a.item_no=b.item_no and b.unit_type=1
where a.sheet_no=?',MAX(sheet_no))
---批发退货大包装合计
db_data2('SELECT SUM(CONVERT(INT,(a.now_qty/b.item_pack))) FROM t_pf_return_detail a LEFT JOIN dbo.t_item_unit b on a.item_no=b.item_no and b.unit_type=1
where a.sheet_no=?',MAX(sheet_no))
--批发退货小单位合计
db_data2('SELECT SUM(CASE when b.item_pack IS NULL THEN CONVERT(INT,a.now_qty) else CONVERT(INT,(a.now_qty%b.item_pack))END) FROM t_pf_return_detail a LEFT JOIN dbo.t_item_unit b on a.item_no=b.item_no and b.unit_type=1
where a.sheet_no=?',MAX(sheet_no))
---采购退货大包装合计
db_data2('SELECT SUM(CONVERT(INT,(a.now_qty/b.item_pack))) FROM t_cg_return_detail a LEFT JOIN dbo.t_item_unit b on a.item_no=b.item_no and b.unit_type=1
where a.sheet_no=?',MAX(sheet_no))
--采购退货小单位合计
db_data2('SELECT SUM(CASE when b.item_pack IS NULL THEN CONVERT(INT,a.now_qty) else CONVERT(INT,(a.now_qty%b.item_pack))END) FROM t_cg_return_detail a LEFT JOIN dbo.t_item_unit b on a.item_no=b.item_no and b.unit_type=1
where a.sheet_no=?',MAX(sheet_no))
- 评论者:ytkf007
注意:对于sql2000的数据库。上面的a.now_qty要替换为convert(int,a.now_qty)
b.item_pack要替换为convert(int,b.item_pack).sql2005的没限制!!!
b.item_pack要替换为convert(int,b.item_pack).sql2005的没限制!!!
- 评论者:ytkf007
超级简单的,且通用的大单位合计:
sum(integer(gf_item_qty_unit( item_no , sub_qty ,2,2,0) ) for all)
小单位合计:
sum(integer(gf_item_qty_unit( item_no , sub_qty ,2,1,0) ) for all)
sum(integer(gf_item_qty_unit( item_no , sub_qty ,2,2,0) ) for all)
小单位合计:
sum(integer(gf_item_qty_unit( item_no , sub_qty ,2,1,0) ) for all)
- 评论者:ytkf007
--收银员名称
db_data2(~"select b.user_name from view_pos_sale_master a,t_sys_user b where a.user_id=b.user_id and a.sheet_no=?~",sheet_no)
--收银员编号
db_data2('select a.user_id from view_pos_sale_master a where a.sheet_no=?',sheet_no)
db_data2(~"select b.user_name from view_pos_sale_master a,t_sys_user b where a.user_id=b.user_id and a.sheet_no=?~",sheet_no)
--收银员编号
db_data2('select a.user_id from view_pos_sale_master a where a.sheet_no=?',sheet_no)
- 评论者:ytkf007
截取名字:当名字中既有汉字又有数字的时候,可能出现乱码,最好使用如下:
if(lenw(item_name)>20,leftw(item_name,20),item_name)
if(lenw(item_name)>20,rightw(item_name,lenw(item_name)-20),'')
20代表20个汉字,根据需求变化。
if(lenw(item_name)>20,leftw(item_name,20),item_name)
if(lenw(item_name)>20,rightw(item_name,lenw(item_name)-20),'')
20代表20个汉字,根据需求变化。
- 评论者:ytkf007
前台小票,如果价格为0,打印赠送两个字。
if(real_price=0,'赠送',string(real_price,'0.00'))
if(real_price=0,'赠送',string(real_price,'0.00'))
- 评论者:ytkf007
其它回答 共 4 条
强烈支持
- 回答者:kh359
- 等级:问不倒翁
- 时间:2013-08-20 18:35
超级全了
- 回答者:bonchen
- 等级:问不倒翁
- 时间:2013-08-20 23:22
学习,
- 回答者:赢通技术7
- 等级:金牌会员
- 时间:2013-08-21 09:28
很好很强大
- 回答者:牛牛
- 等级:金牌会员
- 时间:2013-08-22 13:21
快到期问题