分享_客户销售超期提醒_使用经验
学习.交流
专业源于专注
www. onlyit. cn   
学习交流 文件下载 手册资料 交流QQ群

    

 9  1/1   1  
作者
内容
summer  [个人空间]
QQ名  summer


注册  2009-09-08
发贴数  637
精华贴  9
原创贴  7
来自  
状态  正常

级别  会员
#1»发布于2022-10-02 12:37

客户比较多时,对超过一定天数没有销售订单记录客户让业务员回访。结合客户联系模块使用效果更好。



附件(登录后才可下载):2210021237_17.txt  说明: 原文件:17.3客户销售超期提醒.txt   大小:13101 Byte

        于 2022-10-02 12:37 被 summer 修改




官方认证第三方服务团队  夏延明 QQ:15932787 13776070373
服务介绍: http://www.onlyit.cn/user_home?user_id=10304

qf2016  [个人空间]
QQ名  meng 113779009


注册  2016-01-17
发贴数  2281
精华数  0
原创贴  0
来自  
状态  正常

级别  版主
#2»发布于2022-10-13 19:56

 
自定义表单的一个应用例子。




林先生  [个人空间]


注册  2022-05-21
发贴数  18
精华数  0
原创贴  0
来自  
状态  正常

级别  会员
#3»发布于2023-01-09 10:14

这个附件打开显示是乱码。。。我是我浏览器的问题吗




XCDZ  [个人空间]


注册  2010-04-20
发贴数  1240
精华贴  2
原创贴  1
来自  
状态  正常

级别  会员
#4»发布于2023-01-09 10:47

图片看不清,脚本也是乱码






天道酬勤,勤能补拙!

summer  [个人空间]
QQ名  summer


注册  2009-09-08
发贴数  637
精华贴  9
原创贴  7
来自  
状态  正常

级别  会员
#5»发布于2023-01-09 14:06

客户比较多时,对超过一定天数没有销售订单记录客户让业务员回访。结合客户联系模块使用效果更好。








官方认证第三方服务团队  夏延明 QQ:15932787 13776070373
服务介绍: http://www.onlyit.cn/user_home?user_id=10304

summer  [个人空间]
QQ名  summer


注册  2009-09-08
发贴数  637
精华贴  9
原创贴  7
来自  
状态  正常

级别  会员
#6»发布于2023-01-09 14:07

脚本要另存为下载就没有乱码了








官方认证第三方服务团队  夏延明 QQ:15932787 13776070373
服务介绍: http://www.onlyit.cn/user_home?user_id=10304

voa  [个人空间]


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

级别  会员
#7»发布于2023-01-13 15:25

这个厉害,感谢无私分享。加入收藏,慢慢学习。




suan228  [个人空间]


注册  2014-06-12
发贴数  15
精华数  0
原创贴  0
来自  
状态  正常

级别  会员
#8»发布于2023-02-05 08:32

请问怎么另存为呢




summer  [个人空间]
QQ名  summer


注册  2009-09-08
发贴数  637
精华贴  9
原创贴  7
来自  
状态  正常

级别  会员
#9»发布于2023-02-11 19:58

 
int row_number_id(int select_area_id,string sort_ext,string item_row_ext)  //数据区分组标识行号:参数:目标数据编号,排序列集合,分组列集合(注意最3列数据分组) 

  //选择目标数据编号 
  db_select_area(select_area_id) 
  //对数据排序 
  db_sort_ext(sort_ext); 
  //把排序列列名提取出来,去了排序字段和空白内容 
  string field_ext; 
  field_ext=str_replace(item_row_ext,"desc",""); 
  field_ext=str_replace(field_ext," ",""); 
  //dbg(field_ext); 
  //解析列串,写入3个具体列名 
  string field_id_1,field_id_2,field_id_3; 
    if(str_pos(field_ext,",")==-1){ 
         field_id_1=field_ext; 
       }else{ 
         field_id_1=str_get_sub_n(field_ext,0,str_pos(field_ext,",")); 
         field_ext=str_replace(field_ext,field_id_1+",",""); 
    } 
  //dbg(field_id_1+"      "+field_ext) 
 
    if(str_pos(field_ext,",")==-1){ 
         field_id_2=field_ext; 
       }else{ 
         field_id_2=str_get_sub_n(field_ext,0,str_pos(field_ext,",")); 
         field_ext=str_replace(field_ext,field_id_2+",",""); 
    } 
  //dbg(field_id_2+"      "+field_ext) 
 
    if(str_pos(field_ext,",")==-1){ 
         field_id_3=field_ext; 
       }else{ 
         field_id_3=str_get_sub_n(field_ext,0,str_pos(field_ext,",")); 
         field_ext=str_replace(field_ext,field_id_3+",",""); 
    } 
  //dbg(field_id_3+"      "+field_ext) 
 
  //增加一列 整数型行号 
  db_add_field("row_id"); 
  db_set_field_type_s("row_id","I"); 
  //开始根据分组列 标识行号 
  string field_id_val1,field_id_val2,field_id_val3; //列名值 
  int row_id_add; 
    row_id_add=1; 
 int n,id; 
  n = db_row_count();  // SQL检索出报表  提取报表行数 
     for(id=1;id<=n;id++) { 
            if(id==1){ 
            field_id_val1=db_res_ext(field_id_1); 
      field_id_val2=db_res_ext(field_id_2); 
          field_id_val3=db_res_ext(field_id_3); 
       db_set_value_ext("row_id",row_id_add); 
      row_id_add++; 
    }else{ 
            if(field_id_val1==db_res_ext(field_id_1)&&field_id_val2==db_res_ext(field_id_2)&&field_id_val3==db_res_ext(field_id_3)){ 
                db_set_value_ext("row_id",row_id_add); 
        row_id_add++ 
             }else{ 
    //dbg(field_id_val1+"*"+db_res_ext(field_id_1)+"  "+field_id_val2+"*"+db_res_ext(field_id_2)+"  "+field_id_val3+"*"+db_res_ext(field_id_3)) 
                row_id_add=1; 
                field_id_val1=db_res_ext(field_id_1); 
        field_id_val2=db_res_ext(field_id_2); 
              field_id_val3=db_res_ext(field_id_3); 
           db_set_value_ext("row_id",row_id_add); 
        row_id_add++; 
             }; 
        }; 
     db_next(); 
     }; 
  return 1; 
}; 
 
 //提取数据区分组标识行号:参数:目标数据编号,开始编号,结束编号 
int extract_row_number_id(int select_area_id,int beg_id,int end_id) 

      //选择目标数据编号 
   db_select_area(select_area_id) 
   db_go_head(); 
   int n,id; 
    n = db_row_count();  // SQL检索出报表  提取报表行数 
    for(id=1;id<=n;id++) 
  { 
         int row_id; 
         row_id=db_res_ext("row_id"); 
         if(row_id>=beg_id&&row_id<=end_id){ 
          db_next(); 
          }else{ 
            db_del_row(); 
        }; 
    }; 
return 1; 
}; 
 
//按列汇总-汇总为字符串拼接 根据实际情况修改内容 
int db_subtotal_one_str(string db_subname,string db_totalname) 

   //数据区分类汇总-单列分类,单列汇总 
  db_sort_ext(db_subname+" desc"); 
  //db_show(); 
  db_go_head(); 
  int ext_db_row_id; 
  string ext_db_subname; 
 
  string ext_db_totalname,ext_total; 
  ext_db_subname=db_res_ext(db_subname); 
  ext_db_totalname=""; 
  ext_total=""; 
  ext_db_row_id=db_row_id(); 
  db_next(); 
  //当前行号,分类名字,汇总数量 
  int n;  //定义整数  报表行数 
  int id;  //定义整数  循环条件初始化数 
  n = db_row_count();  // SQL检索出报表  提取报表行数 
  for(id=1;id<n;id++) 
  { 
        if(ext_db_subname==db_res_ext(db_subname)) 
       { 
          ext_db_totalname=db_res_ext(db_totalname); 
          db_del_row(); 
          db_go_row(ext_db_row_id); 
          ext_total=db_res_ext(db_totalname); 
          db_set_value_ext(db_totalname,ext_db_totalname+nl()+ext_total); 
       } 
       else 
      { 
       ext_db_subname=db_res_ext(db_subname); 
       ext_db_totalname=""; 
       ext_total=""; 
       ext_db_row_id=db_row_id(); 
     }; 
            db_next(); 
   }; 
   //db_show(); 
 
  return 1; 
}; 
 
//发信息给操作员 
int msg_user_tip() 

     db_select_area(0); 
     string eba_id;     //客户编号 
   string msg_user;  //操作员 
     string msg_info;  //发信息备注 
   string sell_duration //间隔天数 
   string tip_val; 
   //把符合条件的记录 进入下步----发信息给哪个操作员--客户资料里业务员对应的操作员 
 
   //插入提醒列表 
   db_go_head(); 
   int n,id; 
   n = db_row_count();  // SQL检索出报表  提取报表行数 
   for(id=1;id<=n;id++) 
   { 
      //dbg(id) 
      eba_id=db_res_ext("eba_id"); 
    msg_user=db_res_ext("msg_user"); 
    msg_info=db_res_ext("msg_info"); 
    sell_duration=db_res_ext("sell_duration"); 
    tip_val=db_res_ext("tip_val"); 
 
    db_select_area(1); 
    //插入客户联系列表-------------------------由客户联系模块来提醒 
    int touch_id;  //提取序号 
    //touch_id=db_get_sequence("seq_sys_id"); 
    string sql; 
    sql="update app_sequence set seq_val=seq_val+1 where seq_name='seq_sys_id'"; 
    db_run(sql); 
    db_run("commit"); 
      sql="select seq_val from app_sequence where seq_name='seq_sys_id'"; 
      db_run(sql); 
    touch_id=db_res_ext("seq_val"); 
 
    db_select_area(3); 
    string sql; 
    sql="delete from crm_touch where touch_id="+touch_id; 
    //dbg(sql) 
    db_run(sql); 
 
    sql="insert into crm_touch" 
    sql+="(touch_id,eba_id,linkman_id,linkman,title,note_info,touch_purpose,touch_type," 
    sql+="touch_date,touch_time,plan_touch_date,state,create_date,create_user_id,dept_id,emp_id,service_id,user_id) " 
    sql+="values("+touch_id+",'"+eba_id+"','','','客户超出销售间隔','"+tip_val+"','A','A'," 
    sql+="'"+get_next_date(get_cur_date_std())+"','080000','"+get_next_date(get_cur_date_std())+"','A','"+get_cur_date_std()+"','admin','','','','"+msg_user+"')" 
    //dbg(sql) 
    db_run(sql); 
 
    db_select_area(1); 
    int vou_id;  //提取序号 
    //vou_id=db_get_sequence("seq_remind_obj"); 
    string sql; 
    sql="update app_sequence set seq_val=seq_val+1 where seq_name='seq_remind_obj'"; 
    db_run(sql); 
    db_run("commit"); 
      sql="select seq_val from app_sequence where seq_name='seq_remind_obj'"; 
      db_run(sql); 
      vou_id=db_res_ext("seq_val"); 
      //dbg("vou_id: "+vou_id) 
 
    db_select_area(3); 
    //插入提醒列表 
    string sql; 
    sql="insert into ut_remind_mup_obj_list (obj_id,oper_type,key_id,ext_info,user_id,log_date,log_time,msg_obj_info,vou_id) " 
    sql+="values ('eba','A01','"+eba_id+"','"+dt_get_name("eba",eba_id)+"','"+msg_user+"','" 
    sql+=get_cur_date_std()+"','"+get_cur_time_std()+"','"+msg_info+"',"+vou_id+")" 
    //dbg(sql) 
    db_run(sql); 
 
 
    db_select_area(0); 
      db_next(); 
   }; 
 
 
   /* 
   //按操作员进行提示信息汇总-------------------------由系统内部提示模块 
   db_subtotal_one_str("msg_user","tip_val"); 
   //db_show() 
 
   //发信息给操作员 
   db_select_area(0); 
   db_go_head(); 
   int n,id; 
   n = db_row_count();  // SQL检索出报表  提取报表行数 
   for(id=1;id<=n;id++) 
   { 
    //发信息 
    tip_val=db_res_ext("tip_val"); 
    send_msg_and_obj(db_res_ext("msg_user"),tip_val,"eba",db_res_ext("eba_id")); 
    db_next(); 
   }; 
   */ 
 
  return 1; 
}; 
 
int main() 

   file_write(get_home_path()+'\客户销售超期提醒日志.txt',nl()+get_cur_date()+" "+get_cur_time()+" 客户销售超期提醒开始:--->"); 
 
 
   /* 
   //app_sequence 表里增加 seq_remind_obj   ,提醒列表里序号取这个字段 
   insert into app_sequence(seq_name,seq_val) values('seq_remind_obj',0) 
   select * from app_sequence 
 
   //把客户对应 营销区域定义默认业务员->操作员里对应业务员 
   string dt_sql; 
   dt_sql="select a.eba_id,a.emp_id as eba_emp_id,b.emp_id as service_emp_id,c.user_id " 
   dt_sql+="from eba a,eba_service b,mup_user c where a.service_id=b.service_id and b.emp_id=c.emp_id " 
  */ 
 
   //把客户对应 营销区域定义默认业务员生成字典 
   db_select_area(1); 
   string dt_sql; 
   dt_sql="select a.eba_id,b.emp_id,a.service_id,a.emp_id as eba_emp_id,b.emp_id as service_emp_id from eba a,eba_service b where a.service_id=b.service_id " 
   dt_define("my_eba_emp",dt_sql); 
    //把营销区域定义默认业务员生成字典 
   db_select_area(2); 
   dt_sql="select emp_id,user_id from mup_user where emp_id<>'' " 
   dt_define("my_user_emp",dt_sql); 
 
  //按客户分类:提醒和单据日期取最近一次记录 
  db_select_area(0); 
  string sql_max_date; 
  sql_max_date="select f.key_id,max(f.log_date) as log_date from (" 
  //提取当前日期之前的最近提醒记录 :A01 销售订单间隔日期提醒 
  sql_max_date+="select a.key_id,max(a.log_date) as log_date from ut_remind_mup_obj_list a " 
  sql_max_date+="where a.obj_id='eba' and a.oper_type='A01' and a.log_date<=convert(varchar(8),getdate(),112) " 
  sql_max_date+="group by a.key_id  " 
  sql_max_date+="UNION ALL " 
  //提取当前日期之前的最近单据日期 
  sql_max_date+="select b.eba_id,max(a.voucher_date) as voucher_date from (ebs_v a inner join ebs_vr b on a.voucher_id=b.voucher_id) " 
  sql_max_date+="where a.voucher_type='BA' and a.state in('B','C') and a.voucher_date<=convert(varchar(8),getdate(),112) " 
  sql_max_date+="group by b.eba_id  " 
  sql_max_date+=") as f " 
  sql_max_date+="group by key_id " 
  //dbg(sql_max_date) 
 
  //客户间隔日期计算出 最早的提醒或单据日期 比如 当前为20221001 间隔天数为:10  最早日期为:20220901. 只要小于0901号的记录就要提醒了。 
  string sql; 
  sql="select eba_id,eba_grade,sell_duration,duration_day_date," 
  sql+="key_id,isnull(log_date,'') as log_date,'' as msg_user,'' as msg_info,'' as tip_val from " 
  sql+="(select eba_id,eba_grade,sell_duration," 
  sql+="convert(varchar(8),getdate(),112) as day_date,convert(varchar(8),dateadd(DAY,-1*sell_duration,getdate()),112) as duration_day_date " 
  sql+="from eba where sell_duration>0 and state in ('A','B','C')) as y "    //客户状态限制一下sql+="left join " 
  sql+="("+sql_max_date+") as x " 
  sql+="on y.eba_id=x.key_id " 
  sql+="where y.duration_day_date> isnull(log_date,'') " 
  //dbg(sql) 
  db_run(sql); 
  file_write(get_home_path()+'\客户销售超期提醒日志.txt'," "+nl()+" "+sql+" "+nl()+" "); 
 
  //把符合条件的记录 进入下步----发信息给哪个操作员--客户资料里业务员对应的操作员 
   db_go_head(); 
   int n,id; 
   n = db_row_count();  // SQL检索出报表  提取报表行数 
file_write(get_home_path()+'\客户销售超期提醒日志.txt'," "+nl()+" "+n+" "+nl()+" "); 
   for(id=1;id<=n;id++) 
   { 
     string eba_id; 
   eba_id=db_res_ext("eba_id"); 
     string eba_emp;  //客户营销区域里业务员编号 
   eba_emp=dt_get_name("my_eba_emp",eba_id); 
   string user_emp;  //操作员里对应业务员 
   user_emp=dt_get_name("my_user_emp",eba_emp); 
   //dbg(eba_emp+"  *  "+user_emp); 
   //有对应操作员写入编号,否则就删除当前记录 
     if(user_emp!="") 
   { 
     //客户级别如果是空白,就写入z最低级别 
     if(db_res_ext("eba_grade")=="") 
     db_set_value_ext("eba_grade","Z"); 
 
       db_set_value_ext("msg_user",user_emp); 
     db_set_value_ext("msg_info",eba_emp+"->"+user_emp); 
       db_set_value_ext("tip_val",eba_id+" 客户:"+dt_get_name("eba",eba_id)+" 超出销售间隔 "+db_res_ext("sell_duration")+" 天!");     //通知信息内容 
 
 
       file_write(get_home_path()+'\客户销售超期提醒日志.txt'," "+nl()+" "+id+" "+nl()+" "+eba_id+" 客户:"+dt_get_name("eba",eba_id)+" 超出销售间隔 "+db_res_ext("sell_duration")+" 天!"+" "+eba_emp+"->"+user_emp); 
     db_next(); 
   } 
   else 
   { 
     db_del_row(); 
   }; 
 
   }; 
   db_sort_ext('msg_user,eba_grade,sell_duration,key_id');   //按操作员,客户级别,间隔天数,客户编号 排序 
   //db_show(); 
   //一个操作员负责客户:一次只提醒20个记录太多了 也跟进不了。 
   //实例:把数据区表内按产品编号排序和按产品编号分组给序号 
   row_number_id(0,'msg_user,eba_grade,sell_duration,key_id','msg_user'); 
   //数据区分组标识行号:参数:目标数据编号,开始编号,结束编号 
   extract_row_number_id(0,1,20) 
   //db_show(); 
 
  //发信息给操作员-一行一个提醒信息 
  msg_user_tip(); 
 
  file_write(get_home_path()+'\客户销售超期提醒日志.txt',get_cur_date()+" "+get_cur_time()+" 客户销售超期提醒结束"); 
  return 1; 
};






官方认证第三方服务团队  夏延明 QQ:15932787 13776070373
服务介绍: http://www.onlyit.cn/user_home?user_id=10304


 9  1/1   1  

登录后方可发贴


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