原创_成品【外箱流水码】生成脚本和二维码打印分享_使用经验
学习.交流
专业源于专注
www. onlyit. cn   
学习交流 文件下载 手册资料 交流QQ群

    

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


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

级别  贵宾
#1»发布于2023-07-18 16:37

有客户的外箱流水码要求从条形码改为二维码,每个成品一个流水码(12位),前4位为固定的的供方代码,第5位为年份简码,6-7位为生产周,后5位为流水号,每张二维码标签最多包含100个流水码,不同PO同一时间出货的,流水码不能相同,目前只有每箱100PCS以下的订单,所以根据这些条件,启用了一个自定义单据来做外箱标签,用脚本来自动生成所有流水码 
目前的脚本只限于每箱<=100PCS的包装数量,超过这个包装数量的脚本需要修改根据指定行复制行内容的条件 
脚本思路: 
 1.启用一个单据类型【HF】的自定义单据,不影响库存,引用【BA】销售订单,表头只显示客户,启用5个表头扩展属性,用来记录【每箱数量,合计箱数,订单数量,前7位流水码,流水码开始】等数值 
 2.根据表头的客户来判断是否需要生成流水码(有其他客户只打印箱号,不需要流水码) 
 3.引用销售订单明细数据,销售订单明细有包含【产品编号,订单数量,每箱数量,总箱数,尾数箱数量】等数值 
 4.根据每箱一个外箱二维码标签的条件(每箱数量超过100就需要多张,暂不支持),每箱一行明细,依据总箱数复制第一行的数据到N行 
 5.引用过来数据复制行数据完成后保存单据,在保存单据的时候来生成所有流水码 
 6.添加3个明细扩展列:【lsm,lshks,lshjs】分别为:【流水码前缀(窗口输入,限定7位数),流水号开始(首行窗口输入,脚本行循环赋值),流水号结束(脚本行循环赋值)】 
 7.根据每张二维码标签最多包含100个流水码的条件,添加101个明细扩展列,命名:lsh+3位序号,从lsh001-lsh101【测试ok后,这些明细扩展列可以不用显示出来】 
 8.根据每箱数量结合第一个流水码先生成【流水码开始】,【流水码结束】,第一列【流水码】的数据 
 9.根据列循环开始的列号结合每箱数量来循环生成剩下的流水码数据 
10.在打印模板用脚本生成二维码数据,每个流水码之间加上回车字符 
 
单据脚本节选(部分): 
int func_show() 

  gui_hide("SpeedButton_Print") 
  int xx,yy,ww,hh,; 
  xx=gui_get_x("SpeedButton_Print") //【打印】横向坐标 
  yy=gui_get_y("SpeedButton_Print") //【打印】控件纵向坐标 
  ww=gui_get_w("SpeedButton_Print") //【打印】控件宽度 
  hh=gui_get_h("SpeedButton_Print") //【打印】控件高度 
  gui_create_speedbutton("ScrollBox_Func_Left","HF_print",xx,yy,ww,hh,"打印","call_csp.voucher.HF.HF_print"); 
  gui_set_hint ("HF_print", '提示:按照客户匹配打印模板'); 
   gui_set_font_color('HF_print',16711680); 
   gui_set_font_color("HF_print",16711680); 
   gui_disable("edit_Ext1") 
   gui_disable("edit_Ext2") 
   gui_disable("edit_Ext3") 
   gui_disable("edit_Ext4") 
   gui_disable("edit_Ext5") 
   gui_set_font_color('edit_Ext1',16711680); 
   gui_set_font_color("lab_Ext1",16711680); 
   gui_set_font_color('edit_Ext2',16711680); 
   gui_set_font_color("lab_Ext2",16711680); 
   gui_set_font_color('edit_Ext3',16711680); 
   gui_set_font_color("lab_Ext3",16711680); 
   gui_set_font_color('edit_Ext4',0x0000ff); 
   gui_set_font_color("lab_Ext4",0x0000ff); 
   gui_set_font_color('edit_Ext5',0x0000ff); 
   gui_set_font_color("lab_Ext5",0x0000ff); 
   string m_kh; 
   m_kh = gui_get_val("ComboBox_Ext_Eba_Id"); 
   if(m_kh != 'A0004') 
   { 
    gui_hide("edit_Ext1") 
    gui_hide("lab_Ext1") 
    gui_hide("edit_Ext2") 
    gui_hide("lab_Ext2") 
    gui_hide("edit_Ext3") 
    gui_hide("lab_Ext3") 
    gui_hide("edit_Ext4") 
    gui_hide("lab_Ext4") 
    gui_hide("edit_Ext5") 
    gui_hide("lab_Ext5") 
    }; 
   if(m_kh == 'A0004') 
   { 
    gui_show("edit_Ext1") 
    gui_show("lab_Ext1") 
    gui_show("edit_Ext2") 
    gui_show("lab_Ext2") 
    gui_show("edit_Ext3") 
    gui_show("lab_Ext3") 
    gui_show("edit_Ext4") 
    gui_show("lab_Ext4") 
    gui_show("edit_Ext5") 
    gui_show("lab_Ext5") 
    }; 
  return 1; 
}; 
int 按箱数复制行() 

 int i,rc; 
 string v_ddsl,v_lsm,v_item,v_id; 
  rc = grid_get_v("MG_Item","vr_item_ext_4",1,);//获取首行【明细自定义4】列数据(总箱数) 
  v_item = grid_get_v("MG_Item","vr_item_ext_4",2,);//获取第二行【明细自定义4】列数据(总箱数) 
  v_ddsl = grid_get_v("MG_Item","inp_num",1);//获取首行【数量】列数据 
  v_lsm = grid_get_v("MG_Item","lsm",1); //获取首行【流水码前7位】列数据(弹窗输入) 
  if(v_item == '') //当第二行为空时,根据【总箱数】补齐明细行数据(每箱一行数据打印一张二维码流水号标签) 
  { 
   for(i=1;i<rc;i++); 
   { 
    if(v_lsm != '') //当【流水码前7位】列数据不为空时根据第一行新增明细行数据,避免漏输入【流水码前7位】后还执行复制行操作 
    { 
     grid_insert_before('MG_Item',i+1) //在指定行前插入一行记录 
     grid_copy_row("MG_Item",i,i+1);//复制行内容 
     grid_set_v('MG_Item','inp_num',i,v_ddsl); //最后一行有时其他列数据没有被复制成功,这里从第一行再赋值一次补齐数据避免尾数箱流水号生成失败 
     grid_set_v('MG_Item','vr_item_ext_4',i,rc);//最后一行有时其他列数据没有被复制成功,这里从第一行再赋值一次补齐数据避免尾数箱流水号生成失败 
     grid_set_v('MG_Item','lsm',i,v_lsm);//最后一行有时其他列数据没有被复制成功,这里从第一行再赋值一次补齐数据避免尾数箱流水号生成失败 
     }; 
    }; 
   }; 
  //can_print=1; 
  return 1; 
}; 
int 流水号生成() 

//按流水号开始数值生成流水码 
  int i,rc,j,k,count; 
  string v_mxsl,v_lsm,gwlsh,gwlshs,swlsh,swlshs,bwlsh,bwlshs,m_lshks,m_lshjs,v_zxs,v_ddsl,mmxsl,v_lshcsz,v_lshcszss; 
  num v_mxsl,v_lshks,v_lshjs,v_lshkss,v_lshjss,v_mxsls,v_lshcsz,v_lshcszs,v_lshcszss,v_ddsl,v_lshjssh; 
 
//输入流水号开始数值 
 string m_kh; 
 m_kh = gui_get_val("ComboBox_Ext_Eba_Id"); //获取客户编号 
 if(m_kh == 'A0004') //只有这个编号的客户需要外箱二维码流水贴纸 
 { 
  inp_clear(); 
  inp_para_set_title('请输入【流水号开始序号】') 
  inp_def_string('mnum','流水号开始序号:'); 
  inp_para() 
  num inp_num; 
  inp_num=inp_get_val('mnum') 
  user_para_set("lsh",inp_num) 
  if(inp_num == '') 
  { 
   msg('【流水号开始序号】不能为空,请重新输入!') 
   inp_clear(); 
   inp_para_set_title('请输入【流水号开始序号】') 
   inp_def_string('mnum','【流水号开始序号】:'); 
   inp_para() 
   num inp_num; 
   inp_num=inp_get_val('mnum') 
   user_para_set("lsh",inp_num) 
   if(inp_num == '') 
   { 
    msg('【流水号开始序号】再次为空,操作终止,请重新制单!') 
    return 0; 
    }; 
   } 
     if(inp_num != '') 
     { 
      gui_set_val("edit_Ext5",inp_num) 
     }; 
    }; 
   rc = grid_find('MG_Item','res_id',''); 
    v_mxsl = grid_get_v("MG_Item","bzsl",1,); //获取首行【每箱数量】列数值,每个产品都有一个流水码,根据这个数值循环赋值指定列之间流水码数据 
    v_ddsl = grid_get_v("MG_Item","inp_num",1,);//获取【订单数量】列数值,根据这个数值来赋值最后一行的【流水码结束号】 
    v_ddsl = v_ddsl + inp_num - 1 //计算【流水号结束序号】,给最后一行流水号结束码赋值,替换掉批量循环赋值的数值(有尾数的情况下不准确) 
    v_lshjssh = inp_num + v_mxsl - 1 //计算第一行【流水号开始】列流水码,用来给第一行赋值 
    v_zxs = grid_get_v("MG_Item","vr_item_ext_4",1,); //获取【总箱数】,用来定位最后一行 
    v_lsm = grid_get_v("MG_Item","lsm",1,);//获取【流水码前7位】 
    v_lshcsz = inp_num //获取【流水号开始流水码】 
   for(i=2;i<rc;i++); //行循环从第二行开始 
   { 
    //根据窗口输入的【流水号开始流水码】补齐【5位数】之后赋值到首行【流水码开始,流水码结束,首列产品流水码】这3列 
     if(strlen(v_lshcsz) == 4){ 
     grid_set_v('MG_Item','lshks',1,'0'+v_lshcsz); 
     grid_set_v('MG_Item','lsh001',1,v_lsm+'0'+v_lshcsz); 
     }if(strlen(v_lshcsz) == 3){ 
     grid_set_v('MG_Item','lshks',1,'00'+v_lshcsz); 
     grid_set_v('MG_Item','lsh001',1,v_lsm+'00'+v_lshcsz); 
     }if(strlen(v_lshcsz) == 2){ 
     grid_set_v('MG_Item','lshks',1,'000'+v_lshcsz); 
     grid_set_v('MG_Item','lsh001',1,v_lsm+'000'+v_lshcsz); 
     }if(strlen(v_lshcsz) == 1){ 
     grid_set_v('MG_Item','lshks',1,'0000'+v_lshcsz); 
     grid_set_v('MG_Item','lsh001',1,v_lsm+'0000'+v_lshcsz); 
     }if(strlen(v_lshjssh) == 4){ 
     grid_set_v('MG_Item','lshjs',1,'0'+v_lshjssh); 
     }if(strlen(v_lshjssh) == 3){ 
     grid_set_v('MG_Item','lshjs',1,'00'+v_lshjssh); 
     }if(strlen(v_lshjssh) == 2){ 
     grid_set_v('MG_Item','lshjs',1,'000'+v_lshjssh); 
     }if(strlen(v_lshjssh) == 1){ 
     grid_set_v('MG_Item','lshjs',1,'0000'+v_lshjssh); 
     } 
   //设置从第二行开始【流水码开始,流水码结束,首列产品流水码】这3列的循环条件 
    v_lshcszs = grid_get_v("MG_Item","lshks",i,); //获取【流水码开始】列数值 
    v_lshcszs = v_lshcsz + v_mxsl  
    v_lshcszss = v_lshcszss + v_lshcszs - v_lshcsz 
    v_lshjs = grid_get_v("MG_Item","lshjs",i,);v_lshjss = v_lshcszss + v_lshcszs - v_mxsl 
    v_lshkss = v_lshjss + v_mxsl -1 
    if(v_lshjs == '') 
    { 
    //首列【产品流水码】行循环赋值(补齐12位数) 
    for(j=1;j<=v_mxsl;j++); 
    { 
     if(strlen(v_lshjss)== 1){ 
     grid_set_v('MG_Item','lsh001',i,v_lsm+'0000'+v_lshjss); 
     }if(strlen(v_lshjss) == 2){ 
     grid_set_v('MG_Item','lsh001',i,v_lsm+'000'+v_lshjss); 
     }if(strlen(v_lshjss) == 3){ 
     grid_set_v('MG_Item','lsh001',i,v_lsm+'00'+v_lshjss); 
     }if(strlen(v_lshjss) == 4){ 
     grid_set_v('MG_Item','lsh001',i,v_lsm+'0'+v_lshjss); 
     }; 
    }; 
     //【流水号开始】列行循环赋值(补齐5位数) 
     if(strlen(v_lshjss) == 1){ 
     grid_set_v('MG_Item','lshks',i,'0000'+v_lshjss); 
     }if(strlen(v_lshjss) == 2){ 
     grid_set_v('MG_Item','lshks',i,'000'+v_lshjss); 
     }if(strlen(v_lshjss) == 3){ 
     grid_set_v('MG_Item','lshks',i,'00'+v_lshjss); 
     }if(strlen(v_lshjss) == 4){ 
     grid_set_v('MG_Item','lshks',i,'0'+v_lshjss); 
     }; 
     //【流水号结束】列赋值(补齐5位数) 
     if(strlen(v_lshkss) == 1){ 
     grid_set_v('MG_Item','lshjs',i,'0000'+v_lshkss); 
     }if(strlen(v_lshkss) == 2){ 
     grid_set_v('MG_Item','lshjs',i,'000'+v_lshkss); 
     }if(strlen(v_lshkss) == 3){ 
     grid_set_v('MG_Item','lshjs',i,'00'+v_lshkss); 
     }if(strlen(v_lshkss) == 4){ 
     grid_set_v('MG_Item','lshjs',i,'0'+v_lshkss); 
    }; 
   }; 
  }; 
     //尾行【流水号结束】列赋值(补齐5位数)(解决在有【尾数箱】的情况下,行循环赋值过来的最后一行流水码有多余的问题) 
     if(strlen(v_ddsl) == 1){ 
     grid_set_v('MG_Item','lshjs',v_zxs,'0000'+v_ddsl); 
     }if(strlen(v_ddsl) == 2){ 
     grid_set_v('MG_Item','lshjs',v_zxs,'000'+v_ddsl); 
     }if(strlen(v_ddsl) == 3){ 
     grid_set_v('MG_Item','lshjs',v_zxs,'00'+v_ddsl); 
     }if(strlen(v_ddsl) == 4){ 
     grid_set_v('MG_Item','lshjs',v_zxs,'0'+v_ddsl); 
     } 
//根据【每箱数量】和首列【产品流水码】列循环+1赋值余下的【产品流水码】列, 
//#【以下脚本感谢【浪总】的支持】# 
 int row,col,i,j,col,num1,num2,x; 
 string test,name1,name2,mmxsl,lshjslm,mddsl,dsclsh,mwsxlh,name3; 
  num test,mmxsl,mddsl,name1,mwsxlh; 
  mmxsl = gui_get_val("edit_Ext1"); //获取【每箱数量】数值 
  mddsl = gui_get_val("edit_Ext3"); //获取【订单数量】数值 
  mwsxlh = grid_get_v("MG_Item",'vr_item_ext_3',1); //获取【尾数箱】数值,用来清除多余的产品流水码 
  mddsl = mddsl + 1 
  //设置多余流水码的动态列名 
  if(mmxsl > 0 && mmxsl <10) 
  { 
   lshjslm = 'lsh00'+mmxsl 
   }if(mmxsl > 9 && mmxsl <100){ 
   lshjslm = 'lsh0'+mmxsl 
   }if(mmxsl > 99 && mmxsl <1000){ 
   lshjslm = 'lsh'+mmxsl 
   } 
   row=grid_find("MG_Item","res_id","");//总行数 
   col=grid_col_num("MG_Item")//总列数 
  name1='lsh002';//起始列标识 
  name2=lshjslm;//结束列标识 
  for(i=1;i<col;i++)//这个循环是记录下面循环的始末列 
  { 
   if(grid_get_col_name("MG_Item",i)=='lsh002')//尾数起始列号 
   mwsxlh=i+mwsxlh-1; 
   if(grid_get_col_name("MG_Item",i)=='lsh002')//起始列号 
   num1=i; 
   if(grid_get_col_name("MG_Item",i)== lshjslm)//结束列号 
   num2=i 
   } 
  for(x=1;x<row;x++)//行循环 
  { 
   for(i=num1;i<=num2;i++)//列循环 
   { 
    test=grid_get_v("MG_Item",'lsh001',x); 
    name1=grid_get_col_name("MG_Item",i); 
    j=i+1-num1//从1开始增加 
    test=test+j; 
    grid_set_v("MG_Item",name1,x,test); 
   } 
  } 
   for(i=mwsxlh;i<=num2;i++)//列循环 
   { 
    name1=grid_get_col_name("MG_Item",i); 
    grid_set_v("MG_Item",name1,row-1,'');//清除多余的流水码列数值 
   } 
  return 1; 
}; 
int obj_change() 

 if(change_obj ==  "ComboBox_Ext_Eba_Id") 
 { 
   string m_kh; 
   m_kh = gui_get_val("ComboBox_Ext_Eba_Id"); 
   if(m_kh != 'A0004') 
   { 
    gui_hide("edit_Ext1") 
    gui_hide("lab_Ext1") 
    gui_hide("edit_Ext2") 
    gui_hide("lab_Ext2") 
    gui_hide("edit_Ext3") 
    gui_hide("lab_Ext3") 
    gui_hide("edit_Ext4") 
    gui_hide("lab_Ext4") 
    gui_hide("edit_Ext5") 
    gui_hide("lab_Ext5") 
    gui_trigger_click("Popu_Select_Ass_Voucher"); 
    }; 
   if(m_kh == 'A0004') 
   { 
    gui_show("edit_Ext1") 
    gui_show("lab_Ext1") 
    gui_show("edit_Ext2") 
    gui_show("lab_Ext2") 
    gui_show("edit_Ext3") 
    gui_show("lab_Ext3") 
    gui_show("edit_Ext4") 
    gui_show("lab_Ext4") gui_show("edit_Ext5") 
    gui_show("lab_Ext5") 
    gui_set_val("edit_Ext1",'') 
    gui_set_val("edit_Ext2",'') 
    gui_set_val("edit_Ext3",'') 
    gui_set_val("edit_Ext4",'') 
    gui_set_val("edit_Ext5",'') 
    inp_clear(); 
    inp_para_set_title('请输入【流水号前7位】') 
    inp_def_string('mnum','流水号前7位:'); 
    inp_para() 
    num inp_num; 
    inp_num=inp_get_val('mnum') 
    user_para_set("lsh",inp_num) 
    if(inp_num == '') 
    { 
     msg('流水号前7位不能为空,请重新输入流水号前7位!') 
     inp_clear(); 
     inp_para_set_title('请输入【流水号前7位】') 
     inp_def_string('mnum','流水号前7位:'); 
     inp_para() 
     num inp_num; 
     inp_num=inp_get_val('mnum') 
     user_para_set("lsh",inp_num) 
     if(inp_num == '') 
     { 
      msg('流水号前7位再次为空,操作终止,请重新制单!') 
      return 0; 
      }; 
     } 
     if(inp_num != '' && strlen(inp_num) != 7) 
     { 
      msg('输入的流水号只有【'+strlen(inp_num)+'】位数,请重新输入流水号前7位!') 
      inp_clear(); 
      inp_para_set_title('请输入【流水号前7位】') 
      inp_def_string('mnum','流水号前7位:'); 
      inp_para() 
      num inp_num; 
      inp_num=inp_get_val('mnum') 
      user_para_set("lsh",inp_num) 
      if(strlen(inp_num) != 7) 
      { 
       msg('再次输入的流水号只有【'+strlen(inp_num)+'】位数,操作终止,请重新制单!') 
       return 0; 
       }; 
       if(inp_num == '') 
       { 
        msg('流水号前7位再次为空,操作终止,请重新制单!') 
        return 0; 
        }; 
       }; 
     if(inp_num != '' && strlen(inp_num) == 7) 
     { 
      gui_set_val("edit_Ext4",inp_num) 
      gui_trigger_click("Popu_Select_Ass_Voucher"); 
      按箱数复制行() 
     }; 
    }; 
   }; 
  //change_obj 
  return 1; 
}; 
 
int init_row() 

    int i,grid_rows; 
    string v_lsh; 
    grid_rows = grid_find('MG_Item','res_name',''); 
    v_lsh = gui_get_val("edit_Ext4") 
    for(i=1;i<grid_rows;i++) 
    { 
      grid_set_v('MG_Item','lsm',i,v_lsh); 
    }; 
 
  return 1; 
}; 
int func_before_save() 

  string mmxsl,mhjxs,mddsl,mwsxsl; 
  int i,rc,vid; 
  grid_color_clear("MG_Item") 
  mmxsl = grid_get_v('MG_Item','bzsl',1) 
  mhjxs = grid_get_v('MG_Item','vr_item_ext_4',1) 
  mddsl = grid_get_v('MG_Item','inp_num',1) 
  mwsxsl = grid_get_v('MG_Item','vr_item_ext_3',1) 
  rc = grid_find("MG_Item","res_name",""); 
  for(i=1;i<rc;i++); 
  { 
    grid_set_v('MG_Item','bzsl',i,mmxsl); 
    grid_set_v('MG_Item','vr_item_ext_4',i,mhjxs); 
    grid_set_v('MG_Item','inp_num',i,mddsl); 
    grid_set_v('MG_Item','vr_item_ext_3',i,mwsxsl); 
   }; 
    gui_set_val("edit_Ext1",mmxsl) 
    gui_set_val("edit_Ext2",mhjxs) 
    gui_set_val("edit_Ext3",mddsl) 
 
   string m_kh,m_lshks; 
   m_kh = gui_get_val("ComboBox_Ext_Eba_Id") 
   m_lshks = gui_get_val("edit_Ext5"); 
   if(m_kh == 'A0004' && m_lshks == '') 
   { 
    流水号生成() 
    }; 
  //can_save=1; 
  return 1; 
}; 
int HF_print() 

  string mkhid; 
  mkhid = gui_get_val("ComboBox_Ext_Eba_Id") 
   if(mkhid == 'A0001' && mkhid != 'A0004' ) 
   { 
     v_set_print_format_id('v_hf-1')//根据箱号模板打印 
     gui_trigger_click("SpeedButton_Print");//打开打印预览 
     }; 
   if(mkhid != 'A0001' && mkhid == 'A0004' ) 
   { 
     v_set_print_format_id('v_hf-5') //根据二维码模板打印 
     gui_trigger_click("SpeedButton_Print");//打开打印预览 
     }; 
  //can_print=1; 
  return 1; 
};




        于 2023-07-18 16:37 被 fwj3861 修改




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

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


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

级别  贵宾
#2»发布于2023-07-17 18:45

打印模板生成二维码数据脚本 
int before_draw_obj() 

 if(to_draw_obj=='stuff') 
 { 
  stuff = lsh001+nl()+lsh002+nl()+lsh003+nl()+lsh004+nl()+lsh005+nl()+lsh006+nl()+lsh007+nl()+lsh008+nl()+lsh009+nl()+lsh010+nl() 
  stuff = stuff+lsh011+nl()+lsh012+nl()+lsh013+nl()+lsh014+nl()+lsh015+nl()+lsh016+nl()+lsh017+nl()+lsh018+nl()+lsh019+nl()+lsh020+nl() 
  stuff = stuff+lsh021+nl()+lsh022+nl()+lsh023+nl()+lsh024+nl()+lsh025+nl()+lsh026+nl()+lsh027+nl()+lsh028+nl()+lsh029+nl()+lsh030+nl() 
  stuff = stuff+lsh031+nl()+lsh032+nl()+lsh033+nl()+lsh034+nl()+lsh035+nl()+lsh036+nl()+lsh037+nl()+lsh038+nl()+lsh039+nl()+lsh040+nl() 
  stuff = stuff+lsh041+nl()+lsh042+nl()+lsh043+nl()+lsh044+nl()+lsh045+nl()+lsh046+nl()+lsh047+nl()+lsh048+nl()+lsh049+nl()+lsh050+nl() 
  stuff = stuff+lsh051+nl()+lsh052+nl()+lsh053+nl()+lsh054+nl()+lsh055+nl()+lsh056+nl()+lsh057+nl()+lsh058+nl()+lsh059+nl()+lsh060+nl() 
  stuff = stuff+lsh061+nl()+lsh062+nl()+lsh063+nl()+lsh064+nl()+lsh065+nl()+lsh066+nl()+lsh067+nl()+lsh068+nl()+lsh069+nl()+lsh070+nl() 
  stuff = stuff+lsh071+nl()+lsh072+nl()+lsh073+nl()+lsh074+nl()+lsh075+nl()+lsh076+nl()+lsh077+nl()+lsh078+nl()+lsh079+nl()+lsh080+nl() 
  stuff = stuff+lsh081+nl()+lsh082+nl()+lsh083+nl()+lsh084+nl()+lsh085+nl()+lsh086+nl()+lsh087+nl()+lsh088+nl()+lsh089+nl()+lsh090+nl() 
  stuff = stuff+lsh091+nl()+lsh092+nl()+lsh093+nl()+lsh094+nl()+lsh095+nl()+lsh096+nl()+lsh097+nl()+lsh098+nl()+lsh099+nl()+lsh100+nl() 
   }; 
 if(to_draw_obj=='stuff1') 
 { 
  stuff1 = lsm+lshks 
   }; 
 if(to_draw_obj=='stuff2') 
 { 
  stuff2 = lsm+lshjs 
   }; 
  return 1; 
};




        于 2023-07-17 18:45 被 fwj3861 修改




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

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


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

级别  贵宾
#3»发布于2023-07-19 12:50

无语的脚本代码,,,






官方认证第三方服务团队   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

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


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

级别  贵宾
#4»发布于2023-07-19 14:41

是用了笨方法先达成目的了,还需要简化,有些地方为了保险加了些不必要的脚本,还是需要继续提升






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

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


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

级别  贵宾
#5»发布于2023-07-20 17:57

感谢【十二个耳环】老师的指点,有函数可以直接字符串格式化,优化生成流水号脚本 
 
int 流水号生成() 

//按流水号开始数值生成流水码 
 int i,rc,j,col,num1,num2,x; 
 string m_kh,v_mxsl,v_lsm,v_zxs,v_ddsl,v_ws,v_lshcsz,v_lshcszss,test,name1,name2,lshjslm,mwsxlh,name3; 
 num v_mxsl,v_lshkss,v_lshjss,v_lshcsz,v_lshcszs,v_lshcszss,v_ddsl,test,name1,mwsxlh,v_ws; 
 m_kh = gui_get_val("ComboBox_Ext_Eba_Id"); //获取客户编号 
 if(m_kh == 'A0004') //只有这个编号的客户需要外箱二维码流水贴纸 
 { 
  inp_clear(); 
  inp_para_set_title('请输入【流水号开始序号】') 
  inp_def_string('mnum','流水号开始序号:'); 
  inp_para() 
  num inp_num; 
  inp_num=inp_get_val('mnum') 
  user_para_set("lsh",inp_num) 
  if(inp_num == '') 
  { 
   msg('【流水号开始序号】不能为空,请重新输入!') 
   inp_clear(); 
   inp_para_set_title('请输入【流水号开始序号】') 
   inp_def_string('mnum','【流水号开始序号】:'); 
   inp_para() 
   num inp_num; 
   inp_num=inp_get_val('mnum') 
   user_para_set("lsh",inp_num) 
   if(inp_num == '') 
   { 
    msg('【流水号开始序号】再次为空,操作终止,请重新制单!') 
    return 0; 
    }; 
   } 
     if(inp_num != '') 
     { 
      gui_set_val("edit_Ext5",inp_num) 
     }; 
    }; 
   rc = grid_find('MG_Item','res_id',''); 
    v_mxsl = grid_get_v("MG_Item","bzsl",1,); //获取首行【每箱数量】列数值,每个产品都有一个流水码,根据这个数值循环赋值指定列之间流水码数据 
    v_ddsl = grid_get_v("MG_Item","inp_num",1,);//获取【订单数量】列数值,根据这个数值来赋值最后一行的【流水码结束号】 
    v_ddsl = v_ddsl + inp_num - 1 //计算【流水号结束序号】,给最后一行流水号结束码赋值,替换掉批量循环赋值的数值(有尾数的情况下不准确) 
    v_zxs = grid_get_v("MG_Item","vr_item_ext_4",1,); //获取【总箱数】,用来定位最后一行 
    v_lsm = grid_get_v("MG_Item","lsm",1,);//获取【流水码前7位】 
    v_ws = grid_get_v("MG_Item","vr_item_ext_3",1,);//获取【尾数箱数量】 
    v_lshcsz = inp_num //获取【流水号开始流水码】 
    lshjslm = 'lsh'+fmt_int(v_mxsl,"%03d") 
    col=grid_col_num("MG_Item")//总列数 
    name1='lsh002';//起始列标识 
    name2=lshjslm;//结束列标识 
    for(i=1;i<col;i++)//这个循环是记录下面循环的始末列 
    { 
     if(grid_get_col_name("MG_Item",i)=='lsh002')//尾数起始列号 
     mwsxlh=i+v_ws-1; 
     if(grid_get_col_name("MG_Item",i)=='lsh002')//起始列号 
     num1=i; 
     if(grid_get_col_name("MG_Item",i)== lshjslm)//结束列号 
     num2=i 
     } 
    for(i=1;i<rc;i++); 
    { 
     v_lshcszs = grid_get_v("MG_Item","lshks",i,); 
     v_lshcszs = v_lshcsz + v_mxsl 
     v_lshcszss = v_lshcszss + v_lshcszs - v_lshcsz 
     v_lshjss = v_lshcszss + v_lshcszs - v_mxsl - v_mxsl 
     v_lshkss = v_lshjss + v_mxsl -1 
      for(j=1;j<=v_mxsl;j++); 
      { 
       grid_set_v('MG_Item','lshks',i,fmt_int(v_lshjss,"%05d")); 
       grid_set_v('MG_Item','lsh001',i,v_lsm+fmt_int(v_lshjss,"%05d")); 
       grid_set_v('MG_Item','lshjs',i,fmt_int(v_lshkss,"%05d")); 
       }; 
      for(x=num1;x<=num2;x++)//列循环 
      { 
       test=grid_get_v("MG_Item",'lsh001',i); 
       name1=grid_get_col_name("MG_Item",x); 
       j=x+1-num1//从1开始增加 
       test=test+j; 
       grid_set_v("MG_Item",name1,i,test); 
       } 
      }; 
      for(x=mwsxlh;x<=num2;x++)//列循环 
      { 
       name1=grid_get_col_name("MG_Item",x); 
       grid_set_v("MG_Item",name1,v_zxs,'');//清除多余的流水码列数值 
      } 
      grid_set_v('MG_Item','lshjs',v_zxs,fmt_int(v_ddsl,"%05d")); 
  return 1; 
}; 
 
此脚本需要保存2次才能完整生成尾行流水,所以保存这里添加了判断条件,审核这里也添加了审核前检查,没有二次保存的会弹出提示并终止操作 
int func_before_save() 

   string m_kh,m_mxsl,m_lshks; 
   m_kh = gui_get_val("ComboBox_Ext_Eba_Id") 
   m_mxsl = gui_get_val("edit_Ext1"); 
   m_lshks = gui_get_val("edit_Ext5"); 
   if(m_kh == 'A0004' && m_mxsl == '' && m_lshks == '') 
   { 
    msg('此客户的外箱标是二维码流水标签,需要保存2次才允许审核!请再保存一次静默执行【流水码生成】')    }; 
   if(m_kh == 'A0004' && m_mxsl != '' && m_lshks == '') 
   { 
    流水号生成() 
    msg('【流水码】生成完成,可以审核单据了!') 
    }; 
  return 1; 
}; 
 
int func_before_oper() 

 if(oper_type() == 'check') 
 {   
   string m_kh,m_mxsl,m_lshks; 
   m_kh = gui_get_val("ComboBox_Ext_Eba_Id") 
   m_lshks = gui_get_val("edit_Ext5"); 
   if(m_kh == 'A0004' && m_lshks == '') 
   { 
    msg('要打印二维码流水标签的单据要保存2次后才能审核')   
    can_oper=0   
    } 
   } 
  //oper_type=save,check,check_r,finish,finish_r,delete,giveup,ask_check,ask_check_r; 
  //can_oper=1; 
  return 1; 
};


        于 2023-07-20 17:57 被 fwj3861 修改




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


 5  1/1   1  

登录后方可发贴


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