推荐_怎样给一个单据表头扩展 保存为连续的号码_产供销
学习.交流
专业源于专注
www. onlyit. cn   
学习交流 文件下载 手册资料 交流QQ群

    

 11  1/1   1  
作者
内容
voa  [个人空间]


注册  2019-04-08
发贴数  132
精华数  0
原创贴  0
来自  
状态  正常

级别  会员
#1»发布于2022-11-08 16:54

 
启用一个表头扩展,如 ext_1 
 
这个ext_1用来保存连续的号码(根据一定的条件,如ext_2与单据日期) 
 
这个ext_1的值  要连续,不可断号,有什么办法可以实现吗? 
 
int after_save() 

string sql.sno; 
//怎样做到这个sno是连续的号,如 SN1001,SN1002,SN1003,SN1004 
sql="update ebs_v set ext_1='"+sno+"' where voucher_id="+v_voucher_id; 
db_run(sql); 
return 1; 
}


        


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


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

级别  贵宾
#2»发布于2022-11-09 00:02

int func_before_save() 

//按照月份设置表头扩展一的值=SN+月份+4位流水号 
int count; 
 string m_djlx,m_ny,m_yue,m_sn; 
 num m_ls,count; 
   m_djlx = v_voucher_type //获取单据类型 
   m_ny = str_cut(get_cur_date_std(),6)+'%' //设置按年月模糊查询的值 
   m_yue = date_pick_month() //从标准日期中提取出月份 
   db_run("select * from ebs_v where voucher_type = '"+m_djlx+"' and voucher_date like '"+m_ny+"' and voucher_id < " + v_voucher_id + ""); //按照单据类型,查找本月本单据之前的单据数 
   count=db_row_count(); //获取单据记录数 
   m_ls = count + 1 
   if(count < 10) 
   { 
    m_sn = 'SN'+m_yue+'000'+m_ls 
    } 
    if(count >= 9 && count < 100) 
    { 
     m_sn = 'SN'+m_yue+'00'+m_ls 
     } 
     if(count >= 99 && count < 1000) 
     { 
      m_sn = 'SN'+m_yue+'0'+m_ls 
      } 
      if(count >= 999 && count < 10000) 
      { 
       m_sn = 'SN'+m_yue+m_ls 
       }; 
       gui_set_val("edit_Ext1",m_sn) //单据表头扩展一赋值 
//设置结束 
  //can_save=1; 
  return 1; 
};


        于 2022-11-09 00:02 被 fwj3861 修改




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

daibiaoge  [个人空间]


注册  2020-04-30
发贴数  446
精华贴  2
原创贴  1
来自  
状态  正常

级别  会员
#3»发布于2022-11-08 19:54

如遇到单据删除,就可能重号或漏号。




daibiaoge  [个人空间]


注册  2020-04-30
发贴数  446
精华贴  2
原创贴  1
来自  
状态  正常

级别  会员
#4»发布于2022-11-08 19:58

可以参考这个 
 
https://www.yisu.com/zixun/363657.html




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


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

级别  贵宾
#5»发布于2022-11-08 21:00

确实需要预防这一点,那就需要优化脚本了






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

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


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

级别  贵宾
#6»发布于2022-11-09 01:25

暂时优化了重号,断号补号的后面再优化 
int func_before_save()  
{  
//按照月份设置表头扩展一的值=SN+月份+4位流水号  
 int count; 
 string sql,m_djlx,m_ny,m_djrq,m_djbh,m_yue,m_sn,m_sn2; 
 num m_ls,count,m_zdz,m_zdz2; 
   m_djlx = v_voucher_type 
   m_ny = str_cut(get_cur_date_std(),6)+'%' 
   m_yue = date_pick_month() 
   db_run("select ext_1 from ebs_v where voucher_type = '"+m_djlx+"' and voucher_date like '"+m_ny+"' and voucher_id < " + v_voucher_id + ""); 
   count=db_row_count();  
   m_ls = count + 1 
   db_run("select max(ext_1) from ebs_v where voucher_type = '"+m_djlx+"' and voucher_date like '"+m_ny+"' and voucher_id < " + v_voucher_id + ""); 
    m_zdz = str_get_sub_n(db_res(0),4,4) 
    m_zdz2 = m_zdz+1 
    if(count < 10) 
    { 
     m_sn = 'SN'+m_yue+'000'+ m_ls 
     m_sn2 = 'SN'+m_yue+'000'+m_zdz2 
     } 
     if(count >=9 && count < 100) 
     { 
      m_sn = 'SN'+m_yue+'00'+ m_ls 
      m_sn2 = 'SN'+m_yue+'00'+m_zdz2 
      } 
      if(count >= 99 && count < 1000) 
      { 
       m_sn = 'SN'+m_yue+'0'+ m_ls 
       m_sn2 = 'SN'+m_yue+'0'+m_zdz2 
       } 
       if(count >= 999 && count < 10000) 
       { 
        m_sn = 'SN'+m_yue+ m_ls 
        m_sn2 = 'SN'+m_yue+m_zdz2 
        }; 
        if(m_ls <= m_zdz) 
        { 
         gui_set_val("edit_Ext1",m_sn2) 
         }; 
         else 
         { 
          gui_set_val("edit_Ext1",m_sn) 
          }; 
 
//设置结束  
  //can_save=1;  
  return 1;  
};


        于 2022-11-09 01:25 被 fwj3861 修改




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

dragonzsp  [个人空间]
QQ名  十二个耳环(187199580)


注册  2011-03-25
发贴数  183
精华数  0
原创贴  4
来自  温州
状态  正常

级别  贵宾
#7»发布于2022-11-09 10:06

int func_before_save()  
{  
  string fmtStr,sql,ext_1,ext_1_data; 
  int count,i,fmtStrLength,numLength,cmpNum,curNum; 
  //首先判断当前是否是编辑状态的单据 
  if(v_voucher_id>0){ 
    sql="select ext_1 from ebs_v where voucher_id="+v_voucher_id; 
    db_run(sql); 
    count=db_row_count(); 
    if(count>0){ 
      ext_1_data=db_res(0); 
      if(ext_1_data!=""){ 
        //说明已经数据库对应单据已经有值,这里做不允许修改,如果允许修改,自己修改代码 
        gui_set_val("edit_Ext1",ext_1_data) 
        return 1; 
      } 
    }     
  } 
  //固定部分,如果要修改,直接改这里 
  fmtStr="SN"; 
  //数字部分长度,如果要修改,直接改这里 
  numLength=4; 
  fmtStrLength=strlen(fmtStr); 
  sql="select substring(ext_1,"+fmtStrLength+",20) as ext_1 from ebs_v where 1=1"; 
  //限制条件执行在这里添加,如ext_2与单据日期 
  sql=sql; 
  //结果按从小到大排序 
  sql=sql+" order by substring(ext_1,"+fmtStrLength+",20) asc" 
  db_run(sql); 
  count=db_row_count(); 
  //此处遍历比较,是判断是否出现断码,如果出现断码,直接用断码 
  cmpNum=1; 
  for(i=0;i<count;i++){ 
    db_go_row(i); 
    //获取当前序号 
    curNum=to_int(db_res(0)); 
    if(cmpNum!=curNum){ 
      break; 
    } 
    cmpNum++; 
  } 
  ext_1=fmtStr+fmt_int(cmpNum,"%0"+numLength+"d"); 
  gui_set_val("edit_Ext1",ext_1); 
  return 1; 
}


        于 2022-11-09 10:06 被 dragonzsp 修改




官方认证第三方服务团队   QQ:187199580
收费教程地址链接:http://www.onlyit.cn/topic_list_detail?subject_id=7&topic_id=102140&topic_page_id=1
手机收费版本地址链接:http://www.onlyit.cn/topic_list_detail?subject_id=3&topic_id=103479&topic_page_id=1

wwx001  [个人空间]
QQ名  时光呓语


注册  2011-05-23
发贴数  698
精华贴  2
原创贴  3
来自  
状态  正常

级别  会员
#8»发布于2022-11-09 09:40

会计凭证如果也可以设置自动补全断号就好了!






QQ:772600297

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


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

级别  贵宾
#9»发布于2022-11-09 12:54

感谢十二老师的分享,学习了,点赞!






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

wwx001  [个人空间]
QQ名  时光呓语


注册  2011-05-23
发贴数  698
精华贴  2
原创贴  3
来自  
状态  正常

级别  会员
#10»发布于2022-11-09 20:03

系统支持单据的重号检查,不过由于单据删除等原因,断号现象经常会出现,为避免断号,使用系统的单据编号规则,不借助扩展,参考十二老师的脚本,以下脚本勉强可以达到效果,细节可以根据自己的设置自行调整,供参考。 
int func_before_save() 

  int i,n,x,y,d; 
  string a,b,c,sql; 
  a=str_get_sub(gui_get_val("DateTimePicker_Voucher_Date"),0,6); 
  b=v_voucher_type; 
  c=a+'%'; 
  sql="select voucher_no from ebs_v where voucher_type='"+b+"' and voucher_date like '"+c+"' order by voucher_no"; 
  db_run(sql); 
  n=db_row_count(); 
  x=1; 
  for(i=0;i<n;i++) { 
    db_go_row(i); 
    y=to_int(str_get_sub(db_res(0),8,4)); 
    if(x!=y){ 
      if(confirm("单据编号存在断号,是否自动补全?")==1){ 
      a=str_get_sub(gui_get_val("DateTimePicker_Voucher_Date"),2,4); 
      gui_set_val("Edit_Voucher_No",b+'-'+a+'-'+fmt_int(x,"%04d")); 
      }; 
      break; 
    } 
    x++; 
  } 
  //can_save=1; 
  return 1; 
};



        于 2022-11-09 20:03 被 wwx001 修改




QQ:772600297

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


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

级别  贵宾
#11»发布于2022-11-09 17:41

估计【十二老师】和【时光呓语】老师的脚本还没达到【作者】的要求,没有看到回响 (′-﹏-`)


        于 2022-11-09 17:41 被 fwj3861 修改




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


 11  1/1   1  

登录后方可发贴


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