用这个脚本能实现 int db_fix() { string res_id, sql; num v_num, v_price, v_amount, v_sum; int i, n; if(v_voucher_id<=0) return 1; db_run("select res_id, inp_num, inp_price from ebs_vr_item where voucher_id=" + v_voucher_id); n = db_row_count(); for(i=0; i<n; i++) { db_go_row(i); res_id = db_res_ext('res_id'); if(res_id=='') continue; v_num = db_res_ext('inp_num'); v_price = db_res_ext('inp_price'); v_amount = num_dec_cut(v_num * v_price, 2); sql = "update ebs_vr_item set inp_amount=" + v_amount; sql = sql + ", total_amount=" + v_amount; sql = sql + " where voucher_id=" + v_voucher_id + " and res_id='" + res_id + "'"; db_run(sql); }; db_run("select sum(total_amount) as v_s from ebs_vr_item where voucher_id=" + v_voucher_id); if(db_row_count()>0) { db_go_head(); v_sum = db_res_ext('v_s'); sql = "update ebs_vr set amount=" + v_sum; sql = sql + ", discount_amount=" + v_sum; sql = sql + " where voucher_id=" + v_voucher_id; db_run(sql); db_run("update ebs_vr set io_amount = discount_amount + pre_amount where voucher_id = " + v_voucher_id); }; return 1; }; int do_reprice() { string sup_id, res_id, sql, v_noprice_res; num v_num, v_price, v_amount, v_sum; int i, n, v_noprice; sup_id = gui_get_val('ComboBox_Ext_Sup_Id'); if(sup_id=='') return 0; n = grid_row_num('MG_Item'); v_sum = 0; v_noprice = 0; v_noprice_res = ''; for(i=0; i<n; i++) { res_id = grid_get_v('MG_Item','res_id',i); if(res_id=='') continue; // 过滤无效行:商品编号必须在商品档案里真实存在 db_run("select res_id from res where res_id='"+res_id+"'"); if(db_row_count()<=0) continue; v_price = 0; // 第1级:供应价格表(返回分,除100得元) db_run("select price from sup_price_info where sup_id='"+sup_id+"' and res_id='"+res_id+"'"); if(db_row_count()>0) { db_go_head(); v_price = db_res_ext('price') / 100; } else { // 第2级:该供应商最近一次已审核采购订单的价格(返回分,除100得元) sql = "select top 1 a.inp_price from ebs_vr_item a, ebs_v b, ebs_vr c "; sql = sql + "where a.voucher_id=b.voucher_id and b.voucher_id=c.voucher_id "; sql = sql + "and b.voucher_type='AA' and c.eba_id='" + sup_id + "' "; sql = sql + "and a.res_id='" + res_id + "' and b.check_user_id<>'' "; sql = sql + "order by b.check_date desc, b.voucher_id desc"; db_run(sql); if(db_row_count()>0) { db_go_head(); v_price = db_res_ext('inp_price') / 100; } else { // 第3级:商品档案参考进价(返回分,除100得元) db_run("select in_ref_price from res where res_id='"+res_id+"'"); if(db_row_count()>0) { db_go_head(); v_price = db_res_ext('in_ref_price') / 100; }; }; }; if(v_price>0) { v_price = num_dec_cut(v_price, 2); grid_set_v('MG_Item','inp_price',i,v_price); v_num = grid_get_v('MG_Item','inp_num',i); v_amount = num_dec_cut(v_num * v_price, 2); grid_set_v('MG_Item','inp_amount',i,v_amount); grid_set_v('MG_Item','total_amount',i,v_amount); v_sum = v_sum + v_amount; } else { // 该供应商没有价格记录:清空单价金额 grid_set_v('MG_Item','inp_price',i,0); grid_set_v('MG_Item','inp_amount',i,0); grid_set_v('MG_Item','total_amount',i,0); v_noprice = v_noprice + 1; v_noprice_res = v_noprice_res + ' 商品' + res_id + '(' + grid_get_v('MG_Item','res_name',i) + ')'; }; }; grid_cal_sum('MG_Item'); gui_set_val('Edit_Amount', num_dec_cut(v_sum, 2)); if(v_noprice>0) { msg('有 ' + v_noprice + ' 个商品该供应商没有价格,已清空,请手动输入:' + v_noprice_res); }; return 1; }; int func_user_menu_1() { if(do_reprice()==0) { msg('请先在单据表头选择供应商'); return 0; }; msg('取价完成'); return 1; }; int init_test() { return 1; }; int create_voucher() { v_show_user_menu(1,'按供应商取价'); return 1; }; int func_show() { int n;//获取列数 n=grid_col_num("MG_Item"); int i; i=1 for(i=1;i<=n;i++) { string name; name=grid_get_col_name("MG_Item",i); //dbg(name); grid_set_col_align_right('MG_Item',name); } return 1; }; int cell_change() { //change_col,change_col_id,change_row_id return 1; }; int obj_change() { if(change_obj=="ComboBox_Ext_Sup_Id") { do_reprice(); }; return 1; }; int init_row() { return 1; }; int init_row_cal_sub() { return 1; }; int adjust_row() { return 1; }; int func_before_print() { return 1; }; int func_before_save() { string uid,b,d; //定义string类型 uid ,b,d; int id,r_num; //int id 定义循环变量 r_num定义记录数 num r_res_id,v,n,hjzl; //r_res_id定义单元内容 v定义产品数量 n定义产品重量 产品扩展定义一 hjzl合计重量 表格明细扩展一 r_num = grid_row_num('MG_Item');//获取记录数 for(id=1;id<=r_num;id++) { r_res_id=grid_get_v('MG_Item','res_id',id);//获取单元编号 表格的名称,列名,行 res_id(产品编号) v=grid_get_v('MG_Item','inp_num',id);//当前行号产品数量 //当前行号产品单片用藤重量(提前在产品扩展一里导入单个产品重量) n=grid_get_v('MG_Item','res_ext_2',id); grid_set_col_align_right('MG_Item','res_ext_2'); if(r_res_id=='') break; hjzl=num_dec_cut(v*n/1, 1);//计算数量*单件重量 //单据明细属性扩展里新建一列-合计重量,给合计重量那列赋值 grid_set_v('MG_Item','vr_item_ext_2',id,hjzl); grid_set_col_align_right('MG_Item','vr_item_ext_2'); grid_mark_sum('MG_Item','vr_item_ext_2');//统计合计重量 //当前行号产品单片编工单价(提前在产品扩展一里导入单个产品重量) n=grid_get_v('MG_Item','res_ext_1',id); grid_set_col_align_right('MG_Item','res_ext_1'); hjzl=num_dec_cut(v*n/1, 1);//计算数量*单件重量 //单据明细属性扩展里新建一列-合计编工单价,给合计合计编工单价那列赋值 grid_set_v('MG_Item','vr_item_ext_1',id,hjzl); grid_set_col_align_right('MG_Item','vr_item_ext_1'); grid_mark_sum('MG_Item','vr_item_ext_1');//统计合计重量 }; if(v_voucher_id>0) { db_run("update ebs_vr set io_amount = discount_amount + pre_amount where voucher_id = " + v_voucher_id); }; return 1; }; int func_before_check() { return 1; }; int func_after_save() { db_fix(); return 1; }; int func_after_check() { return 1; }; int func_after_print() { return 1; }; int func_before_oper() { //oper_type=save,check,check_r,finish,finish_r,delete,giveup,ask_check,ask_check_r,checked_update; //can_oper=1; return 1; }; int func_after_oper() { //oper_type=save,check,check_r,finish,finish_r,delete,giveup,ask_check,ask_check_r,checked_update,duplicate; return 1; }; int main() { return 1; }; |