$PBExportHeader$uo_mtrldef.sru forward global type uo_mtrldef from nonvisualobject end type end forward global type uo_mtrldef from nonvisualobject end type global uo_mtrldef uo_mtrldef type variables Long uo_mtrlid int uo_option_use_suliao,uo_option_use_machining_ll string uo_option_change_status,uo_option_change_woodcode,uo_option_change_pcode int uo_option_inout_type end variables forward prototypes public function integer uof_del_mtrl (long arg_mtrlid, ref string arg_msg, boolean arg_ifcommit) public function integer uo_add_mtrl_storage (long arg_mtrlid, long arg_storageid, ref string arg_msg, boolean arg_ifcommit) public function integer uof_code_find (long arg_id, string arg_code, ref string arg_msg) public function integer uof_update_configure2 (long arg_mtrlid, s_mtrl_configure_array arg_s_config, boolean arg_ifcommit, ref string arg_msg) public function integer uof_add_skmtrl (long arg_mtrlid, string arg_mtrlcode, string arg_mtrlname, string arg_usermtrlmode, string arg_mtrlmode, long arg_sk_mtrltypeid, decimal arg_period, string arg_zxmtrlmode, ref string arg_msg, boolean arg_ifcommit) public function integer uof_tech_del (long arg_mtrlid, boolean arg_ifcommit, ref string arg_msg) public function integer uof_tech_update (long arg_mtrlid, s_addon_techdef arg_s_tech, boolean arg_ifcommit, ref string arg_msg) public function integer uof_skmtrl_add (long arg_mtrlid, long arg_skmtrlid, decimal arg_period, ref string arg_msg, boolean arg_ifcommit) public function integer uof_qc_update (s_mtrl_qc arg_s_qc, ref string arg_msg, boolean arg_ifcommit) public function integer uof_qc_del (long arg_mtrlid, long arg_qcid, ref string arg_msg) public function integer uof_zb_update (s_mtrl_zb arg_s_zb, ref string arg_msg, boolean arg_ifcommit) public function integer uof_zb_del (long arg_mtrlid, ref string arg_msg, boolean arg_ifcommit) public function integer uof_jgdscrp_update (long arg_mtrlid, s_mtrljgdscrp_array s_mtrjgdscrp, boolean arg_ifcommit, ref string arg_msg) public function integer uof_audit (long arg_mtrlid, string arg_emp, ref string arg_msg, boolean arg_ifcommit) public function integer uof_c_audit (long arg_mtrlid, ref string arg_msg, boolean arg_ifcommit) public function integer uof_c_secaudit (long arg_mtrlid, ref string arg_msg, boolean arg_ifcommit) public function integer uof_secaudit (long arg_mtrlid, string arg_emp, ref string arg_msg, boolean arg_ifcommit) public function integer uof_add_mtrl (s_mtrldef arg_s_mtrl, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer uof_update_ban (long arg_mtrlid, s_mtrldef_ban arg_s_ban, ref string arg_msg, boolean arg_ifcommit) public function integer uof_update_ppqty (long arg_mtrlid, s_mtrldef arg_s_mtrl, ref string arg_msg) public function integer uof_update_pzdftflag (long arg_flag, long arg_typeid, string arg_config, ref string arg_msg) public function integer uof_get_pztype (integer arg_type, string arg_pzname, ref long arg_pzid, ref string arg_msg) end prototypes public function integer uof_del_mtrl (long arg_mtrlid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long cnt cnt = 0 Select count(*) Into :cnt From u_mtrldef Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then arg_msg = '查询物料资料失败,'+sqlca.SQLErrText rslt = 0 Goto ext End If //申购单汇总明细 cnt = 0 Select count(*) Into :cnt From u_requestbuymx Where mtrlid = :arg_mtrlid ; If sqlca.SQLCode <> 0 Then arg_msg = "数据(申购单汇总明细)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于申购单汇总明细,不可以删除!" rslt = 0 Goto ext End If //申购单汇总明细 cnt = 0 Select count(*) Into :cnt From u_requestbuymxmx Where mtrlid = :arg_mtrlid ; If sqlca.SQLCode <> 0 Then arg_msg = "数据(申购单明细)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于申购单明细,不可以删除!" rslt = 0 Goto ext End If //外协申请单明细 cnt = 0 Select count(*) Into :cnt From u_request_wfjgmxmx Where mtrlid = :arg_mtrlid ; If sqlca.SQLCode <> 0 Then arg_msg = "数据(外协申请单明细)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于外协申请单明细,不可以删除!" rslt = 0 Goto ext End If //外协申请单汇总明细 cnt = 0 Select count(*) Into :cnt From u_request_wfjgMx Where mtrlid = :arg_mtrlid ; If sqlca.SQLCode <> 0 Then arg_msg = "数据(外协申请单汇总明细)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于外协申请单汇总明细,不可以删除!" rslt = 0 Goto ext End If //外协申请单汇总明细 cnt = 0 Select count(*) Into :cnt From u_request_wfjgMx_out Where mtrlid = :arg_mtrlid ; If sqlca.SQLCode <> 0 Then arg_msg = "数据(外协申请单发出明细)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于外协申请单发出明细,不可以删除!" rslt = 0 Goto ext End If //采购订单明细 cnt = 0 Select count(*) Into :cnt From u_buytaskmx Where mtrlid = :arg_mtrlid ; If sqlca.SQLCode <> 0 Then arg_msg = "数据(采购订单明细)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于采购订单明细,不可以删除!" rslt = 0 Goto ext End If //外协订单明细 cnt = 0 Select count(*) Into :cnt From u_order_wfjgMx Where mtrlid = :arg_mtrlid ; If sqlca.SQLCode <> 0 Then arg_msg = "数据(外协订单收货明细)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于外协订单收货明细,不可以删除!" rslt = 0 Goto ext End If //外协订单发出明细 cnt = 0 Select count(*) Into :cnt From u_order_wfjgMx_out Where mtrlid = :arg_mtrlid ; If sqlca.SQLCode <> 0 Then arg_msg = "数据(外协订单发出明细)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于外协订单发出明细,不可以删除!" rslt = 0 Goto ext End If //销售订单明细 cnt = 0 Select count(*) Into :cnt From u_saletaskmx Where mtrlid = :arg_mtrlid ; If sqlca.SQLCode <> 0 Then arg_msg = "数据(销售订单明细)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于销售订单明细,不可以删除!" rslt = 0 Goto ext End If //生产计划 cnt = 0 Select count(*) Into :cnt From u_Order_ml Where mtrlid = :arg_mtrlid ; If sqlca.SQLCode <> 0 Then arg_msg = "数据(生产计划)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于生产计划,不可以删除!" rslt = 0 Goto ext End If //进仓明细 cnt = 0 Select count(*) Into :cnt From u_inwaremx Where mtrlid = :arg_mtrlid ; If sqlca.SQLCode <> 0 Then arg_msg = "数据(进仓明细)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于仓库进仓,不可以删除!" rslt = 0 Goto ext End If //出仓明细 cnt = 0 Select count(*) Into :cnt From u_outwaremx Where mtrlid = :arg_mtrlid ; If sqlca.SQLCode <> 0 Then arg_msg = "数据(出仓明细)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于仓库出仓,不可以删除!" rslt = 0 Goto ext End If //出仓明细mx cnt = 0 Select count(*) Into :cnt From u_outwaremx_mx Where mtrlid = :arg_mtrlid ; If sqlca.SQLCode <> 0 Then arg_msg = "数据(出仓明细)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于仓库出仓,不可以删除!" rslt = 0 Goto ext End If //外协收货单明细 cnt = 0 Select count(*) Into :cnt From ow_wfjgmx_in_aft Where mtrlid = :arg_mtrlid ; If sqlca.SQLCode <> 0 Then arg_msg = "数据(外协收货单明细)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于外协收货单明细,不可以删除!" rslt = 0 Goto ext End If //外协发出单明细 cnt = 0 Select count(*) Into :cnt From ow_wfjgmx_out Where mtrlid = :arg_mtrlid ; If sqlca.SQLCode <> 0 Then arg_msg = "数据(外协发出单明细)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于外协发出单明细,不可以删除!" rslt = 0 Goto ext End If //供应商询价单明细 cnt = 0 Select count(*) Into :cnt From u_spt_price_changemx Where mtrlid = :arg_mtrlid ; If sqlca.SQLCode <> 0 Then arg_msg = "数据(供应商询价单明细)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于供应商询价单明细,不可以删除!" rslt = 0 Goto ext End If //库存 cnt = 0 Select COUNT(*) Into :cnt From u_mtrlware Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then arg_msg = "数据(仓库库存)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于仓库库存,不可以删除!" rslt = 0 Goto ext End If //物料清单 cnt = 0 Select COUNT(*) Into :cnt From u_PrdPF Where sonmtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then arg_msg = "数据(物料清单)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于物料清单,不可以删除!" rslt = 0 Goto ext End If If Not f_power_ind(3673,sys_msg_pow) Then //价格表明细 cnt = 0 Select COUNT(*) Into :cnt From u_sale_price_mx Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then arg_msg = "数据(价格表)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于价格表,不可以删除!" rslt = 0 Goto ext End If //物料清单 cnt = 0 Select COUNT(*) Into :cnt From u_PrdPF Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then arg_msg = "数据(物料清单)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于物料清单,不可以删除!" rslt = 0 Goto ext End If //生产流程 cnt = 0 Select COUNT(*) Into :cnt From u_mtrl_wkp Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then arg_msg = "数据(物料生产流程)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于物料生产流程,不可以删除!" rslt = 0 Goto ext End If //工价表 cnt = 0 Select COUNT(*) Into :cnt From u_sc_workprice Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then arg_msg = "数据(工价表)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于物料工价表,不可以删除!" rslt = 0 Goto ext End If //工艺路线 cnt = 0 Select COUNT(*) Into :cnt From u_mtrl_wkp_tech Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then arg_msg = "数据(工价表)查询操作失败!(请重试!)" rslt = 0 Goto ext End If If cnt > 0 Then arg_msg = "该资料已经使用于物料工价表,不可以删除!" rslt = 0 Goto ext End If // Int li_issuliao,li_issuliao_sk Long ll_sk_mtrlid Select issuliao Into :li_issuliao From u_mtrldef Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '查询物料塑料属性失败,'+sqlca.SQLErrText Goto ext End If If li_issuliao = 2 Then Select count(*) Into :cnt From u_mtrldef_sl Where sk_mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '查询水口料是否已被使用失败,'+sqlca.SQLErrText Goto ext End If If cnt > 0 Then arg_msg = "该水口料已经使用于物料资料,不可以删除!" rslt = 0 Goto ext End If End If End If // //_del: /////// // Delete From u_mtrl_storage Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then arg_msg = '删除物料存放仓库资料失败,'+sqlca.SQLErrText rslt = 0 Goto ext End If Delete From u_mtrldef_ban Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then arg_msg = '删除物料板件信息失败,'+sqlca.SQLErrText rslt = 0 Goto ext End If Delete From u_mtrldef Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then arg_msg = '删除物料资料失败,'+sqlca.SQLErrText rslt = 0 Goto ext End If Delete From u_mtrl_pf Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then arg_msg = '删除物料清单失败,原因:'+sqlca.SQLErrText rslt = 0 Goto ext End If Delete From u_mtrl_wkp_tech Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then arg_msg = '删除物料工艺路线失败,原因:'+sqlca.SQLErrText rslt = 0 Goto ext End If Delete From u_sc_workprice Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then arg_msg = '删除物料工价表失败,原因:'+sqlca.SQLErrText rslt = 0 Goto ext End If Delete From u_mtrl_wkp Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then arg_msg = '删除物料工组流程失败,原因:'+sqlca.SQLErrText rslt = 0 Goto ext End If Delete From u_mtrldef_sl Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then arg_msg = '删除物料水口料失败,原因:'+sqlca.SQLErrText rslt = 0 Goto ext End If Delete From u_PrdPF Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then arg_msg = '删除物料清单失败,原因:'+sqlca.SQLErrText rslt = 0 Goto ext End If Delete From u_sale_price_mx Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then arg_msg = '删除价格表明细失败,原因:'+sqlca.SQLErrText rslt = 0 Goto ext End If Delete From u_mtrl_configure2 Where mtrlid = :arg_mtrlid ; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '删除物料包件配置资料操作失败:'+sqlca.SQLErrText Goto ext End If Delete From u_mtrldef_planprice Where mtrlid = :arg_mtrlid ; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '删除物料计划成本价资料操作失败:'+sqlca.SQLErrText Goto ext End If Long ll_ConnectionID If f_get_outerconnection(ll_ConnectionID,arg_msg) = 1 Then Delete From U_File Where relid = :arg_mtrlid And (billtype = 201 or billtype = 202) Using sys_fileDB_sqlca ; If sys_fileDB_sqlca.SQLCode <> 0 Then arg_msg = '删除物料图片失败,原因:'+sys_fileDB_sqlca.SQLErrText rslt = 0 Goto ext End If End If ext: If rslt = 0 Then Rollback; ElseIf rslt = 1 And arg_ifcommit Then Commit; Commit Using sys_fileDB_sqlca; End If Return rslt end function public function integer uo_add_mtrl_storage (long arg_mtrlid, long arg_storageid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 INSERT INTO u_mtrl_storage(mtrlid,storageid) Values(:arg_mtrlid,:arg_storageid); IF sqlca.SQLCode <> 0 THEN arg_msg = "物料指定默认仓库失败,"+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_code_find (long arg_id, string arg_code, ref string arg_msg);Int rslt = 1 long cnt SELECT count(*) INTO :cnt FROM u_mtrldef WHERE mtrlid <> :arg_id AND mtrlcode = :arg_code; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询物料编码:'+arg_code+',是否已用失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF cnt > 0 THEN arg_msg = '查询物料编码:'+arg_code+',已用,请重新输入' rslt = 0 GOTO ext END IF ext: RETURN rslt end function public function integer uof_update_configure2 (long arg_mtrlid, s_mtrl_configure_array arg_s_config, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1 IF arg_mtrlid <= 0 THEN rslt = 0 arg_msg = '错误的物料ID' GOTO ext END IF DELETE FROM u_mtrl_configure2 Where mtrlid = :arg_mtrlid ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '删除物料包件配置资料操作失败:'+sqlca.SQLErrText GOTO ext END IF Long ls_i String ls_pzcode,ls_name,ls_pzcodemx,ls_namemx Long ls_printid,ls_pzid Long ll_pzflag = 0 FOR ls_i = 1 TO UpperBound(arg_s_config.pzid) ls_pzid = arg_s_config.pzid[ls_i] ls_pzcode = arg_s_config.pzcode[ls_i] ls_name = arg_s_config.pzname[ls_i] ls_pzcodemx = arg_s_config.pzcodemx[ls_i] ls_namemx = arg_s_config.pznamemx[ls_i] ls_printid = arg_s_config.printid[ls_i] INSERT INTO u_mtrl_configure2 (mtrlid, pzid, printid, pzcode, pzname, pzcodemx, pznamemx) Values(:arg_mtrlid,:ls_pzid,:ls_printid,:ls_pzcode,:ls_name,:ls_pzcodemx,:ls_namemx) USING sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '插入物料包件配置资料操作失败:'+sqlca.SQLErrText GOTO ext END IF NEXT ext: IF rslt = 0 THEN ROLLBACK ; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT ; END IF RETURN rslt end function public function integer uof_add_skmtrl (long arg_mtrlid, string arg_mtrlcode, string arg_mtrlname, string arg_usermtrlmode, string arg_mtrlmode, long arg_sk_mtrltypeid, decimal arg_period, string arg_zxmtrlmode, ref string arg_msg, boolean arg_ifcommit);//2011-11-09 起, 停用本函数,代码作备用保留// Int rslt = 1 Long cnt Long ll_sk_mtrlid String sk_handtype String ls_code,ls_name String ls_mtrlmode SELECT sk_mtrlid INTO :ll_sk_mtrlid FROM u_mtrldef_sl Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode = -1 THEN rslt = 0 arg_msg = '查询物料是否已有相关水口料失败,'+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLCode = 100 THEN ll_sk_mtrlid = 0 END IF SELECT count(*) INTO :cnt FROM u_mtrldef_sl Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询塑料资料失败' GOTO ext END IF SELECT handtype INTO :sk_handtype FROM u_mtrltype Where mtrltypeid = :arg_sk_mtrltypeid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询水口料详细类别失败!' GOTO ext END IF IF ll_sk_mtrlid = 0 THEN ll_sk_mtrlid = f_sys_scidentity(0,"u_mtrldef","mtrlid",arg_msg,TRUE,id_sqlca) IF ll_sk_mtrlid <= 0 THEN rslt = 0 GOTO ext END IF ls_code = arg_mtrlcode + '~~'+'(skl)' ls_name = arg_mtrlname + '~~'+'(水口料)' INSERT INTO u_mtrldef (mtrlid, mtrlname, mtrlcode, mtrltypeid, handtype, unit, issuliao, usermtrlmode, mtrlorigin, mtrlmode, mtrlprp, zxmtrlmode) VALUES (:ll_sk_mtrlid, :ls_name, :ls_code, :arg_sk_mtrltypeid, :sk_handtype, '公斤', 2, :arg_usermtrlmode, 2, :arg_mtrlmode, 2, :arg_zxmtrlmode) ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '插入相关水口料信息失败!'+sqlca.SQLErrText GOTO ext END IF IF cnt = 0 THEN INSERT INTO u_mtrldef_sl (mtrlid, sk_mtrlid, sk_mtrlname, sk_mtrltypeid, period) VALUES (:arg_mtrlid, :ll_sk_mtrlid, :ls_name, :arg_sk_mtrltypeid, :arg_period); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '插入相关水口料信息失败!'+sqlca.SQLErrText GOTO ext END IF ELSE UPDATE u_mtrldef_sl SET sk_mtrlid = :ll_sk_mtrlid, sk_mtrlname = :ls_name, sk_mtrltypeid = :arg_sk_mtrltypeid, period = :arg_period Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新物料相关水口料信息失败,'+sqlca.SQLErrText GOTO ext END IF END IF ELSE SELECT sk_mtrlid INTO :ll_sk_mtrlid FROM u_mtrldef_sl Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询物料相关水口料信息失败,'+sqlca.SQLErrText GOTO ext END IF ls_code = arg_mtrlcode + '~~'+'(skl)' ls_name = arg_mtrlname + '~~'+'(水口料)' UPDATE u_mtrldef SET mtrltypeid = :arg_sk_mtrltypeid, handtype = :sk_handtype, usermtrlmode = :arg_usermtrlmode, mtrlmode = :arg_mtrlmode, mtrlcode = :ls_code, mtrlname = :ls_name, zxmtrlmode = :arg_zxmtrlmode Where mtrlid = :ll_sk_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新物料相关水口料信息失败,'+sqlca.SQLErrText GOTO ext END IF UPDATE u_mtrldef_sl SET sk_mtrltypeid = :arg_sk_mtrltypeid, period = :arg_period Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新物料相关水口料信息失败,'+sqlca.SQLErrText GOTO ext END IF END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_tech_del (long arg_mtrlid, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1 DELETE FROM u_mtrl_tech Where mtrlid = :arg_mtrlid using sqlca; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除物料工艺明细失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: if rslt = 0 then rollback using sqlca; elseif rslt = 1 and arg_ifcommit then commit using sqlca; end if return rslt end function public function integer uof_tech_update (long arg_mtrlid, s_addon_techdef arg_s_tech, boolean arg_ifcommit, ref string arg_msg);long rslt = 1 if arg_mtrlid<=0 then rslt = 0 arg_msg = '错误的物料ID' goto ext end if delete from u_mtrl_tech where mtrlid = :arg_mtrlid using sqlca; if sqlca.sqlcode<>0 then rslt = 0 arg_msg = '删除操作失败:'+sqlca.sqlerrtext goto ext end if long ls_i for ls_i=1 to UpperBound(arg_s_tech.techid) if arg_s_tech.techid[ls_i]>0 then insert into u_mtrl_tech (mtrlid, techdefid,qty,unit,dscrp,width, len, heightdegree) values(:arg_mtrlid,:arg_s_tech.techid[ls_i],:arg_s_tech.qty[ls_i],:arg_s_tech.unit[ls_i],:arg_s_tech.dscrp[ls_i], :arg_s_tech.width[ls_i], :arg_s_tech.len[ls_i], :arg_s_tech.heightdegree[ls_i]) using sqlca; if sqlca.sqlcode<>0 then rslt = 0 arg_msg = '删除操作失败:'+sqlca.sqlerrtext goto ext end if end if next ext: if rslt = 0 then rollback using sqlca; elseif rslt = 1 and arg_ifcommit then commit using sqlca; end if return rslt end function public function integer uof_skmtrl_add (long arg_mtrlid, long arg_skmtrlid, decimal arg_period, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 String ls_skmtrlname Long ll_skmtrltypeid Long cnt SELECT mtrlname,mtrltypeid INTO :ls_skmtrlname,:ll_skmtrltypeid FROM u_mtrldef Where mtrlid = :arg_skmtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询水口料信息失败 '+sqlca.SQLErrText GOTO ext END IF SELECT count(*) INTO :cnt FROM u_mtrldef_sl Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询塑料资料失败 '+sqlca.SQLErrText GOTO ext END IF IF cnt = 0 THEN INSERT INTO u_mtrldef_sl (mtrlid, sk_mtrlid, sk_mtrlname, sk_mtrltypeid, period) VALUES (:arg_mtrlid, :arg_skmtrlid, :ls_skmtrlname, :ll_skmtrltypeid, :arg_period); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '插入相关水口料信息失败!'+sqlca.SQLErrText GOTO ext END IF ELSE UPDATE u_mtrldef_sl SET sk_mtrlid = :arg_skmtrlid, sk_mtrlname = :ls_skmtrlname, sk_mtrltypeid = :ll_skmtrltypeid, period = :arg_period Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新物料相关水口料信息失败,'+sqlca.SQLErrText GOTO ext END IF END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_qc_update (s_mtrl_qc arg_s_qc, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_qcid IF arg_s_qc.mtrlid = 0 THEN rslt = 0 arg_msg = "物料ID错误" GOTO ext END IF IF arg_s_qc.dftflag = 1 THEN UPDATE u_mtrldef_qc SET dftflag = 0 WHERE mtrlid = :arg_s_qc.mtrlid And qcid <> :arg_s_qc.qcid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "更新默认质检组合失败,"+sqlca.SQLErrText GOTO ext END IF END IF IF arg_s_qc.qcid = 0 THEN //新增 ll_qcid = f_sys_scidentity(0,"u_mtrldef_qc","qcid",arg_msg,True,id_sqlca) IF ll_qcid <= 0 THEN rslt = 0 GOTO ext END IF INSERT INTO u_mtrldef_qc (mtrlid, qcid, qcname, dftflag, inuse) VALUES (:arg_s_qc.mtrlid, :ll_qcid, :arg_s_qc.qcname, :arg_s_qc.dftflag, :arg_s_qc.inuse); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "新建质检组合资料失败,"+sqlca.SQLErrText GOTO ext END IF ELSE //修改 UPDATE u_mtrldef_qc SET qcname = :arg_s_qc.qcname, dftflag = :arg_s_qc.dftflag, inuse = :arg_s_qc.inuse WHERE mtrlid = :arg_s_qc.mtrlid And qcid = :arg_s_qc.qcid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "更新质检组合资料失败,"+sqlca.SQLErrText GOTO ext END IF END IF ext: IF rslt = 0 THEN ROLLBACK; ELSE COMMIT; END IF RETURN rslt end function public function integer uof_qc_del (long arg_mtrlid, long arg_qcid, ref string arg_msg);Int rslt = 1 DELETE FROM u_mtrldef_qcmx WHERE mtrlid = :arg_mtrlid And qcid = :arg_qcid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除质检项目明细失败'+sqlca.SQLErrText rslt = 0 GOTO ext END IF DELETE FROM u_mtrldef_qc WHERE mtrlid = :arg_mtrlid And qcid = :arg_qcid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除质检组合失败'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSE COMMIT; END IF RETURN rslt end function public function integer uof_zb_update (s_mtrl_zb arg_s_zb, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_sonmtrlid IF arg_s_zb.mtrlid = 0 THEN rslt = 0 arg_msg = "物料ID错误" GOTO ext END IF //IF arg_s_zb.sonmtrlid = 0 THEN // rslt = 0 // arg_msg = "纸板ID错误,请选择纸板" // GOTO ext //END IF IF arg_s_zb.zxtypeid = 0 THEN rslt = 0 arg_msg = "纸箱类别ID错误,请选择纸箱类别" GOTO ext END IF UPDATE u_mtrldef_add_property SET exp = :arg_s_zb.exp, dscrp = :arg_s_zb.dscrp, sonmtrlid = :arg_s_zb.sonmtrlid, zxtypeid = :arg_s_zb.zxtypeid, modemp = :publ_operator, moddate = getdate() Where mtrlid = :arg_s_zb.mtrlid; IF sqlca.SQLCode = 0 THEN IF sqlca.SQLNRows = 0 THEN INSERT INTO u_mtrldef_add_property (mtrlid, sonmtrlid, zxtypeid, exp, dscrp, opemp, opdate) VALUES (:arg_s_zb.mtrlid, :arg_s_zb.sonmtrlid, :arg_s_zb.zxtypeid, :arg_s_zb.exp, :arg_s_zb.dscrp, :publ_operator, getdate()); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "新建纸板资料失败,"+sqlca.SQLErrText GOTO ext END IF END IF ELSE rslt = 0 arg_msg = "更新纸板资料失败,"+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSE COMMIT; END IF RETURN rslt end function public function integer uof_zb_del (long arg_mtrlid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 DELETE FROM u_mtrldef_add_property WHERE mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除纸板失败'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEif arg_ifcommit then COMMIT; END IF RETURN rslt end function public function integer uof_jgdscrp_update (long arg_mtrlid, s_mtrljgdscrp_array s_mtrjgdscrp, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1 IF arg_mtrlid <= 0 THEN rslt = 0 arg_msg = '错误的物料ID' GOTO ext END IF DELETE FROM u_mtrl_jgdscrp Where mtrlid = :arg_mtrlid USING sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '删除操作失败:'+sqlca.SQLErrText GOTO ext END IF Long ls_i String ls_jgdscrpcode,ls_jgdscrpname,ls_jgdscrpmxcode,ls_jgdscrpmxname Long ls_jgdscrpmxid String ls_jgdscrp FOR ls_i = 1 TO UpperBound(s_mtrjgdscrp.jgdscrpmxid) ls_jgdscrpmxid = s_mtrjgdscrp.jgdscrpmxid[ls_i] ls_jgdscrpcode = s_mtrjgdscrp.jgdscrpcode[ls_i] ls_jgdscrpname = s_mtrjgdscrp.jgdscrpname[ls_i] ls_jgdscrpmxname = s_mtrjgdscrp.jgdscrpmxname[ls_i] ls_jgdscrpmxcode = s_mtrjgdscrp.jgdscrpmxcode[ls_i] ls_jgdscrp = ls_jgdscrp +ls_jgdscrpcode+ls_jgdscrpname+ls_jgdscrpmxcode+ls_jgdscrpmxname +' ' INSERT INTO u_mtrl_jgdscrp (mtrlid, jgdscrpmxid) Values(:arg_mtrlid,:ls_jgdscrpmxid) USING sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '插入操作失败:'+sqlca.SQLErrText GOTO ext END IF NEXT UPDATE u_mtrldef SET jgdscrp = :ls_jgdscrp Where mtrlid = :arg_mtrlid USING sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新工艺说明操作失败:'+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK USING sqlca; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT USING sqlca; END IF RETURN rslt end function public function integer uof_audit (long arg_mtrlid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);Int li_flag Int rslt = 1 Select flag Into :li_flag From u_mtrldef Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '查询物料审核状态失败,'+sqlca.SQLErrText Goto ext End If If li_flag <> 0 Then rslt = 0 arg_msg = '物料不是在待审核状态,不能审核' Goto ext End If Update u_mtrldef Set flag = 1 , auditemp = :arg_emp, auditdate = getdate() Where mtrlid = :arg_mtrlid And flag = 0 ; If sqlca.SQLCode = 0 Then If sqlca.SQLNRows = 0 Then rslt = 0 arg_msg = '物料正在审核,请刷新 '+sqlca.SQLErrText Goto ext End If Else rslt = 0 arg_msg = '物料审核失败 '+sqlca.SQLErrText Goto ext End If ext: If rslt = 0 Then Rollback; ElseIf rslt = 1 And arg_ifcommit Then Commit; End If Return rslt end function public function integer uof_c_audit (long arg_mtrlid, ref string arg_msg, boolean arg_ifcommit);Int li_flag Int rslt = 1 datetime ld_nulldt setnull(ld_nulldt) Select flag Into :li_flag From u_mtrldef Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '查询物料审核状态失败,'+sqlca.SQLErrText Goto ext End If If li_flag <> 1 Then rslt = 0 arg_msg = '物料不是在待终审状态,不能撤初审' Goto ext End If Update u_mtrldef Set flag = 0 , auditemp = '', auditdate = :ld_nulldt Where mtrlid = :arg_mtrlid And flag = 1 ; If sqlca.SQLCode = 0 Then If sqlca.SQLNRows = 0 Then rslt = 0 arg_msg = '物料正在撤审,请刷新 '+sqlca.SQLErrText Goto ext End If Else rslt = 0 arg_msg = '物料撤初审失败 '+sqlca.SQLErrText Goto ext End If ext: If rslt = 0 Then Rollback; ElseIf rslt = 1 And arg_ifcommit Then Commit; End If Return rslt end function public function integer uof_c_secaudit (long arg_mtrlid, ref string arg_msg, boolean arg_ifcommit);Int li_flag Int rslt = 1 datetime ld_nulldt setnull(ld_nulldt) Select flag Into :li_flag From u_mtrldef Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '查询物料审核状态失败,'+sqlca.SQLErrText Goto ext End If If li_flag <> 2 Then rslt = 0 arg_msg = '物料不是在终审状态,不能撤终审' Goto ext End If Update u_mtrldef Set flag = 1 , secauditemp = '', secauditdate = :ld_nulldt Where mtrlid = :arg_mtrlid And flag = 2 ; If sqlca.SQLCode = 0 Then If sqlca.SQLNRows = 0 Then rslt = 0 arg_msg = '物料正在撤审,请刷新 '+sqlca.SQLErrText Goto ext End If Else rslt = 0 arg_msg = '物料撤终审失败 '+sqlca.SQLErrText Goto ext End If ext: If rslt = 0 Then Rollback; ElseIf rslt = 1 And arg_ifcommit Then Commit; End If Return rslt end function public function integer uof_secaudit (long arg_mtrlid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);Int li_flag Int rslt = 1 Select flag Into :li_flag From u_mtrldef Where mtrlid = :arg_mtrlid; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '查询物料审核状态失败,'+sqlca.SQLErrText Goto ext End If If li_flag <> 1 Then rslt = 0 arg_msg = '物料不是在待终审状态,不能终审' Goto ext End If Update u_mtrldef Set flag = 2 , secauditemp = :arg_emp, secauditdate = getdate() Where mtrlid = :arg_mtrlid And flag = 1 ; If sqlca.SQLCode = 0 Then If sqlca.SQLNRows = 0 Then rslt = 0 arg_msg = '物料正在审核,请刷新 '+sqlca.SQLErrText Goto ext End If Else rslt = 0 arg_msg = '物料审核失败 '+sqlca.SQLErrText Goto ext End If ext: If rslt = 0 Then Rollback; ElseIf rslt = 1 And arg_ifcommit Then Commit; End If Return rslt end function public function integer uof_add_mtrl (s_mtrldef arg_s_mtrl, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long cnt,ll_mtrlid,ll_i String ls_mtrltype,ls_handtype Long ll_scid_wrkGrpid Int li_ifunit Int li_issuliao_ori Long ll_sk_mtrlid String ls_barcode If uo_option_use_suliao = -1000 Then rslt = 0 arg_msg = '选项:[159]启用注塑模块,读取初始默认值失败,操作取消!' Goto ext End If If uo_option_use_machining_ll = -1000 Then rslt = 0 arg_msg = '选项:[170]启用来料加工模块,读取初始默认值失败,操作取消!' Goto ext End If If uo_option_change_status = '-1000' Then rslt = 0 arg_msg = '选项:[029]配置标题文本,读取初始默认值失败,操作取消!' Goto ext End If If uo_option_change_woodcode = '-1000' Then rslt = 0 arg_msg = '选项:[027]配置1标题文本,读取初始默认值失败,操作取消!' Goto ext End If If uo_option_change_pcode = '-1000' Then rslt = 0 arg_msg = '选项:[028]配置2标题文本,读取初始默认值失败,操作取消!' Goto ext End If If uo_option_inout_type = -1000 Then rslt = 0 arg_msg = '选项:[142]进出仓高级选项,读取初始默认值失败,操作取消!' Goto ext End If If IsNull(arg_s_mtrl.mtrlid) Then arg_s_mtrl.mtrlid = 0 If IsNull(arg_s_mtrl.mtrlcode) Then arg_s_mtrl.mtrlcode = '' If IsNull(arg_s_mtrl.mtrlname) Then arg_s_mtrl.mtrlname = '' If IsNull(arg_s_mtrl.mtrlsectype) Then arg_s_mtrl.mtrlsectype = '' If IsNull(arg_s_mtrl.mtrlmode) Then arg_s_mtrl.mtrlmode = '' If IsNull(arg_s_mtrl.unit) Then arg_s_mtrl.unit = '' If IsNull(arg_s_mtrl.dscrp) Then arg_s_mtrl.dscrp = '' If IsNull(arg_s_mtrl.lmbuyprice) Then arg_s_mtrl.lmbuyprice = 0 If IsNull(arg_s_mtrl.lmsaleprice) Then arg_s_mtrl.lmsaleprice = 0 If IsNull(arg_s_mtrl.prdpackcode) Then arg_s_mtrl.prdpackcode = '' If IsNull(arg_s_mtrl.packqty) Then arg_s_mtrl.packqty = 0 If IsNull(arg_s_mtrl.zxmtrlmode) Then arg_s_mtrl.zxmtrlmode = '' If IsNull(arg_s_mtrl.unit_buy) Then arg_s_mtrl.unit_buy = '' If IsNull(arg_s_mtrl.rate_buy) Then arg_s_mtrl.rate_buy = 0 If IsNull(arg_s_mtrl.unit_scll) Then arg_s_mtrl.unit_scll = '' If IsNull(arg_s_mtrl.rate_scll) Then arg_s_mtrl.rate_scll = 0 If IsNull(arg_s_mtrl.unit_sale) Then arg_s_mtrl.unit_sale = '' If IsNull(arg_s_mtrl.rate_sale) Then arg_s_mtrl.rate_sale = 0 If IsNull(arg_s_mtrl.orderdays) Then arg_s_mtrl.orderdays = 0 If IsNull(arg_s_mtrl.buydays) Then arg_s_mtrl.buydays = 0 If IsNull(arg_s_mtrl.wfjgdays) Then arg_s_mtrl.wfjgdays = 0 If IsNull(arg_s_mtrl.minbuyqty) Then arg_s_mtrl.minbuyqty = 0 If IsNull(arg_s_mtrl.aheaddays) Then arg_s_mtrl.aheaddays = 0 If IsNull(arg_s_mtrl.ifselforder) Then arg_s_mtrl.ifselforder = 0 If IsNull(arg_s_mtrl.mprice) Then arg_s_mtrl.mprice = 0 If IsNull(arg_s_mtrl.mtrlorigin) Then arg_s_mtrl.mtrlorigin = 0 If IsNull(arg_s_mtrl.mtrlkind) Then arg_s_mtrl.mtrlkind = 0 If IsNull(arg_s_mtrl.lspacklimit) Then arg_s_mtrl.lspacklimit = 0 If IsNull(arg_s_mtrl.maxqty) Then arg_s_mtrl.maxqty = 0 If IsNull(arg_s_mtrl.minqty) Then arg_s_mtrl.minqty = 0 If IsNull(arg_s_mtrl.isuse) Then arg_s_mtrl.isuse = 1 If IsNull(arg_s_mtrl.mtrltypeid) Then arg_s_mtrl.mtrltypeid = 0 If IsNull(arg_s_mtrl.barcode) Then arg_s_mtrl.barcode = '' If IsNull(arg_s_mtrl.net_weight) Then arg_s_mtrl.net_weight = 0 If IsNull(arg_s_mtrl.gross_weight) Then arg_s_mtrl.gross_weight = 0 If IsNull(arg_s_mtrl.cubage) Then arg_s_mtrl.cubage = 0 If IsNull(arg_s_mtrl.mtrlengname) Then arg_s_mtrl.mtrlengname = '' If IsNull(arg_s_mtrl.scllflag) Then arg_s_mtrl.scllflag = 0 If IsNull(arg_s_mtrl.dftwrkGrpid) Then arg_s_mtrl.dftwrkGrpid = 0 If IsNull(arg_s_mtrl.dftsptid) Then arg_s_mtrl.dftsptid = 0 If IsNull(arg_s_mtrl.scid) Then arg_s_mtrl.scid = 0 If IsNull(arg_s_mtrl.ifscid) Then arg_s_mtrl.ifscid = 0 If IsNull(arg_s_mtrl.mtrlprp) Then arg_s_mtrl.mtrlprp = 0 If IsNull(arg_s_mtrl.uprate) Then arg_s_mtrl.uprate = 0 If IsNull(arg_s_mtrl.upqty) Then arg_s_mtrl.upqty = 0 If IsNull(arg_s_mtrl.ordertype) Then arg_s_mtrl.ordertype = 0 If IsNull(arg_s_mtrl.statusflag) Then arg_s_mtrl.statusflag = 0 If IsNull(arg_s_mtrl.statustype) Then arg_s_mtrl.statustype = 0 If IsNull(arg_s_mtrl.woodcodeflag) Then arg_s_mtrl.woodcodeflag = 0 If IsNull(arg_s_mtrl.woodcodetype) Then arg_s_mtrl.woodcodetype = 0 If IsNull(arg_s_mtrl.pcodeflag) Then arg_s_mtrl.pcodeflag = 0 If IsNull(arg_s_mtrl.pcodetype) Then arg_s_mtrl.pcodetype = 0 If IsNull(arg_s_mtrl.mtrlarea) Then arg_s_mtrl.mtrlarea = 0 If IsNull(arg_s_mtrl.mtrlarea1) Then arg_s_mtrl.mtrlarea1 = 0 If IsNull(arg_s_mtrl.mtrlarea2) Then arg_s_mtrl.mtrlarea2 = 0 If IsNull(arg_s_mtrl.configcode) Then arg_s_mtrl.configcode = '' If IsNull(arg_s_mtrl.configname) Then arg_s_mtrl.configname = '' If IsNull(arg_s_mtrl.ifpack) Then arg_s_mtrl.ifpack = 0 If IsNull(arg_s_mtrl.ifpackpro) Then arg_s_mtrl.ifpackpro = 0 If IsNull(arg_s_mtrl.autoinstall) Then arg_s_mtrl.autoinstall = 0 If IsNull(arg_s_mtrl.iflimitprice) Then arg_s_mtrl.iflimitprice = 0 If IsNull(arg_s_mtrl.mtrlcolor) Then arg_s_mtrl.mtrlcolor = '' If IsNull(arg_s_mtrl.configcodetype) Then arg_s_mtrl.configcodetype = 0 If IsNull(arg_s_mtrl.ifautodd) Then arg_s_mtrl.ifautodd = 0 If IsNull(arg_s_mtrl.iflljg) Then arg_s_mtrl.iflljg = 0 If IsNull(arg_s_mtrl.ifunit) Then arg_s_mtrl.ifunit = 0 If IsNull(arg_s_mtrl.ifpackpz) Then arg_s_mtrl.ifpackpz = 0 If IsNull(arg_s_mtrl.ifpacktype) Then arg_s_mtrl.ifpacktype = 0 If IsNull(arg_s_mtrl.scllrate) Then arg_s_mtrl.scllrate = 0 If IsNull(arg_s_mtrl.cmpqty) Then arg_s_mtrl.cmpqty = 1 If IsNull(arg_s_mtrl.usermtrlmode) Then arg_s_mtrl.usermtrlmode = '' If IsNull(arg_s_mtrl.storagetype) Then arg_s_mtrl.storagetype = 0 If IsNull(arg_s_mtrl.ifmtrlcuscode) Then arg_s_mtrl.ifmtrlcuscode = 0 If IsNull(arg_s_mtrl.mrptype) Then arg_s_mtrl.mrptype = 0 If IsNull(arg_s_mtrl.mrparg) Then arg_s_mtrl.mrparg = 0 If IsNull(arg_s_mtrl.updownprice) Then arg_s_mtrl.updownprice = 0 If IsNull(arg_s_mtrl.outtype) Then arg_s_mtrl.outtype = 0 If IsNull(arg_s_mtrl.ifpricepack) Then arg_s_mtrl.ifpricepack = 0 If IsNull(arg_s_mtrl.gydscrp) Then arg_s_mtrl.gydscrp = '' If IsNull(arg_s_mtrl.downrate) Then arg_s_mtrl.downrate = 0 If IsNull(arg_s_mtrl.ifcustom) Then arg_s_mtrl.ifcustom = 0 If IsNull(arg_s_mtrl.buyunit) Then arg_s_mtrl.buyunit = 0 If IsNull(arg_s_mtrl.wfjgunit) Then arg_s_mtrl.wfjgunit = 0 If IsNull(arg_s_mtrl.scllunit) Then arg_s_mtrl.scllunit = 0 If IsNull(arg_s_mtrl.saleunit) Then arg_s_mtrl.saleunit = 0 If IsNull(arg_s_mtrl.buydec) Then arg_s_mtrl.buydec = 5 If IsNull(arg_s_mtrl.wfjgdec) Then arg_s_mtrl.wfjgdec = 5 If IsNull(arg_s_mtrl.sclldec) Then arg_s_mtrl.sclldec = 5 If IsNull(arg_s_mtrl.saledec) Then arg_s_mtrl.saledec = 5 If IsNull(arg_s_mtrl.issuliao) Then arg_s_mtrl.issuliao = 0 If IsNull(arg_s_mtrl.period) Then arg_s_mtrl.period = 0 If IsNull(arg_s_mtrl.skmtrlid) Then arg_s_mtrl.skmtrlid = 0 If IsNull(arg_s_mtrl.ifenough) Then arg_s_mtrl.ifenough = 0 If IsNull(arg_s_mtrl.capacity) Then arg_s_mtrl.capacity = 0 If IsNull(arg_s_mtrl.expday) Then arg_s_mtrl.expday = 0 If IsNull(arg_s_mtrl.capaparm) Then arg_s_mtrl.capaparm = 1 If IsNull(arg_s_mtrl.sctaskqty) Then arg_s_mtrl.sctaskqty = 0 If IsNull(arg_s_mtrl.minarg) Then arg_s_mtrl.minarg = 0 If IsNull(arg_s_mtrl.maxarg) Then arg_s_mtrl.maxarg = 0 If IsNull(arg_s_mtrl.status_check) Then arg_s_mtrl.status_check = 0 If IsNull(arg_s_mtrl.woodcode_check) Then arg_s_mtrl.woodcode_check = 0 If IsNull(arg_s_mtrl.pcode_check) Then arg_s_mtrl.pcode_check = 0 If IsNull(arg_s_mtrl.maxdays) Then arg_s_mtrl.maxdays = 0 If IsNull(arg_s_mtrl.mindays) Then arg_s_mtrl.mindays = 0 If IsNull(arg_s_mtrl.ifmrppackpf) Then arg_s_mtrl.ifmrppackpf = 0 If IsNull(arg_s_mtrl.maxzjday) Then arg_s_mtrl.maxzjday = 0 If IsNull(arg_s_mtrl.eoq) Then arg_s_mtrl.eoq = 0 If IsNull(arg_s_mtrl.splitrate) Then arg_s_mtrl.splitrate = 0 If IsNull(arg_s_mtrl.mrp_unit) Then arg_s_mtrl.mrp_unit = 0 If IsNull(arg_s_mtrl.rebuytype) Then arg_s_mtrl.rebuytype = 0 If IsNull(arg_s_mtrl.rebuylot) Then arg_s_mtrl.rebuylot = 0 If IsNull(arg_s_mtrl.ifsendlot) Then arg_s_mtrl.ifsendlot = 0 If IsNull(arg_s_mtrl.upddrate) Then arg_s_mtrl.upddrate = 0 If IsNull(arg_s_mtrl.upddqty) Then arg_s_mtrl.upddqty = 0 If IsNull(arg_s_mtrl.upsalerate) Then arg_s_mtrl.upsalerate = 0 If IsNull(arg_s_mtrl.upsaleqty) Then arg_s_mtrl.upsaleqty = 0 If IsNull(arg_s_mtrl.status_config) Then arg_s_mtrl.status_config = '' If IsNull(arg_s_mtrl.woodcode_config) Then arg_s_mtrl.woodcode_config = '' If IsNull(arg_s_mtrl.pcode_config) Then arg_s_mtrl.pcode_config = '' If IsNull(arg_s_mtrl.pricepztype) Then arg_s_mtrl.pricepztype = 0 If IsNull(arg_s_mtrl.useday) Then arg_s_mtrl.useday = 0 If arg_s_mtrl.rebuytype <> 2 Then arg_s_mtrl.rebuylot = 0 If IsNull(arg_s_mtrl.ifusedeliqty) Then arg_s_mtrl.ifusedeliqty = 0 If IsNull(arg_s_mtrl.equiptype) Then arg_s_mtrl.equiptype = 0 If IsNull(arg_s_mtrl.ifpackpro2) Then arg_s_mtrl.ifpackpro2 = 0 If IsNull(arg_s_mtrl.ifkl) Then arg_s_mtrl.ifkl = 0 If IsNull(arg_s_mtrl.ifturn) Then arg_s_mtrl.ifturn = 0 If IsNull(arg_s_mtrl.iffp) Then arg_s_mtrl.iffp = 0 If IsNull(arg_s_mtrl.scllqty) Then arg_s_mtrl.scllqty = 0 If IsNull(arg_s_mtrl.if_hourpay) Then arg_s_mtrl.if_hourpay = 0 If IsNull(arg_s_mtrl.ifmrp) Then arg_s_mtrl.ifmrp = 1 If IsNull(arg_s_mtrl.if_inherit) Then arg_s_mtrl.if_inherit = 0 If arg_s_mtrl.statusflag <> 4 And arg_s_mtrl.statusflag <> 5 And arg_s_mtrl.statusflag <> 1 Or arg_s_mtrl.statustype <= 0 Then arg_s_mtrl.status_config = '' If arg_s_mtrl.woodcodeflag <> 4 And arg_s_mtrl.woodcodeflag <> 5 And arg_s_mtrl.woodcodeflag <> 1 Or arg_s_mtrl.woodcodetype <= 0 Then arg_s_mtrl.woodcode_config = '' If arg_s_mtrl.pcodeflag <> 4 And arg_s_mtrl.pcodeflag <> 5 And arg_s_mtrl.pcodeflag <> 1 Or arg_s_mtrl.pcodetype <= 0 Then arg_s_mtrl.pcode_config = '' If arg_s_mtrl.statusflag <> 4 And arg_s_mtrl.statusflag <> 5 And arg_s_mtrl.statusflag <> 1 Then arg_s_mtrl.status_spc = 0 If arg_s_mtrl.woodcodeflag <> 4 And arg_s_mtrl.woodcodeflag <> 5 And arg_s_mtrl.woodcodeflag <> 1 Then arg_s_mtrl.woodcode_spc = 0 If arg_s_mtrl.pcodeflag <> 4 And arg_s_mtrl.pcodeflag <> 5 And arg_s_mtrl.pcodeflag <> 1 Then arg_s_mtrl.pcode_spc = 0 If IsNull(arg_s_mtrl.status_spc) Then arg_s_mtrl.status_spc = 0 If IsNull(arg_s_mtrl.woodcode_spc) Then arg_s_mtrl.woodcode_spc = 0 If IsNull(arg_s_mtrl.pcode_spc) Then arg_s_mtrl.pcode_spc = 0 If arg_s_mtrl.ifkl = 0 Then arg_s_mtrl.ifturn = 0 If IsNull(arg_s_mtrl.groupstr) Then arg_s_mtrl.groupstr = '' If IsNull(arg_s_mtrl.groupday) Then arg_s_mtrl.groupday = 0 If IsNull(arg_s_mtrl.aps_capacity_type) Then arg_s_mtrl.aps_capacity_type = '' If IsNull(arg_s_mtrl.scllplan_mode) Then arg_s_mtrl.scllplan_mode = 0 If IsNull(arg_s_mtrl.ifcheck) Then arg_s_mtrl.ifcheck = 0 If IsNull(arg_s_mtrl.checkrate) Then arg_s_mtrl.checkrate = 0 If IsNull(arg_s_mtrl.chkpassrate) Then arg_s_mtrl.chkpassrate = 0 If IsNull(arg_s_mtrl.dftcusid) Then arg_s_mtrl.dftcusid = 0 If IsNull(arg_s_mtrl.sendtype) Then arg_s_mtrl.sendtype = 0 If IsNull(arg_s_mtrl.mb_mtrlid) Then arg_s_mtrl.mb_mtrlid = 0 If IsNull(arg_s_mtrl.buy_ceiling) Then arg_s_mtrl.buy_ceiling = 0 If IsNull(arg_s_mtrl.scll_ceiling) Then arg_s_mtrl.scll_ceiling = 0 If IsNull(arg_s_mtrl.wfjg_ceiling) Then arg_s_mtrl.wfjg_ceiling = 0 If IsNull(arg_s_mtrl.sale_ceiling) Then arg_s_mtrl.sale_ceiling = 0 If IsNull(arg_s_mtrl.material) Then arg_s_mtrl.material = '' If IsNull(arg_s_mtrl.adddec) Then arg_s_mtrl.adddec = 0 If IsNull(arg_s_mtrl.ifbarcodefp) Then arg_s_mtrl.ifbarcodefp = 0 If IsNull(arg_s_mtrl.stoppqty) Then arg_s_mtrl.stoppqty = 0 If IsNull(arg_s_mtrl.buy_autoday) Then arg_s_mtrl.buy_autoday = 0 If IsNull(arg_s_mtrl.upbuyrate) Then arg_s_mtrl.upbuyrate = 0 If IsNull(arg_s_mtrl.upbuyqty) Then arg_s_mtrl.upbuyqty = 0 If IsNull(arg_s_mtrl.ifrebuypack) Then arg_s_mtrl.ifrebuypack = 0 If IsNull(arg_s_mtrl.protype) Then arg_s_mtrl.protype = 0 If IsNull(arg_s_mtrl.buydays_bx) Then arg_s_mtrl.buydays_bx = 0 If IsNull(arg_s_mtrl.wfjgdays_bx) Then arg_s_mtrl.wfjgdays_bx = 0 If IsNull(arg_s_mtrl.multqty) Then arg_s_mtrl.multqty = 0 If IsNull(arg_s_mtrl.buyer) Then arg_s_mtrl.buyer = '' If IsNull(arg_s_mtrl.multtype) Then arg_s_mtrl.multtype = 0 If IsNull(arg_s_mtrl.bantype) Then arg_s_mtrl.bantype = 0 If IsNull(arg_s_mtrl.midu) Then arg_s_mtrl.midu = 0 If IsNull(arg_s_mtrl.BalcCmplNotUpdate) Then arg_s_mtrl.BalcCmplNotUpdate = 0 If arg_s_mtrl.ifpack = 1 And arg_s_mtrl.mtrlorigin <> 2 And arg_s_mtrl.ifselforder = 0 Then rslt = 0 arg_msg = '非采购包件,生产属性不能设无,请重新选择' Goto ext End If If arg_s_mtrl.ifpack <> 0 And arg_s_mtrl.ifmrp = 0 Then rslt = 0 arg_msg = '包件必须使用参加物料运算,请重新选择' Goto ext End If If arg_s_mtrl.ifpackpro = 1 And uo_option_inout_type <> 0 And arg_s_mtrl.outtype = 0 Then rslt = 0 arg_msg = '系统选项设置了包件出仓或条码出仓,包件产品必须设包件出仓或条码出仓,请检查' Goto ext End If Int li_sonflag Select sonflag Into :li_sonflag From u_mtrltype Where mtrltypeid = :arg_s_mtrl.mtrltypeid; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '查询物料类别是否最下级失败,'+sqlca.SQLErrText Goto ext End If If li_sonflag = 0 Then rslt = 0 arg_msg = '所选的物料类别不是最下级物料类别,请重新选择' Goto ext End If If uo_option_use_suliao = 1 Then If arg_s_mtrl.issuliao = 1 And arg_s_mtrl.skmtrlid = 0 Then arg_msg = '塑料件必须先指定对应水口料的物料类别' rslt = 0 Goto ext End If If arg_s_mtrl.issuliao = 1 And arg_s_mtrl.net_weight = 0 Then arg_msg = '塑料件必须指定净重' rslt = 0 Goto ext End If End If If arg_s_mtrl.mtrlid <> 0 Then Select issuliao Into :li_issuliao_ori From u_mtrldef Where mtrlid = :arg_s_mtrl.mtrlid; If sqlca.SQLCode <> 0 Then arg_msg = '查询物料塑料属性失败,'+sqlca.SQLErrText rslt = 0 Goto ext End If If li_issuliao_ori = 1 And arg_s_mtrl.issuliao <> 1 Then Select sk_mtrlid Into :ll_sk_mtrlid From u_mtrldef_sl Where mtrlid = :arg_s_mtrl.mtrlid; If sqlca.SQLCode <> 0 Then ll_sk_mtrlid = 0 End If If ll_sk_mtrlid > 0 Then Update u_mtrldef_sl Set sk_mtrlid = 0, sk_mtrltypeid = 0, sk_mtrlname = '' Where mtrlid = :arg_s_mtrl.mtrlid; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '清除物料相关水口料信息失败' Goto ext End If End If End If If li_issuliao_ori = 2 And arg_s_mtrl.issuliao <> 2 Then Select count(*) Into :cnt From u_mtrldef_sl Where sk_mtrlid = :arg_s_mtrl.mtrlid; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '查询水口料是否已被使用失败,'+sqlca.SQLErrText Goto ext End If If cnt > 0 Then arg_msg = "该水口料已经使用于物料资料,不可以更改属性!" rslt = 0 Goto ext End If End If End If If arg_s_mtrl.mtrlcode = '' Then arg_msg = '请输入物料编码!' rslt = 0 Goto ext End If If arg_s_mtrl.mtrlname = '' Then arg_msg = '请输入物料名称!' rslt = 0 Goto ext End If If arg_s_mtrl.mtrltypeid = 0 Then arg_msg = '请选择物料类别!' rslt = 0 Goto ext End If Select mtrltype,handtype Into :ls_mtrltype, :ls_handtype From u_mtrltype Where mtrltypeid = :arg_s_mtrl.mtrltypeid; If sqlca.SQLCode <> 0 Then arg_msg = '查询物料类别失败,'+sqlca.SQLErrText rslt = 0 Goto ext End If If arg_s_mtrl.mtrlorigin < 0 Then arg_msg = '请选择物料来源' rslt = 0 Goto ext End If If arg_s_mtrl.mtrlorigin = 2 Then arg_s_mtrl.ifselforder = 0 If uo_option_use_machining_ll = 0 And arg_s_mtrl.mtrlorigin = 6 Then arg_msg = '系统选项设为不启用来料加工,不能建立来料加工的物料' rslt = 0 Goto ext End If If arg_s_mtrl.iflljg = 1 And arg_s_mtrl.mtrlorigin <> 0 Then arg_msg = '来源不是自制[0]的物料,不能设为来料自制,请检查' rslt = 0 Goto ext End If If arg_s_mtrl.mtrlid > 0 Then Select ifunit Into :li_ifunit From u_mtrldef Where mtrlid = :arg_s_mtrl.mtrlid; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '查询物料是否使用库存双数量失败'+sqlca.SQLErrText Goto ext End If If li_ifunit <> arg_s_mtrl.ifunit Then Select count(*) Into :cnt From u_mtrlware Where mtrlid = :arg_s_mtrl.mtrlid And noallocqty <> 0; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '查询物料相关库存信息失败'+sqlca.SQLErrText Goto ext End If If cnt > 0 Then rslt = 0 arg_msg = '变更库存双数量核算属性前,必须先把物料相关的库存数清零,请检查' Goto ext End If End If End If If arg_s_mtrl.ifunit = 1 And (arg_s_mtrl.unit_buy = '' Or arg_s_mtrl.rate_buy = 0 ) Then arg_msg = '使用库存双数量核算必须同时设定辅单位1及其转换率' rslt = 0 Goto ext End If Choose Case arg_s_mtrl.mtrlorigin Case 6 If arg_s_mtrl.mtrlprp = 1 Then arg_msg = '来源为来料加工的物料,物料属性不能设置为半产品,请重新选择物料属性' rslt = 0 Goto ext End If If arg_s_mtrl.mtrlprp = 0 Then arg_msg = '来源为来料加工的物料,物料属性不能设置为成品[0],请重新选择物料属性' rslt = 0 Goto ext End If If arg_s_mtrl.ifselforder <> 0 Then arg_msg = '来源为来料加工的物料,生产属性只能设置为无[0],请重新选择生产属性' rslt = 0 Goto ext End If Case 2 If arg_s_mtrl.ifselforder <> 0 Then arg_msg = '来源为采购[2]的物料,生产属性只能设置为无[0],请重新选择生产属性' rslt = 0 Goto ext End If Case 3 If arg_s_mtrl.ifselforder <> 0 Then If arg_s_mtrl.dftwrkGrpid = 0 Then arg_msg = '请选择生产车间' rslt = 0 Goto ext End If Select scid Into :ll_scid_wrkGrpid From u_sc_wkp Where wrkGrpid = :arg_s_mtrl.dftwrkGrpid; If sqlca.SQLCode <> 0 Then arg_msg = '查询生产车间所属分部失败' rslt = 0 Goto ext End If If ll_scid_wrkGrpid <> arg_s_mtrl.scid Then arg_msg = '生产车间所属分部与生产分部不相符,请检查' rslt = 0 Goto ext End If End If Case 0 If arg_s_mtrl.dftwrkGrpid = 0 Then arg_msg = '请选择生产车间' rslt = 0 Goto ext End If Select scid Into :ll_scid_wrkGrpid From u_sc_wkp Where wrkGrpid = :arg_s_mtrl.dftwrkGrpid; If sqlca.SQLCode <> 0 Then arg_msg = '查询生产车间所属分部失败' rslt = 0 Goto ext End If If ll_scid_wrkGrpid <> arg_s_mtrl.scid Then arg_msg = '生产车间所属分部与生产分部不相符,请检查' rslt = 0 Goto ext End If End Choose If arg_s_mtrl.mtrlprp < 0 Then arg_msg = '请选择物料属性' rslt = 0 Goto ext End If Choose Case arg_s_mtrl.mtrlprp Case 0 If arg_s_mtrl.ifpackpro <> 0 Then If arg_s_mtrl.ifpackpz = 1 Then arg_msg = '下级包件可使用上级包件产品配置属性只能设在包件上,不能设在全包件成品上,请检查' rslt = 0 Goto ext End If If arg_s_mtrl.statusflag = 2 And (arg_s_mtrl.ifpackpro <> 3 And arg_s_mtrl.ifpackpro <> 4) Then arg_msg = '包件产品'+uo_option_change_status+'类型只能使用自由选填或严格选择或不使用,请检查' rslt = 0 Goto ext End If if arg_s_mtrl.ifpackpro = 5 and not (arg_s_mtrl.statusflag = 0 or arg_s_mtrl.statusflag = 1) then arg_msg = '全订制板式家具包件产品'+uo_option_change_status+'类型只能使用自由选填或严格选择,请检查' rslt = 0 Goto ext end if if arg_s_mtrl.ifpackpro = 5 and not (arg_s_mtrl.woodcodeflag = 0 or arg_s_mtrl.woodcodeflag = 1) then arg_msg = '全订制板式家具包件产品'+uo_option_change_woodcode+'类型只能使用自由选填或严格选择,请检查' rslt = 0 Goto ext end if // IF arg_s_mtrl.statusflag = 4 THEN // arg_msg = '包件产品'+uo_option_change_status+'类型只能使用自由选填或严格选择或不使用,请检查' // rslt = 0 // GOTO ext // END IF // IF arg_s_mtrl.woodcodeflag = 4 THEN // arg_msg = '包件产品'+uo_option_change_woodcode+'类型只能使用自由选填或严格选择或不使用,请检查' // rslt = 0 // GOTO ext // END IF // // IF arg_s_mtrl.pcodeflag = 4 THEN // arg_msg = '包件产品'+uo_option_change_pcode+'类型只能使用自由选填或严格选择或不使用,请检查' // rslt = 0 // GOTO ext // END IF Else // IF arg_s_mtrl.ifmrppackpf = 1 THEN // arg_msg = '物料不是包件产品,不能使用包件产品MRP运算考虑包件类型清单属性,请检查' // rslt = 0 // GOTO ext // END IF End If Case Else If arg_s_mtrl.ifpackpro <> 0 Then arg_msg = '物料属性不为成品,包件产品分类不能设置为包件成品,请检查' rslt = 0 Goto ext End If If arg_s_mtrl.autoinstall = 1 Then arg_msg = '物料属性不为成品,包件配置不能设置为自动组装,请检查' rslt = 0 Goto ext End If End Choose If arg_s_mtrl.statusflag = 2 Then arg_s_mtrl.capacity = 0 If arg_s_mtrl.ifpackpro <> 0 And arg_s_mtrl.ifpack <> 0 Then rslt = 0 arg_msg = '物料不能同时设为全包件产品及包件,请检查' Goto ext End If //IF arg_s_mtrl.ifpackpro = 1 And arg_s_mtrl.ifpackpro2 = 1 THEN // arg_msg = '包件产品与组合配置包件产品不能同时设置,请检查' // rslt = 0 // GOTO ext //END IF If arg_s_mtrl.ifpackpro = 3 And arg_s_mtrl.statusflag <> 2 Then arg_msg = '组合配置包件产品必须使用组合配置,请检查' rslt = 0 Goto ext End If //IF arg_s_mtrl.ifpackpro = 0 And arg_s_mtrl.ifpricepack = 1 THEN // arg_msg = '价格表按包件产品属性只能设在包件产品上,请检查' // rslt = 0 // GOTO ext //END IF If arg_s_mtrl.ifpackpro = 3 And arg_s_mtrl.ordertype <> 0 Then rslt = 0 arg_msg = '组合配置散排散进包件产品只能设置“指令单合并”' Goto ext End If If arg_s_mtrl.ifpackpro = 2 And arg_s_mtrl.ordertype <> 1 Then rslt = 0 arg_msg = '个性包件产品只能设置“指令单分离”' Goto ext End If If arg_s_mtrl.ifpack = 0 And arg_s_mtrl.ifpackpz = 1 Then rslt = 0 arg_msg = '下级包件可使用上级包件产品配置属性只能设在包件上,请检查' Goto ext End If If arg_s_mtrl.ifmtrlcuscode = 0 And (arg_s_mtrl.ifpackpro = 2 Or arg_s_mtrl.ifpackpro = 4) Then rslt = 0 arg_msg = '个性包件产品和组合配置整排散进包件产品必须使用产品批号,请检查' Goto ext End If If arg_s_mtrl.unit = '' Then arg_msg = '请输入物料计量单位!' rslt = 0 Goto ext End If If arg_s_mtrl.unit_buy <> '' And arg_s_mtrl.rate_buy <= 0 Then arg_msg = '不合理的转换率1' rslt = 0 Goto ext End If If arg_s_mtrl.unit_buy = '' And arg_s_mtrl.rate_buy <> 0 Then arg_msg = '必须输入辅单位1才能设定转换率1' rslt = 0 Goto ext End If If arg_s_mtrl.unit_scll <> '' And arg_s_mtrl.rate_scll <= 0 Then arg_msg = '不合理的转换率2' rslt = 0 Goto ext End If If arg_s_mtrl.unit_scll = '' And arg_s_mtrl.rate_scll <> 0 Then arg_msg = '必须输入辅单位2才能设定转换率2' rslt = 0 Goto ext End If If arg_s_mtrl.unit_sale <> '' And arg_s_mtrl.rate_sale <= 0 Then arg_msg = '不合理的转换率3' rslt = 0 Goto ext End If If arg_s_mtrl.unit_sale = '' And arg_s_mtrl.rate_sale <> 0 Then arg_msg = '必须输入辅单位3才能设定转换率3' rslt = 0 Goto ext End If string ls_pzname long ll_pzid if arg_s_mtrl.statusflag = 1 or arg_s_mtrl.statusflag = 4 or arg_s_mtrl.statusflag = 5 then if arg_s_mtrl.status_spc = 1 then //自动查找或新建分类 ll_pzid = 0 ls_pzname = trim(arg_s_mtrl.mtrlcode)+' '+uo_option_change_status if uof_get_pztype(arg_s_mtrl.statusflag, ls_pzname, ll_pzid, arg_msg) = 0 then arg_msg = uo_option_change_status+',查找对应专用配置类型失败,'+arg_msg rslt = 0 Goto ext end if arg_s_mtrl.statustype = ll_pzid end if end if if arg_s_mtrl.woodcodeflag = 1 or arg_s_mtrl.woodcodeflag = 4 or arg_s_mtrl.woodcodeflag = 5 then if arg_s_mtrl.woodcode_spc = 1 then //自动查找或新建分类 ll_pzid = 0 ls_pzname = trim(arg_s_mtrl.mtrlcode)+' '+uo_option_change_woodcode if uof_get_pztype(arg_s_mtrl.woodcodeflag, ls_pzname, ll_pzid, arg_msg) = 0 then arg_msg = uo_option_change_woodcode+',查找对应专用配置类型失败,'+arg_msg rslt = 0 Goto ext end if arg_s_mtrl.woodcodetype = ll_pzid end if end if if arg_s_mtrl.pcodeflag = 1 or arg_s_mtrl.pcodeflag = 4 or arg_s_mtrl.pcodeflag = 5 then if arg_s_mtrl.pcode_spc = 1 then //自动查找或新建分类 ll_pzid = 0 ls_pzname = trim(arg_s_mtrl.mtrlcode)+' '+uo_option_change_pcode if uof_get_pztype(arg_s_mtrl.pcodeflag, ls_pzname, ll_pzid, arg_msg) = 0 then arg_msg = uo_option_change_pcode+',查找对应专用配置类型失败,'+arg_msg rslt = 0 Goto ext end if arg_s_mtrl.pcodetype = ll_pzid end if end if If arg_s_mtrl.statusflag = 1 And arg_s_mtrl.statustype = 0 Then arg_msg = uo_option_change_status+' 类型为严格选择,必须选定一个待选类别' rslt = 0 Goto ext End If If arg_s_mtrl.woodcodeflag = 1 And arg_s_mtrl.woodcodetype = 0 Then arg_msg = uo_option_change_woodcode+' 类型为严格选择,必须选定一个待选类别' rslt = 0 Goto ext End If If arg_s_mtrl.pcodeflag = 1 And arg_s_mtrl.pcodetype = 0 Then arg_msg = uo_option_change_pcode+' 类型为严格选择,必须选定一个待选类别' rslt = 0 Goto ext End If If (arg_s_mtrl.statusflag = 4 or arg_s_mtrl.statusflag = 5) And arg_s_mtrl.statustype = 0 Then arg_msg = uo_option_change_status+' 类型为部件选配,必须选定一个待选类别' rslt = 0 Goto ext End If If (arg_s_mtrl.woodcodeflag = 4 or arg_s_mtrl.woodcodeflag = 5) And arg_s_mtrl.woodcodetype = 0 Then arg_msg = uo_option_change_woodcode+' 类型为部件选配,必须选定一个待选类别' rslt = 0 Goto ext End If If (arg_s_mtrl.pcodeflag = 4 or arg_s_mtrl.pcodeflag = 5) And arg_s_mtrl.pcodetype = 0 Then arg_msg = uo_option_change_pcode+' 类型为部件选配,必须选定一个待选类别' rslt = 0 Goto ext End If If (arg_s_mtrl.statusflag <> 4 and arg_s_mtrl.statusflag <> 5) Then arg_s_mtrl.status_check = 0 If (arg_s_mtrl.woodcodeflag <> 4 and arg_s_mtrl.woodcodeflag <> 5) Then arg_s_mtrl.woodcode_check = 0 If (arg_s_mtrl.pcodeflag <> 4 and arg_s_mtrl.pcodeflag <> 5) Then arg_s_mtrl.pcode_check = 0 If arg_s_mtrl.buydec < 0 Then arg_msg = '不合理的默认采购单位小数位数' rslt = 0 Goto ext End If If arg_s_mtrl.wfjgdec < 0 Then arg_msg = '不合理的默认外协单位小数位数' rslt = 0 Goto ext End If If arg_s_mtrl.sclldec < 0 Then arg_msg = '不合理的默认领料单位小数位数' rslt = 0 Goto ext End If If arg_s_mtrl.saledec < 0 Then arg_msg = '不合理的默认销售单位小数位数' rslt = 0 Goto ext End If If arg_s_mtrl.cmpqty <= 0 Then arg_msg = '不合理的物料清单基数' rslt = 0 Goto ext End If If arg_s_mtrl.maxarg < 0 Then arg_msg = '不合理的库存上限系数' rslt = 0 Goto ext End If If arg_s_mtrl.minarg < 0 Then arg_msg = '不合理的库存下限系数' rslt = 0 Goto ext End If //If arg_s_mtrl.mrptype = 1 Then // arg_s_mtrl.mrparg = 0 //End If If arg_s_mtrl.mrparg < 0 Or arg_s_mtrl.mrparg > 10 Then arg_msg = '不合理的物料运算精度,精度范围:0至10' rslt = 0 Goto ext End If If arg_s_mtrl.capacity < 0 Then arg_msg = '不合理的产能参数' rslt = 0 Goto ext End If If arg_s_mtrl.expday < 0 Then arg_msg = '不合理的经验生产周期' rslt = 0 Goto ext End If If arg_s_mtrl.sctaskqty < 0 Then arg_msg = '不合理的工序派工基数' rslt = 0 Goto ext End If If arg_s_mtrl.maxzjday < 0 Then arg_msg = '不合理的自制周期上限' rslt = 0 Goto ext End If If arg_s_mtrl.eoq < 0 Then arg_msg = '不合理的经济批量' rslt = 0 Goto ext End If If arg_s_mtrl.splitrate < 0 Then arg_msg = '不合理的分拆极限百分比' rslt = 0 Goto ext End If If arg_s_mtrl.iffp = 1 And arg_s_mtrl.mtrlkind <> 0 Then arg_msg = '使用库存分配,领料属性必须是严格按计划' rslt = 0 Goto ext End If If arg_s_mtrl.scllrate < 0 Then arg_msg = '不合理的超领比例' rslt = 0 Goto ext End If If arg_s_mtrl.scllqty < 0 Then arg_msg = '不合理的附加超领数量' rslt = 0 Goto ext End If If arg_s_mtrl.adddec < 0 Then arg_msg = '不合理的申购误差' rslt = 0 Goto ext End If If Trim(arg_s_mtrl.barcode) <> '' Then ls_barcode = Trim(arg_s_mtrl.barcode) Select count(*) Into :cnt From u_mtrldef Where barcode = :ls_barcode And mtrlid <> :arg_s_mtrl.mtrlid; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '查询条码是否已被使用失败,'+sqlca.SQLErrText Goto ext End If If cnt > 0 Then rslt = 0 arg_msg = '条形码已被其他物料资料使用,请重新输入条形码' Goto ext End If End If String ls_simplename If arg_s_mtrl.dftcusid > 0 Then Select simplename Into :ls_simplename From u_cust Where cusid = :arg_s_mtrl.dftcusid; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '查询默认客户的简称失败,'+sqlca.SQLErrText Goto ext End If arg_s_mtrl.simplename = ls_simplename End If If arg_s_mtrl.ifbarcodefp = 1 And arg_s_mtrl.outtype <> 2 Then rslt = 0 arg_msg = '使用库存条码指定分配订单必须同时使用条码进出仓' Goto ext End If //如果状态是无效,检查有在进行的主计划,指令单,有采购未到货数,外协未到货数,则不允许设成将物料的状态设为无效,需提示只能设“待停产”状态 If arg_s_mtrl.mtrlid <> 0 And arg_s_mtrl.isuse = 0 Then cnt = 0 Select count(*) Into :cnt From u_order_ml Where mtrlid = :arg_s_mtrl.mtrlid And status = 1; If sqlca.SQLCode <> 0 Then cnt = 0 If cnt > 0 Then rslt = 0 arg_msg = '物料有在进行的主生产计划或指令单,不能设为无效(停产),只能设为待停产' Goto ext End If cnt = 0 Select count(*) Into :cnt From uv_materiel_willfinish_buytask Where mtrlid = :arg_s_mtrl.mtrlid; If sqlca.SQLCode <> 0 Then cnt = 0 If cnt > 0 Then rslt = 0 arg_msg = '物料有有采购未到货数,不能设为无效(停产),只能设为待停产' Goto ext End If cnt = 0 Select count(*) Into :cnt From uv_materiel_willfinish_wfjg Where mtrlid = :arg_s_mtrl.mtrlid; If sqlca.SQLCode <> 0 Then cnt = 0 If cnt > 0 Then rslt = 0 arg_msg = '物料有有外协未到货数,不能设为无效(停产),只能设为待停产' Goto ext End If End If If arg_s_mtrl.mtrlid = 0 Then ll_mtrlid = f_sys_scidentity(0,"u_mtrldef","mtrlid",arg_msg,True,id_sqlca) If ll_mtrlid <= 0 Then rslt = 0 Goto ext End If Insert Into u_mtrldef (mtrlid, mtrlcode, mtrlname, mtrltype, mtrlsectype, mtrlmode, Mtrlorigin, unit, lspacklimit, LMsaleprice, lmbuyprice, dscrp, MaxQTY, MinQTY, isuse, packqty, prdpackcode, opdate, opemp, mtrltypeid, handtype, barcode, mtrlkind, net_weight, gross_weight, cubage, mtrlengname, zxmtrlmode, unit_scll, unit_buy, rate_buy, rate_scll, rate_sale, unit_sale, scllflag, dftwrkGrpid, orderdays, buydays, wfjgdays, ifselforder, minbuyqty, aheaddays, mprice, dftsptid, scid, ifscid, mtrlprp, uprate, upqty, ordertype, statusflag, statustype, woodcodeflag, woodcodetype, pcodeflag, pcodetype, mtrlarea, mtrlarea1, mtrlarea2, configcode, configname, ifpack, ifpackpro, autoinstall, iflimitprice, mtrlcolor, configcodetype, ifautodd, iflljg, ifunit, ifpackpz, ifpacktype, scllrate, cmpqty, usermtrlmode, storagetype, ifmtrlcuscode, mrptype, mrparg, updownprice, outtype, ifpricepack, gydscrp, downrate, ifcustom, buyunit, wfjgunit, scllunit, saleunit, buydec, wfjgdec, sclldec, saledec, issuliao, ifenough, capacity, expday, capaparm, sctaskqty, minarg, maxarg, status_check, woodcode_check, pcode_check, maxdays, mindays, ifmrppackpf, maxzjday, eoq, splitrate, mrp_unit, rebuytype, rebuylot, ifsendlot, upddrate, upddqty, upsalerate, upsaleqty, ifusedeliqty, status_config, woodcode_config, pcode_config, pricepztype, useday, equiptype, ifpackpro2, ifkl, ifturn, iffp, scllqty, piccode, dftscllwkpid, if_hourpay, ifmrp, if_inherit, groupstr, groupday, aps_capacity_type, ifcheck, checkrate, scllplan_mode, chkpassrate, dftcusid, simplename, sendtype, mb_mtrlid, buy_ceiling, wfjg_ceiling, scll_ceiling, sale_ceiling, material, adddec, ifbarcodefp, stoppqty, buy_autoday, upbuyrate, upbuyqty, ifrebuypack, protype, buydays_bx, wfjgdays_bx, multqty, buyer, multtype, bantype, midu, BalcCmplNotUpdate, status_spc, woodcode_spc, pcode_spc) Values(:ll_mtrlid, :arg_s_mtrl.mtrlcode, :arg_s_mtrl.mtrlname, :ls_mtrltype, :arg_s_mtrl.mtrlsectype, :arg_s_mtrl.mtrlmode, :arg_s_mtrl.Mtrlorigin, :arg_s_mtrl.unit, :arg_s_mtrl.lspacklimit, :arg_s_mtrl.LMsaleprice, :arg_s_mtrl.lmbuyprice, :arg_s_mtrl.dscrp, :arg_s_mtrl.MaxQTY, :arg_s_mtrl.MinQTY, :arg_s_mtrl.isuse, :arg_s_mtrl.packqty, :arg_s_mtrl.prdpackcode, getdate(), :arg_opemp, :arg_s_mtrl.mtrltypeid, :ls_handtype, :arg_s_mtrl.barcode, :arg_s_mtrl.mtrlkind, :arg_s_mtrl.net_weight, :arg_s_mtrl.gross_weight, :arg_s_mtrl.cubage, :arg_s_mtrl.mtrlengname, :arg_s_mtrl.zxmtrlmode, :arg_s_mtrl.unit_scll, :arg_s_mtrl.unit_buy, :arg_s_mtrl.rate_buy, :arg_s_mtrl.rate_scll, :arg_s_mtrl.rate_sale, :arg_s_mtrl.unit_sale, :arg_s_mtrl.scllflag, :arg_s_mtrl.dftwrkGrpid, :arg_s_mtrl.orderdays, :arg_s_mtrl.buydays, :arg_s_mtrl.wfjgdays, :arg_s_mtrl.ifselforder, :arg_s_mtrl.minbuyqty, :arg_s_mtrl.aheaddays, :arg_s_mtrl.mprice, :arg_s_mtrl.dftsptid, :arg_s_mtrl.scid, :arg_s_mtrl.ifscid, :arg_s_mtrl.mtrlprp, :arg_s_mtrl.uprate, :arg_s_mtrl.upqty, :arg_s_mtrl.ordertype, :arg_s_mtrl.statusflag, :arg_s_mtrl.statustype, :arg_s_mtrl.woodcodeflag, :arg_s_mtrl.woodcodetype, :arg_s_mtrl.pcodeflag, :arg_s_mtrl.pcodetype, :arg_s_mtrl.mtrlarea, :arg_s_mtrl.mtrlarea1, :arg_s_mtrl.mtrlarea2, :arg_s_mtrl.configcode, :arg_s_mtrl.configname, :arg_s_mtrl.ifpack, :arg_s_mtrl.ifpackpro, :arg_s_mtrl.autoinstall, :arg_s_mtrl.iflimitprice, :arg_s_mtrl.mtrlcolor, :arg_s_mtrl.configcodetype, :arg_s_mtrl.ifautodd, :arg_s_mtrl.iflljg, :arg_s_mtrl.ifunit, :arg_s_mtrl.ifpackpz, :arg_s_mtrl.ifpacktype, :arg_s_mtrl.scllrate, :arg_s_mtrl.cmpqty, :arg_s_mtrl.usermtrlmode, :arg_s_mtrl.storagetype, :arg_s_mtrl.ifmtrlcuscode, :arg_s_mtrl.mrptype, :arg_s_mtrl.mrparg, :arg_s_mtrl.updownprice, :arg_s_mtrl.outtype, :arg_s_mtrl.ifpricepack, :arg_s_mtrl.gydscrp, :arg_s_mtrl.downrate, :arg_s_mtrl.ifcustom, :arg_s_mtrl.buyunit, :arg_s_mtrl.wfjgunit, :arg_s_mtrl.scllunit, :arg_s_mtrl.saleunit, :arg_s_mtrl.buydec, :arg_s_mtrl.wfjgdec, :arg_s_mtrl.sclldec, :arg_s_mtrl.saledec, :arg_s_mtrl.issuliao, :arg_s_mtrl.ifenough, :arg_s_mtrl.capacity, :arg_s_mtrl.expday, :arg_s_mtrl.capaparm, :arg_s_mtrl.sctaskqty, :arg_s_mtrl.minarg, :arg_s_mtrl.maxarg, :arg_s_mtrl.status_check, :arg_s_mtrl.woodcode_check, :arg_s_mtrl.pcode_check, :arg_s_mtrl.maxdays, :arg_s_mtrl.mindays, :arg_s_mtrl.ifmrppackpf, :arg_s_mtrl.maxzjday, :arg_s_mtrl.eoq, :arg_s_mtrl.splitrate, :arg_s_mtrl.mrp_unit, :arg_s_mtrl.rebuytype, :arg_s_mtrl.rebuylot, :arg_s_mtrl.ifsendlot, :arg_s_mtrl.upddrate, :arg_s_mtrl.upddqty, :arg_s_mtrl.upsalerate, :arg_s_mtrl.upsaleqty, :arg_s_mtrl.ifusedeliqty, :arg_s_mtrl.status_config, :arg_s_mtrl.woodcode_config, :arg_s_mtrl.pcode_config, :arg_s_mtrl.pricepztype, :arg_s_mtrl.useday, :arg_s_mtrl.equiptype, :arg_s_mtrl.ifpackpro2, :arg_s_mtrl.ifkl, :arg_s_mtrl.ifturn, :arg_s_mtrl.iffp, :arg_s_mtrl.scllqty, :arg_s_mtrl.piccode, :arg_s_mtrl.dftscllwkpid, :arg_s_mtrl.if_hourpay, :arg_s_mtrl.ifmrp, :arg_s_mtrl.if_inherit, :arg_s_mtrl.groupstr, :arg_s_mtrl.groupday, :arg_s_mtrl.aps_capacity_type, :arg_s_mtrl.ifcheck, :arg_s_mtrl.checkrate, :arg_s_mtrl.scllplan_mode, :arg_s_mtrl.chkpassrate, :arg_s_mtrl.dftcusid, :arg_s_mtrl.simplename, :arg_s_mtrl.sendtype, :arg_s_mtrl.mb_mtrlid, :arg_s_mtrl.buy_ceiling, :arg_s_mtrl.wfjg_ceiling, :arg_s_mtrl.scll_ceiling, :arg_s_mtrl.sale_ceiling, :arg_s_mtrl.material, :arg_s_mtrl.adddec, :arg_s_mtrl.ifbarcodefp, :arg_s_mtrl.stoppqty, :arg_s_mtrl.buy_autoday, :arg_s_mtrl.upbuyrate, :arg_s_mtrl.upbuyqty, :arg_s_mtrl.ifrebuypack, :arg_s_mtrl.protype, :arg_s_mtrl.buydays_bx, :arg_s_mtrl.wfjgdays_bx, :arg_s_mtrl.multqty, :arg_s_mtrl.buyer, :arg_s_mtrl.multtype, :arg_s_mtrl.bantype, :arg_s_mtrl.midu, :arg_s_mtrl.BalcCmplNotUpdate, :arg_s_mtrl.status_spc, :arg_s_mtrl.woodcode_spc, :arg_s_mtrl.pcode_spc); If sqlca.SQLCode <> 0 Then arg_msg = '建立物料资料失败,'+sqlca.SQLErrText rslt = 0 Goto ext End If Update u_mtrldef_planprice Set planprice = 0 Where mtrlid = :ll_mtrlid; If sqlca.SQLCode = 0 Then If sqlca.SQLNRows = 0 Then Insert Into u_mtrldef_planprice (mtrlid,planprice) Values (:ll_mtrlid,0); If sqlca.SQLCode <> 0 Then arg_msg = '建立物料计划成本价资料失败,'+sqlca.SQLErrText rslt = 0 Goto ext End If End If End If uo_mtrlid = ll_mtrlid Else Update u_mtrldef Set mtrlcode = :arg_s_mtrl.mtrlcode, mtrlname = :arg_s_mtrl.mtrlname, mtrltype = :ls_mtrltype, mtrlsectype = :arg_s_mtrl.mtrlsectype, mtrlmode = :arg_s_mtrl.mtrlmode, Mtrlorigin = :arg_s_mtrl.Mtrlorigin, unit = :arg_s_mtrl.unit, lspacklimit = :arg_s_mtrl.lspacklimit, LMsaleprice = :arg_s_mtrl.LMsaleprice, lmbuyprice = :arg_s_mtrl.lmbuyprice, dscrp = :arg_s_mtrl.dscrp, MaxQTY = :arg_s_mtrl.MaxQTY, MinQTY = :arg_s_mtrl.MinQTY, isuse = :arg_s_mtrl.isuse, packqty = :arg_s_mtrl.packqty, prdpackcode = :arg_s_mtrl.prdpackcode, mtrltypeid = :arg_s_mtrl.mtrltypeid, handtype = :ls_handtype, barcode = :arg_s_mtrl.barcode, mtrlkind = :arg_s_mtrl.mtrlkind, net_weight = :arg_s_mtrl.net_weight, gross_weight = :arg_s_mtrl.gross_weight, cubage = :arg_s_mtrl.cubage, mtrlengname = :arg_s_mtrl.mtrlengname, zxmtrlmode = :arg_s_mtrl.zxmtrlmode, unit_scll = :arg_s_mtrl.unit_scll, unit_buy = :arg_s_mtrl.unit_buy, rate_buy = :arg_s_mtrl.rate_buy, rate_scll = :arg_s_mtrl.rate_scll, rate_sale = :arg_s_mtrl.rate_sale, unit_sale = :arg_s_mtrl.unit_sale, scllflag = :arg_s_mtrl.scllflag, dftwrkGrpid = :arg_s_mtrl.dftwrkGrpid, orderdays = :arg_s_mtrl.orderdays, buydays = :arg_s_mtrl.buydays, wfjgdays = :arg_s_mtrl.wfjgdays, ifselforder = :arg_s_mtrl.ifselforder, minbuyqty = :arg_s_mtrl.minbuyqty, aheaddays = :arg_s_mtrl.aheaddays, mprice = :arg_s_mtrl.mprice, dftsptid = :arg_s_mtrl.dftsptid, scid = :arg_s_mtrl.scid, ifscid = :arg_s_mtrl.ifscid, mtrlprp = :arg_s_mtrl.mtrlprp, moddate = getdate(), modemp = :arg_opemp, uprate = :arg_s_mtrl.uprate, upqty = :arg_s_mtrl.upqty, ordertype = :arg_s_mtrl.ordertype, statusflag = :arg_s_mtrl.statusflag, statustype = :arg_s_mtrl.statustype, woodcodeflag = :arg_s_mtrl.woodcodeflag, woodcodetype = :arg_s_mtrl.woodcodetype, pcodeflag = :arg_s_mtrl.pcodeflag, pcodetype = :arg_s_mtrl.pcodetype, mtrlarea = :arg_s_mtrl.mtrlarea, mtrlarea1 = :arg_s_mtrl.mtrlarea1, mtrlarea2 = :arg_s_mtrl.mtrlarea2, configcode = :arg_s_mtrl.configcode, configname = :arg_s_mtrl.configname, ifpack = :arg_s_mtrl.ifpack, ifpackpro = :arg_s_mtrl.ifpackpro, autoinstall = :arg_s_mtrl.autoinstall, iflimitprice = :arg_s_mtrl.iflimitprice, mtrlcolor = :arg_s_mtrl.mtrlcolor, configcodetype = :arg_s_mtrl.configcodetype, ifautodd = :arg_s_mtrl.ifautodd, iflljg = :arg_s_mtrl.iflljg, ifunit = :arg_s_mtrl.ifunit, ifpackpz = :arg_s_mtrl.ifpackpz, ifpacktype = :arg_s_mtrl.ifpacktype, scllrate = :arg_s_mtrl.scllrate, cmpqty = :arg_s_mtrl.cmpqty, usermtrlmode = :arg_s_mtrl.usermtrlmode, storagetype = :arg_s_mtrl.storagetype, ifmtrlcuscode = :arg_s_mtrl.ifmtrlcuscode, mrptype = :arg_s_mtrl.mrptype, mrparg = :arg_s_mtrl.mrparg, updownprice = :arg_s_mtrl.updownprice, outtype = :arg_s_mtrl.outtype, ifpricepack = :arg_s_mtrl.ifpricepack, gydscrp = :arg_s_mtrl.gydscrp, downrate = :arg_s_mtrl.downrate, ifcustom = :arg_s_mtrl.ifcustom, buyunit = :arg_s_mtrl.buyunit, wfjgunit = :arg_s_mtrl.wfjgunit, scllunit = :arg_s_mtrl.scllunit, saleunit = :arg_s_mtrl.saleunit, buydec = :arg_s_mtrl.buydec, wfjgdec = :arg_s_mtrl.wfjgdec, sclldec = :arg_s_mtrl.sclldec, saledec = :arg_s_mtrl.saledec, issuliao = :arg_s_mtrl.issuliao, ifenough = :arg_s_mtrl.ifenough, capacity = :arg_s_mtrl.capacity, expday = :arg_s_mtrl.expday, capaparm = :arg_s_mtrl.capaparm, sctaskqty = :arg_s_mtrl.sctaskqty, minarg = :arg_s_mtrl.minarg, maxarg = :arg_s_mtrl.maxarg, status_check = :arg_s_mtrl.status_check, woodcode_check = :arg_s_mtrl.woodcode_check, pcode_check = :arg_s_mtrl.pcode_check, maxdays = :arg_s_mtrl.maxdays, mindays = :arg_s_mtrl.mindays, ifmrppackpf = :arg_s_mtrl.ifmrppackpf, maxzjday = :arg_s_mtrl.maxzjday, eoq = :arg_s_mtrl.eoq, splitrate = :arg_s_mtrl.splitrate, mrp_unit = :arg_s_mtrl.mrp_unit, rebuytype = :arg_s_mtrl.rebuytype, rebuylot = :arg_s_mtrl.rebuylot, ifsendlot = :arg_s_mtrl.ifsendlot, upddrate = :arg_s_mtrl.upddrate, upddqty = :arg_s_mtrl.upddqty, upsalerate = :arg_s_mtrl.upsalerate, upsaleqty = :arg_s_mtrl.upsaleqty, ifusedeliqty = :arg_s_mtrl.ifusedeliqty, status_config = :arg_s_mtrl.status_config, woodcode_config = :arg_s_mtrl.woodcode_config, pcode_config = :arg_s_mtrl.pcode_config, pricepztype = :arg_s_mtrl.pricepztype, useday = :arg_s_mtrl.useday, equiptype = :arg_s_mtrl.equiptype, ifpackpro2 = :arg_s_mtrl.ifpackpro2, ifkl = :arg_s_mtrl.ifkl, ifturn = :arg_s_mtrl.ifturn, iffp = :arg_s_mtrl.iffp, scllqty = :arg_s_mtrl.scllqty, piccode = :arg_s_mtrl.piccode, dftscllwkpid = :arg_s_mtrl.dftscllwkpid, if_hourpay = :arg_s_mtrl.if_hourpay, ifmrp = :arg_s_mtrl.ifmrp, if_inherit = :arg_s_mtrl.if_inherit, groupstr = :arg_s_mtrl.groupstr, groupday = :arg_s_mtrl.groupday, aps_capacity_type = :arg_s_mtrl.aps_capacity_type, ifcheck = :arg_s_mtrl.ifcheck, checkrate = :arg_s_mtrl.checkrate, scllplan_mode = :arg_s_mtrl.scllplan_mode, chkpassrate = :arg_s_mtrl.chkpassrate, dftcusid = :arg_s_mtrl.dftcusid, simplename = :arg_s_mtrl.simplename, sendtype = :arg_s_mtrl.sendtype, mb_mtrlid = :arg_s_mtrl.mb_mtrlid, buy_ceiling = :arg_s_mtrl.buy_ceiling, wfjg_ceiling = :arg_s_mtrl.wfjg_ceiling, scll_ceiling = :arg_s_mtrl.scll_ceiling, sale_ceiling = :arg_s_mtrl.sale_ceiling, material = :arg_s_mtrl.material, adddec = :arg_s_mtrl.adddec, ifbarcodefp = :arg_s_mtrl.ifbarcodefp, stoppqty = :arg_s_mtrl.stoppqty, buy_autoday = :arg_s_mtrl.buy_autoday, upbuyrate = :arg_s_mtrl.upbuyrate, upbuyqty = :arg_s_mtrl.upbuyqty, ifrebuypack = :arg_s_mtrl.ifrebuypack, protype = :arg_s_mtrl.protype, buydays_bx = :arg_s_mtrl.buydays_bx, wfjgdays_bx = :arg_s_mtrl.wfjgdays_bx, multqty = :arg_s_mtrl.multqty , buyer = :arg_s_mtrl.buyer, multtype = :arg_s_mtrl.multtype, bantype = :arg_s_mtrl.bantype, midu = :arg_s_mtrl.midu, BalcCmplNotUpdate = :arg_s_mtrl.BalcCmplNotUpdate, status_spc = :arg_s_mtrl.status_spc, woodcode_spc = :arg_s_mtrl.woodcode_spc, pcode_spc = :arg_s_mtrl.pcode_spc Where mtrlid = :arg_s_mtrl.mtrlid; If sqlca.SQLCode <> 0 Then arg_msg = '更新物料资料失败,'+sqlca.SQLErrText rslt = 0 Goto ext End If uo_mtrlid = arg_s_mtrl.mtrlid End If If uo_option_use_suliao = 1 And arg_s_mtrl.issuliao = 1 Then If uof_skmtrl_add(uo_mtrlid,arg_s_mtrl.skmtrlid,arg_s_mtrl.period,arg_msg,False) = 0 Then rslt = 0 Goto ext End If End If //增加检查,如果系部件选配,设置了默认值,且分类唯一应用在当前物料,更新部件选配默认值的标准标记 IF uof_update_ppqty(uo_mtrlid,arg_s_mtrl, arg_msg) = 0 THEN rslt = 0 Goto ext End If ext: If rslt = 0 Then Rollback; ElseIf rslt = 1 And arg_ifcommit Then Commit; End If Return rslt end function public function integer uof_update_ban (long arg_mtrlid, s_mtrldef_ban arg_s_ban, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 If arg_mtrlid <= 0 Then rslt = 0 arg_msg = '不合理的物料ID' Goto ext End If If IsNull(arg_s_ban.promode) Then arg_s_ban.promode = '' If IsNull(arg_s_ban.wenli) Then arg_s_ban.wenli = '' If IsNull(arg_s_ban.fengbian) Then arg_s_ban.fengbian = '' If IsNull(arg_s_ban.paikong) Then arg_s_ban.paikong = '' If IsNull(arg_s_ban.luoji) Then arg_s_ban.luoji = '' If IsNull(arg_s_ban.penyou) Then arg_s_ban.penyou = '' If IsNull(arg_s_ban.gydscrp) Then arg_s_ban.gydscrp = '' If IsNull(arg_s_ban.direction) Then arg_s_ban.direction = 0 If IsNull(arg_s_ban.pfklmode) Then arg_s_ban.pfklmode = '' Update u_mtrldef_ban Set promode = :arg_s_ban.promode, wenli = :arg_s_ban.wenli, fengbian = :arg_s_ban.fengbian, paikong = :arg_s_ban.paikong, luoji = :arg_s_ban.luoji, penyou = :arg_s_ban.penyou, gydscrp = :arg_s_ban.gydscrp, direction = :arg_s_ban.direction, pfklmode = :arg_s_ban.pfklmode Where mtrlid = :arg_mtrlid; If sqlca.SQLCode = 0 Then If sqlca.SQLNRows = 0 Then Insert Into u_mtrldef_ban (mtrlid, promode, wenli, fengbian, paikong, luoji, penyou, gydscrp, direction, pfklmode) Values (:arg_mtrlid, :arg_s_ban.promode, :arg_s_ban.wenli, :arg_s_ban.fengbian, :arg_s_ban.paikong, :arg_s_ban.luoji, :arg_s_ban.penyou, :arg_s_ban.gydscrp, :arg_s_ban.direction, :arg_s_ban.pfklmode); If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '插入物料板件信息失败,'+sqlca.SQLErrText Goto ext End If End If Else rslt = 0 arg_msg = '更新物料板件信息失败,'+sqlca.SQLErrText Goto ext End If ext: If rslt = 0 Then Rollback; ElseIf arg_ifcommit Then Commit; End If Return rslt end function public function integer uof_update_ppqty (long arg_mtrlid, s_mtrldef arg_s_mtrl, ref string arg_msg);//更新相应部件选配类型的匹配数量(ppqty) Long rslt = 1 //If arg_s_mtrl.statusflag = 1 And arg_s_mtrl.statustype = 0 Then // arg_msg = uo_option_change_status+' 类型为严格选择,必须选定一个待选类别' // rslt = 0 // Goto ext //End If // //If arg_s_mtrl.woodcodeflag = 1 And arg_s_mtrl.woodcodetype = 0 Then // arg_msg = uo_option_change_woodcode+' 类型为严格选择,必须选定一个待选类别' // rslt = 0 // Goto ext //End If // //If arg_s_mtrl.pcodeflag = 1 And arg_s_mtrl.pcodetype = 0 Then // arg_msg = uo_option_change_pcode+' 类型为严格选择,必须选定一个待选类别' // rslt = 0 // Goto ext //End If // IF uof_update_pzdftflag(arg_s_mtrl.statusflag, arg_s_mtrl.statustype, arg_s_mtrl.status_config, arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF uof_update_pzdftflag(arg_s_mtrl.woodcodeflag, arg_s_mtrl.woodcodetype, arg_s_mtrl.woodcode_config, arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF uof_update_pzdftflag(arg_s_mtrl.pcodeflag, arg_s_mtrl.pcodetype, arg_s_mtrl.pcode_config, arg_msg) = 0 THEN rslt = 0 GOTO ext END IF ext: RETURN rslt end function public function integer uof_update_pzdftflag (long arg_flag, long arg_typeid, string arg_config, ref string arg_msg);Int rslt = 1 Long i, ll_start, ll_i, cnt String ls_name[], ls_namemx[] Long ll_printid IF arg_flag = 4 THEN SELECT cnt INTO :cnt FROM uv_configure_type_ppqty Where pzid = :arg_typeid; IF sqlca.SQLCode <> 0 THEN cnt = 0 END IF IF cnt = 1 And arg_config <> '' THEN //更新标准标记 IF Right(arg_config,1) <> "|" THEN arg_config += "|" END IF i = 0 ll_start = Pos(arg_config, "|") DO WHILE ll_start > 0 And arg_config <> "|" i++ ls_name[i] = Left(arg_config, Pos(arg_config,":") - 1) ls_namemx[i] = Left(arg_config, ll_start - 1) ls_namemx[i] = Mid(ls_namemx[i],Pos(ls_namemx[i],':') + 1) arg_config = Mid(arg_config, ll_start + 1) ll_start = Pos(arg_config, "|") LOOP FOR ll_i = 1 To UpperBound(ls_name) UPDATE u_configure_codemx SET ifdft = 1 FROM u_configure_code INNER JOIN u_configure_codemx ON u_configure_code.pzid = u_configure_codemx.pzid WHERE u_configure_code.typeid = :arg_typeid AND u_configure_code.name = :ls_name[ll_i] And u_configure_codemx.namemx = :ls_namemx[ll_i]; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "更新配置标准值失败,"+sqlca.SQLErrText GOTO ext END IF NEXT ELSE //取消标准标记 UPDATE u_configure_codemx SET ifdft = 0 FROM u_configure_code INNER JOIN u_configure_codemx ON u_configure_code.pzid = u_configure_codemx.pzid Where u_configure_code.typeid = :arg_typeid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "取消配置标准值失败,"+sqlca.SQLErrText GOTO ext END IF END IF END IF ext: IF rslt = 0 THEN //rollback; ELSE END IF RETURN rslt end function public function integer uof_get_pztype (integer arg_type, string arg_pzname, ref long arg_pzid, ref string arg_msg);Int rslt = 1 Long ll_cnt Long ll_newid IF arg_type = 1 THEN SELECT count(*) INTO :ll_cnt FROM u_pztype_def Where typename = :arg_pzname; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询新配置类型名称是否重复失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF ll_cnt > 0 THEN SELECT typeid INTO :ll_newid FROM u_pztype_def Where typename = :arg_pzname; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询新配置类型名称失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF //arg_pzid = ll_newid //RETURN 1 END IF IF ll_newid = 0 THEN ll_newid = f_sys_scidentity(0,"u_pztype_def","typeid",arg_msg,True,id_sqlca) IF ll_newid <= 0 THEN arg_msg = '获取新ID失败,'+arg_msg rslt = 0 GOTO ext END IF INSERT INTO u_pztype_def (typeid, typename) Values ( :ll_newid, :arg_pzname); IF sqlca.SQLCode <> 0 THEN arg_msg = '新建严格选择配置类型:'+arg_pzname+'失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF ELSE SELECT count(*) INTO :ll_cnt FROM u_configure_type Where contfigtypename = :arg_pzname; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询新部件选配类型名称是否重复失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF ll_cnt > 0 THEN SELECT contfigtypeid INTO :ll_newid FROM u_configure_type Where contfigtypename = :arg_pzname; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询新部件选配类型名称失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF // arg_pzid = ll_newid // RETURN 1 END IF IF ll_newid = 0 THEN ll_newid = f_sys_scidentity(0,"u_configure_type","contfigtypeid",arg_msg,True,id_sqlca) IF ll_newid <= 0 THEN arg_msg = '获取新ID失败,'+arg_msg rslt = 0 GOTO ext END IF INSERT INTO u_configure_type (contfigtypeid, contfigtypename) Values ( :ll_newid, :arg_pzname); IF sqlca.SQLCode <> 0 THEN arg_msg = '新建部件选配类型:'+arg_pzname+'失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF END IF arg_pzid = ll_newid ext: RETURN rslt end function on uo_mtrldef.create call super::create TriggerEvent( this, "constructor" ) end on on uo_mtrldef.destroy TriggerEvent( this, "destructor" ) call super::destroy end on event constructor;String str_optionvalue,arg_msg f_get_sys_option_value('159',str_optionvalue,arg_msg) uo_option_use_suliao = Long(str_optionvalue) f_get_sys_option_value('170',str_optionvalue,arg_msg) uo_option_use_machining_ll = Long(str_optionvalue) f_get_sys_option_value('029',str_optionvalue,arg_msg) uo_option_change_status = str_optionvalue f_get_sys_option_value('027',str_optionvalue,arg_msg) uo_option_change_woodcode = str_optionvalue f_get_sys_option_value('028',str_optionvalue,arg_msg) uo_option_change_pcode = str_optionvalue f_get_sys_option_value('142',str_optionvalue,arg_msg) uo_option_inout_type = Long(str_optionvalue) end event