#include <wobject/xstring.hpp>
|
#include <xcontrol/xtreeview.hpp>
|
#include <xcontrol/xdwgrid.hpp>
|
#include <xcontrol/xlayersheet.hpp>
|
|
#include "vbusiness/vframe/maint.vframe.vbusiness.hpp"
|
#include "vbusiness/vframe/responsewin.vframe.vbusiness.hpp"
|
#include "viewobject/view.base.hpp"
|
|
using xml = KXMLDOMDocument;
|
|
DeclWinObject_(TemplatePrintDialog, responsewin)
|
{
|
CreateWinObject_(TemplatePrintDialog, responsewin)
|
|
public:
|
xaserverarg arg_param;
|
xstring m_EntityName;
|
xstring m_EntityID;
|
xstring m_EntityNo;
|
xstring m_Dir;
|
xstring m_filePath;
|
xstring strNode;
|
xdwgrid dw_list;
|
xdwgrid dw_doclist;
|
bool bupdate;
|
|
public:
|
int OnRetrieve()
|
{
|
xstring username = publiccode::GetUser().name;
|
if (username != L"admin" && m_Dir != username)
|
{
|
bupdate = false;
|
}
|
else
|
{
|
bupdate = true;
|
}
|
xml x;
|
|
xaserverarg arg;
|
|
arg.AddArg(L"Entity", m_EntityName);
|
arg.AddArg(L"Dir", m_Dir);
|
dw_list.Reset();
|
if (xurl::get(L"/sale/data/SysPrintTemplate/listDialog", arg.GetString(), x) != 1)
|
{
|
trace(x.text());
|
return -1;
|
}
|
else
|
{
|
xstring s = x.xml();
|
dw_list.Retrieve(x);
|
}
|
dw_list.Redraw();
|
//dw_list.SetReadOnly(true);
|
if (dw_list.GetRowCount() > 0)
|
dw_list.SelectRow(1, true);
|
return 1;
|
}
|
|
int OnNewTempl()
|
{
|
OpenWindow(L"dev:xpage[Maint.Template.Print.vx]");
|
return 1;
|
}
|
|
int OnMaintTempl()
|
{
|
int row = dw_list.GetRow();
|
if (row<0 || row>dw_list.GetRowCount())
|
{
|
alert(L"ÇëÑ¡ÔñҪά»¤µÄÄ£°å!");
|
return 1;
|
}
|
else
|
{
|
KXMLDOMElement ele = dw_list.GetRowElement(row);
|
xstring sguid = ele.selectSingleNode(L"ID").text();
|
xstring sTemplName = ele.selectSingleNode(L"TemplName").text();
|
//xstring sFile = m_filePath + sguid+L".xsl";
|
xstring sFile = ele.selectSingleNode(L"urlPath").text();
|
if (sFile.left(1) == L"/")
|
{
|
sFile = L"/business/rpttemplate" + sFile;
|
}else
|
sFile = m_filePath + sFile;
|
|
arg_param.AddArg(L"xsl", sFile);
|
arg_param.AddArg(L"return", L"cancel");
|
|
OpenWindow(L"dev:xpage[Maint.Template.Print.vx]", arg_param);
|
CloseWindow();
|
|
}
|
return 1;
|
}
|
|
int OnAddDir()
|
{
|
return 0;
|
}
|
int OnAddTempl()
|
{
|
if (m_Dir == L"")
|
{
|
alert(L"ÇëÑ¡ÔñÄ£°åĿ¼!");
|
return 0;
|
}
|
xstring sguid = publiccode::GetGuid();
|
xstring sname = sguid + L".xsl";
|
xstring entityName = m_EntityName;
|
xstring entitys = L",CD,GDN3,AP,AP3,PO,PurchaseOrder,Quote,Quote1,SaleOrder,VATNotify,";
|
if(entitys.find(entityName) < 0)
|
entityName = L"SaleOrder";
|
xstring suri = L"rpttemplate\\" + entityName; //rpttemplate\SO
|
//suri = L"supplier00";
|
xstring ret = xaserver::UploadFile(suri, sname, GetHWND(), L"", false);
|
if (ret == L"-1")
|
{
|
alert(L"ÉÏ´«µÄÎļþûѡÔñ!");
|
return 1;
|
}
|
else
|
{
|
xml x;
|
xaserverarg args;
|
args.AddArg(L"sID", sguid);
|
args.AddArg(L"sEntity", m_EntityName);
|
args.AddArg(L"sDir", m_Dir);
|
args.AddArg(L"urlPath", sname);
|
if (entityName != m_EntityName)
|
args.AddArg(L"urlPath", L"/SaleOrder/" + sname);
|
else
|
args.AddArg(L"urlPath", sname);
|
|
//alert(m_Dir);
|
while (ret.find(L"\\", 0) >= 0)
|
ret = ret.mid(ret.find(L"\\", 0) + 1, 9999);
|
|
args.AddArg(L"sTemplName", ret);
|
//trace(args.GetString());
|
if (xurl::get(L"/sale/data/SysPrintTemplate/Save", args.GetString(), x) != 1)
|
{
|
trace((xstring)L"error:" + x.xml());
|
alert(L"±£´æ³ö´íÁË!");
|
return 1;
|
}
|
else
|
{
|
alert(L"ÉÏ´«Ä£°å³É¹¦!");
|
OnRetrieve();
|
}
|
}
|
return 1;
|
}
|
|
int OnDelTempl()
|
{
|
|
int row = dw_list.GetRow();
|
if (row<0 || row>dw_list.GetRowCount())
|
{
|
alert(L"ÇëÑ¡ÔñҪɾ³ýµÄÄ£°å!");
|
return 0;
|
}
|
else
|
{
|
if (MessageBox(GetHWND(), L"È·¶¨ÒªÉ¾³ýÑ¡ÖеÄÄ£°å£¿", L"Ìáʾ", 1) == 2)
|
return 0;
|
KXMLDOMElement ele = dw_list.GetRowElement(row);
|
xstring sguid = ele.selectSingleNode(L"ID").text();
|
xml x;
|
xaserverarg args;
|
args.AddArg(L"sID", sguid);
|
if (xurl::get(L"/sale/data/SysPrintTemplate/Delete", args.GetString(), x) != 1)
|
{
|
trace((xstring)L"error:" + x.xml());
|
alert(L"ɾ³ý³ö´íÁË!");
|
return 0;
|
}
|
else
|
{
|
alert(L"ɾ³ý³É¹¦!");
|
OnRetrieve();
|
}
|
}
|
|
return 0;
|
}
|
|
int OnDocListDoubleClicked(TEvent * evt, int p)
|
{
|
HCURSOR hCursor = xutil::SetCursorWait();
|
OnOpenDocument();
|
xutil::RestoreCursor(hCursor);
|
return 1;
|
}
|
|
int OnDoubleClicked(TEvent * evt, int p)
|
{
|
HCURSOR hCursor = xutil::SetCursorWait();
|
OnOk();
|
xutil::RestoreCursor(hCursor);
|
return 1;
|
}
|
|
int OnOpenDocument()
|
{
|
if (dw_doclist.GetRowCount() < 1) return 1;
|
xstring documentid = dw_doclist.GetRowElement(dw_doclist.GetRow()).getAttribute(L"guid");
|
//xstring billid = dw_docList
|
arg_param.AddArg(L"DocumentID", documentid);
|
arg_param.AddArg(L"return", L"ok");
|
arg_param.AddArg(L"action", L"open");
|
CloseWindow();
|
return 1;
|
}
|
|
int OnOk()
|
{
|
int row = dw_list.GetRow();
|
if (row<0 || row>dw_list.GetRowCount())
|
{
|
alert(L"ÇëÑ¡ÔñÒª´òÓ¡µÄÄ£°å!");
|
return 1;
|
}
|
else
|
{
|
KXMLDOMElement ele = dw_list.GetRowElement(row);
|
trace(L"\r\n---------------");
|
trace(ele.xml());
|
|
xstring sguid = ele.selectSingleNode(L"ID").text();
|
xstring pre = L"";
|
if (ele.selectSingleNode(L"TemplPre")) pre = ele.selectSingleNode(L"TemplPre").text();
|
xstring sTemplName = ele.selectSingleNode(L"TemplName").text();
|
//xstring sFile = m_filePath + sguid+L".xsl";
|
trace(sTemplName);
|
xstring sFile = ele.selectSingleNode(L"urlPath").text();
|
if (sFile.left(1) == L"/")
|
{
|
sFile = L"/business/rpttemplate" + sFile;
|
}
|
else
|
sFile = m_filePath + sFile;
|
|
arg_param.AddArg(L"xsl", sFile);
|
arg_param.AddArg(L"return", L"ok");
|
arg_param.AddArg(L"template-name", sTemplName);
|
arg_param.AddArg(L"template-guid", sguid);
|
arg_param.AddArg(L"template-pre", pre);
|
arg_param.AddArg(L"action", L"new");
|
trace(arg_param.GetString());
|
CloseWindow();
|
/*xaserver::CreateDirectory(L"C:/Temp");
|
int openRet = xaserver::DownLoadFile(GetServerUrl(),m_filePath+file,sTemplName,L"C:/Temp/"+sTemplName);
|
if(openRet < 0)
|
{
|
alert(L"Îļþ´ò¿ªÊ§°Ü£¡");
|
return 0;
|
}
|
|
int GENERIC_READ = 0x80000000;
|
int GENERIC_WRITE = 0x40000000;
|
int FILE_SHARE_READ = 0x00000001;
|
int FILE_SHARE_WRITE = 0x00000002;
|
int OPEN_EXISTING = 3;
|
int FILE_ATTRIBUTE_ARCHIVE =0x00000020;
|
int hFile = xwin::CreateFile(L"C:/Temp/"+sTemplName,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);
|
if (hFile >0)
|
{
|
//int GMEM_MOVEABLE=0x0002;
|
//int GMEM_ZEROINIT=0x0040;
|
//int MEMSIZE;
|
//int hMemory = GlobalAlloc(GMEM_MOVEABLE|GMEM_ZEROINIT,MEMSIZE);
|
//int pMemory = GlobalLock(hMemory);
|
//int SizeReadWrite;
|
//xwin::ReadFile(hFile,pMemory,MEMSIZE - 1,SizeReadWrite,0);
|
int filesize = xwin::GetFileSize(hFile,0);
|
trace(L"filesize = %d",filesize);
|
xstring buffer = L"".space(filesize+1);
|
int readsize = new int;
|
xwin::ReadFile(hFile,buffer,filesize,readsize,0);
|
trace(buffer);
|
xwin::CloseHandle(hFile);
|
//GlobalUnlock(pMemory);
|
//GlobalFree(hMemory);
|
} */
|
/*openRet = xwin::ShellExecute(0,L"open",L"C:/Temp/"+sTemplName,L"",L"",5);
|
if(openRet < 32)
|
{
|
alert(L"Îļþ´ò¿ªÊ§°Ü2£¡");
|
return 0;
|
}*/
|
}
|
return 0;
|
}
|
|
int OnSave()
|
{
|
dw_list.AcceptText();
|
xml x;
|
|
dw_list.DwUpdateAllToEx(x);
|
|
xaserverarg arg;
|
|
arg.AddArg(L"content", x.xml());
|
|
if (xurl::get(L"/sale/data/SysPrintTemplate/updateinfo", arg.GetString(), x) != 1)
|
{
|
trace((xstring)L"error:" + x.xml());
|
alert(L"±£´æ³ö´íÁË!");
|
return 1;
|
}
|
else
|
{
|
dw_list.ResetUpdateStatus();
|
alert(L"±£´æ³É¹¦!");
|
}
|
|
return 1;
|
}
|
|
int PreOnCmdDispatch(xstring comdid)
|
{
|
//·µ»Ø0¡ª¡ª²»ÔÚÖ´ÐÐÒÔÏ´úÂ룻·µ»ØÆäËû¡ª¡ªÖ´ÐÐÒÔÏ´úÂë¡£
|
if (comdid.left(8) == L"xmPanel:") {
|
xstring no = comdid.mid(8, 99);
|
//int id = no.toInt();
|
|
xml x;
|
|
x.loadXML(strNode);
|
KXMLDOMDocument doc = x;
|
KXMLDOMElement e = doc.documentElement();
|
xstring slable = e.selectSingleNode(L"//xtoolbutton[@name='" + comdid + L"']/@caption").text();
|
m_Dir = slable;
|
OnRetrieve();
|
|
return 1;
|
}
|
if (comdid == L"xmAddDir") return OnAddDir();
|
if (comdid == L"xmAddTempl" && bupdate) return OnAddTempl();
|
if (comdid == L"xmDelTempl" && bupdate) return OnDelTempl();
|
if (comdid == L"xmMaintTempl" && bupdate) return OnMaintTempl();
|
if (comdid == L"xmNewTempl" && bupdate) return OnNewTempl();
|
//if (comdid==L"xmHtml") return OnHtml();
|
if (comdid == L"xmOk") return OnOk();
|
if (comdid == L"xmSave") return OnSave();
|
if (comdid == L"xmOpen") return OnOpenDocument();
|
else if (comdid == L"xmCancel")
|
{
|
arg_param.AddArg(L"return", L"cancel");
|
CloseWindow();
|
return 1;
|
}
|
return 0;
|
}
|
|
|
int PostOnAttachEvent()
|
{
|
//AttachEvent(L"dw_list",L"DWV_ROWFOCUSCHANGED",OnRowChanged);
|
//AttachEvent(L"dw_list",L"DWV_CLICKED",OnClicked);
|
//AttachEvent(L"dw_list",L"DWV_RCLICKED",OnRClicked);
|
//AttachEvent(L"dw_list",L"DWV_ITEMCHANGED",OnItemChanged);
|
//AttachEvent(L"dw_list",L"DWV_CHILDCONTENT",OnChildContent);
|
AttachEvent(L"dw_doclist", L"DWV_DOUBLECLICKED", (FEvent)&TemplatePrintDialog::OnDocListDoubleClicked);
|
AttachEvent(L"dw_list", L"DWV_DOUBLECLICKED", (FEvent)&TemplatePrintDialog::OnDoubleClicked);
|
return 1;
|
}
|
|
int SetAgent()
|
{
|
PUser& puser = publiccode::GetUser();
|
xstring susername = puser.name;
|
if (susername != L"admin")
|
{
|
xstring xfNodeAgentArea = L"DirButton";
|
xnode anode = GetAgentNode(xfNodeAgentArea);
|
KXMLDOMElement xframeElement = GetElement();
|
xstring tools = L"<vbox name='DirButton' height='48' />";
|
SetAgentNode(anode, tools);
|
}
|
return 1;
|
}
|
|
int CreateDir()
|
{
|
PUser& puser = publiccode::GetUser();
|
xstring susername = puser.name;
|
xml x;
|
|
xaserverarg arg;
|
|
arg.AddArg(L"EntityName", m_EntityName, L"");
|
arg.AddArg(L"EntityID", m_EntityID, L"");
|
arg.AddArg(L"susername", susername, L""); //
|
if (xurl::get(L"/sale/data/SysPrintTemplate/Dir", arg.GetString(), x) != 1)
|
{
|
trace(x.text());
|
return -1;
|
}
|
else
|
{
|
xstring s = x.xml();
|
}
|
KXMLDOMNodeList nlist = x.selectNodes(L"//Entity");
|
int i;
|
int nlen = nlist.length();
|
xstring toolStr = L"<vbox name='Dir'>";
|
xstring deptName = publiccode::GetUser().deptname;
|
if (deptName == L"¶©µ¥²Ù×÷²¿" && m_EntityName == L"GDN3") {
|
for (i = 2; i < nlen; i++)
|
{
|
KXMLDOMElement e1 = nlist.item(i);
|
xstring sDir1 = e1.selectSingleNode(L"@Dir").text();
|
xstring str1 = L"<xtoolbutton image='15' caption='" + sDir1 + L"' height='24' name='xmPanel:" + xstring(i) + L"' style='background-color:none #ceecce none #ffffff'/>";
|
|
toolStr += str1;
|
if (i == 2)
|
m_Dir = sDir1;
|
}
|
}
|
else if (deptName.find(L"ÒµÎñ") >= 0 && m_EntityName == L"GDN3")
|
{
|
for (i = 1; i < 2; i++)
|
{
|
KXMLDOMElement e2 = nlist.item(i);
|
xstring sDir2 = e2.selectSingleNode(L"@Dir").text();
|
xstring str2 = L"<xtoolbutton image='15' caption='" + sDir2 + L"' height='24' name='xmPanel:" + xstring(i) + L"' style='background-color:none #ceecce none #ffffff'/>";
|
|
toolStr += str2;
|
if (i == 1)
|
m_Dir = sDir2;
|
}
|
for (i = 4; i < nlen; i++)
|
{
|
KXMLDOMElement e3 = nlist.item(i);
|
xstring sDir3 = e3.selectSingleNode(L"@Dir").text();
|
xstring str3 = L"<xtoolbutton image='15' caption='" + sDir3 + L"' height='24' name='xmPanel:" + xstring(i) + L"' style='background-color:none #ceecce none #ffffff'/>";
|
|
toolStr += str3;
|
}
|
}
|
else {
|
for (i = 0; i < nlen; i++)
|
{
|
KXMLDOMElement e = nlist.item(i);
|
xstring sDir = e.selectSingleNode(L"@Dir").text();
|
xstring str = L"<xtoolbutton image='15' caption='" + sDir + L"' height='24' name='xmPanel:" + xstring(i) + L"' style='background-color:none #ceecce none #ffffff'/>";
|
|
toolStr += str;
|
if (i == 0)
|
m_Dir = sDir;
|
}
|
}
|
|
toolStr += L"</vbox>";
|
strNode = toolStr;
|
//trace(toolStr);
|
xnode anode = GetAgentNode(L"Dir");
|
xwin::SetAgentNode(anode, toolStr);
|
|
OnRetrieve();
|
return 1;
|
}
|
|
int OnInit()
|
{
|
SetAgent();
|
dw_list = GetControl(L"dw_list");
|
dw_list.openUrl(L"/sale/view/view.base/template/PrintView/listDialog");
|
dw_list.SetReadOnly(true);
|
dw_list.SetSelectionMode(4);
|
dw_list.SetColumnState(L"ID", false);
|
|
dw_doclist = GetControl(L"dw_doclist");
|
dw_doclist.openUrl(L"/sale/view/GDN/template/doclist");
|
|
xstring sUrl = GetServerUrl();
|
sUrl = sUrl.mid(0, sUrl.length() - 19);
|
m_filePath = L"/business/rpttemplate";
|
arg_param;
|
if (GetWinParam())
|
{
|
arg_param = GetArg();
|
m_EntityName = arg_param.GetArgString(L"EntityName");
|
m_EntityID = arg_param.GetArgString(L"EntityID");
|
m_EntityNo = arg_param.GetArgString(L"EntityNo");
|
|
xaserverarg arg;
|
arg.AddArg(L"EntityName", m_EntityName);
|
arg.AddArg(L"EntityID", m_EntityID);
|
arg.AddArg(L"EntityNo", m_EntityNo);
|
xml x ;
|
|
if (xurl::get(L"/sale/data/DocumentList3/bill/doclist", arg.GetString(), x) != 1)
|
{
|
xstring error = x.text();
|
trace(error);
|
}
|
else
|
{
|
dw_doclist.Retrieve(x);
|
dw_doclist.SetReadOnly(true);
|
}
|
}
|
else
|
{
|
|
m_EntityName = L"SO";
|
m_EntityID = L"00000000-0000-0000-0000-000000000000";
|
}
|
|
m_Dir = L"";
|
m_filePath = m_filePath + L"/" + m_EntityName + L"/";
|
//trace(m_filePath);
|
|
CreateDir();
|
|
return 1;
|
}
|
|
int onload()
|
{
|
SetArg();
|
responsewin::onload();
|
/*if (GetParam())
|
{
|
xstring action = arg_param.GetArgString(L"action");
|
if(action==L"open" || (action==L"" && dw_doclist.GetRowCount() > 0))
|
SwitchLayer(L"sheet2",L"frame");
|
}
|
*/
|
|
return 1;
|
}
|
};
|