原创_根据不同的供应商分组自动生成不同前缀和连续流水号后缀的脚本分享_使用经验
学习.交流
专业源于专注
www. onlyit. cn   
学习交流 文件下载 手册资料 交流QQ群

    

 4  1/1   1  
作者
内容
fwj3861  [个人空间]
QQ名  越南-叶子(121305301)


注册  2010-09-09
发贴数  606
精华贴  10
原创贴  20
来自  越南
状态  正常

级别  贵宾
#1»发布于2026-01-03 19:13

客户要求国内和国外的采购订单能有不同的前缀区分且3位数的后缀流水号能自动续接 
思路:国内外的不同供应商放在不同的供应商分组里面 
新建下面的这段脚本: 
int 采购订单编号自动生成() 

  string sql,v_fz,v_maxid,v_maxno,m_ny,m_qz,m_xh,v_id; 
   num m_xh,m_dz; 
   m_dz = '1' 
   m_ny = get_cur_month() 
   v_id = grid_get_v("MG_Item","voucher_id",1) 
   db_run("select service_id from sup where Sup_id = '" + gui_get_val("ComboBox_Ext_Sup_Id") + "'");  //获取供应商分组编号 
   v_fz = db_res(0) 
   if(v_fz == '001' && v_id < 1) //单据没有保存记录的时候执行 
   { 
    db_run("select MAX(voucher_id) from ebs_v where voucher_type = 'AA' and voucher_no like 'CN"+m_ny+"%'") 
     v_maxid = db_res(0) 
     db_run("select voucher_no from ebs_v where voucher_id = '"+v_maxid+"'") 
     v_maxno = db_res(0) 
     m_qz = str_get_sub(v_maxno,0,2) 
     m_xh = str_get_sub(v_maxno,8,3) 
          m_xh = fmt_int(str_add_as_num(m_dz,m_xh),"%03d") 
     gui_set_val("Edit_Voucher_No",'CN'+m_ny+m_xh) 
     } 
    if(v_fz == '002' && v_id < 1)//单据没有保存记录的时候执行 
    { 
     db_run("select MAX(voucher_id) from ebs_v where voucher_type = 'AA' and voucher_no like 'VN"+m_ny+"%'") 
     v_maxid = db_res(0) 
     db_run("select voucher_no from ebs_v where voucher_id = '"+v_maxid+"'") 
     v_maxno = db_res(0) 
     m_qz = str_get_sub(v_maxno,0,2) 
     m_xh = str_get_sub(v_maxno,8,3) 
     m_xh = fmt_int(str_add_as_num(m_dz,m_xh),"%03d") 
     gui_set_val("Edit_Voucher_No",'VN'+m_ny+m_xh) 
     }; 
  if(v_fz == '001' && v_id > 0)//单据有保存记录后执行 
   { 
    db_run("select MAX(voucher_id) from ebs_v where voucher_type = 'AA' and voucher_no like 'CN"+m_ny+"%' and voucher_id < '" + v_id + "'") 
     v_maxid = db_res(0) 
     db_run("select voucher_no from ebs_v where voucher_id = '"+v_maxid+"'") 
     v_maxno = db_res(0) 
     m_qz = str_get_sub(v_maxno,0,2) 
     m_xh = str_get_sub(v_maxno,8,3) 
          m_xh = fmt_int(str_add_as_num(m_dz,m_xh),"%03d")  gui_set_val("Edit_Voucher_No",'CN'+m_ny+m_xh) 
     } 
    if(v_fz == '002' && v_id > 0)//单据有保存记录后执行 
    { 
     db_run("select MAX(voucher_id) from ebs_v where voucher_type = 'AA' and voucher_no like 'VN"+m_ny+"%' and voucher_id < '" + v_id + "'") 
     v_maxid = db_res(0) 
     db_run("select voucher_no from ebs_v where voucher_id = '"+v_maxid+"'") 
     v_maxno = db_res(0) 
     m_qz = str_get_sub(v_maxno,0,2) 
     m_xh = str_get_sub(v_maxno,8,3) 
     m_xh = fmt_int(str_add_as_num(m_dz,m_xh),"%03d") 
     gui_set_val("Edit_Voucher_No",'VN'+m_ny+m_xh) 
     }; 
  return 1; 
}; 
 
把上面的脚本放在下列2段里面,在选择供应商和保存单据的时候执行 
 
int obj_change() 

 if(change_obj ==  "ComboBox_Ext_Sup_Id") 
 { 
   采购订单编号自动生成() 
   }; 
  //msg(change_obj) 
  return 1; 
}; 
 
int func_before_save() 

 采购订单编号自动生成() 
  //can_save=1; 
  return 1; 
};


        于 2026-01-03 19:13 被 fwj3861 修改




官方认证第三方服务团队 (越南-叶子) QQ:121305301 TEL:+84869350626
承接越南北部-河内周边省份-OIT部署和维护服务(24小时上门或远程服务)
服务介绍:http://www.onlyit.cn/onlyit_service.html

hong816  [个人空间]
QQ名  浮天风


注册  2010-04-26
发贴数  473
精华贴  1
原创贴  1
来自  
状态  正常

级别  贵宾
#2»发布于2026-01-04 10:58

这个可以的,我们以前供应商订单就是这样的






诚信是金!!!!提供onlyit系统服务:人力资源、进销存生产管理、数字化工厂建设等一条龙服务:401698929    13958183550

fwj3861  [个人空间]
QQ名  越南-叶子(121305301)


注册  2010-09-09
发贴数  606
精华贴  10
原创贴  20
来自  越南
状态  正常

级别  贵宾
#3»发布于2026-01-04 12:58

是的,晚上再优化一下,把前缀输入在厂商资料里面,这样脚本就不用针对不同前缀都去写一段判断脚本。






官方认证第三方服务团队 (越南-叶子) QQ:121305301 TEL:+84869350626
承接越南北部-河内周边省份-OIT部署和维护服务(24小时上门或远程服务)
服务介绍:http://www.onlyit.cn/onlyit_service.html

fwj3861  [个人空间]
QQ名  越南-叶子(121305301)


注册  2010-09-09
发贴数  606
精华贴  10
原创贴  20
来自  越南
状态  正常

级别  贵宾
#4»发布于2026-01-05 13:02

优化采购订单不同区域供应商使用不同前缀的脚本 
1. 新增供应商扩展属性定义:djqz 单据前缀 (字符型) 
2. 打开供应商管理》功能》脚本定义》记录编辑脚本定义 
3. 添加保存供应商的时候执行的脚本 
int func_save_rec() 

  string m_gysfz; 
  m_gysfz = gui_get_val("ComboBox_Ext_Service_Id") //获取供应商分组编号 
  if(m_gysfz == '') 
  { 
   msg('没有选择供应商分组,请选择供应商分组后再保存!') 
   can_oper=0; 
   }else{ 
  //有几个分组就做几个判断,如果多个分组的前缀一样,就做合并判断 
   if(m_gysfz == '001')  
   { 
     gui_set_val("edit_djqz",'CN') //设置单据前缀值 
    }if(m_gysfz == '002'){ 
     gui_set_val("edit_djqz",'VN')//设置单据前缀值 
    } 
   }; 
  //msg('save rec'); 
  //can_oper=1; 
  return 1; 
}; 
4. 打开采购订单》功能》单据参数及配置》脚本定义 
添加下列脚本 
int 采购订单编号自动生成() 

  string m_qz,m_ny,v_id; 
   m_qz = get_sup_attr(gui_get_val("ComboBox_Ext_Sup_Id"),'djqz') //获取供应商扩展属性【单据前缀】的值 
   m_ny = get_cur_month() //获取当前月【采购单号规则:前缀+6位年月+3位流水号】 
   v_id = grid_get_v("MG_Item","voucher_id",1) //获取当前单据流水 
   if(v_id < 0) //保存前执行 
   { 
    //获取当前供应商当前月最后的单据编号 
    db_run("select TOP 1 voucher_no from ebs_v where voucher_type = 'AA' and voucher_no like '"+m_qz+m_ny+"%' ORDER BY voucher_id DESC") 
    gui_set_val("Edit_Voucher_No",m_qz+m_ny+fmt_int(str_add_as_num('1',str_get_sub(db_res(0),8,3)),"%03d"))//单据编号赋值 
    }; 
   if(v_id > 0)//保存后执行 
   { 
    ////获取当前供应商当前月在本单据之前的单据编号 
    db_run("select TOP 1 voucher_no from ebs_v where voucher_type = 'AA' and voucher_no like '"+m_qz+m_ny+"%' and voucher_id < '" + v_id + "' ORDER BY voucher_id DESC") 
    gui_set_val("Edit_Voucher_No",m_qz+m_ny+fmt_int(str_add_as_num('1',str_get_sub(db_res(0),8,3)),"%03d")) //单据编号赋值 
    }; 
    return 1; 
}; 
把上面的脚本放在下列2段里面,在选择供应商和保存单据的时候执行  
int obj_change()  
{  
 if(change_obj ==  "ComboBox_Ext_Sup_Id")  
 {  采购订单编号自动生成() 
   };  
  //msg(change_obj)  
  return 1;  
};  
int func_before_save()  
{  
 采购订单编号自动生成()  
  //can_save=1;  
  return 1;  
};




        于 2026-01-05 13:02 被 fwj3861 修改




官方认证第三方服务团队 (越南-叶子) QQ:121305301 TEL:+84869350626
承接越南北部-河内周边省份-OIT部署和维护服务(24小时上门或远程服务)
服务介绍:http://www.onlyit.cn/onlyit_service.html


 4  1/1   1  

登录后方可发贴


[ 电话: 0571-85462761 王先生 QQ: 124520435 加入软件QQ群 - 杭州 - 浙ICP备19051128号-1 网安 33010402003225 ]