$PBExportHeader$uo_fx_pz.sru
$PBExportComments$协同系统 物料配置 UO (用于选择物料配置)
forward
global type uo_fx_pz from nonvisualobject
end type
end forward

global type uo_fx_pz from nonvisualobject
end type
global uo_fx_pz uo_fx_pz

type variables
long ins_comid // 协同企业ID(供应商 物料所在的企业)

boolean ins_isReady = false // 当全部获取了10个(7个)配置表的时候，ins_isReady = true

datastore ins_ds_color, ins_ds_color_w, ins_ds_color_p
datastore ins_ds_pztype_def, ins_ds_pztype_mx
datastore ins_ds_configure_type, ins_ds_configure_code, ins_ds_configure_codemx
datastore ins_ds_configure, ins_ds_configure2
end variables

forward prototypes
public function integer init ()
public function integer uof_before_ready (ref string arg_msg)
public function integer uof_get_ready (ref string arg_msg)
public function string uof_open_pzwin (s_fx_pzwin_open arg_s, ref string arg_msg)
end prototypes

public function integer init ();// 初始化
int rslt = 1

ins_comid = 0

ins_isReady = false

ins_ds_color = create datastore
ins_ds_color.DataObject = 'ds_fx_color'
ins_ds_color.Reset()

ins_ds_color_w = create datastore
ins_ds_color_w.DataObject = 'ds_fx_color_wood'
ins_ds_color_w.Reset()

ins_ds_color_p = create datastore
ins_ds_color_p.DataObject = 'ds_fx_color_pcode'
ins_ds_color_p.Reset()

//ins_ds_pztype_def = create datastore
//ins_ds_pztype_def.DataObject = 'ds_fx_pztype_def'
//ins_ds_pztype_def.Reset()

ins_ds_pztype_mx = create datastore
ins_ds_pztype_mx.DataObject = 'ds_fx_pztype_mx'
ins_ds_pztype_mx.Reset()

//ins_ds_configure_type = create datastore
//ins_ds_configure_type.DataObject = 'ds_fx_configure_type'
//ins_ds_configure_type.Reset()

ins_ds_configure_code = create datastore
ins_ds_configure_code.DataObject = 'ds_fx_configure_code'
ins_ds_configure_code.Reset()

ins_ds_configure_codemx = create datastore
ins_ds_configure_codemx.DataObject = 'ds_fx_configure_codemx'
ins_ds_configure_codemx.Reset()

ins_ds_configure = create datastore
ins_ds_configure.DataObject = 'ds_fx_mtrl_configure'
ins_ds_configure.Reset()

//ins_ds_configure2 = create datastore
//ins_ds_configure2.DataObject = 'ds_fx_mtrl_configure2'
//ins_ds_configure2.Reset()

return rslt




end function

public function integer uof_before_ready (ref string arg_msg);// 异步获取供应商全部配置
int rslt = 1

if (ins_comid <= 0) then
	rslt = 0
	arg_msg = 'uo_fx_pz供应商参数有误,请联系开发人员'
	goto ext
end if

// 异步
FXAppCom.GetpzByComidAsync(app_token_fx, ins_comid, -1, ref arg_msg) // [-1]获取10个表(7个表)

if (arg_msg <> '') then
	rslt = 0
	goto ext
end if

ext:
return rslt
end function

public function integer uof_get_ready (ref string arg_msg);// 下载配置
int rslt = 1

// 若提示找不到GetpzByComid
// 请注意是否按照uo_pz.init()、uo_pz.ins_comid、uo_pz.uof_before_ready的顺序来调用
// 对应的DW应该要有statusflag、statustype等共6个配置变量
oleobject obj
obj = FXAppCom.GetpzByComid(ref arg_msg)
if (arg_msg <> '') then
	rslt = 0
	goto ext
end if

//arg_msg = obj.GetString('argmsg')
//if not IsNull(arg_msg) then
//	if (arg_msg <> '') then
//		rslt = 0
//		goto ext
//	end if
//end if

oleobject colors, colorWoods, colorPcodes
oleobject pztypeMxs
oleobject mtrlConfigs
oleobject configCodes, configCodeMxs

colors = obj.GetArrOfPBDictionary('colors')
colorWoods = obj.GetArrOfPBDictionary('colorWoods')
colorPcodes = obj.GetArrOfPBDictionary('colorPcodes')
pztypeMxs = obj.GetArrOfPBDictionary('pztypeMxs')
mtrlConfigs = obj.GetArrOfPBDictionary('mtrlConfigs')
configCodes = obj.GetArrOfPBDictionary('configCodes')
configCodeMxs = obj.GetArrOfPBDictionary('configCodeMxs')

long i
oleobject item
ins_ds_color.Reset()
if not IsNull(colors) then
	for i = 1 to colors.Count
		item = colors.GetItem(i - 1)
		
		ins_ds_color.Object.comid[i] = item.GetInt('comid')
		ins_ds_color.Object.colorid_erp[i] = item.GetInt('colorid_erp')
		ins_ds_color.Object.colorname[i] = item.GetString('colorname')
		ins_ds_color.Object.printid[i] = item.GetString('printid')
	next
end if

ins_ds_color_w.Reset()
if not IsNull(colorWoods) then
	for i = 1 to colorWoods.Count
		item = colorWoods.GetItem(i - 1)
		
		ins_ds_color_w.Object.comid[i] = item.GetInt('comid')
		ins_ds_color_w.Object.woodcodeid_erp[i] = item.GetInt('woodcodeid_erp')
		ins_ds_color_w.Object.woodcode[i] = item.GetString('woodcode')
		ins_ds_color_w.Object.printid[i] = item.GetString('printid')
	next
end if

ins_ds_color_p.Reset()
if not IsNull(colorPcodes) then
	for i = 1 to colorPcodes.Count
		item = colorPcodes.GetItem(i - 1)
		
		ins_ds_color_p.Object.comid[i] = item.GetInt('comid')
		ins_ds_color_p.Object.pcodeid_erp[i] = item.GetInt('pcodeid_erp')
		ins_ds_color_p.Object.pcode[i] = item.GetString('pcode')
		ins_ds_color_p.Object.printid[i] = item.GetString('printid')
	next
end if

ins_ds_pztype_mx.Reset()
if not IsNull(pztypeMxs) then
	for i = 1 to pztypeMxs.Count
		item = pztypeMxs.GetItem(i - 1)
		
		ins_ds_pztype_mx.Object.comid[i] = item.GetInt('comid')
		ins_ds_pztype_mx.Object.typeid_erp[i] = item.GetInt('typeid_erp')
		ins_ds_pztype_mx.Object.pztype[i] = item.GetInt('pztype')
		ins_ds_pztype_mx.Object.dscrp[i] = item.GetString('dscrp')
		ins_ds_pztype_mx.Object.tdscrp[i] = item.GetString('tdscrp')
	next
end if

ins_ds_configure.Reset()
if not IsNull(mtrlConfigs) then
	for i = 1 to mtrlConfigs.Count
		item = mtrlConfigs.GetItem(i - 1)
		
		ins_ds_configure.Object.comid[i] = item.GetInt('comid')
		ins_ds_configure.Object.cid_erp[i] = item.GetInt('cid_erp')
		ins_ds_configure.Object.Mtrlid_erp[i] = item.GetInt('Mtrlid_erp')
		ins_ds_configure.Object.code[i] = item.GetString('code')
		ins_ds_configure.Object.name[i] = item.GetString('name')
		ins_ds_configure.Object.ename[i] = item.GetString('ename')
		ins_ds_configure.Object.type[i] = item.GetInt('type')
		ins_ds_configure.Object.dscrp[i] = item.GetString('dscrp')
		ins_ds_configure.Object.Planprice[i] = item.GetDouble('Planprice')
		ins_ds_configure.Object.price[i] = item.GetDouble('price')
		ins_ds_configure.Object.DefaultPZ[i] = item.GetInt('DefaultPZ')
		ins_ds_configure.Object.ifzj[i] = item.GetInt('ifzj')
		ins_ds_configure.Object.capacity[i] = item.GetDouble('capacity')
		ins_ds_configure.Object.capaparm[i] = item.GetDouble('capaparm')
		ins_ds_configure.Object.net_weight[i] = item.GetDouble('net_weight')
		ins_ds_configure.Object.gross_weight[i] = item.GetDouble('gross_weight')
		ins_ds_configure.Object.cubage[i] = item.GetDouble('cubage')
	next
end if

ins_ds_configure_code.Reset()
if not IsNull(configCodes) then
	for i = 1 to configCodes.Count
		item = configCodes.GetItem(i - 1)
		
		ins_ds_configure_code.Object.comid[i] = item.GetInt('comid')
		ins_ds_configure_code.Object.typeid_erp[i] = item.GetInt('typeid_erp')
		ins_ds_configure_code.Object.pzid_erp[i] = item.GetInt('pzid_erp')
		ins_ds_configure_code.Object.pzcode[i] = item.GetString('pzcode')
		ins_ds_configure_code.Object.name[i] = item.GetString('name')
		ins_ds_configure_code.Object.inputtype[i] = item.GetInt('inputtype')
		ins_ds_configure_code.Object.configtype[i] = item.GetInt('configtype')
	next
end if

ins_ds_configure_codemx.Reset()
if not IsNull(configCodeMxs) then
	for i = 1 to configCodeMxs.Count
		item = configCodeMxs.GetItem(i - 1)
		
		ins_ds_configure_codemx.Object.comid[i] = item.GetInt('comid')
		ins_ds_configure_codemx.Object.pzid_erp[i] = item.GetInt('pzid_erp')
		ins_ds_configure_codemx.Object.printid[i] = item.GetInt('printid')
		ins_ds_configure_codemx.Object.pzcodemx[i] = item.GetString('pzcodemx')
		ins_ds_configure_codemx.Object.namemx[i] = item.GetString('namemx')
	next
end if

ins_isReady = true

ext:
return rslt



end function

public function string uof_open_pzwin (s_fx_pzwin_open arg_s, ref string arg_msg);
arg_msg = ''

string ret = ''

if (not ins_isReady) then
	arg_msg = '未获取供应商物料配置,请联系开发人员'
	goto ext
end if

if IsNull(arg_s.arg_mtrlid) then arg_s.arg_mtrlid = 0 // 协同物料ID
if IsNull(arg_s.arg_mtrlid_erp) then arg_s.arg_mtrlid_erp = 0
if IsNull(arg_s.arg_statusflag) then arg_s.arg_statusflag = 0
if IsNull(arg_s.arg_statustype) then arg_s.arg_statustype = 0
if IsNull(arg_s.arg_woodcodeflag) then arg_s.arg_woodcodeflag = 0
if IsNull(arg_s.arg_woodcodetype) then arg_s.arg_woodcodetype = 0
if IsNull(arg_s.arg_pcodeflag) then arg_s.arg_pcodeflag = 0
if IsNull(arg_s.arg_pcodetype) then arg_s.arg_pcodetype = 0
if IsNull(arg_s.arg_colname) then arg_s.arg_colname = ''
if IsNull(arg_s.arg_x) then arg_s.arg_x = 0
if IsNull(arg_s.arg_y) then arg_s.arg_y = 0

if (arg_s.arg_mtrlid <= 0 or arg_s.arg_mtrlid_erp <= 0) then
	arg_msg = '物料ID参数有误,无法打开配置窗口,请联系开发人员'
	goto ext
end if

if (arg_s.arg_colname = '') then
	arg_msg = '配置列名参数有误,无法打开配置窗口,请联系开发人员'
	goto ext
end if

if (Pos(arg_s.arg_colname, 'status') > 0) then
	choose case arg_s.arg_statusflag
		case 0
			arg_s.arg_ds = ins_ds_color
			OpenWithParm(w_pz_ch_fx, arg_s)
			ret = Message.StringParm
		case 1
			arg_s.arg_ds = ins_ds_pztype_mx
			OpenWithParm(w_pz_ch_fx, arg_s)
			ret = Message.StringParm
		case 2
			arg_s.arg_ds = ins_ds_configure
			OpenWithParm(w_pz_ch_fx, arg_s)
			ret = Message.StringParm
		case 3
			ret = ''
		case 4
			arg_s.arg_ds = ins_ds_configure_code
			arg_s.arg_dsmx = ins_ds_configure_codemx
			OpenWithParm(w_pz_ch_configcode_fx, arg_s)
			ret = Message.StringParm
		case 5
			ret = ''
		case 6
			ret = ''
		case else
			ret = ''
	end choose
elseif (Pos(arg_s.arg_colname, 'woodcode') > 0) then
	choose case arg_s.arg_woodcodeflag
		case 0
			arg_s.arg_ds = ins_ds_color_w
			OpenWithParm(w_pz_ch_fx, arg_s)
			ret = Message.StringParm
		case 1
			arg_s.arg_ds = ins_ds_pztype_mx
			OpenWithParm(w_pz_ch_fx, arg_s)
			ret = Message.StringParm
		case 4
			arg_s.arg_ds = ins_ds_configure_code
			arg_s.arg_dsmx = ins_ds_configure_codemx
			OpenWithParm(w_pz_ch_configcode_fx, arg_s)
			ret = Message.StringParm
		case 5
			ret = ''
		case else
			ret = ''
	end choose
elseif (Pos(arg_s.arg_colname, 'pcode') > 0) then
	choose case arg_s.arg_pcodeflag
		case 0
			arg_s.arg_ds = ins_ds_color_p
			OpenWithParm(w_pz_ch_fx, arg_s)
			ret = Message.StringParm
		case 1
			arg_s.arg_ds = ins_ds_pztype_mx
			OpenWithParm(w_pz_ch_fx, arg_s)
			ret = Message.StringParm
		case 4
			arg_s.arg_ds = ins_ds_configure_code
			arg_s.arg_dsmx = ins_ds_configure_codemx
			OpenWithParm(w_pz_ch_configcode_fx, arg_s)
			ret = Message.StringParm
		case 5
			ret = ''
		case else
			ret = ''
	end choose
else
	ret = ''
end if

ext:
return ret



end function

on uo_fx_pz.create
call super::create
TriggerEvent( this, "constructor" )
end on

on uo_fx_pz.destroy
TriggerEvent( this, "destructor" )
call super::destroy
end on

event constructor;init()
end event

event destructor;destroy ins_ds_color
destroy ins_ds_color_w
destroy ins_ds_color_p
destroy ins_ds_pztype_def
destroy ins_ds_pztype_mx
destroy ins_ds_configure_type
destroy ins_ds_configure_code
destroy ins_ds_configure_codemx
destroy ins_ds_configure
destroy ins_ds_configure2
end event

