//加工单--脚本内容 //加工单--脚本内容 //根据成本单价修改单据金额 int init_row()//新增记录时执行 { string y,sql num dj y = res_id sql='select cost_price from res where res_id="'+y+'"';//查找成本单价 db_run(sql)//运行数据库 dj=db_res(state)/100 //结果赋值 //msg(dj) if(dj>0) { inp_price = dj inp_amount = inp_num * dj total_amount = inp_num * dj } //msg(y) return 1 } int cell_change()//函数在单据明细内容被修改的时候执行。 { int id string y,sql num cb,dj,je id=grid_cur_row('MG_Item')//获取当前行号 //msg(id) y=grid_get_v('MG_Item','res_id',id)//获取当前行产品编号 //msg(y) sql='select cost_price from res where res_id="'+y+'"';//查找成本单价 //msg(sql) db_run(sql)//运行数据库 dj=db_res(state)/100//结果赋值 //msg(dj) if(dj>0) { grid_set_v('MG_Item','inp_price',id,dj)//设置单价 je=grid_get_v('MG_Item','inp_num',id)*dj //msg(je) grid_set_v('MG_Item','inp_amount',id,je)//设置金额 grid_set_v('MG_Item','total_amount',id,je)//设置金额 } } //将批次编号添入备注首,以方便在列表中查询 int func_before_save() //保存前执行 { int no,na,id,pd string d,i,n,l,m, //以下内容主数据为0不能保存 no=gui_get_val("Edit_Main_Res_Num") //获取控件内容gui_get_val(控件名 加工数量"Edit_Main_Res_Num") if(no==0) { msg("主数据加工数量为0,单据不能保存!!") can_save=0 //不保存 return 1; } d=gui_get_val("DateTimePicker_Date_Lmt_Res") //获取控件内容gui_get_val(控件名 交付期限"DateTimePicker_Date_Lmt_Res") gui_set_val("MDate_Main_Res_Produce_Date",d) //设置控件内容gui_set_val(控件名 批次日期"MDate_Main_Res_Produce_Date",内容) i=gui_get_val("Edit_Main_Res_Batch_No") //获取控件内容gui_get_val(控件名"主物资"中的"批次号") if(i=="" || i=="-") { d=gui_get_val("Edit_Voucher_No") //获取控件内容gui_get_val(控件名 单据编号"Edit_Voucher_No") gui_set_val("Edit_Main_Res_Batch_No",d) //设置控件内容gui_set_val(控件名 批次编号"Edit_Main_Res_Batch_No",内容) } n=gui_get_val("Edit_Voucher_No")+"~"+gui_get_val("Edit_Main_Res_Id_Show") +"~"+dt_get_name("res",gui_get_val("ComboBox_Ext_Main_Res_Id"))+"~"+gui_get_val ("Edit_Main_Res_Num")+"~"; //获取控件内容gui_get_val(控件名"主物资"中的"单据编号") l=gui_get_val("Edit_Note") //获取控件内容gui_get_val(控件名"主物资"中的"备注") if(strncmp(n,l,strlen(n))!="0") //比较2个字符串前几个字符的大小strncmp(串1,串2,比较长度计算字符串的长度strlen(字符 串) { m=n+l gui_set_val("Edit_Note",m) //设置控件内容gui_set_val(控件名 备注"Edit_Note",内容) } grid_seek("MG_Item","res_id","") //表格中从头开始查找某列值匹配的行grid_seek(表格的名称、列名、要查找的值)1:找到 并定位到该行。0:未找到 na=grid_cur_row("MG_Item")-1 //获取当前行行号 for(id=na;id>0;id--) //设id=记录总数循环,当id>0时执行循环,每执行一次递减 { if(grid_get_v('MG_Item','inp_num',id)=="0"&&grid_get_v ('MG_Item',"total_amount",id)=="0"&&grid_get_v('MG_Item',"checked_item_note",id) =="") //如果数量'inp_num'=0并金额"inp_amount"=0并事后备注"checked_item_note"=0 { //是 pd=confirm("明细数据,第"+id+"条,数据无效,是否删除?") //弹出判断窗口并把结果复值给pd if(pd==1) { grid_del_row('MG_Item',id) //删除行 } else { can_save=0 //不保存 return 1; } } } return 1; } ____________________________________________________________________ //装配零用单 //根据成本单价修改单据金额 int init_row()//新增记录时执行 { string y,sql num dj y = res_id sql='select cost_price from res where res_id="'+y+'"';//查找成本单价 db_run(sql)//运行数据库 dj=db_res(state)/100 //结果赋值 //msg(dj) if(dj > 0) { inp_price = dj inp_amount = inp_num * dj total_amount = inp_num * dj } //msg(y) return 1 } int cell_change()//函数在单据明细内容被修改的时候执行。 { int id string y,sql num cb,dj,je id=grid_cur_row('MG_Item')//获取当前行号 //msg(id) y=grid_get_v('MG_Item','res_id',id)//获取当前行产品编号 //msg(y) sql='select cost_price from res where res_id="'+y+'"';//查找成本单价 //msg(sql) db_run(sql)//运行数据库 dj=db_res(state)/100//结果赋值 //msg(dj) if(dj > 0) { grid_set_v('MG_Item','inp_price',id,dj)//设置单价 je=grid_get_v('MG_Item','inp_num',id)*dj //msg(je) grid_set_v('MG_Item','inp_amount',id,je)//设置金额 grid_set_v('MG_Item','total_amount',id,je)//设置金额 } } //当项目为"已完成"时不能保存单据 int func_before_save() //保存前执行 { string d,sql,n //字符型变量定义 d=gui_get_val("ComboBox_Ext_Project_Id") //获取控件内容gui_get_val(控件名 相关项目"ComboBox_Ext_Project_Id") sql='select state from pm_project where project_id="'+d+'"'; //select(查找)state(列名)from(在)pm_project(表中)where(条件为)project_id(字段)=变量 db_run(sql); //运行sql语句 n=db_res(state) //结果付值给n if(!(n=='A' || n=="")) { msg('该项目已完成,不能保存出库') can_save=0 } return 1; } ------------------------------------------- //组装单脚本 int init_row()//新增记录时执行 { //根据成本单价修改单据金额 string y,sql //字符型变量定义 num dj //数值型变量定义 y = res_id sql='select cost_price from res where res_id="'+y+'"'; //查找成本单价 db_run(sql) //运行数据库 dj=db_res(state)/100 //结果赋值 //msg(dj) if(dj>0) { inp_price = dj inp_amount = inp_num * dj total_amount = inp_num * dj } //msg(y) //根据产品组成,在明细表中添写"工序" int m,n string m_res_id,s,x; grid_seek('MG_Item','emf_process_id_zzd',''); //定位 m=grid_cur_row('MG_Item') //取行号 x=grid_get_v('MG_Item','res_id',m) //取字段内容 //msg(m+" "+x) if (x!="") { n=m-1 //msg(m+" "+n+" "+x) m_res_id = gui_get_val("ComboBox_Ext_Main_Res_Id"); //取主物资编码 s= "select emf_process_id from res_composing where res_id = '"+ m_res_id + "' and order_id ="+ n db_run(s); //根据主物资和当前行的明细物资找到工序 if ( db_res(0) != "" ) { emf_process_id_zzd = db_res(0); //将工序写入"工序字段 emf_process_id_zzd.map = dt_get_name("emf_process",db_res(0)); //将工序写入"工序字段 //msg(emf_process_id_zzd +'/'+ emf_process_id_zzd.map) } else if ( m == 1 ) { emf_process_id_zzd= '001' emf_process_id_zzd.map= dt_get_name("emf_process",'001') //msg(emf_process_id_zzd +'/'+ emf_process_id_zzd.map) } else { n=m-1 emf_process_id_zzd = grid_get_v('MG_Item','emf_process_id_zzd', n) emf_process_id_zzd.map = dt_get_name("emf_process",grid_get_v('MG_Item','emf_process_id_zzd', n)) //msg(emf_process_id_zzd +'/'+ emf_process_id_zzd.map) } } return 1; } //根据成本单价修改单据金额 int cell_change()//函数在单据明细内容被修改的时候执行。 { int id string y,sql num cb,dj,je id=grid_cur_row('MG_Item') //获取当前行号 //msg(id) y=grid_get_v('MG_Item','res_id',id) //获取当前行产品编号 //msg(y) sql='select cost_price from res where res_id="'+y+'"'; //查找成本单价 //msg(sql) db_run(sql) //运行数据库 dj=db_res(state)/100 //结果赋值 //msg(dj) if(dj > 0) { grid_set_v('MG_Item','inp_price',id,dj) //设置单价 je=grid_get_v('MG_Item','inp_num',id)*dj //msg(je) grid_set_v('MG_Item','inp_amount',id,je) //设置金额 grid_set_v('MG_Item','total_amount',id,je) //设置金额 } } int func_before_save()//保存前执行 { //当项目不为"正在进行"时,不能保存单据 string d,sql,n //字符型变量定义 d=gui_get_val("ComboBox_Ext_Project_Id") //获取控件内容gui_get_val(控件名 相关项目"ComboBox_Ext_Project_Id") sql='select state from pm_project where project_id="'+d+'"'; //select(查找)state(列名)from(在)pm_project(表中)where(条件为)project_id(字段)=变量 db_run(sql); //运行sql语句 n=db_res(state) //结果付值给n if(!(n=='A' || n=="")) { msg('该项目处于“'+dt_get_name("pm_project_state",n)+'”状态,不能保存') //获取字典意义dt_get_name(字典名"pm_project_state",编号n) can_save=0 return 1; } //在备注中添加信息以方便查询 string bz,bz1,bz2 bz2=dt_get_name("pm_project",gui_get_val("ComboBox_Ext_Project_Id")) //获取控件内容gui_get_val(相关项目"ComboBox_Ext_Project_Id") bz1=gui_get_val("Edit_Note") //获取控件内容gui_get_val(控件名"主物资"中的"备注") if(strncmp(bz2,bz1,strlen(bz2))!="0") //比较2个字符串前几个字符的大小strncmp(串1,串2,比较长度计算字符串的长度strlen(字符 串) { bz=bz2+"~"+bz1 gui_set_val("Edit_Note",bz) //设置控件内容gui_set_val(控件名 备注"Edit_Note",内容) } //保存前判断数据是否完整 int na,id,pd,no; no=gui_get_val("Edit_Main_Res_Num") //获取控件内容gui_get_val(控件名 加工数量"Edit_Main_Res_Num") if(no==0) { msg("主数据加工数量为0,单据不能保存!!") can_save=0 //不保存 return 1; } grid_seek("MG_Item","res_id","") //表格中从头开始查找某列值匹配的行grid_seek(表格的名称、列名、要查找的值)1:找到并定位到该行。0:未找到 na=grid_cur_row("MG_Item")-1 //获取当前行行号 //msg(na) for(id=na;id>0;id--) //设id=记录总数循环,当id>0时执行循环,每执行一次递减 { //msg(id) if(grid_get_v('MG_Item','inp_num',id)=="0" || grid_get_v('MG_Item',"emf_process_id_zzd.map",id)=="") //如果数量'inp_num'=0并事后备注"emf_process_id_zzd.map"=空白 { pd=confirm("明细数据,第"+id+"条,数据无效,是否删除?") //弹出判断窗口并把结果复值给pd if(pd==1) { grid_del_row('MG_Item',id) //删除行 } else { can_save=0 //不保存 return 1; } } } return 1; } //检查产品组成,与单据明细是否一至,并提示更新 int func_after_check()//审核后执行 { //1 string a0 int x,m,m0,k,j,found,n,pd0,pd1,pd2,pd3; //整型变量定义 float m_std_num,s_std_num,factor; //浮点变量定义 string s,s0,s1,m_res_id,s_res_id,ins_sql,s_note_info,s_zzd,yzm0,data0,user0; //字符变量定义 //审核之后更新产品组成 m_res_id = gui_get_val("ComboBox_Ext_Main_Res_Id"); //取主物资编码 m_std_num = gui_get_val("Edit_Main_Res_Num"); //取主物资基准数量 grid_seek('MG_Item','res_id',''); //定位 j=grid_cur_row('MG_Item')-1; //取出明细物资列表最大的行号 for (m=1;m<=j;m++) //循环取每一个明细物资 { //2 n=m-1 s_res_id = grid_get_v('MG_Item','res_id',m); //取此明细物资编码 s_std_num = grid_get_v('MG_Item','std_num',m); //取此明细物资基准数量 s_note_info = grid_get_v('MG_Item','note_info',m); //取此明细物资明细备注 s_zzd = grid_get_v('MG_Item','emf_process_id_zzd',m) //取此明细物资工序 factor = s_std_num/m_std_num ; //计算明细组成数量 //msg(s_res_id+' '+s_std_num+' '+m_std_num+' '+s_note_info+' '+factor); s="select sub_res_id,num,note_info,emf_process_id from res_composing where res_id = '" + m_res_id + "' and order_id = " + n db_run(s) //msg(db_res(0)+" "+db_res(1)+" "+db_res(2)+" "+db_res(3)) if ( s_res_id == db_res(0) && to_float(factor) == to_float(db_res(1)) && s_note_info == db_res(2) && s_zzd == db_res(3) ) { //3 } //3 else { //3 pd0 = confirm('"明细数据"与默认"产品组成"不一至,是否将本单据"明细数据"更新为默认"产品组成? ') if(pd0==1) { //4 do { //5 pd3 = confirm('警告:以下操作会更新数据库内容,操作后的内容是不可逆的,如果您不了解本次操作的后果,建议您"取消"本次操作!!!') if(pd3==1) { //3 inp_clear(); inp_def_string('yzm','录入验证码:') inp_para_set_title('录入 更新 后,点击 确定 更新产品组成') pd1=inp_para() if(pd1==1)//判断3 { //7 yzm0=inp_get_val('yzm') //msg(yzm0) if(yzm0 == '更新')//判断2 { //8 //msg('y') s0 =" delete from res_composing where res_id = '" + m_res_id + "'" db_run(s0) for (m0=1;m0<=j;m0++) { n=m0-1 s_res_id = grid_get_v('MG_Item','res_id',m0);//取此明细物资编码 s_std_num = grid_get_v('MG_Item','std_num',m0); //取此明细物资基准数量 s_note_info = grid_get_v('MG_Item','note_info',m0); //取此明细物资明细备注 s_zzd = grid_get_v('MG_Item','emf_process_id_zzd',m0)//取此明细物资工序 factor = s_std_num/m_std_num ; //计算明细组成数量 ins_sql="insert into res_composing (res_id,sub_res_id,num,note_info,order_id,emf_process_id) values ('"+m_res_id+"','"+ s_res_id+"',"+factor+",'"+s_note_info+"',"+n+",'"+s_zzd+"')" db_run(ins_sql) //dbg(ins_sql) } data0=get_cur_date_std() user0=get_user_id() s1="Update res set last_modi_date = '" + data0 + "' , last_modi_user_id = '" + user0 + "' where res_id = '" + m_res_id + "'" db_run(s1) //dbg(s1) msg('"产品组成"更新完毕!"') return 1; } //8 else { //8 //msg('n') pd2=confirm('您录入的验证内容不正确,是否重新录入')//判断1 if(pd2==1) { //9 } //9 } //8 } //7 else { //7 return 1; } //7 } //6 else { //6 return 1; } //6 } //5 while(pd2==1) } //4 else { //4 return 1; } //4 } //3 } //2 return 1; } //1 //组装领用单 int func_before_save()//保存前执行 { //当项目不为"正在进行"时,不能保存单据 string d,sql,n //字符型变量定义 d=gui_get_val("ComboBox_Ext_Project_Id") //获取控件内容gui_get_val(控件名 相关项目"ComboBox_Ext_Project_Id") sql='select state from pm_project where project_id="'+d+'"'; //select(查找)state(列名)from(在)pm_project(表中)where(条件为)project_id(字段)=变量 db_run(sql); //运行sql语句 n=db_res(state) //结果付值给n if(!(n=='A' || n=="")) { msg('该项目处于“'+dt_get_name("pm_project_state",n)+'”状态,不能保存') //获取字典意义dt_get_name(字典名"pm_project_state",编号n) can_save=0 return 1; } //删除无效数据 int na,id,pd //定义整型变量 string d,i,n,l,m, //定义字符型变量 grid_seek("MG_Item","res_id","") //表格中从头开始查找某列值匹配的行grid_seek(表格的名称、列名、要查找的值)1:找到 并定位到该行。0:未找到 na=grid_cur_row("MG_Item")-1 //获取当前行行号 for(id=na;id>0;id--) //设id=记录总数循环,当id>0时执行循环,每执行一次递减 { if(grid_get_v('MG_Item','inp_num',id)=="0"&&grid_get_v ('MG_Item',"total_amount",id)=="0"&&grid_get_v('MG_Item',"checked_item_note",id) =="") //如果数量'inp_num'=0并金额"inp_amount"=0并事后备注"checked_item_note"=0 { //是 pd=confirm("明细数据,第"+id+"条,数据无效,是否删除?") //弹出判断窗口并把结果复值给pd if(pd==1) { grid_del_row('MG_Item',id) //删除行 } else { can_save=0 //不保存 return 1; } } } return 1; } ---------------------------------- //出库单 int cell_change()//函数在单据明细内容被修改的时候执行。 { //根据成本单价修改单据金额 int id string y,sql num cb,dj,je id=grid_cur_row('MG_Item') //获取当前行号 //msg(id) y=grid_get_v('MG_Item','res_id',id) //获取当前行产品编号 //msg(y) sql='select cost_price from res where res_id="'+y+'"'; //查找成本单价 //msg(sql) db_run(sql) //运行数据库 dj=db_res(state)/100 //结果赋值 //msg(dj) if(dj > 0) { grid_set_v('MG_Item','inp_price',id,dj) //设置单价 je=grid_get_v('MG_Item','inp_num',id)*dj //msg(je) grid_set_v('MG_Item','inp_amount',id,je) //设置金额 grid_set_v('MG_Item','total_amount',id,je) //设置金额 } } int func_before_save()//保存前执行 { //当项目不为"正在进行"时,不能保存单据 string d,sql,n //字符型变量定义 d=gui_get_val("ComboBox_Ext_Project_Id") //获取控件内容gui_get_val(控件名 相关项目"ComboBox_Ext_Project_Id") sql='select state from pm_project where project_id="'+d+'"'; //select(查找)state(列名)from(在)pm_project(表中)where(条件为)project_id(字段)=变量 db_run(sql); //运行sql语句 n=db_res(state) //结果付值给n if(!(n=='A' || n=="")) { msg('该项目处于"'+dt_get_name("pm_project_state",n)+'"状态,不能保存') //获取字典意义dt_get_name(字典名"pm_project_state",编号n) can_save=0 return 1; } //以下内容删除无信息数据 int na,id,pd; grid_seek("MG_Item","res_id","") //表格中从头开始查找某列值匹配的行grid_seek(表格的名称、列名、要查找的值)1:找到并定位到该 行。0:未找到 na=grid_cur_row("MG_Item")-1 //获取当前行行号 for(id=na;id>0;id--) //设id=记录总数循环,当id>0时执行循环,每执行一次递减 { if(grid_get_v('MG_Item','inp_num',id)=="0"&&grid_get_v('MG_Item',"total_amount",id)=="0"&&grid_get_v ('MG_Item',"checked_item_note",id)=="") //如果数量'inp_num'=0并金额"inp_amount"=0并事后备注"checked_item_note"=0 { //是 pd=confirm("明细数据,第"+id+"条,数据无效,是否删除?") //弹出判断窗口并把结果复值给pd if(pd==1) { grid_del_row('MG_Item',id) //删除行 } else { can_save=0 //不保存 return 1; } } } //以下内容检查出库数量不大于引用数量 grid_seek("MG_Item","res_id","") //定位 na=grid_cur_row("MG_Item")-1 //获取当前行行号 for(id=na;id>0;id--) //设id=记录总数循环,当id>0时执行循环,每执行一次递减 { num if0,if1 if0 = grid_get_v('MG_Item','inp_num',id) if1 = grid_get_v('MG_Item','max_num',id) if(if1>0) { if(if0>if1) { msg("明细数据,第"+id+"条,操作数量 超过 可引用数量 ,数据不能保存!!!"+nl()+"提示:如确定有可引用数量,可删除本单据重 重新操作修改") can_save=0 //不保存 return 1; } } else { if(if0<if1) { msg("明细数据,第"+id+"条,操作数量 超过 可引用数量 ,数据不能保存!!!"+nl()+"提示:如确定有可引用数量,可删除本单据重 重新操作修改") can_save=0 //不保存 return 1; } } } //以下内容保存操作数量为最大可引用量,以备后期单据修改 for(id=na;id>0;id--) //设id=记录总数循环,当id>0时执行循环,每执行一次递减 { grid_set_v('MG_Item','max_num',id,grid_get_v('MG_Item','inp_num',id)) //取操作数量为最大可操作数量 } return 1; } int init_row()//新增记录时执行 { //设置成本单价 int m num x,dj string y,sql y = res_id sql='select cost_price from res where res_id="'+y+'"'; //查找成本单价 db_run(sql) //运行数据库 dj=db_res(state)/100 //结果赋值 //msg(dj) if(dj > 0) { inp_price = dj //单价inp_price inp_amount = inp_num * dj //金额inp_amount total_amount = inp_num * dj //金额合计total_amount } //msg(y) //设置单据数量引用最大值 string 操作员 //在重新打开后失效了 grid_add_col_num('MG_Item','max_num','最大可引用数') //在表中增加一列, grid_mark_readonly('MG_Item','max_num') //设置表内容为只读 操作员=get_user_id() //msg(操作员) if(操作员=="admin") { grid_unmark_readonly('MG_Item','max_num') //设置一个列可写 } //在只可引用的情况下不起作用 grid_unmark_readonly('MG_Item','inp_num') //设置一个列可写 grid_seek('MG_Item','max_num','') //定位 m = grid_cur_row('MG_Item') //取行号 x = grid_get_v('MG_Item','inp_num',m) //取字段内容 grid_set_v('MG_Item','max_num',m,x) //设置单元格内容 //msg(x) } _____________________________________________________________________ //报表中添加库存数量的参考脚本 int show_row_ext() { //change_row_id 表示当前行 if (gui_get_val("chk_edt")==1) //如果选择了仓库 {aa = get_res_num(res_id,gui_get_val("ext_edt"))} //所选仓库存量 else {aa = get_res_num(res_id,"*")}; //否则,所有仓库存量 return 1; }; ____________________________________________________________________ //加工领料单脚本内容 //以下内容删除工序类内容 int func_before_oper()//审核前执行 { int id,n; grid_seek("MG_Item","res_id","") n=grid_cur_row("MG_Item")-1 for(id=n;id>0;id--)//设id=记录总数循环,当id>0时执行循环,没执行一次递减 { if(grid_get_v('MG_Item','res_kind',id)=="40")//判断'res_kind'(性质编码)=40(工序类) { //是, grid_del_row('MG_Item',id)//删除当前行 } } return 1; } //以下内容删除无用数据 int func_before_save()//保存前执行 { int na,id,pd; grid_seek("MG_Item","res_id","")//表格中从头开始查找某列值匹配的行grid_seek(表格的名称、列名、要查找的值)1:找到并定位到该行。0:未找到 na=grid_cur_row("MG_Item")-1 //获取当前行行号 //以下内容删除无信息数据 for(id=na;id>0;id--)//设id=记录总数循环,当id>0时执行循环,每执行一次递减 { if(grid_get_v('MG_Item','inp_num',id)=="0"&&grid_get_v('MG_Item',"total_amount",id)=="0"&&grid_get_v('MG_Item',"checked_item_note",id)=="") //如果数量'inp_num'=0并金额"inp_amount"=0并事后备注"checked_item_note"=0 { //是 pd=confirm("明细数据,第"+id+"条,数据无效,是否删除?") //弹出判断窗口并把结果复值给pd if(pd==1) { grid_del_row('MG_Item',id) //删除行 } else { can_save=0//不保存 return 1; } } } return 1; } --------------------------------------------------------------------------------------------------------- //入库单 int init_row()//新增记录时执行 { //当没有单价时查找成本单价并添加 num ydj ydj = inp_price if(ydj<=0) { string y,sql num dj y = res_id sql='select cost_price from res where res_id="'+y+'"'; //查找成本单价 db_run(sql) //运行数据库 dj=db_res(state)/100 //结果赋值 //msg(dj) if(dj>0) { inp_price = dj inp_amount = inp_num * dj total_amount = inp_num * dj } //msg(y) return 1 } } |