#include <wobject/xstring.hpp>
|
#include <xcontrol/xtreeview.hpp>
|
#include <xcontrol/xdwgrid.hpp>
|
#include <wobject/xdouble.hpp>
|
#include <xcontrol/xlayersheet.hpp>
|
#include <xcontrol/xdwpages.hpp>
|
|
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
|
#include "viewobject/view.base.hpp"
|
|
using xml = KXMLDOMDocument;
|
class __declspec(dllexport) CompanyMaint : public xframe
|
{
|
public:
|
xlayersheet m_layer;
|
xdwtable dw_detail;
|
xdwtable dw_bank;
|
xstring m_operate;
|
xstring m_sguid;
|
|
xnode m_agentNode; //Agent Condition
|
xstring m_agentCond; //Agent Node
|
public:
|
CompanyMaint(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
|
public:
|
static CompanyMaint* CreateInstance(void* implPtr, void* hWnd)
|
{
|
CompanyMaint* pWin = new CompanyMaint(implPtr, (HWND)hWnd);
|
return pWin;
|
}
|
|
int SetAgent()
|
{
|
xstring xfNodeAgentArea = L"agentarea";
|
xnode anode = GetAgentNode(xfNodeAgentArea);
|
if (m_agentNode)
|
{
|
SetAgentNode(anode, m_agentNode);
|
}
|
else
|
{
|
KXMLDOMElement xframeElement = GetElement();
|
KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*");
|
if (agent)
|
{
|
xstring s = agent.xml();
|
m_agentNode = SetAgentNode(anode, s);
|
}
|
}
|
return 1;
|
}
|
|
//½¹µã¼¤»î´¦Àíº¯Êý
|
int OnSetFocus(TEvent* evt, LPARAM param)
|
{
|
SetAgent();
|
|
//ÖØÖù¤¾ßÌõ
|
return 1;
|
}
|
|
int OnPreSave()
|
{
|
xdwtable dw = new xdwtable;
|
dw.setNativePointer(dw_detail.FindDwTable(L"CompanyInfo"));
|
xstring sPartyNo = dw.GetItemString(1, L"PartyNo");
|
if (sPartyNo == L"")
|
{
|
xstring sGetNo = publiccode::GetIdentityNo(L"");
|
dw.SetItemString(1, L"PartyNo", sGetNo);
|
//alert(L"¹«Ë¾±àºÅΪ¿Õ£¡");
|
//return -1;
|
}
|
xstring sPartyName = dw.GetItemString(1, L"Name");
|
if (sPartyName == L"")
|
{
|
alert(L"¹«Ë¾Ãû³ÆÎª¿Õ£¡");
|
return -1;
|
}
|
|
xstring suserid = publiccode::GetUser().id;
|
xstring sdate = publiccode::GetCurrentDate();
|
dw.SetItemString(1, L"ModifierID", suserid);
|
dw.SetItemString(1, L"ModifyDate", sdate);
|
|
dw.setNativePointer(dw_bank.FindDwTable(L"item", 0));
|
if (dw)
|
{
|
xstring sno;
|
xstring sname;
|
xstring status;
|
|
int i;
|
int row = dw.GetRowCount();
|
for (i = 1; i <= row; i++)
|
{
|
status = dw.GetItemString(i, L"Status") + L"";
|
if (status == L"")
|
{
|
dw.SetItemString(i, L"Status", L"Y");
|
//alert(L"µÚ"+i.toString()+L"ÐÐ״̬Ϊ¿Õ");
|
//return -1;
|
}
|
/*
|
sno=dw.GetItemString(i,L"BankAccountNo",0)+L"";
|
sname=dw.GetItemString(i,L"BankName",0)+L"";
|
status=dw.GetItemString(i,L"Status",0)+L"";
|
if (sno==L"" || sno==nil)
|
{
|
if(sname !=L"" && sname != nil)
|
{
|
alert(L"µÚ"+i.toString()+L"ÐÐÒøÐбàºÅΪ¿Õ");
|
return -1;
|
}
|
}
|
|
if (sname==L"" || sname==nil)
|
{
|
if(sno !=L"" && sno != nil)
|
{
|
alert(L"µÚ"+i.toString()+L"ÐÐÒøÐÐÃû³ÆÎª¿Õ");
|
return -1;
|
}
|
}
|
else
|
{
|
if (status==L"" || status==nil)
|
{
|
dw.SetItemString(i,L"Status",L"Y");
|
//alert(L"µÚ"+i.toString()+L"ÐÐ״̬Ϊ¿Õ");
|
//return -1;
|
}
|
}
|
*/
|
}
|
}
|
return 1;
|
}
|
|
int OnSave()
|
{
|
dw_detail.AcceptText();
|
dw_bank.AcceptText();
|
int rec;
|
rec = OnPreSave();
|
if (rec == -1)
|
return -1;
|
|
HCURSOR hIcon = xutil::SetCursorWait();
|
|
xstring val, val2;
|
xml x;
|
|
auto xdoc = x;
|
dw_detail.DwUpdateAllTo(xdoc);
|
//val = xdoc.xml ;
|
dw_bank.DwUpdateAllTo(xdoc);
|
val = xdoc.xml();
|
trace(val);
|
xaserverarg args;
|
args.setNativePointer(args.CreateInstance());
|
args.AddArg(L"content", val);
|
args.AddArg(L"dbmap", L"CompanyInfo.dbmap");
|
//trace(m_EntityValueEx);
|
xml x1;
|
|
if (xurl::post(L"OrganizationStruct/update.companyinfoex", args.GetString(), x1) != 1)
|
//if (xaserver::ExecXAction(L"",L"[update.CompanyInfoEx.xa]",args.GetString(),x1) !=1)
|
{
|
xstring error = x1.text();
|
trace(error);
|
}
|
else
|
{
|
trace(x1.xml());
|
if (x1.selectSingleNode(L"error"))
|
{
|
alert(L"±£´æ³ö´í2!");
|
return 0;
|
}
|
MessageBox(GetHWND(), L"±£´æ³É¹¦£¡", L"Ìáʾ", 0);
|
}
|
xutil::RestoreCursor(hIcon);
|
dw_detail.ResetUpdateStatus();
|
dw_bank.ResetUpdateStatus();
|
dw_detail.DwUpdateAllTo(x);
|
val = x.xml();
|
trace(val);
|
return 1;
|
}
|
|
int OnItemChanged(TEvent* evt, LPARAM p)
|
{
|
DWNMHDR& dwhdr = *(DWNMHDR*)evt->notify.pnmh;
|
int row = dwhdr.row;
|
xstring col = dwhdr.colname;
|
xstring data = dwhdr.data;
|
if (col == L"Name")
|
{
|
xml x;
|
|
xaserverarg arg;
|
|
arg.AddArg(L"Name", data);
|
}
|
|
return 1;
|
}
|
|
int OnChildContent(TEvent* evt, LPARAM p)
|
{
|
DWNMHDR& dwhdr = *(DWNMHDR*)evt->notify.pnmh;
|
xstring col = dwhdr.colname;
|
if (col != L"") {
|
xml x;
|
|
xaserverarg arg;
|
|
xstring query;
|
query = L"[IResourceMSSql.xq]";
|
if (col == L"TradeType") {
|
arg.AddArg(L"ResourceType", L"TradeType");//óÒ×·½Ê½
|
}
|
if (xaserver::ExecXQuery(GetServerUrl(), query, arg.GetString(), x) == 1)
|
dwhdr.data = x.xml();
|
//trace(x.GetXml());
|
}
|
return 1;
|
}
|
|
int OnAddRow()
|
{
|
int h = m_layer.GetSheetIndex();
|
if (h == 1)
|
{
|
xdwtable dw = new xdwtable;
|
dw.setNativePointer(dw_bank.GetCurTable());
|
xstring dw_n = dw.GetDwName();
|
if (dw_n == L"item")
|
{
|
int row = dw.InsertRow(0);
|
dw.SetItemString(row, L"Status", L"Y");
|
}
|
}
|
return 1;
|
}
|
|
int OnInsertRow()
|
{
|
int h = m_layer.GetSheetIndex();
|
if (h == 1)
|
{
|
xdwtable dw = new xdwtable;
|
dw.setNativePointer(dw_bank.GetCurTable());
|
xstring dw_n = dw.GetDwName();
|
if (dw_n == L"item")
|
{
|
int row = dw.GetRow();
|
int crow = dw.InsertRow(row);
|
dw.SetItemString(crow, L"Status", L"Y");
|
}
|
}
|
return 1;
|
}
|
|
int OnDeleteRow()
|
{
|
int h = m_layer.GetSheetIndex();
|
if (h == 1)
|
{
|
xdwtable dw = new xdwtable;
|
dw.setNativePointer(dw_bank.GetCurTable());
|
xstring dw_n = dw.GetDwName();
|
if (dw_n == L"item")
|
{
|
int row = dw.GetRow();
|
dw.DeleteRow(row);
|
}
|
}
|
return 1;
|
}
|
|
//ÃüÁî·¢²¼º¯Êý
|
int OnCmdDispatch(xstring comdid)
|
{
|
if (comdid == L"Save") OnSave();
|
else if (comdid == L"AddRow") OnAddRow();
|
else if (comdid == L"InsertRow") OnInsertRow();
|
else if (comdid == L"DeleteRow") OnDeleteRow();
|
return 0;
|
}
|
|
//ÃüÁî´¦Àíʼþ
|
int OnXCommand(TEvent* evt, LPARAM param)
|
{
|
return OnCmdDispatch(evt->xcommand.pStrID);
|
}
|
|
int OnAttachEvent()
|
{
|
//°ó¶¨¹¤¾ßÌõµã»÷ʼþ
|
AttachEvent(L"WM_XCOMMAND", (FEvent)&CompanyMaint::OnXCommand);
|
//»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ
|
AttachEvent(L"WM_SETFOCUS", (FEvent)&CompanyMaint::OnSetFocus);
|
//ÏÂÀ¿ò ÌṩÄÚÈÝ
|
AttachEvent(L"dw_detail", L"DWV_CHILDCONTENT", (FEvent)&CompanyMaint::OnChildContent);
|
AttachEvent(L"dw_detail", L"DWV_ITEMCHANGED", (FEvent)&CompanyMaint::OnItemChanged);
|
return 1;
|
}
|
|
int OnRetrieve()
|
{
|
xml x;
|
|
xaserverarg arg;
|
|
arg.AddArg(L"guid", m_sguid);
|
//trace(m_sguid);
|
//if (xurl::get(L"OrganizationStruct/detail.CompanyInfo",arg.GetString(),x) != 1)
|
if (xurl::post(L"OrganizationStruct/detail.CompanyInfo", arg.GetString(), x) != 1)
|
{
|
trace(x.text());
|
return -1;
|
}
|
else
|
{
|
dw_detail.Retrieve(x);
|
dw_detail.Redraw();
|
dw_bank.Retrieve(x);
|
dw_bank.Redraw();
|
//trace(x.GetXml());
|
}
|
|
return 1;
|
}
|
|
int OnInitial()
|
{
|
SetArg();
|
SetAgent();
|
xaserverarg arg;
|
arg = GetArg();
|
if (arg)
|
{
|
m_operate = arg.GetArgString(L"operate");
|
m_sguid = arg.GetArgString(L"guid");
|
}
|
/*if ( m_sguid == L"" || m_sguid == nil)
|
{
|
m_sguid = win::GetGuid();
|
trace(m_sguid);
|
}*/
|
|
OnAttachEvent();
|
|
return 1;
|
}
|
|
int onload()
|
{
|
m_layer = GetControl(L"cTab");
|
|
dw_detail = GetControl(L"dw_detail");
|
dw_detail.openUrl(L"×éÖ¯¼Ü¹¹.vface/template/company/detail");
|
dw_detail.SetColHeaderHeight(0);
|
dw_detail.SetRowSelectorWidth(0);
|
dw_bank = GetControl(L"dw_bank");
|
dw_bank.openUrl(L"×éÖ¯¼Ü¹¹.vface/template/company/bank");
|
|
OnInitial();
|
if (m_sguid != L"") {
|
OnRetrieve();
|
}
|
else {
|
xdwtable dw = dw_detail.FindDwTable(L"CompanyInfo", 0);
|
dw.SetItemString(1, L"Status", L"1");
|
dw.SetItemString(1, L"InternalFlag", L"Y");
|
dw.SetItemString(1, L"Type", L"0");
|
xstring suserid = publiccode::GetUser().id;
|
/*xstring susername = publiccode::GetUserInfo().name;
|
xstring sdate = publiccode::GetCurDate();
|
dw.SetItemString(1,L"CreatorID",suserid);
|
dw.SetItemDisplayString(1,L"CreatorID",susername);
|
dw.SetItemString(1,L"CreateDate",sdate);*/
|
|
dw = dw_detail.FindDwTable(L"address", 0);
|
dw.SetItemString(1, L"IdentifyAddressFlag", L"Y");
|
dw.SetItemString(1, L"Status", L"1");
|
dw = dw_detail.FindDwTable(L"Regist", 0);
|
dw.SetItemString(1, L"IdentifyAddressFlag", L"N");
|
dw.SetItemString(1, L"Status", L"1");
|
|
dw = dw_bank.FindDwTable(L"item", 0);
|
if (dw) {
|
//KXMLDOMElement ele = dw.GetElement();
|
//trace(ele.xml);
|
//dw.SetItemString(1,L"Status",L"Y");
|
}
|
}
|
return 1;
|
}
|
|
};
|