分享_关于批发商贸企业之客户不要整箱的脚本。_产供销
学习.交流
专业源于专注
www. onlyit. cn   
学习交流 文件下载 手册资料 交流QQ群

    

 16  1/2   1  2  >  >|  
作者
内容
xwb514  [个人空间]
QQ名  福建流浪(340298101)


注册  2010-03-19
发贴数  575
精华贴  7
原创贴  7
来自  
状态  正常

级别  会员
#1»发布于2014-02-09 08:25

写了一个脚本,我的目的是:作为批发企业,有些客户不需要整箱,而只要一箱中的部份,如几包几瓶等等,这种散拿货的单位采用枚举的方式来判断,而这些单位都在产品定义里定义好了。  
这个脚本就是在开单据的时候提醒开单人员注意并且另外记录这样的特殊情况,然后在发货装车的时候就另外包装好。 
原文发表在这里:http://www.onlyit.cn/user_show_topic?user_id=13132&topic_id=67867&subject_id=56 
 
 
这个问题我研究了很久,今天终于解决了几个问题: 
1,如何获得客户名称,原帖中只能得到客户ID,这样很不直观; 
2,解决了货物记件单位的获取以及记件单位的判断问题; 
3,将文件以开单日期作为文件名记录非整箱要货客户的相关信息以便将来查找,也可以省去了开单据人员的手工另外记录的情况; 
4,“散货记录情况”这个文件夹是由手工建立的,如果想不使用这个文件夹请作相应的修改。 
 
int nobox() //这个自定义函数仅起记录客户,物品名称及数量 
{  
string comuid,resres,res1,res2,today,thistime; 
 
today=get_cur_date();//读取当前日期,将当前日期作为散货记录的文件名,每天一个文件名 
thistime=get_cur_time();//读取当前时间以追加到文件内容每行的头部以易于追踪 
comuid=gui_get_text('ComboBox_Ext_Eba_Id');//获取当前单据的客户名称 
 
if(inp_unit_type_name!='箱')//如果输入单位不是箱 

 
resres=comuid+nl()+nl()+'有“'+res_name+'”'+inp_num+inp_unit_type_name+note_info+'请记录'+nl();//提示内容 
warn(resres);                                                      //提示显示 
res1='echo '+ thistime+comuid+'的“'+res_name+'”有'+inp_num+inp_unit_type_name+'   '+note_info+' >> "'+get_home_path()+'\散货记录情况\'+today+'.txt"';//写入到指定目录的文件中 
system(res1); 
}; 
return 1; 
}; 
 
 
int cell_change() 

string curcol,currow; 
int i; 
currow=grid_cur_row('MG_Item');//获取当前行,其实这行可以不要,这个值是字符串; 
curcol=grid_cur_col('MG_Item');//获取当前列,得到各列在单据表格中的坐标位置,但是这个值是字符串; 
i=to_int(curcol);//用这个函数就是把字符串转换成数值型; 
msg(curcol); 
//以上四行是获取各列的列号,最后使用时可以删除这几行,直接使用以下开始的代码; 
if(i==44)//只修改“数量”就行了,其他的都不触发散货记录脚本的执行,44是我的单据中“数量”的列号。如果没有这个限定,每修改各列数据就将触发; 
nobox(); 
}; 
return 1; 
};

执行结果:
原来执行结果:

        于 2014-02-09 08:25 被 xwb514 修改




官方认证第三方服务团队  徐文标(福建-流浪) QQ:340298101 V&P :177-5046-4787
服务介绍:http://www.onlyit.cn/onlyit_service.html

xwb514  [个人空间]
QQ名  福建流浪(340298101)


注册  2010-03-19
发贴数  575
精华贴  7
原创贴  7
来自  
状态  正常

级别  会员
#2»发布于2014-02-09 11:35

再写一个自定义函数,以分割写入的每日文件中不同客户单据进行分割 
int 分割线(); 

string drawline,addline,today; 
today=get_cur_date(); 
drawline='--------------------------------------------'; 
//msg(drawline); 
addline='echo '+ drawline+' >> "'+get_home_path()+'\散货记录情况\'+today+'.txt"';//写入到指定目录的文件中 
system(addline); 
 
return 1; 
}; 
 
int func_before_save() 

分割线(); 
 
  return 1; 
}; 
这样每保存一个单据就自动划上一条分割线,以区分不同客户单据中的非散装货品






官方认证第三方服务团队  徐文标(福建-流浪) QQ:340298101 V&P :177-5046-4787
服务介绍:http://www.onlyit.cn/onlyit_service.html

xwb514  [个人空间]
QQ名  福建流浪(340298101)


注册  2010-03-19
发贴数  575
精华贴  7
原创贴  7
来自  
状态  正常

级别  会员
#3»发布于2014-02-09 11:38

这是写入到指定文件中的结果

这是写入文件里的结果:





官方认证第三方服务团队  徐文标(福建-流浪) QQ:340298101 V&P :177-5046-4787
服务介绍:http://www.onlyit.cn/onlyit_service.html

ayangzhi  [个人空间]


注册  2010-07-18
发贴数  963
精华贴  1
原创贴  2
来自  
状态  正常

级别  贵宾
#4»发布于2014-02-10 14:56

不错,支持分享。。。。






杨清云,承接商贸管理、人力资源实施、综合管理实施服务.
可扩展开发WEB, 物联网, 大屏展示报表, 移动端, 微信公众号等.
联系QQ:13836962    TEL:13058180007

awfixtdm  [个人空间]


注册  2011-08-18
发贴数  445
精华贴  2
原创贴  5
来自  
状态  正常

级别  版主
#5»发布于2014-02-11 09:01

不实用,开单弹窗完全是鸡肋,如果单多的情况下,没人去看就直接确认了,何不加在备注里打印在单上。同时存入文本文件管理也不方便,以后不好查。可以做成按业务员或配送区域的送货员,单据审核自动把散件相关信息存进数据库,同时发免费短信给相关人员甚至客户。通过web页也可以查到相关信息,以后想查找或统计也方便。






QQ:80240800

xwb514  [个人空间]
QQ名  福建流浪(340298101)


注册  2010-03-19
发贴数  575
精华贴  7
原创贴  7
来自  
状态  正常

级别  会员
#6»发布于2014-02-11 12:45

回awfixtdm   
1,这个脚本的目的是对于散货在装车备货之时就另外包装好,在包装上直接写上这些散货的客户名称。当送货员送货之时直接送到客户手中,这样可以避免临时装货加快送货员的工作量以及在车内翻箱倒柜最后把车内弄得杂乱--单独的散货可以放在车内固定位置;这在推广新品之时尤其有用--快销品的新品推广常常是量少点多的试销售,客户常常不要整箱而只要一箱中的部分作为尝试。 
 
2,弹窗确实有鸡肋之嫌,这个可以按照各人要求去除,无非就在相应代码之前加上“//”注释完事,如果将来用得着就把“//”去除即可,如果永远不用直接删除; 
 
3,作为备注打印在送货单据上亦不可取。因为有些货品是不允许退换货,而在正常情况下是允许退换货的,这些不允许退换货的产品必须在单据中体现,如果用脚本写下了声明不允许退换货之时,单据的备注信息不可能再写入其他的信息了。这个我有试过。 
int cell_change() 


if(res_cat_id==xxxxxx)//xxxxxx指产品目录,如果是指定的某个产品就把"res_cat_id"改成 
"res_name==xx产品"或者“res_id==xx产品的编码”就行. 
note_info='不退货不换货'; 
}; 
return 1; 

 
4,我在脚本之中也写入到了以日期为文件名的文本文件之中,这个文件是每天或者有开单的日期作为文件名的文本文件;当然,增加业务员或送货员再加上开单日期作为文件名就更加合理了。并且我后来还写了一个脚本,在主菜单中直接打开这个文件,避免了对于电脑不熟悉的开单人员去翻文件夹的麻烦。 
int 分割线(); 

string drawline,addline,today; 
today=get_cur_date(); 
drawline='------------------------'; 
addline='echo '+ drawline+' >> "'+get_home_path()+'\散货记录情况\'+today+'.txt"';//写入到指定目录的文件中 
system(addline); 
 
return 1; 
}; 
 
int func_before_save() 

分割线(); 
分割线();//我是执行两次,就是划出两条分割线,这样两个单据之间就更加清楚 
 
  return 1; 
}; 
 
这个脚本说明:如果想要划几条分割线,就执行几次“分割线()”这个自定义函数。并且放在“int func_before_save()”这里,就是每个有散货的单据得以区分,这个函数是在保存前就执行“分割线()”这个自定义函数。如果想放在其他如审核,打印等等都行,但不建议放在“int cell_change()”之中,不然每修改一行都会触发,也就是都会划线,做不到区分不同单据的目的。; 
以下的脚本是在主菜单添加打开这个以开单日期的项目,在系统功能--主窗口脚本定义: 
int main() 

string today,res; 
today=get_cur_date(); 
res=get_home_path()+'\散货记录情况\'+today+'.txt' 
menu_add_file('N_Top_System',0,'item_run_today_csp','打开今天非整箱或整件文件',res); 
return 1; 

 
 
其实这个脚本是为我自己以及我一个朋友写的(我们都是做调味品批发的,只是在不同的省)。不要把那些个体老板们都想得是电脑高手,他们短期雇佣的人也不会是只开单据的人,他们能够把软件已有的功能用清楚都非常不错了--包括我自己也还没有用清楚这个软件。

这个图是添加了打开散货记录的文本文件的菜单
这是点下“打开今天非整箱或整件文件”的情况

        于 2014-02-11 12:45 被 xwb514 修改




官方认证第三方服务团队  徐文标(福建-流浪) QQ:340298101 V&P :177-5046-4787
服务介绍:http://www.onlyit.cn/onlyit_service.html

三生石  [个人空间]
QQ名  Meng


注册  2005-09-20
发贴数  7383
精华贴  14
原创贴  6
来自  杭州
状态  正常

级别  版主
#7»发布于2014-02-11 13:03

 
很棒! 感谢分享,设为精华+原创了






 三生石上旧精魂 赏月吟风莫要论 惭愧情人远相访 此身虽异性长存 

awfixtdm  [个人空间]


注册  2011-08-18
发贴数  445
精华贴  2
原创贴  5
来自  
状态  正常

级别  版主
#8»发布于2014-02-11 15:08

打了这么多字,不赞一下都不行。个人仅发表下改进意见,真正以实际为主,使用的人最有发言权。上述很好的把自定义函数,oit下的批处理应用跟菜单脚本灵活应用在一起。






QQ:80240800

webshow  [个人空间]


注册  2009-02-09
发贴数  133
精华数  0
原创贴  0
来自  
状态  正常

级别  会员
#9»发布于2014-02-12 12:25

做到数据库文件相对来说会好一些。特别是局域网用户。收藏了。




xwb514  [个人空间]
QQ名  福建流浪(340298101)


注册  2010-03-19
发贴数  575
精华贴  7
原创贴  7
来自  
状态  正常

级别  会员
#10»发布于2014-02-15 15:18

进一步修改脚本: 
1,在原来的基础上增加了一个按日期查找散货记录文件,更加解决了对电脑目录,文件这些基本电脑知道都不熟悉的人查找散货日期; 
2,主菜单项使用了执行定义好的脚本,这个脚本定义了两个菜单“当天散货记录文件”和“按日期查找散货记录文件”。 
 
一,首先在主菜单上修改两个菜单项: 
int main() 

   menu_add_csp('N_Top_System',0,'item_run_today_csp','当天散货记录文件','today_csp'); 
 
   menu_add_csp('N_Top_System',1,'item_run_lookfor_csp','按日期查找散货记录文件','lookfor_csp'); 
  return 1; 
 
return 1; 

//today_csp与lookfor_csp是另外两个脚本 
二,today_csp脚本: 
在主菜单的“配置管理”--“脚本工具”,将以下代码复制粘贴后,另存为today_csp; 
int main() 

  string today,res; 
today=get_cur_date(); 
res='今天的非整箱或非整件的货物保存在'+nl()+get_home_path()+'\散货记录情况\'+today+'.txt' 
res=get_home_path()+'\散货记录情况\'+today+'.txt' 
call_str(res); 
return 1; 
}; 
 
三lookfor_csp脚本: 
在主菜单的“配置管理”--“脚本工具”,将以下代码复制粘贴后,另存为lookfor_csp; 
 
int main() 

  string today,res,nian,yue,ri,resres,mdate; 
 
  inp_clear();   
inp_para_set_title('请选择日期'); 
inp_def_date('mdate','请选择日期'); 
   inp_para(); 
  resres=inp_get_val('mdate'); 
 
nian=str_get_sub(resres,0,4)+'-'; 
yue=str_get_sub(resres,4,2)+'-'; 
ri=str_get_sub(resres,6,2); 
today=nian+yue+ri; 
 
res=get_home_path()+'\散货记录情况\'+today+'.txt'; 
call_str(res); 
 
return 1; 
 
}; 
 
这两个脚本都使用了call_str这个函数来解决打开文件,这个比调用system或shell更加好用,system或shell只能打开有限次的指定文件,然后就一闪而过什么结果都没有。


        于 2014-02-15 15:18 被 xwb514 修改




官方认证第三方服务团队  徐文标(福建-流浪) QQ:340298101 V&P :177-5046-4787
服务介绍:http://www.onlyit.cn/onlyit_service.html

afoo  [个人空间]
QQ名  常德-ZEN


注册  2010-04-08
发贴数  207
精华贴  6
原创贴  6
来自  常德-ZEN
状态  正常

级别  会员
#11»发布于2014-03-05 11:13

这个必须收藏,多谢楼主分享!






官方认证第三方服务团队  蒋逸凡(常德-ZEN) QQ:50636277 微信FrankBZE
服务介绍: http://www.onlyit.cn/user_show_topic?user_id=13498&topic_id=79894&topic_page_id=1

laughtiger  [个人空间]
QQ名  天天笑


注册  2011-05-06
发贴数  76
精华数  0
原创贴  0
来自  
状态  正常

级别  会员
#12»发布于2014-03-12 10:08

能解决实际问题的好办法,赞一个。




xwb514  [个人空间]
QQ名  福建流浪(340298101)


注册  2010-03-19
发贴数  575
精华贴  7
原创贴  7
来自  
状态  正常

级别  会员
#13»发布于2014-04-17 09:18

随着对脚本的熟悉,重写了这个脚本,新脚本不放在int cell_change()里,而是放在 int func_before_check()里,同时把划线也放在了同一个自定义函数里,这样可以避免因为多次操作划多次线和多次向指定文件写数据,也可以避免了在修改表格数据的时候多次出现写文件的操作. 
int 散货记录() 

int i,rec_num; 
string today,comuid,salman,drawline,addline,resres,res1; 
string resname,resnum,resunit; 
 
today=get_cur_date();//读取当前日期,将当前日期作为散货记录的文件名 
comuid=gui_get_text('ComboBox_Ext_Eba_Id');//获取当前单据的客户名称 
salman=gui_get_text('ComboBox_Ext_Emp_Id');//获取业务员的名称,日期与业务员组合成记录文本文件的名称,每天一个文件名. 
 
grid_seek("MG_Item","res_id","");//定位这个单据有几行数据,如果没有这一行,将会循环22次,增加程序的执行效率.感谢小麦. 
 
 
//以下代码为判断表格中没有整件或者整箱 
rec_num=grid_cur_row("MG_Item")-1; 
for(i=1;i<=rec_num;i++) 
  { 
        resunit=grid_get_v('MG_Item','inp_unit_type_name',i); 
          if(resunit!="件"&&resunit!="箱") 
          { 
        //以下代码把没有整件或者整箱的数据写入到指定文件中 
        resname=grid_get_v('MG_Item','res_name',i); 
        resnum=grid_get_v('MG_Item','inp_num',i); 
        resres=resname+'  '+resnum+resunit; 
 
        res1='echo '+ comuid+'的'+resres+' >> "'+get_home_path()+'\散货记录情况\'+today+salman+'.txt"';//写入到指定目录的文件中 
       system(res1); 
      } 
 
  } 
 
   //以下代码是划线 
   drawline='----------------------------------------------------------------------------'; 
      addline='echo '+ drawline+' >> "'+get_home_path()+'\散货记录情况\'+today+salman+'.txt"';//写入到指定目录的文件中 
      system(addline); 
      system(addline); 
 
 
return 1; 

 
int func_before_check() 

散货记录(); 
return 1; 
}


        于 2014-04-17 09:18 被 xwb514 修改




官方认证第三方服务团队  徐文标(福建-流浪) QQ:340298101 V&P :177-5046-4787
服务介绍:http://www.onlyit.cn/onlyit_service.html

wbjjzhu  [个人空间]


注册  2012-08-22
发贴数  102
精华数  0
原创贴  1
来自  
状态  正常

级别  会员
#14»发布于2018-05-07 23:34

很实用的脚本




htc  [个人空间]


注册  2017-12-30
发贴数  538
精华数  0
原创贴  0
来自  
状态  正常

级别  会员
#15»发布于2018-05-08 11:39

回复5楼,怎样能免费发短信?





 16  1/2   1  2  >  >|  

登录后方可发贴


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