|
|
#include "util.h"
|
|
|
|
|
|
int erp_update(tag_t task, string key_str, string pref1, string pref2)
|
|
|
{
|
|
|
printf("start kl_erp_update\n");
|
|
|
tag_t *atts, root_task;
|
|
|
int att_cnt;
|
|
|
EPM_ask_root_task(task, &root_task);
|
|
|
EPM_ask_attachments(root_task, EPM_target_attachment, &att_cnt, &atts);
|
|
|
int pref_cnt, pref_cnt2;
|
|
|
char **pref_vals, **pref_vals2;
|
|
|
PREF_ask_char_values(pref1.c_str(), &pref_cnt, &pref_vals);
|
|
|
PREF_ask_char_values(pref2.c_str(), &pref_cnt2, &pref_vals2);
|
|
|
vector<Value*> configs;
|
|
|
Document doc0, doc1, doc2, doc3, doc4, doc5, doc6, doc7;
|
|
|
vector<Document*> vec;
|
|
|
vec.push_back(&doc0);
|
|
|
vec.push_back(&doc1);
|
|
|
vec.push_back(&doc2);
|
|
|
vec.push_back(&doc3);
|
|
|
vec.push_back(&doc4);
|
|
|
vec.push_back(&doc5);
|
|
|
vec.push_back(&doc6);
|
|
|
vec.push_back(&doc7);
|
|
|
|
|
|
for (auto i = 0; i<pref_cnt2; i++)
|
|
|
{
|
|
|
vec[i]->Parse(pref_vals2[i]);
|
|
|
configs.push_back(vec[i]);
|
|
|
}
|
|
|
|
|
|
string ip = pref_vals[0];
|
|
|
string token_url = ip + "/K3API/Token/Create?authorityCode=" + pref_vals[1];
|
|
|
POM_AM__set_application_bypass(true);
|
|
|
System::String ^key = convert_to_cstring(key_str.c_str());
|
|
|
Testclass ^class1 = gcnew Testclass();
|
|
|
string token = ConvertToString(class1->GetToken(convert_to_cstring(token_url.c_str()),key));
|
|
|
printf("token:%s\n", token.c_str());
|
|
|
string s_url = ip + "/K3API/Material/Update?token=" + token;
|
|
|
System::String ^save_url = convert_to_cstring(s_url.c_str());
|
|
|
|
|
|
for (auto i = 0; i<att_cnt; i++)
|
|
|
{
|
|
|
int type = -1;
|
|
|
if (isTypeOf(atts[i], "KL3_MaterialRevisionMaster"))
|
|
|
{
|
|
|
type = 0;
|
|
|
}
|
|
|
else if (isTypeOf(atts[i], "KL3_SemiProductRevisionMaster"))
|
|
|
{
|
|
|
type = 1;
|
|
|
}
|
|
|
else if (isTypeOf(atts[i], "KL3_ProductRevisionMaster"))
|
|
|
{
|
|
|
type = 2;
|
|
|
}
|
|
|
else if (isTypeOf(atts[i], "KL3_MouldRevisionMaster"))
|
|
|
{
|
|
|
type = 3;
|
|
|
}
|
|
|
else if (isTypeOf(atts[i], "KL3_MMaterialRevisionMaster"))
|
|
|
{
|
|
|
type = 4;
|
|
|
}
|
|
|
else if (isTypeOf(atts[i], "KL3_GJLRevisionMaster"))
|
|
|
{
|
|
|
type = 5;
|
|
|
}
|
|
|
else if (isTypeOf(atts[i], "KL3_VirtualRevisionMaster"))
|
|
|
{
|
|
|
type = 6;
|
|
|
}
|
|
|
printf("type:%d\n", type);
|
|
|
if (type == -1)
|
|
|
continue;
|
|
|
string syzt = get_val(atts[i], "kl3_syzt");
|
|
|
if (syzt == "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
|
|
continue;
|
|
|
int ref_cnt, *levels;
|
|
|
tag_t *refs, rev = NULLTAG;
|
|
|
char **relations;
|
|
|
WSOM_where_referenced(atts[i], 1, &ref_cnt, &levels, &refs, &relations);
|
|
|
for (auto j = 0; j<ref_cnt; j++)
|
|
|
{
|
|
|
if (isTypeOf(refs[j], "ItemRevision"))
|
|
|
{
|
|
|
rev = refs[j];
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
printf("handle:%s\n", get_val(rev, "object_name"));
|
|
|
|
|
|
Document doc;
|
|
|
doc.SetObject();
|
|
|
Document::AllocatorType &al = doc.GetAllocator();
|
|
|
Value data(kObjectType);
|
|
|
|
|
|
if (type != 1 && type != 2 && type != 6)
|
|
|
{
|
|
|
data.AddMember("Fmaund", 0, al);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
Value maund(kObjectType);
|
|
|
string zldw = get_val(atts[i], "kl3_zldw");
|
|
|
maund.AddMember("FNumber", (*configs[3])[zldw.c_str()], al);
|
|
|
maund.AddMember("FName", Value().SetString(zldw.c_str(), al), al);
|
|
|
data.AddMember("Fmaund", maund, al);
|
|
|
}
|
|
|
printf("111\n");
|
|
|
|
|
|
Value manager(kObjectType);
|
|
|
manager.AddMember("FName", Value().SetString(pref_vals[2], al), al);
|
|
|
manager.AddMember("FNumber", Value().SetString(pref_vals[3], al), al);
|
|
|
data.AddMember("FDSManagerID", manager, al);
|
|
|
|
|
|
data.AddMember("FName", Value().SetString(get_val(rev, "object_name"), al), al);
|
|
|
data.AddMember("FNumber", Value().SetString(get_val(rev, "item_id"), al), al);
|
|
|
data.AddMember("FModel", Value().SetString(get_val(atts[i], "kl3_item_ggxh"), al), al);
|
|
|
|
|
|
data.AddMember("FKFPeriod", (type<3 || type>5) ? (Value().SetString(get_val(atts[i], "kl3_bzqt"), al)) : Value().SetString("", al), al);
|
|
|
data.AddMember("FISKFPeriod", true, al);
|
|
|
|
|
|
data.AddMember("FFixLeadTime", (type != 1 && type != 2 && type != 6) ? (Value().SetString(get_val(atts[i], "kl3_gdtql"), al)) : Value().SetString("", al), al);
|
|
|
data.AddMember("F_132", (type<3 || type == 6) ? (Value().SetString(get_val(atts[i], "kl3_color"), al)) : Value().SetString("", al), al);
|
|
|
|
|
|
|
|
|
data.AddMember("FErpClsID", get_wlsx(get_val(atts[i], "kl3_item_wlsx"), al, *configs[5]), al);
|
|
|
|
|
|
string jldwz = get_val(atts[i], "kl3_jldwz");
|
|
|
int jldw_index = jldwz.find('/');
|
|
|
jldwz = jldw_index != -1 ? jldwz.substr(0, jldw_index) : jldwz;
|
|
|
Value &jldw_val = (*configs[4])[jldwz.c_str()];
|
|
|
if (!jldw_val.IsNull())
|
|
|
{
|
|
|
// Value jldw(kObjectType);
|
|
|
// jldw.AddMember("FName", Value().SetString(jldwz.c_str(), al), al);
|
|
|
// jldw.AddMember("FNumber", Value().SetString(jldw_val["id"].GetString(), al), al);
|
|
|
// data.AddMember("FUnitGroupID", jldw, al);
|
|
|
data.AddMember("FUnitID", get_jldw(get_val(atts[i], "kl3_jbjldw"), al, jldw_val), al);
|
|
|
data.AddMember("FOrderUnitID", get_jldw(get_val(atts[i], "kl3_cgjldw"), al, jldw_val), al);
|
|
|
data.AddMember("FSaleUnitID", get_jldw(get_val(atts[i], "kl3_xsjldw"), al, jldw_val), al);
|
|
|
data.AddMember("FProductUnitID", get_jldw(get_val(atts[i], "kl3_item_scjldw"), al, jldw_val), al);
|
|
|
data.AddMember("FStoreUnitID", get_jldw(get_val(atts[i], "kl3_kcjldw"), al, jldw_val), al);
|
|
|
}
|
|
|
printf("222\n");
|
|
|
switch (type)
|
|
|
{
|
|
|
case 0:
|
|
|
data.AddMember("FDefaultLoc", 651, al);
|
|
|
break;
|
|
|
case 1:
|
|
|
case 2:
|
|
|
data.AddMember("FDefaultLoc", (*configs[1])[get_val(atts[i], "kl3_mrck")], al);
|
|
|
|
|
|
break;
|
|
|
case 3:
|
|
|
case 5:
|
|
|
data.AddMember("FDefaultLoc", 666, al);
|
|
|
break;
|
|
|
case 4:
|
|
|
data.AddMember("FDefaultLoc", 667, al);
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
if (type == 0)
|
|
|
{
|
|
|
data.AddMember("FSecInv", Value().SetString(get_val(atts[i], "kl3_aqkcsl"), al), al);
|
|
|
data.AddMember("FQtyMin", Value().SetString(get_val(atts[i], "kl3_zxdhl"), al), al);
|
|
|
data.AddMember("FBatchAppendQty", Value().SetString(get_val(atts[i], "kl3_plzl"), al), al);
|
|
|
data.AddMember("F_112", Value().SetString(get_val(atts[i], "kl3_brand"), al), al);
|
|
|
data.AddMember("F_106", Value().SetString(get_val(atts[i], "kl3_dxsl"), al), al);
|
|
|
data.AddMember("F_131", Value().SetString(get_val(atts[i], "kl3_clfl"), al), al);
|
|
|
|
|
|
}
|
|
|
if (type == 2)
|
|
|
{
|
|
|
Value type_id(kObjectType);
|
|
|
string wlfl = get_val(atts[i], "kl3_wlfl");
|
|
|
type_id.AddMember("FID", (*configs[0])[wlfl.c_str()], al);
|
|
|
type_id.AddMember("FName", Value().SetString(wlfl.c_str(), al), al);
|
|
|
data.AddMember("FTypeID", type_id, al);
|
|
|
data.AddMember("F_112", Value().SetString(get_val(atts[i], "kl3_brand"), al), al);
|
|
|
data.AddMember("F_109", Value().SetString(get_val(atts[i], "kl3_bzsj"), al), al);
|
|
|
data.AddMember("F_118", Value().SetString(get_val(atts[i], "kl3_bzyf"), al), al);
|
|
|
data.AddMember("F_124", Value().SetString(get_val(atts[i], "kl3_cx"), al), al);
|
|
|
data.AddMember("F_114", Value().SetString(get_val(atts[i], "kl3_lcrq"), al), al);
|
|
|
data.AddMember("F_104", Value().SetString(get_val(atts[i], "kl3_ncl"), al), al);
|
|
|
data.AddMember("F_105", Value().SetString(get_val(atts[i], "kl3_yl"), al), al);
|
|
|
data.AddMember("F_119", Value().SetString(get_val(atts[i], "kl3_sm"), al), al);
|
|
|
data.AddMember("F_106", Value().SetString(get_val(atts[i], "kl3_dxsl"), al), al);
|
|
|
data.AddMember("F_133", Value().SetString(get_val(atts[i], "kl3_OTSdhrq"), al), al);
|
|
|
data.AddMember("F_134", Value().SetString(get_val(atts[i], "kl3_zjcmc"), al), al);
|
|
|
data.AddMember("F_135", Value().SetString(get_val(atts[i], "kl3_lccxmc"), al), al);
|
|
|
data.AddMember("F_136", 0, al);
|
|
|
data.AddMember("F_138", 0, al);
|
|
|
data.AddMember("F_137", Value().SetString(get_val(atts[i], "kl3_cpzt"), al), al);
|
|
|
}
|
|
|
if (type == 4)
|
|
|
{
|
|
|
data.AddMember("FSecInv", Value().SetString(get_val(atts[i], "kl3_aqkc"), al), al);
|
|
|
data.AddMember("FLowLimit", Value().SetString(get_val(atts[i], "kl3_zdkc"), al), al);
|
|
|
data.AddMember("FHighLimit", Value().SetString(get_val(atts[i], "kl3_zgkc"), al), al);
|
|
|
}
|
|
|
Value data2(kObjectType);
|
|
|
data2.AddMember("FNumber", Value().SetString(get_val(rev, "item_id"), al), al);
|
|
|
data2.AddMember("Data", data, al);
|
|
|
doc.AddMember("Data", data2, al);
|
|
|
StringBuffer sb;
|
|
|
Writer<StringBuffer> writer(sb);
|
|
|
doc.Accept(writer);
|
|
|
printf("data:%s\n", sb.GetString());
|
|
|
string result = ConvertToString(class1->Send(save_url, convert_to_cstring(sb.GetString()),key));
|
|
|
printf("result:%s\n", result.c_str());
|
|
|
if(result[0]=='s')
|
|
|
{
|
|
|
LOG(INFO) << result;
|
|
|
}else
|
|
|
{
|
|
|
LOG(ERROR) << result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
POM_AM__set_application_bypass(false);
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
int kl_erp_update(EPM_action_message_t msg)
|
|
|
{
|
|
|
int arg_cnt = TC_number_of_arguments(msg.arguments);
|
|
|
string key, pref1, pref2;
|
|
|
for (auto i = 0; i<arg_cnt; i++)
|
|
|
{
|
|
|
char *temp_key, *temp_val;
|
|
|
ITK_ask_argument_named_value(TC_next_argument(msg.arguments), &temp_key, &temp_val);
|
|
|
if (tc_strcmp(temp_key, "key")==0)
|
|
|
{
|
|
|
key = temp_val;
|
|
|
}
|
|
|
else if (tc_strcmp(temp_key, "pref1")==0)
|
|
|
{
|
|
|
pref1 = temp_val;
|
|
|
}
|
|
|
else if (tc_strcmp(temp_key, "pref2")==0)
|
|
|
{
|
|
|
pref2 = temp_val;
|
|
|
}
|
|
|
}
|
|
|
printf("key:%s\n", key.c_str());
|
|
|
printf("pref1:%s\n", pref1.c_str());
|
|
|
printf("pref2:%s\n", pref2.c_str());
|
|
|
return erp_update(msg.task,key,pref1,pref2);
|
|
|
|
|
|
} |