#include <wobject/xstring.hpp>
|
#include <xcontrol/xtreeview.hpp>
|
#include <xcontrol/xdwgrid.hpp>
|
#include <wobject/xdouble.hpp>
|
#include <xcontrol/xlayersheet.hpp>
|
#include <xcontrol/xdatetimepick.hpp>
|
#include <adt/xarray.hpp>
|
#include <xcontrol/xcell.hpp>
|
|
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
|
#include "viewobject/view.base.hpp"
|
|
|
using xml = KXMLDOMDocument;
|
class __declspec(dllexport) QuickInputNewProductExWin : public xwin
|
{
|
public:
|
QuickInputNewProductExWin(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
|
public:
|
static QuickInputNewProductExWin* CreateInstance(void* implPtr, void* hWnd)
|
{
|
return new QuickInputNewProductExWin(implPtr, (HWND)hWnd);
|
}
|
public:
|
xdwtable dw_detail;
|
xdwtable dw_props;
|
xdwtable dw_base;
|
|
xdwgrid dw_list;
|
xnode m_agentNode; //Agent Condition
|
|
xstring m_refno;
|
xaserverarg parg;
|
|
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;
|
}
|
|
//¶ÁÈ¡²úÆ·Ê÷µÄ×ÓÏî
|
xml RetrieveGoodsTreeChildItems(xstring sno)
|
{
|
xml x ;
|
|
xaserverarg arg ;
|
|
arg.AddArg(L"no",sno);
|
if(xurl::get(L"/sale/data/SO/goods/goodslib/ChildFolderList", arg.GetString(),x)!=1)
|
{
|
xstring error = x.text();
|
//alert(error);
|
return 0;
|
}else
|
return x;
|
}
|
|
//²åÈë²úÆ·ÀàÏîµÄ×ÓÏî
|
int MakeGoodsFolder(xstring sno,int level )
|
{
|
xcombobox cbx_type = GetControl(L"cbx_category");
|
xml x = RetrieveGoodsTreeChildItems(sno);
|
if(!x) return 0;
|
|
KXMLDOMNodeList nlist = x.selectNodes(L"//Item");
|
int len = nlist.length();
|
for (int i = 0; i < len; i++)
|
{
|
KXMLDOMElement e = nlist.item(i);
|
xstring name = e.getAttribute(L"cname");
|
xstring no= e.getAttribute(L"no");
|
|
if(level == 1)
|
cbx_type.AddItem(no +L" "+ name);
|
else
|
cbx_type.AddItem(L" "+ no +L" " + name);
|
if(level ==1)
|
MakeGoodsFolder(no,level + 1);
|
}
|
return 1;
|
}
|
|
//½¹µã¼¤»î´¦Àíº¯Êý
|
int OnSetFocus(TEvent* evt, LPARAM param)
|
{
|
//ÖØÖù¤¾ßÌõ
|
SetAgent();
|
return 1;
|
}
|
|
xstring GetNo()
|
{
|
xstring typ=L"C";
|
if(m_refno.left(1)==L"[") typ=L"N";
|
|
xml x;
|
|
xaserverarg arg ;
|
|
arg.AddArg(L"count", L"1" );
|
arg.AddArg(L"type", typ );
|
if(xurl::get(L"/sale/data/SO/goods/usegoods/goodslib/asknos", arg.GetString(),x)!=1)return L"";
|
return x.text();
|
}
|
|
int OnSave()
|
{
|
int row = 0;
|
for( row = 1;row <= dw_list.GetRowCount();row++)
|
{
|
if(dw_list.GetItemString(row,L"Cname") == L"")
|
{
|
alert(L"µÚ"+xstring(row)+L"ÐÐÇëÊäÈëÖÐÎÄÃû³Æ");
|
return 0;
|
}
|
if(dw_list.GetItemString(row,L"PackingRate") == L"")
|
{
|
alert(L"µÚ"+ xstring(row) +L"ÐÐÇëÊäÈë°ü×°·½Ê½");
|
return 0;
|
}
|
if(dw_list.GetItemString(row,L"InnerQty") == L"")
|
{
|
alert(L"µÚ"+ xstring(row) +L"ÐÐÇëÊäÈëÄÚ×°Êý");
|
return 0;
|
}
|
if(dw_list.GetItemString(row,L"PackingRate") == L"")
|
{
|
alert(L"µÚ"+ xstring(row) +L"ÐÐÇëÊäÈëÍâ×°Êý");
|
return 0;
|
}
|
if(dw_list.GetItemString(row,L"PackageL") == L"")
|
{
|
alert(L"µÚ"+ xstring(row) +L"ÐÐÇëÊäÈ볤¶È");
|
return 0;
|
}
|
if(dw_list.GetItemString(row,L"PackageW") == L"")
|
{
|
alert(L"µÚ"+ xstring(row) +L"ÐÐÇëÊäÈë¿í¶È");
|
return 0;
|
}
|
if(dw_list.GetItemString(row,L"PackageH") == L"")
|
{
|
alert(L"µÚ"+ xstring(row) +L"ÐÐÇëÊäÈë¸ß¶È");
|
return 0;
|
}
|
}
|
for(row = 1;row <= dw_list.GetRowCount();row++)
|
{
|
dw_list.SetItemString(row,L"No",GetNo());
|
}
|
dw_list.Redraw();
|
xml x ;
|
|
dw_list.AcceptText();
|
dw_list.DwUpdateAllToEx(x);
|
xaserverarg arg ;
|
|
arg.AddArg(L"content",x.xml());
|
if(xurl::get(L"/sale/data/ProductLibrary3/update/newestproduct", arg.GetString(),x)!=1)
|
{
|
xstring error = x.text();
|
alert(error);
|
return 1;
|
}else
|
{
|
alert(L"±£´æ³É¹¦!");
|
dw_base.ResetUpdateStatus();
|
dw_list.ResetUpdateStatus();
|
if(parg)parg.AddArg(L"data.modify",L"1");
|
}
|
return 1;
|
}
|
|
int OnAddItem()
|
{
|
dw_list.InsertRow(0);
|
int row = dw_list.GetRowCount();
|
xstring sdate = publiccode::GetCurrentDate();
|
xstring suserid = publiccode::GetUser().id;
|
xstring categoryID = dw_base.GetItemString(1,L"CategoryID");
|
xstring supplierID = dw_base.GetItemString(1,L"SupplierID");
|
dw_list.SetItemString(row,L"FolderID",parg.GetArgString(L"guid"));
|
if(categoryID)dw_list.SetItemString(row,L"CategoryID",categoryID);
|
if(supplierID)dw_list.SetItemString(row,L"SupplierID",supplierID);
|
dw_list.SetItemString(row,L"CreateID",suserid);
|
dw_list.SetItemString(row,L"CreateDate",sdate);
|
dw_list.SetItemString(row,L"ModifierID",suserid);
|
dw_list.SetItemString(row,L"ModifyDate",sdate);
|
return 1;
|
}
|
|
//ÃüÁî·¢²¼º¯Êý
|
int OnCmdDispatch(xstring comdid)
|
{
|
if(comdid == L"xmAdd")
|
{
|
OnAddItem();
|
}
|
else if(comdid == L"xmDelete")
|
{
|
dw_list.DeleteRow(dw_list.GetRow());
|
}
|
else if(comdid == L"xmSave")
|
{
|
OnSave();
|
}
|
else if(comdid==L"xmCancel")
|
{
|
CloseWindow();
|
return 1;
|
}
|
return 0;
|
}
|
|
|
int OnCategoryChanged(TEvent* evt, int lParam)
|
{
|
xstring id = L"";
|
xstring name = L"";
|
xcombobox cbx_type = GetControl(L"cbx_category");
|
int h = cbx_type.GetCurSel();
|
xstring str = cbx_type.GetLBText(h);
|
str = str.trim();
|
return 1;
|
}
|
|
|
int OnItemChanged(TEvent* evt, int p)
|
{
|
DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
|
xstring colname=hdr.colname;
|
xstring value = hdr.data;
|
int row = hdr.row;
|
|
if(colname == L"CategoryID" || colname == L"SupplierID")
|
{
|
xstring categoryID = dw_base.GetItemString(1,L"CategoryID");
|
xstring supplierID = dw_base.GetItemString(1,L"SupplierID");
|
for(int i=1;i<=dw_list.GetRowCount();i++)
|
{
|
dw_list.SetItemString(i,L"CategoryID",categoryID);
|
dw_list.SetItemString(i,L"SupplierID",supplierID);
|
}
|
}
|
return 1;
|
}
|
//ÃüÁî´¦Àíʼþ
|
int OnXCommand(TEvent* evt, LPARAM param)
|
{
|
return OnCmdDispatch(evt->xcommand.pStrID);
|
}
|
|
int OnAttachEvent()
|
{
|
//°ó¶¨¹¤¾ßÌõµã»÷ʼþ
|
AttachEvent(L"WM_XCOMMAND", (FEvent)&QuickInputNewProductExWin::OnXCommand);
|
//»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ
|
AttachEvent(L"WM_SETFOCUS", (FEvent)&QuickInputNewProductExWin::OnSetFocus);
|
AttachEvent(L"dw_base",L"DWV_ITEMCHANGED", (FEvent)&QuickInputNewProductExWin::OnItemChanged);
|
AttachEvent(L"cbx_category",L"CBN_SELCHANGE", (FEvent)&QuickInputNewProductExWin::OnCategoryChanged);
|
return 1;
|
}
|
|
int OnInit()
|
{
|
dw_base.SetItemString(1,L"CategoryID",L"EF37E57D-5833-4AF9-BA5E-01CCF39C1F20");
|
dw_base.SetItemDisplayString(1,L"CategoryID",L"ÀñÆ·");
|
dw_base.Redraw();
|
OnAddItem();
|
return 1;
|
}
|
|
int onload()
|
{
|
SetArg();
|
dw_base = GetControl(L"dw_base");
|
dw_base.openUrl(L"/sale/view/ProductLibrary/template/newitemgroup");
|
dw_base.SetColHeaderHeight(0);
|
dw_base.SetRowSelectorWidth(0);
|
dw_base.SetHScrollState(false);
|
dw_base.SetVScrollState(false);
|
dw_base.SetEditUpperMode(true);
|
dw_list = GetControl(L"dw_list");
|
dw_list.openUrl(L"/sale/view/ProductLibrary/template/newProductItem");
|
dw_list.SetColumnState(L"CategoryID",false);
|
dw_list.SetColumnState(L"FolderID",false);
|
dw_list.SetColumnState(L"SupplierID",false);
|
dw_list.SetColumnState(L"CreateID",false);
|
dw_list.SetColumnState(L"CreateDate",false);
|
dw_list.SetColumnState(L"ModifierID",false);
|
dw_list.SetColumnState(L"ModifyDate",false);
|
|
if(GetWinParam())
|
{
|
|
parg = GetArg();
|
|
xcombobox cbx_type = GetControl(L"cbx_category");
|
xstring txt = parg.GetArgString(L"CategoryNo").trim() + L" " + parg.GetArgString(L"CName").trim();
|
cbx_type.AddItem(txt, (LPARAM)parg.GetArgString(L"guid").c_str(true)); //leak
|
cbx_type.SetText(txt);
|
}
|
OnAttachEvent();
|
OnInit();
|
return 1;
|
}
|
|
int onloaded()
|
{
|
|
SetAgent();
|
|
return 1;
|
}
|
};
|