From 9b3b2eb20b09e13da837a28f16e552ba70a090c4 Mon Sep 17 00:00:00 2001 From: LiFan <2308045698@qq.com> Date: 星期四, 24 四月 2025 14:48:21 +0800 Subject: [PATCH] update --- jrj/project/printview/Template.Print.Dialog.cpp | 1034 ++++++++++++++++++++++++++------------------------------ 1 files changed, 482 insertions(+), 552 deletions(-) diff --git a/jrj/project/printview/Template.Print.Dialog.cpp b/jrj/project/printview/Template.Print.Dialog.cpp index 0d42d67..6d5f4ee 100644 --- a/jrj/project/printview/Template.Print.Dialog.cpp +++ b/jrj/project/printview/Template.Print.Dialog.cpp @@ -4,603 +4,532 @@ #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; -class __declspec(dllexport) TemplatePrintDialog : public responsewin +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; - xole ole_1; - bool bupdate; + 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: - TemplatePrintDialog(void* implPtr, HWND hWnd) :maint(implPtr, hWnd) {} -public: - static TemplatePrintDialog* CreateInstance(void* implPtr, void* hWnd) + int OnRetrieve() { - TemplatePrintDialog* pWin = new TemplatePrintDialog(implPtr, (HWND)hWnd); - return pWin; + 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 OnHtml() + + 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()) { - xstring s1=L"<catalog>"+ - " <book id='bk101'>"+ - " <author>Gambardella, Matthew</author>"+ - " <title>XML Developer's Guide</title>"+ - " <genre>Computer</genre>"+ - " <price>44.95</price>"+ - " <publish_date>2000-10-01</publish_date>"+ - " <description>An in-depth look at creating applications "+ - " with XML.</description>"+ - " </book>"+ - " <book id='bk102'>"+ - " <author>Ralls, Kim</author>"+ - " <title>Midnight Rain</title>"+ - " <genre>Fantasy</genre>"+ - " <price>5.95</price>"+ - " <publish_date>2000-12-16</publish_date>"+ - " <description>A former architect battles corporate zombies, L"+ - " an evil sorceress, and her own childhood to become queen "+ - " of the world.</description>"+ - " </book>"+ - " </catalog>"; - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); - x.LoadXml(s1); -//trace(x.GetXml()); - - //xstring s2=L"<?xml version='1.0'?>"+ - xstring s2= - "<xsl:stylesheet version='1.0'"+ - " xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >"+ - "<xsl:output method='xml' indent='yes'/>"+ - "<xsl:template match='catalog'>"+ - "<HTML>"+ - " <HEAD>"+ - " <TITLE>Books catalog - listing for Books.xml</TITLE>"+ - " </HEAD>"+ - " <BODY><FONT FACE='Verdana'>"+ - " <H3>My Books Catalog</H3>"+ - " <TABLE CELLPADDING='5' CELLSPACING='2'>"+ - " <xsl:for-each select='book'>"+ - " <TR>"+ - " <TD ALIGN='LEFT'><FONT SIZE='2'><B>ID:</B>  <xsl:value-of select='@id'/><BR/>"+ - " <B>Author:</B>  <xsl:value-of select='author'/><BR/>"+ - " <B>Title:</B>  <xsl:value-of select='title'/><BR/>"+ - " <B>Genre:</B>  <xsl:value-of select='genre'/><BR/>"+ - " <B>Price:</B>  <xsl:value-of select='price'/><BR/>"+ - " <B>Published on:</B>  <xsl:value-of select='publish_date'/><BR/>"+ - " <B>Description:</B>  <xsl:value-of select='description'/></FONT></TD>"+ - " </TR>"+ - " </xsl:for-each>"+ - "</TABLE>"+ - "</FONT>"+ - "</BODY>"+ - "</HTML>"+ - "</xsl:template>"+ - "</xsl:stylesheet>" ; - xml xsl = new xml; - xsl.setNativePointer(xml::CreateInstance()); - xsl.LoadXml(s2); -//trace(xsl.GetXml()); - - xstring strHtml = x.GetXmlDoc().transformNode(xsl.GetXmlDoc()); - //strHtml = str.mid(21,99999); - ole_1.LoadHtml(strHtml); - //html_1.SetContent(strHtml); - //alert(strHtml); - - return 0; + alert(L"请选择要维护的模板!"); + return 1; } - - int OnRetrieve() + else { - xstring username = publiccode::GetUser().name; - if(username != L"admin" && m_Dir != username ) + 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"/") { - bupdate = false; + sFile = L"/business/rpttemplate" + sFile; }else - { - bupdate = true; - } - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); - xaserverarg arg = new xaserverarg; - arg.setNativePointer(arg.CreateInstance()); - arg.AddArg(L"Entity",m_EntityName); - arg.AddArg(L"Dir",m_Dir); - dw_list.Reset(); - if (url::get(L"/sale/data/SysPrintTemplate/listDialog",arg.GetString(),x) != 1) - { - trace(x.GetXmlDoc().text); - return -1; - }else - { - xstring s = x.GetXml(); - 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 = m_filePath + ele.selectSingleNode(L"urlPath").text; - arg_param.AddArg(L"xsl",sFile); - arg_param.AddArg(L"return",L"cancel"); - - OpenWindow(L"dev:xpage[Maint.Template.Print.vx]",cast(arg_param.GetString() as int)); - 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 suri= L"rpttemplate"+L"\\"+m_EntityName; //rpttemplate\SO - //suri = L"supplier00"; - xstring ret = xaserver::UploadFile(suri, sname, this.GetHWND(),L"",false); - if (ret == L"-1") - { - alert(L"上传的文件没选择!"); - return 1; - } - else - { - xml x=new xml; - x.setNativePointer(xml::CreateInstance()); - xaserverarg args = new xaserverarg; - args.setNativePointer(args.CreateInstance()); - args.AddArg(L"sID",sguid); - args.AddArg(L"sEntity",m_EntityName); - args.AddArg(L"sDir",m_Dir); - 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 (url::get(L"/sale/data/SysPrintTemplate/Save",args.GetString(),x) != 1) - { - trace(L"error:"+x.GetXml()); - 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 (win32::MessageBox(GetHWND(),L"确定要删除选中的模板?",L"提示",1) == 2) - return 0; - KXMLDOMElement ele = dw_list.GetRowElement(row); - xstring sguid = ele.selectSingleNode(L"ID").text; - xml x=new xml; - x.setNativePointer(xml::CreateInstance()); - xaserverarg args = new xaserverarg; - args.setNativePointer(args.CreateInstance()); - args.AddArg(L"sID",sguid); - if (url::get(L"/sale/data/SysPrintTemplate/Delete",args.GetString(),x) != 1) - { - trace(L"error:"+x.GetXml()); - alert(L"删除出错了!"); - return 0; - } - else - { - alert(L"删除成功!"); - OnRetrieve(); - } - } - - return 0; - } - - int OnDocListDoubleClicked(ref TNotifyEvent evt,int p) - { - int hCursor = xutil::SetCursorWait(); - OnOpenDocument(); - xutil::RestoreCursor(hCursor); - return 1; - } - - int OnDoubleClicked(ref TNotifyEvent evt,int p) - { - int hCursor = xutil::SetCursorWait(); - OnOk(); - xutil::RestoreCursor(hCursor); - return 1; - } + sFile = m_filePath + sFile; - 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"); + 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 OnOk() + return 1; + } + + int OnAddDir() + { + return 0; + } + int OnAddTempl() + { + if (m_Dir == L"") { - 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 = m_filePath + ele.selectSingleNode(L"urlPath").text; - 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; - }*/ - } + alert(L"请选择模板目录!"); return 0; } - - int OnSave() + xstring sguid = publiccode::GetGuid(); + xstring sname = sguid + L".xsl"; + xstring entityName = m_EntityName; + xstring entitys = L",CD,GDN3,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") { - dw_list.AcceptText(); - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); - dw_list.DwUpdateAllToEx(x.GetXmlDoc()); - - xaserverarg arg = new xaserverarg; - arg.setNativePointer(xaserverarg::CreateInstance()); - arg.AddArg(L"content",x.GetXml()); - - if (url::get(L"/sale/data/SysPrintTemplate/updateinfo",arg.GetString(),x) != 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(L"error:"+x.GetXml()); + 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 = new xml; - x.setNativePointer(xml::CreateInstance()); - x.LoadXml(strNode); - KXMLDOMDocument doc= x.GetXmlDoc(); - 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; + alert(L"上传模板成功!"); + OnRetrieve(); } + } + return 1; + } + + int OnDelTempl() + { + + int row = dw_list.GetRow(); + if (row<0 || row>dw_list.GetRowCount()) + { + alert(L"请选择要删除的模板!"); return 0; } - - - int PostOnAttachEvent() + else { - //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",OnDocListDoubleClicked); - AttachEvent(L"dw_list",L"DWV_DOUBLECLICKED",OnDoubleClicked); - return 1; - } - - int SetAgent() - { - PUser puser = new PUser; - puser = publiccode::GetUser(); - xstring susername = puser.name; - if (susername !=L"admin") + 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) { - 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 = new PUser; - puser = publiccode::GetUser(); - xstring susername = puser.name; - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); - xaserverarg arg = new xaserverarg; - arg.setNativePointer(arg.CreateInstance()); - arg.AddArg(L"EntityName",m_EntityName,L""); - arg.AddArg(L"EntityID",m_EntityID,L""); - arg.AddArg(L"susername",susername,L""); // - if (url::get(L"/sale/data/SysPrintTemplate/Dir",arg.GetString(),x) != 1) - { - trace(x.GetXmlDoc().text); - return -1; - }else - { - xstring s = x.GetXml(); - } - KXMLDOMNodeList nlist = x.GetXmlDoc().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:"+i.toString()+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:"+i.toString()+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:"+i.toString()+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:"+i.toString()+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 = this.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 = new xaserverarg; - if (GetParam()) - { - int p = GetParam(); - arg_param.setNativePointer(p); - m_EntityName = arg_param.GetArgString(L"EntityName"); - m_EntityID = arg_param.GetArgString(L"EntityID"); - m_EntityNo = arg_param.GetArgString(L"EntityNo"); - - xaserverarg arg = new xaserverarg; - arg.setNativePointer(xaserverarg::CreateInstance()); - arg.AddArg(L"EntityName", m_EntityName); - arg.AddArg(L"EntityID", m_EntityID); - arg.AddArg(L"EntityNo", m_EntityNo); - xml x =new xml; - x.setNativePointer(xml::CreateInstance()); - if(url::get(L"/sale/data/DocumentList3/bill/doclist", arg.GetString(),x)!=1) - { - xstring error = x.GetXmlDoc().text; - trace(error); - }else - { - dw_doclist.Retrieve(x); - dw_doclist.SetReadOnly(true); - } + trace((xstring)L"error:" + x.xml()); + alert(L"删除出错了!"); + return 0; } else { - arg_param.setNativePointer(arg_param.CreateInstance()); - m_EntityName = L"SO"; - m_EntityID =L"00000000-0000-0000-0000-000000000000"; + alert(L"删除成功!"); + OnRetrieve(); } + } - m_Dir = L""; - m_filePath = m_filePath + L"/" + m_EntityName+L"/"; - //trace(m_filePath); - - CreateDir(); - + 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; } - - int onload() - { - responsewin::onload(); - - /*if (GetParam()) + else { - xstring action = arg_param.GetArgString(L"action"); - if(action==L"open" || (action==L"" && dw_doclist.GetRowCount() > 0)) - SwitchLayer(L"sheet2",L"frame"); + 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 onloaded() + + int PreOnCmdDispatch(xstring comdid) { - //responsewin::onload(); + //返回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"); @@ -608,6 +537,7 @@ SwitchLayer(L"sheet2",L"frame"); } */ + return 1; } }; \ No newline at end of file -- Gitblit v1.9.3