From 59014e96b8ead79f8e885c54ae02f3facec15f8d Mon Sep 17 00:00:00 2001
From: xj qian <qianxj15@sina.com>
Date: 星期五, 28 六月 2024 14:48:05 +0800
Subject: [PATCH] add print and workflow
---
jrj/project/printview/Template.Print.Dialog.cpp | 595 ++++++++++++++++
jrj/project/workflow/workflow.chkdlg_vd.cpp | 76 ++
jrj/project/printview/Template.Print.ViewEx.cpp | 1217 ++++++++++++++++++++++++++++++++
jrj/project/workflow/workflow.actionlog_vd.cpp | 70 +
jrj/ext-jrj/ext-jrj.vcxproj | 14
jrj/project/printview/Maint.Template.PrintEx.cpp | 107 ++
jrj/project/workflow/workflow.actionlog.cpp | 66 +
jrj/project/workflow/workflow.chkdlg.cpp | 68 +
8 files changed, 2,211 insertions(+), 2 deletions(-)
diff --git a/jrj/ext-jrj/ext-jrj.vcxproj b/jrj/ext-jrj/ext-jrj.vcxproj
index 49ca2cc..1dba532 100644
--- a/jrj/ext-jrj/ext-jrj.vcxproj
+++ b/jrj/ext-jrj/ext-jrj.vcxproj
@@ -151,8 +151,8 @@
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
- <AdditionalLibraryDirectories>D:\xclient64r</AdditionalLibraryDirectories>
- <AdditionalDependencies>xarch.shape.lib;xarch.base.lib;xarch.util.lib;xarch.network.lib;xarch.xframe.lib;xarch.xcontrol.lib;xoffice.xcell.lib;xoffice.xgrid.lib;xoffice.xreport.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalLibraryDirectories>D:\xclient64r\sdk\lib</AdditionalLibraryDirectories>
+ <AdditionalDependencies>xarch.shape.lib;xarch.base.lib;xarch.util.lib;xarch.network.lib;xarch.xframe.lib;xarch.xcontrol.lib;xoffice.xcell.lib;xoffice.xgrid.lib;xoffice.xreport.lib;shlwapi.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>copy $(OutDirFullPath)ext-jrj.dll D:\xclient64r\ext\ext-jrj.dll</Command>
@@ -250,20 +250,25 @@
</ClCompile>
<ClCompile Include="..\project\business\HR\AdministrativeDepartment.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\project\business\HR\AdministrativeDepartmentFolder.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\project\business\HR\BlankExcelTemplate.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\project\business\HR\GraduationSchool.cpp" />
<ClCompile Include="..\project\business\HR\GraduationSchoolWin.vx.cpp" />
<ClCompile Include="..\project\business\HR\ManpowerFile.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\project\business\HR\ManpowerFileWindow.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\project\business\Product.list.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
@@ -287,18 +292,23 @@
</ClCompile>
<ClCompile Include="..\project\business\SO\delivery.base.maint.so.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\project\business\SO\maint.Document.SO3.v3.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\project\business\SO\paymentterm.base.maint.so.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\project\business\SO\Product.Select.SO.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\project\business\SO\select.item.so.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\project\business\Supplier.maint.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
diff --git a/jrj/project/printview/Maint.Template.PrintEx.cpp b/jrj/project/printview/Maint.Template.PrintEx.cpp
new file mode 100644
index 0000000..7ec0627
--- /dev/null
+++ b/jrj/project/printview/Maint.Template.PrintEx.cpp
@@ -0,0 +1,107 @@
+class MaintTemplatePrintWin : public xframe
+ {
+ xcell cell;
+ xnode m_agentNode; //Agent Condition
+ string args;
+
+ int SetAgent()
+ {
+ string xfNodeAgentArea = "agentarea";
+ xnode anode = GetAgentNode(xfNodeAgentArea);
+ if(m_agentNode)
+ {
+ SetAgentNodeContent (anode,m_agentNode);
+ }
+ else
+ {
+ msxml::IXMLDOMElement xframeElement = GetElement();
+ msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
+ if(agent)
+ {
+ string s = agent.xml;
+ m_agentNode = SetAgentNodeContent (anode,s);
+ }
+ }
+ return 1;
+ }
+
+ //焦点激活处理函数
+ int OnSetFocus(ref TEvent evt,int param)
+ {
+ //重置工具条
+ SetAgent();
+ return 1;
+ }
+
+ int SendCtrlCmd(xcontrol xc, string cmd)
+ {
+ win32::SendMessage(xc.GetId(),0x401,cmd,0);
+ return 1;
+ }
+
+ //命令发布函数
+ int OnCmdDispatch(string comdid)
+ {
+ if(comdid.left(3) == "IK_")
+ {
+ string cmd = comdid.mid(3, comdid.length());
+ SendCtrlCmd(GetControl("cell"),cmd);
+ return 1;
+ }
+ else if(comdid=="xmFileOpen")
+ {
+ cell.OpenFile();
+ cell.Redraw();
+ return 1;
+ }
+ else if(comdid=="xmFileSave")
+ {
+ cell.SaveFile();
+ return 1;
+ }
+ else if(comdid=="xmFileSaveAs")
+ {
+ cell.SaveFileAs();
+ return 1;
+ }
+ return 0;
+ }
+
+ //命令处理事件
+ int OnXCommand(ref TXCommandEvent evt,int param)
+ {
+ return OnCmdDispatch(evt.pStrID);
+ }
+
+ int OnAttachEvent()
+ {
+ //绑定工具条点击事件
+ AttachEvent("WM_XCOMMAND",OnXCommand);
+ //获取焦点事件,用于重置工具条
+ AttachEvent("WM_SETFOCUS",OnSetFocus);
+ }
+
+ int onload()
+ {
+ cell = GetControl("cell");
+ SetAgent();
+
+ OnAttachEvent();
+
+ if(GetParam())
+ {
+ args = GetParam();
+ cell.openUrl("/sale/data/SysPrintTemplate/getdevxsl",args);
+ }
+ else
+ args ="";
+
+ return 1;
+ }
+
+ int onloaded()
+ {
+
+ return 1;
+ }
+ };
\ No newline at end of file
diff --git a/jrj/project/printview/Template.Print.Dialog.cpp b/jrj/project/printview/Template.Print.Dialog.cpp
new file mode 100644
index 0000000..a243a8b
--- /dev/null
+++ b/jrj/project/printview/Template.Print.Dialog.cpp
@@ -0,0 +1,595 @@
+class TemplatePrintDialog : public responsewin
+{
+ xaserverarg arg_param;
+ string m_EntityName;
+ string m_EntityID;
+ string m_EntityNo;
+ string m_Dir;
+ string m_filePath;
+ string strNode;
+ xdwgrid dw_list;
+ xdwgrid dw_doclist;
+ xole ole_1;
+ bool bupdate;
+
+ int OnHtml()
+ {
+ string s1="<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, "+
+ " 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());
+
+ //string s2="<?xml version='1.0'?>"+
+ string 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());
+
+ string strHtml = x.GetXmlDoc().transformNode(xsl.GetXmlDoc());
+ //strHtml = str.mid(21,99999);
+ ole_1.LoadHtml(strHtml);
+ //html_1.SetContent(strHtml);
+ //alert(strHtml);
+
+ return 0;
+ }
+
+ int OnRetrieve()
+ {
+ string username = publiccode::GetUser().name;
+ if(username != "admin" && m_Dir != username )
+ {
+ bupdate = false;
+ }else
+ {
+ bupdate = true;
+ }
+ xml x = new xml;
+ x.setNativePointer(xml::CreateInstance());
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg.AddArg("Entity",m_EntityName);
+ arg.AddArg("Dir",m_Dir);
+ dw_list.Reset();
+ if (url::get("/sale/data/SysPrintTemplate/listDialog",arg.GetString(),x) != 1)
+ {
+ trace(x.GetXmlDoc().text);
+ return -1;
+ }else
+ {
+ string 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("dev:xpage[Maint.Template.Print.vx]");
+ return 1;
+ }
+
+ int OnMaintTempl()
+ {
+ int row = dw_list.GetRow();
+ if(row<0 || row>dw_list.GetRowCount())
+ {
+ alert("请选择要维护的模板!");
+ return 1;
+ }
+ else
+ {
+ msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
+ string sguid = ele.selectSingleNode("ID").text;
+ string sTemplName = ele.selectSingleNode("TemplName").text;
+ //string sFile = m_filePath + sguid+".xsl";
+ string sFile = m_filePath + ele.selectSingleNode("urlPath").text;
+ arg_param.AddArg("xsl",sFile);
+ arg_param.AddArg("return","cancel");
+
+ OpenWindow("dev:xpage[Maint.Template.Print.vx]",cast(arg_param.GetString() as int));
+ CloseWindow();
+
+ }
+ return 1;
+ }
+
+ int OnAddDir()
+ {
+ return 0;
+ }
+ int OnAddTempl()
+ {
+ if (m_Dir=="")
+ {
+ alert("请选择模板目录!");
+ return 0;
+ }
+ string sguid = publiccode::GetGuid();
+ string sname= sguid +".xsl";
+ string suri= "rpttemplate"+"\\"+m_EntityName; //rpttemplate\SO
+ //suri = "supplier00";
+ string ret = xaserver::UploadFile(suri, sname, this.GetHWND(),"",false);
+ if (ret == "-1")
+ {
+ alert("上传的文件没选择!");
+ return 1;
+ }
+ else
+ {
+ xml x=new xml;
+ x.setNativePointer(xml::CreateInstance());
+ xaserverarg args = new xaserverarg;
+ args.setNativePointer(args.CreateInstance());
+ args.AddArg("sID",sguid);
+ args.AddArg("sEntity",m_EntityName);
+ args.AddArg("sDir",m_Dir);
+ args.AddArg("urlPath", sname);
+ //alert(m_Dir);
+ while(ret.find("\\",0)>=0)
+ ret = ret.mid(ret.find("\\",0) + 1,9999);
+
+ args.AddArg("sTemplName",ret);
+ //trace(args.GetString());
+ if (url::get("/sale/data/SysPrintTemplate/Save",args.GetString(),x) != 1)
+ {
+ trace("error:"+x.GetXml());
+ alert("保存出错了!");
+ return 1;
+ }
+ else
+ {
+ alert("上传模板成功!");
+ OnRetrieve();
+ }
+ }
+ return 1;
+ }
+
+ int OnDelTempl()
+ {
+
+ int row = dw_list.GetRow();
+ if(row<0 || row>dw_list.GetRowCount())
+ {
+ alert("请选择要删除的模板!");
+ return 0;
+ }
+ else
+ {
+ if (win32::MessageBox(GetHWND(),"确定要删除选中的模板?","提示",1) == 2)
+ return 0;
+ msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
+ string sguid = ele.selectSingleNode("ID").text;
+ xml x=new xml;
+ x.setNativePointer(xml::CreateInstance());
+ xaserverarg args = new xaserverarg;
+ args.setNativePointer(args.CreateInstance());
+ args.AddArg("sID",sguid);
+ if (url::get("/sale/data/SysPrintTemplate/Delete",args.GetString(),x) != 1)
+ {
+ trace("error:"+x.GetXml());
+ alert("删除出错了!");
+ return 0;
+ }
+ else
+ {
+ alert("删除成功!");
+ 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;
+ }
+
+ int OnOpenDocument()
+ {
+ if(dw_doclist.GetRowCount() < 1) return 1;
+ string documentid = dw_doclist.GetRowElement(dw_doclist.GetRow()).getAttribute("guid");
+ //string billid = dw_docList
+ arg_param.AddArg("DocumentID",documentid);
+ arg_param.AddArg("return","ok");
+ arg_param.AddArg("action","open");
+ CloseWindow();
+ return 1;
+ }
+
+ int OnOk()
+ {
+ int row = dw_list.GetRow();
+ if(row<0 || row>dw_list.GetRowCount())
+ {
+ alert("请选择要打印的模板!");
+ return 1;
+ }
+ else
+ {
+ msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
+ trace("\r\n---------------");
+ trace(ele.xml);
+
+ string sguid = ele.selectSingleNode("ID").text;
+ string pre = "";
+ if(ele.selectSingleNode("TemplPre")) pre = ele.selectSingleNode("TemplPre").text;
+ string sTemplName = ele.selectSingleNode("TemplName").text;
+ //string sFile = m_filePath + sguid+".xsl";
+ trace(sTemplName);
+ string sFile = m_filePath + ele.selectSingleNode("urlPath").text;
+ arg_param.AddArg("xsl",sFile);
+ arg_param.AddArg("return","ok");
+ arg_param.AddArg("template-name",sTemplName);
+ arg_param.AddArg("template-guid",sguid);
+ arg_param.AddArg("template-pre",pre);
+ arg_param.AddArg("action","new");
+ trace(arg_param.GetString());
+ CloseWindow();
+ /*xaserver::CreateDirectory("C:/Temp");
+ int openRet = xaserver::DownLoadFile(GetServerUrl(),m_filePath+file,sTemplName,"C:/Temp/"+sTemplName);
+ if(openRet < 0)
+ {
+ alert("文件打开失败!");
+ 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("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("filesize = %d",filesize);
+ string buffer = "".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,"open","C:/Temp/"+sTemplName,"","",5);
+ if(openRet < 32)
+ {
+ alert("文件打开失败2!");
+ return 0;
+ }*/
+ }
+ return 0;
+ }
+
+ int OnSave()
+ {
+ 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("content",x.GetXml());
+
+ if (url::get("/sale/data/SysPrintTemplate/updateinfo",arg.GetString(),x) != 1)
+ {
+ trace("error:"+x.GetXml());
+ alert("保存出错了!");
+ return 1;
+ }
+ else
+ {
+ dw_list.ResetUpdateStatus();
+ alert("保存成功!");
+ }
+
+ return 1;
+ }
+
+ int PreOnCmdDispatch(string comdid)
+ {
+ //返回0——不在执行以下代码;返回其他——执行以下代码。
+ if(comdid.left(8) == "xmPanel:"){
+ string no = comdid.mid(8, 99);
+ //int id = no.toInt();
+
+ xml x = new xml;
+ x.setNativePointer(xml::CreateInstance());
+ x.LoadXml(strNode);
+ msxml::IXMLDOMDocument doc= x.GetXmlDoc();
+ msxml::IXMLDOMElement e = doc.documentElement;
+ string slable =e.selectSingleNode("//xtoolbutton[@name='"+comdid+"']/@caption").text;
+ m_Dir = slable;
+ OnRetrieve();
+
+ return 1;
+ }
+ if (comdid=="xmAddDir") return OnAddDir();
+ if (comdid=="xmAddTempl" && bupdate) return OnAddTempl();
+ if (comdid=="xmDelTempl" && bupdate) return OnDelTempl();
+ if (comdid=="xmMaintTempl" && bupdate) return OnMaintTempl();
+ if (comdid=="xmNewTempl" && bupdate) return OnNewTempl();
+ if (comdid=="xmHtml") return OnHtml();
+ if (comdid=="xmOk") return OnOk();
+ if (comdid=="xmSave") return OnSave();
+ if(comdid=="xmOpen") return OnOpenDocument();
+ else if (comdid=="xmCancel")
+ {
+ arg_param.AddArg("return","cancel");
+ CloseWindow();
+ return 1;
+ }
+ return 0;
+ }
+
+
+ int PostOnAttachEvent()
+ {
+ //AttachEvent("dw_list","DWV_ROWFOCUSCHANGED",OnRowChanged);
+ //AttachEvent("dw_list","DWV_CLICKED",OnClicked);
+ //AttachEvent("dw_list","DWV_RCLICKED",OnRClicked);
+ //AttachEvent("dw_list","DWV_ITEMCHANGED",OnItemChanged);
+ //AttachEvent("dw_list","DWV_CHILDCONTENT",OnChildContent);
+ AttachEvent("dw_doclist","DWV_DOUBLECLICKED",OnDocListDoubleClicked);
+ AttachEvent("dw_list","DWV_DOUBLECLICKED",OnDoubleClicked);
+ return 1;
+ }
+
+ int SetAgent()
+ {
+ PUser puser = new PUser;
+ puser = publiccode::GetUser();
+ string susername = puser.name;
+ if (susername !="admin")
+ {
+ string xfNodeAgentArea = "DirButton";
+ xnode anode = GetAgentNode(xfNodeAgentArea);
+ msxml::IXMLDOMElement xframeElement = GetElement();
+ string tools="<vbox name='DirButton' height='48' />";
+ SetAgentNodeContent(anode, tools);
+ }
+ return 1;
+ }
+
+ int CreateDir()
+ {
+ PUser puser = new PUser;
+ puser = publiccode::GetUser();
+ string susername = puser.name;
+ xml x = new xml;
+ x.setNativePointer(xml::CreateInstance());
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg.AddArg("EntityName",m_EntityName,"");
+ arg.AddArg("EntityID",m_EntityID,"");
+ arg.AddArg("susername",susername,""); //
+ if (url::get("/sale/data/SysPrintTemplate/Dir",arg.GetString(),x) != 1)
+ {
+ trace(x.GetXmlDoc().text);
+ return -1;
+ }else
+ {
+ string s = x.GetXml();
+ }
+ msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().selectNodes("//Entity");
+ int i;
+ int nlen = nlist.length;
+ string toolStr = "<vbox name='Dir'>";
+ string deptName= publiccode::GetUser().deptname;
+ if(deptName=="跟单部" && m_EntityName=="GDN3"){
+ for(i=2; i<nlen; i++)
+ {
+ msxml::IXMLDOMElement e1 = nlist.item(i);
+ string sDir1 = e1.selectSingleNode("@Dir").text;
+ string str1 = "<xtoolbutton image='15' caption='"+sDir1+"' height='24' name='xmPanel:"+i.toString()+"' style='background-color:none #ceecce none #ffffff'/>";
+
+ toolStr += str1;
+ if (i==2)
+ m_Dir = sDir1;
+ }
+ }else if(deptName.find("业务")>=0 && m_EntityName=="GDN3" )
+ {
+ for(i=1; i<2; i++)
+ {
+ msxml::IXMLDOMElement e2 = nlist.item(i);
+ string sDir2 = e2.selectSingleNode("@Dir").text;
+ string str2 = "<xtoolbutton image='15' caption='"+sDir2+"' height='24' name='xmPanel:"+i.toString()+"' style='background-color:none #ceecce none #ffffff'/>";
+
+ toolStr += str2;
+ if (i==1)
+ m_Dir = sDir2;
+ }
+ for(i=4; i<nlen; i++)
+ {
+ msxml::IXMLDOMElement e3 = nlist.item(i);
+ string sDir3 = e3.selectSingleNode("@Dir").text;
+ string str3 = "<xtoolbutton image='15' caption='"+sDir3+"' height='24' name='xmPanel:"+i.toString()+"' style='background-color:none #ceecce none #ffffff'/>";
+
+ toolStr += str3;
+ }
+ }else{
+ for(i=0; i<nlen; i++)
+ {
+ msxml::IXMLDOMElement e = nlist.item(i);
+ string sDir = e.selectSingleNode("@Dir").text;
+ string str = "<xtoolbutton image='15' caption='"+sDir+"' height='24' name='xmPanel:"+i.toString()+"' style='background-color:none #ceecce none #ffffff'/>";
+
+ toolStr += str;
+ if (i==0)
+ m_Dir = sDir;
+ }
+ }
+
+ toolStr += "</vbox>";
+ strNode = toolStr;
+ //trace(toolStr);
+ xnode anode = GetAgentNode("Dir");
+ xwin::SetAgentNodeContent(anode,toolStr) ;
+
+ OnRetrieve();
+ return 1;
+ }
+
+ int OnInit()
+ {
+ SetAgent();
+ dw_list = this.GetControl("dw_list");
+ dw_list.openUrl("/sale/view/view.base/template/PrintView/listDialog");
+ dw_list.SetReadOnly(true);
+ dw_list.SetSelectionMode(4);
+ dw_list.SetColumnState("ID",false);
+
+ dw_doclist = GetControl("dw_doclist");
+ dw_doclist.openUrl("/sale/view/GDN/template/doclist");
+
+ string sUrl = GetServerUrl();
+ sUrl = sUrl.mid(0, sUrl.length() - 19);
+ m_filePath = "/business/rpttemplate";
+ arg_param = new xaserverarg;
+ if (GetParam())
+ {
+ int p = GetParam();
+ arg_param.setNativePointer(p);
+ m_EntityName = arg_param.GetArgString("EntityName");
+ m_EntityID = arg_param.GetArgString("EntityID");
+ m_EntityNo = arg_param.GetArgString("EntityNo");
+
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(xaserverarg::CreateInstance());
+ arg.AddArg("EntityName", m_EntityName);
+ arg.AddArg("EntityID", m_EntityID);
+ arg.AddArg("EntityNo", m_EntityNo);
+ xml x =new xml;
+ x.setNativePointer(xml::CreateInstance());
+ if(url::get("/sale/data/DocumentList3/bill/doclist", arg.GetString(),x)!=1)
+ {
+ string error = x.GetXmlDoc().text;
+ trace(error);
+ }else
+ {
+ dw_doclist.Retrieve(x);
+ dw_doclist.SetReadOnly(true);
+ }
+ }
+ else
+ {
+ arg_param.setNativePointer(arg_param.CreateInstance());
+ m_EntityName = "SO";
+ m_EntityID ="00000000-0000-0000-0000-000000000000";
+ }
+
+ m_Dir = "";
+ m_filePath = m_filePath + "/" + m_EntityName+"/";
+ //trace(m_filePath);
+
+ CreateDir();
+
+ return 1;
+ }
+
+ int onload()
+ {
+ responsewin::onload();
+
+ /*if (GetParam())
+ {
+ string action = arg_param.GetArgString("action");
+ if(action=="open" || (action=="" && dw_doclist.GetRowCount() > 0))
+ SwitchLayer("sheet2","frame");
+ }
+ */
+
+ return 1;
+ }
+
+ int onloaded()
+ {
+ //responsewin::onload();
+
+ /*if (GetParam())
+ {
+ string action = arg_param.GetArgString("action");
+ if(action=="open" || (action=="" && dw_doclist.GetRowCount() > 0))
+ SwitchLayer("sheet2","frame");
+ }
+ */
+ return 1;
+ }
+};
\ No newline at end of file
diff --git a/jrj/project/printview/Template.Print.ViewEx.cpp b/jrj/project/printview/Template.Print.ViewEx.cpp
new file mode 100644
index 0000000..da0560a
--- /dev/null
+++ b/jrj/project/printview/Template.Print.ViewEx.cpp
@@ -0,0 +1,1217 @@
+namespace _excel for ole "Excel.Application,{00020813-0000-0000-C000-000000000046}";
+namespace _mshtml for ole "MSHtml,{3050F1C5-98B5-11CF-BB82-00AA00BDCE0B}";
+
+class cexcel : public xnative native from "XControl.dll"
+{
+ void Release(int t) alias "?Release@CExcelApplication@@QAEXPAV1@@Z";
+ static int CreateInstance() alias "?CreateInstance@CExcelApplication@@SAPAV1@XZ";
+ void put_Visible(bool t) alias "?put_Visible@CExcelApplication@@QAEXH@Z";
+ bool get_Visible() alias "?get_Visible@CExcelApplication@@QAEHXZ";
+ void OpenDocument(const string filename) alias "?OpenDocument@CExcelApplication@@QAEXQA_W@Z";
+ void TransShape() alias "?TransShape@CExcelApplication@@QAEXXZ";
+ void SaveToFile(string filename) alias "?SaveToFile@CExcelApplication@@QAEXQA_W@Z";
+ void Quit() alias "?Quit@CExcelApplication@@QAEXXZ";
+};
+
+struct MYOPENFILENAMEW
+{
+ unsigned int lStructSize;
+ unsigned int hwndOwner;
+ unsigned int hInstance;
+ string lpstrFilter;
+
+ string lpstrCustomFilter;
+ unsigned int nMaxCustFilter;
+ unsigned int nFilterIndex;
+ string lpstrFile;
+
+ unsigned int nMaxFile;
+ string lpstrFileTitle;
+ unsigned int nMaxFileTitle;
+ string lpstrInitialDir;
+
+ string lpstrTitle;
+ unsigned int Flags;
+ unsigned short nFileOffset;
+ unsigned short nFileExtension;
+ string lpstrDefExt;
+
+ unsigned int lCustData;
+ unsigned int lpfnHook;
+ string lpTemplateName;
+
+ //_WIN32_WINNT >= 0x0500
+ unsigned int pvReserved;
+ unsigned int dwReserved;
+ unsigned int FlagsEx;
+ // (_WIN32_WINNT >= 0x0500)
+};
+
+class TemplatePrintViewEx : public frame
+{
+ xole ole_print;
+ xcell cell;
+ string m_EntityName;
+ string m_EntityID;
+ string m_EntityNo;
+ string m_strHtml;
+ string m_spath;
+ bool updated;
+
+ string htmlStr;
+ cexcel excel;
+ bool editing;
+
+ string billName ;
+ string billID ;
+ string billPre;
+
+ string m_DocumentID;
+ xml m_dataset;
+ //bool showgrid;
+ bool PaperPrint;
+
+ static stdcall int GetModuleFileName(int hModule ,string lpFileName ,int nSize ) native from "kernel32.dll" alias "GetModuleFileNameW";
+ static stdcall int PathRemoveFileSpec(string lpFileName ) native from "shlwapi.dll" alias "PathRemoveFileSpecW";
+ static stdcall int DeleteFile(string lpFileName) native from "kernel32.dll" alias "DeleteFileW";
+ static stdcall bool GetSaveFileName(ref MYOPENFILENAMEW)native from "comdlg32.dll" alias "GetSaveFileNameW";
+
+ string GetModulePath()
+ {
+ string str ="";
+ str = str.space(255);
+ GetModuleFileName(0,str,250);
+ PathRemoveFileSpec(str);
+ return str;
+ }
+ string GetModuleTmpPath()
+ {
+ string str ="";
+ str = str.space(255);
+ GetModuleFileName(0,str,250);
+ PathRemoveFileSpec(str);
+ string tmp = str + "\\Temp";
+ xaserver::CreateDirectory(tmp);
+ return tmp;
+ }
+
+ string GetSaveFileName(string initFileName, string filter, string ext)
+ {
+ char[] szFileName = new char[255] ;
+ char[] szPath = new char[255];
+ szFileName[0] = 0;
+ szPath[0] = 0;
+
+ if(initFileName !="")
+ {
+ int len = initFileName.length();
+ char[] tmp = initFileName;
+ for(int i=0; i<len+1;i++)
+ {
+ //szFileName[i] = tmp[i];
+ szPath[i] = tmp[i];
+ }
+ }
+
+ int nFilterIndex = 1;
+ ref MYOPENFILENAMEW ofn = new MYOPENFILENAMEW;
+
+ ofn.lStructSize = 88;//sizeof(ofn);
+ ofn.hwndOwner = 0;
+ ofn.hInstance = 0;
+ ofn.lpstrFilter = filter;
+ //"JPEG 文件(*.jpg)\0*.jpg;*.jpeg;*.png;*.gif;*.bmp\0全部文件(*.*)\0*.*\0";
+ ofn.lpstrCustomFilter = 0;
+ ofn.nMaxCustFilter = 0;
+ ofn.nFilterIndex = nFilterIndex;
+ ofn.lpstrFile = szPath;
+ ofn.nMaxFile = 255;
+ ofn.lpstrFileTitle = szFileName;
+ ofn.nMaxFileTitle = 255;
+ ofn.lpstrTitle = "请指定文件名";
+ ofn.lpstrDefExt = ext;
+ //"jpg";
+ ofn.lpstrInitialDir = 0;
+ ofn.Flags = 0x00000010/*OFN_SHOWHELP*/ | 0x00001000/*OFN_FILEMUSTEXIST*/;
+ ofn.lCustData = 0;
+ ofn.lpfnHook = 0;
+ ofn.lpTemplateName = 0;
+
+ //debugbreak();
+ if(GetSaveFileName(ofn))
+ {
+ delete ofn;
+ return szPath;
+ }
+ else
+ {
+ return "";
+ }
+ }
+
+ int OnExport()
+ {
+ string pre = billPre;
+ if(pre=="")
+ {
+ pre = m_EntityName;
+ if(m_EntityName=="SaleOrder") pre="PI";
+ if(m_EntityName=="GDN3")pre="INV";
+ }
+ string file1 = GetSaveFileName(pre+m_EntityNo+".xlsx",
+ "Excel1文件(*.xlsx)\0*.xlsx;*.xls\0Excel97文件(*.xls)\0*.xls\0PDF文件(*.pdf)\0*.pdf\0",
+ "xlsx");
+ if(file1 =="") return 1;
+
+ if(win32::PathFileExists(file1))
+ {
+ int res = win32::MessageBox(this.GetHWND(), "文件已经存在,是否覆盖?","提示",4);
+ if(res != 6) return 1;
+ }
+
+ trace("\r\n link excel");
+ excel = new cexcel;
+ int hexcel = cexcel::CreateInstance();
+ excel.setNativePointer(hexcel);
+ if(hexcel == 0)
+ {
+ alert("不能连接Excel");
+ return 1;
+ }
+
+ string gid = publiccode::GetGuid();
+ string filename= pre+m_EntityNo+"_.htm";
+ xutil::SaveToFile(GetModuleTmpPath() + "\\"+ filename, htmlStr,"","","");
+ trace("\r\n excel to open");
+ excel .OpenDocument(GetModuleTmpPath() + "\\"+ filename);
+ trace("\r\n trans shape");
+ //excel .put_Visible(true);
+ excel.TransShape();
+ trace("\r\n save to tmp excel file");
+ if(file1.find(".xls"))
+ {
+ if(win32::PathFileExists(GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xls"))
+ DeleteFile(GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xls");
+ excel.SaveToFile(GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xls");
+ //alert(GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xls");
+ }
+ else
+ {
+ if(win32::PathFileExists(GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xlsx"))
+ DeleteFile(GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xlsx");
+ excel.SaveToFile(GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xlsx");
+ }
+
+ trace("\r\n save to excel file");
+ if(win32::PathFileExists(file1)) //GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xlsx"))
+ DeleteFile(file1);
+ excel.SaveToFile(file1);
+
+ excel.Quit();
+ excel.Release(excel.ptr_native_);
+ return 1;
+ }
+
+ int OntoExcel() //转为Excel
+ {
+ excel = new cexcel;
+ excel.setNativePointer(cexcel::CreateInstance());
+
+ string gid = publiccode::GetGuid();
+ string pre = m_EntityName;
+ if(m_EntityName=="SaleOrder") pre="PI";
+ if(m_EntityName=="GDN3")pre="INV";
+ string filename= pre+m_EntityNo+".htm";
+ string filenameex= pre+m_EntityNo+".xlsx";
+ xutil::SaveToFile(GetModuleTmpPath() + "\\"+ filename, htmlStr,"","","");
+ excel .OpenDocument(GetModuleTmpPath() + "\\"+ filename);
+ //excel.put_Visible(true);
+ excel.TransShape();
+ if(win32::PathFileExists(GetModuleTmpPath() + "\\"+ filenameex))
+ DeleteFile(GetModuleTmpPath() + "\\"+ filenameex);
+ excel.SaveToFile(GetModuleTmpPath() + "\\"+ filenameex);
+ excel.put_Visible(true);
+
+ excel.Release(excel.ptr_native_);
+ return 1;
+ }
+
+ string getfilePath()
+ {
+ string path=GetModulePath()+"\\resource\\image";
+ string filename="contract.jpg";
+ filename="sign.png";
+ filename="jrj_maersk.png";
+ filename="HomeDecorSign.png";
+ xaserver::DownLoadFile(GetServerUrl(),"/business/rpttemplate/"+filename,"",path+"\\"+filename);
+ filename="HomeDecorLogo.jpg";
+ xaserver::DownLoadFile(GetServerUrl(),"/business/rpttemplate/"+filename,"",path+"\\"+filename);
+ return path;
+ }
+
+ string replaceInnerElement(string html)
+ {
+ string str = html;
+ if(str.find("[$element:")<0) return str;
+
+ int len = 0;
+ int pos = 0;
+ int pos1 = 0;
+ string pre="";
+ string left="";
+ string right="";
+ string tag="";
+
+ len = "[$element:".length();
+ while(true)
+ {
+ pos = str.find("[$element:");
+ if(pos < 0) break;
+ left = str.left(pos);
+ right = str.mid(pos+ len,999999);
+
+ pos1 = right.find("]");
+ if(pos1>=0)
+ {
+ tag = right.left(pos1);
+ if(tag.right(1)=="$") tag=tag.left(tag.length() - 1);
+ pre = pre + left + "<" + tag +">";
+ str = right.mid(pos1+ 1,999999);
+ }else
+ {
+ pre = pre + left+"<";
+ str = right;
+ }
+ }
+
+ str = pre + str;
+ pre = "";
+ len = "[/$element:".length();
+ while(true)
+ {
+ pos = str.find("[/$element:");
+ if(pos < 0) break;
+ left = str.left(pos);
+ right = str.mid(pos+ len,999999);
+ pos1 = right.find("]");
+ if(pos1>=0)
+ {
+ tag = right.left(pos1);
+ if(tag.right(1)=="$") tag=tag.left(tag.length() - 1);
+ pre = pre + left + "</" + tag +">";
+ str = right.mid(pos1+ 1,999999);
+ }else
+ {
+ pre = pre + left+"</";
+ str = right;
+ }
+ }
+ str = pre + str;
+ return str;
+ }
+
+ string adjustXsl(string str,string localPath)
+ {
+ //if(str.find("%")>=0) str = str.replace("%","");
+ if(str.find("[$path]/rpttemplate")>=0) str = str.replace("[$path]/rpttemplate",localPath);
+ str = replaceInnerElement(str);
+ return str;
+ }
+
+ string DownLoadSKUNoPic(string SKUNo,string CustomerID="",string CustomerItemNo="")
+ {
+
+ if(SKUNo.length()>20) return DownLoadPaperPic(SKUNo);
+
+ xml x = new xml;
+ x.setNativePointer(xml::CreateInstance());
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg.AddArg("SKUNo",SKUNo);
+
+ string src ="/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo";
+ if(CustomerID !="")
+ {
+ arg.AddArg("CustomerID",CustomerID);
+ arg.AddArg("CustomerItemNo",CustomerItemNo);
+ src ="/sale/data/ProductLibrary3/pref/picture/customer/imagelistSKUNo";
+ }
+ //trace("SKUNo="+SKUNo);//要有展示图片查询条件内必定要skuno
+ if(url::get(src,arg.GetString(),x)!=1)
+ {
+ trace("error for download skuno pic!");
+ return "";
+ }
+
+ string spath = "";
+ string path =GetModuleTmpPath();
+ string ext = "jpg";
+ if(x.GetXmlDoc().selectSingleNode("//FileExt[1]"))
+ {
+ ext = x.GetXmlDoc().selectSingleNode("//FileExt[1]").text;
+ }else if(CustomerID !="")
+ {
+ src ="/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo";
+ if(url::get(src,arg.GetString(),x)!=1)
+ {
+ trace("error for download skuno pic!");
+ return "";
+ }
+ if(x.GetXmlDoc().selectSingleNode("//FileExt[1]"))
+ ext = x.GetXmlDoc().selectSingleNode("//FileExt[1]").text;
+ }
+
+ string filename = SKUNo + "." + ext;
+ if(x.GetXmlDoc().selectSingleNode("//PicPath[1]"))
+ spath = x.GetXmlDoc().selectSingleNode("//PicPath[1]").text;
+ if(spath != "")
+ {
+ xaserver::DownLoadFile(GetServerUrl(),spath,"",path+"/"+filename);
+ }
+ return "file://"+ path+"/"+filename;
+ }
+
+ string DownLoadSKUNoPic(string SKUNo,string CustomerID="",string CustomerItemNo="")
+ {
+
+ if(SKUNo.length()>20) return DownLoadPaperPic(SKUNo);
+
+ xml x = new xml;
+ x.setNativePointer(xml::CreateInstance());
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg.AddArg("SKUNo",SKUNo);
+
+ string src ="/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo";
+ if(CustomerID !="")
+ {
+ arg.AddArg("CustomerID",CustomerID);
+ arg.AddArg("CustomerItemNo",CustomerItemNo);
+ src ="/sale/data/ProductLibrary3/pref/picture/customer/imagelistSKUNo";
+ }
+ //trace("SKUNo="+SKUNo);//要有展示图片查询条件内必定要skuno
+ if(url::get(src,arg.GetString(),x)!=1)
+ {
+ trace("error for download skuno pic!");
+ return "";
+ }
+
+ string spath = "";
+ string path =GetModuleTmpPath();
+ string ext = "jpg";
+ if(x.GetXmlDoc().selectSingleNode("//FileExt[1]"))
+ {
+ ext = x.GetXmlDoc().selectSingleNode("//FileExt[1]").text;
+ }else if(CustomerID !="")
+ {
+ src ="/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo";
+ if(url::get(src,arg.GetString(),x)!=1)
+ {
+ trace("error for download skuno pic!");
+ return "";
+ }
+ if(x.GetXmlDoc().selectSingleNode("//FileExt[1]"))
+ ext = x.GetXmlDoc().selectSingleNode("//FileExt[1]").text;
+ }
+
+ string filename = SKUNo + "." + ext;
+ if(x.GetXmlDoc().selectSingleNode("//PicPath[1]"))
+ spath = x.GetXmlDoc().selectSingleNode("//PicPath[1]").text;
+ if(spath != "")
+ {
+ xaserver::DownLoadFile(GetServerUrl(),spath,"",path+"/"+filename);
+ }
+ return "file://"+ path+"/"+filename;
+ }
+
+ string GetImageUrl(string id)
+ {
+ xml xp=new xml;
+ xp.setNativePointer(xml::CreateInstance());
+ xaserverarg arg_pic=new xaserverarg;
+ arg_pic.setNativePointer(arg_pic.CreateInstance());
+ arg_pic.AddArg("id",id);
+
+ string res = "/sale/data/productlibrary3/image/url";
+ if(url::get(res,arg_pic.GetString(),xp)!=1)
+ {
+ xp.GetXml();
+ return 1;
+ }else
+ {
+ string path = xp.GetXmlDoc().text;
+ if(path !="") return path;
+ }
+
+ return "/business/products/chanpin/"+id.left(2)+"/"+ id+".jpg";
+ }
+
+ string DownLoadPaperPic(string guid)
+ {
+
+ string path =GetModuleTmpPath();
+ string ext = "jpg";
+ string filename = guid + "." + ext;
+ string spath = GetImageUrl(guid);
+ //alert(spath);
+ xaserver::DownLoadFile(GetServerUrl(),spath,"",path+"/"+filename);
+ return "file://"+ path+"/"+filename;
+ }
+
+ string DownLoadPaperPic1(string guid)
+ {
+ string path =GetModuleTmpPath();
+ string ext = "jpg";
+ string filename = guid + "." + ext;
+ string str = guid.mid(0,2);
+ string spath = "/business/products/chanpin/"+str+"/"+guid+".jpg";
+ xaserver::DownLoadFile(GetServerUrl(),spath,"",path+"/"+filename);
+ return "file://"+ path+"/"+filename;
+ }
+
+ string DownLoadUrlPic(string src)
+ {
+ string guid = publiccode::GetGuid();
+ string path =GetModuleTmpPath();
+ string ext = "jpg";
+ string filename = guid + "." + ext;
+ string spath = src;
+ xaserver::DownLoadFile(GetServerUrl(),spath,"",path+"/"+filename);
+ return "file://"+ path+"/"+filename;
+ }
+
+ int OnHtml(xaserverarg arg)
+ {
+ int hCursor = xutil::SetCursorWait();
+
+ string sEntityName = arg.GetArgString("EntityName");
+ string sEntityID = arg.GetArgString("EntityID");
+ string dataUrl = arg.GetArgString("DataUrl");
+ if(dataUrl=="")
+ dataUrl = "/sale/data/"+sEntityName+"/print/dataset";
+ else if(dataUrl.left(1)!="/")
+ dataUrl = "/sale/data/"+sEntityName+ "/"+ dataUrl;
+ if(!m_dataset)
+ {
+ xml x0 = new xml;
+ x0.setNativePointer(xml::CreateInstance());
+ if (url::get(dataUrl,arg.GetString(),x0) != 1)
+ {
+ alert("数据集出错了!");
+ return 0;
+ }
+ trace(x0.GetXml());
+ m_dataset = x0;
+ }
+
+ string sPath;
+ sPath = getfilePath();
+ arg.AddArg("sPath",sPath);
+ m_spath = sPath;
+
+ xml xsl = new xml;
+ xsl.setNativePointer(xml::CreateInstance());
+ if (url::get("/sale/data/SysPrintTemplate/getxsl",arg.GetString(),xsl) != 1)
+ {
+ alert("数据模板错误!");
+ return 0;
+ }
+
+ string xslStr = xsl.GetXml();
+
+ xslStr = adjustXsl(xslStr,sPath);
+ xsl.LoadXml(xslStr);
+
+ //trace(m_dataset.GetXml());
+ trace("\r\n--------\r\n"+xslStr);
+
+ m_strHtml = m_dataset.GetXmlDoc().transformNode(xsl.GetXmlDoc());
+ string aspace = m_strHtml.replace("[空]"," ",0);
+ aspace = aspace.replace("[line]","<br/>",0);
+ string scontent = aspace.replace("<?xml version=\"1.0\"?>","",0);
+
+ string head ="";
+ string tail = scontent;
+
+ int pos = tail.find("src=\"item-picture:");
+ while(pos > 0)
+ {
+ int spos = pos+"src=\"item-picture:".length();
+ int pos1 = tail.find("\"",spos+1);
+ string skuno = tail.mid(spos,pos1 - spos ).trim();
+ string CustomerID="";
+ string CustomerItemNo="";
+ if(skuno.find(",")>0)
+ {
+ CustomerID = skuno.left(skuno.find(",")).trim();
+ skuno = skuno.mid(skuno.find(",")+1,256).trim();
+ }
+ if(skuno.find(",")>0)
+ {
+ CustomerItemNo = skuno.left(skuno.find(",")).trim();
+ skuno = skuno.mid(skuno.find(",")+1,256).trim();
+ }
+ string src = DownLoadSKUNoPic(skuno,CustomerID,CustomerItemNo);
+ head += tail.left(pos) + "src=\"" + src;
+ tail = tail.mid(pos1,999999999);
+ pos = tail.find("src=\"item-picture:");
+ }
+ scontent = head + tail;
+
+ head ="";
+ tail = scontent;
+ int position = tail.find("src=\"paper-picture:");
+ while(position > 0)
+ {
+ int sposition = position+"src=\"paper-picture:".length();
+ int position1 = tail.find("\"",sposition+1);
+ string guid = tail.mid(sposition,position1 - sposition ).trim();
+ string src2 = DownLoadPaperPic(guid);
+ head += tail.left(position) + "src=\"" + src2;
+ tail = tail.mid(position1,999999999);
+ position = tail.find("src=\"paper-picture:");
+ }
+ scontent = head + tail;
+
+ head ="";
+ tail = scontent;
+ position = tail.find("src=\"src-picture:");
+ while(position > 0)
+ {
+ sposition = position+"src=\"src-picture:".length();
+ position1 = tail.find("\"",sposition+1);
+ guid = tail.mid(sposition,position1 - sposition ).trim();
+ src2 = DownLoadUrlPic(guid);
+ head += tail.left(position) + "src=\"" + src2;
+ tail = tail.mid(position1,999999999);
+ position = tail.find("src=\"src-picture:");
+ }
+ scontent = head + tail;
+
+ scontent = adjustXsl(scontent,sPath);
+ htmlStr = scontent;
+ ole_print.LoadHtml(scontent);
+
+ xml x1 = new xml;
+ x1.setNativePointer(xml ::CreateInstance());
+ //string xcontent = m_strHtml.replace(" ","[空]",0);
+ string xcontent = m_strHtml.replace("[空]"," ",0);
+ int pos0 = xcontent.find("<xml");
+ int pos2 = xcontent.find("</xml>");
+ if(pos0>=0)
+ {
+ string str = xcontent.left(pos0)+ xcontent.mid(pos2+6,9999999);
+ xcontent = str;
+ }
+ x1.LoadXml(xcontent);
+ if(x1.GetXmlDoc())
+ {
+ /*if(!showgrid)
+ {
+ SendCtrlCmd(cell,"xmFormatShowGrid");
+ showgrid = true;
+ }*/
+ cell.LoadTemplate(x1.GetXmlDoc());
+ cell.Redraw();
+ }
+
+ xutil::RestoreCursor(hCursor);
+ updateHtml();
+ return 1;
+ }
+
+ int updateHtml()
+ {
+ _mshtml::IHTMLDocument3 doc = ole_print.GetHtmlDocument();
+ _mshtml::IHTMLElementCollection rows = doc.getElementsByTagName("tr");
+ _mshtml::IHTMLElementCollection rows2 = doc.getElementsByTagName("td");
+ int len = rows.length;
+ int len2 = rows2.length;
+ for(int i=0; i < len - 1;i++)
+ {
+ _mshtml::IHTMLElement e = rows.item(i,i);
+ e.style.setAttribute("height",e.offsetHeight,0);
+ e.Release();
+ }
+ for( i=0; i < len2 - 1;i++)
+ {
+ _mshtml::IHTMLElement e2 = rows2.item(i,i);
+ e2.style.setAttribute("width",e.offsetWidth,0);
+ e2.Release();
+ }
+ rows.Release();
+ doc.release();
+ htmlStr = doc.documentElement.outerHtml;
+ return 1;
+ }
+
+ int OnOpenDocument()
+ {
+ if(GetParam())
+ {
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(GetParam());
+ int p = arg.ptr_native_;
+ arg.AddArg("action","open");
+ arg.AddArg("DocumentID","");
+ arg.AddArg("ok","");
+ openUrl("/sale/view/view.dlg/xpage/Template/PrintDialog", p);
+ string ret = arg.GetArgString("return");
+ string action = arg.GetArgString("action");
+ if (ret =="ok")
+ {
+ if(action =="open")
+ {
+ m_DocumentID = arg.GetArgString("DocumentID");
+ xml x = new xml;
+ x.setNativePointer(xml::CreateInstance());
+ string prestr = m_DocumentID.mid(0,2);
+ prestr = prestr.upper();
+ xaserver::LoadUrl(GetServerUrl(),"/business/data/bill/"+prestr+"/"+ m_DocumentID+".jpg","",x);
+ if(x.GetXml()!="")
+ {
+ if(x.GetXmlDoc())
+ {
+ /*if(!showgrid)
+ {
+ SendCtrlCmd(cell,"xmFormatShowGrid");
+ showgrid = true;
+ }*/
+ cell.LoadTemplate(x.GetXmlDoc());
+ cell.Redraw();
+ }
+ ole_print.LoadHtml(x.GetXml());
+ }else
+ {
+ ole_print.LoadHtml("<html><body>未找到对应的文档</body></html>");
+ //cell.LoadHtml("<html><body>未找到对应的文档</body></html>");
+ }
+ }
+ else
+ {
+ string templateName = arg.GetArgString("template-name");
+ win32::SetWindowText(GetHWND(),templateName);
+ billName = templateName;
+ billPre = arg.GetArgString("template-pre");
+ billID = arg.GetArgString("template-guid");
+ m_EntityID = arg.GetArgString("EntityID");
+ m_EntityNo = arg.GetArgString("EntityNo");
+ m_EntityName = arg.GetArgString("EntityName");
+ m_DocumentID = "";
+
+ OnHtml(arg);
+
+ }
+ }
+ }
+ return 1;
+ }
+
+ int OnPrintDialog()
+ {
+ if(GetParam())
+ {
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(GetParam());
+ int p = arg.ptr_native_;
+ arg.AddArg("ok","");
+ openUrl("/sale/view/view.dlg/xpage/Template/PrintDialog", p);
+ string ret = arg.GetArgString("return");
+ string action = arg.GetArgString("action");
+ if (ret =="ok")
+ {
+ updated = false;
+ if(action =="open")
+ {
+ m_DocumentID = arg.GetArgString("DocumentID");
+ xml x = new xml;
+ x.setNativePointer(xml::CreateInstance());
+ string prestr = m_DocumentID.mid(0,2);
+ prestr = prestr.upper();
+ xaserver::LoadUrl(GetServerUrl(),"/business/data/bill/"+prestr+"/"+ m_DocumentID+".jpg","",x);
+ if(x.GetXml()!="")
+ {
+
+ string content = "";
+ if(x.GetXmlDoc().documentElement.tagName=="Bill")
+ {
+ content = x.GetXmlDoc().documentElement.text;
+ content = content.replace("[空]"," ",0);
+ ole_print.LoadHtml(content);
+ }else
+ {
+ if(x.GetXmlDoc())
+ {
+ /*if(!showgrid)
+ {
+ SendCtrlCmd(cell,"xmFormatShowGrid");
+ showgrid = true;
+ }*/
+ xml x1 = new xml;
+ x1.setNativePointer(xml::CreateInstance());
+ string content1 = x.GetXml();
+ content1 = content1.replace("[空]"," ",0);
+ //trace(content1);
+ x1.LoadXml(content1);
+ cell.LoadTemplate(x1.GetXmlDoc());
+ cell.Redraw();
+ }
+ content = x.GetXml();
+ content = content.replace("[空]"," ",0);
+ ole_print.LoadHtml(content);
+ }
+ }else
+ {
+ ole_print.LoadHtml("<html><body>未找到对应的文档</body></html>");
+ //cell.LoadHtml("<html><body>未找到对应的文档</body></html>");
+ }
+ }
+ else
+ {
+ string templateName = arg.GetArgString("template-name");
+ win32::SetWindowText(GetHWND(),templateName);
+ billName = templateName;
+ billPre = arg.GetArgString("template-pre");
+ billID = arg.GetArgString("template-guid");
+ m_EntityID = arg.GetArgString("EntityID");
+ m_EntityNo = arg.GetArgString("EntityNo");
+ m_EntityName = arg.GetArgString("EntityName");
+ m_DocumentID = "";
+ OnHtml(arg);
+ }
+ }
+ }
+ return 1;
+ }
+
+ int SetAgent()
+ {
+ string xfNodeAgentArea = "agentarea";
+ xnode anode = GetAgentNode(xfNodeAgentArea);
+ msxml::IXMLDOMElement xframeElement = GetElement();
+ msxml::IXMLDOMNode agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
+
+ msxml::IXMLDOMNodeList nlist;
+ int index;
+ int nlen;
+ msxml::IXMLDOMElement ele;
+ string tools="<hbox class=''>";
+ if(agent)
+ {
+ nlist = agent.SelectNodes(".//xtoolbutton");
+ nlen = nlist.length;
+ for(index=0;index<nlen;index++)
+ {
+ ele = nlist.item(index);
+ string name = ele.selectSingleNode("@name").text;
+ string label = ele.selectSingleNode("@caption").text;
+ string image;
+ string src = "";
+ if(ele.selectSingleNode("@image"))
+ image = ele.selectSingleNode("@image").text;
+ else
+ image = "0 22";
+
+ if(ele.selectSingleNode("@src"))
+ src = ele.selectSingleNode("@src").text;
+
+ int strLen = label.length();
+ int width = 60 + (strLen - 2) * 10;
+ string tool;
+ if (src != "")
+ tool = "<xtoolbutton src='"+src+"' caption='"+label+"' name='"+name+"' height='28' class1='action'/>";
+ else
+ tool = "<xtoolbutton image='"+image+"' caption='"+label+"' name='"+name+"' height='28' class1='action'/>";
+ tools += tool;
+ }
+ }
+ tools +="</hbox>";
+ SetAgentNodeContent(anode, tools);
+ return 1;
+ }
+
+ //焦点激活处理函数
+ int OnSetFocus(ref TNotifyEvent evt,int p)
+ {
+ //重置工具条
+ SetAgent();
+ return 1;
+ }
+
+ int OnEdit()
+ {
+ editing = !editing;
+ if(editing)
+ {
+ SwitchLayer("cellview","viewclient");
+ }else
+ {
+ htmlStr = cell.GetHtml();
+ //string content = htmlStr;
+ htmlStr = htmlStr.replace("[空]"," ",0);
+ htmlStr = htmlStr.replace("[line]","<br/>",0);
+ ole_print.LoadHtml(htmlStr);
+ SwitchLayer("oleview","viewclient");
+ }
+ return 1;
+ }
+
+ int OnSaveAs() //另存为...
+ {
+ ole_print.ExecWB(4,2);
+ return 1;
+ }
+ int OnPrint() //打印
+ {
+ ole_print.ExecWB(6, 0);
+ return 1;
+ }
+ int PrintPaper() //打印
+ {
+ //ole_print.GetHtmlDocument();
+ //return 1;
+ _mshtml::IHTMLDocument3 doc = ole_print.GetHtmlDocument();
+ _mshtml::IHTMLElementCollection rows = doc.getElementsByTagName("tr");
+
+ int len = rows.length;
+ for(int i=0; i < len - 1;i++)
+ {
+ //oleobject v = rows.item(i,i);
+ _mshtml::IHTMLElement e = rows.item(i,i);
+ _mshtml::IHTMLElement2 e1 = e;
+ //e.setAttribute("height",e1.clientHeight,0);
+ e.setAttribute("height",300,0);
+ e.Release();
+ e1.Release();
+ }
+ rows.Release();
+ doc.Release();
+ /*
+ if(PaperPrint == false)
+ {
+ ole_print.GetHtmlDocument().body.style.visibility="hidden";
+ PaperPrint = true;
+ }
+ else
+ {
+ ole_print.GetHtmlDocument().body.style.visibility="visible";
+ PaperPrint = false;
+ }
+ */
+ return 1;
+ }
+ int OnPrintPreview() //打印预览
+ {
+ ole_print.ExecWB(7, 0);
+ return 1;
+ }
+ int OnPageSetup() //页面设置
+ {
+ ole_print.ExecWB(8, 0);
+ return 1;
+ }
+ int OnPortrait() //纵向
+ {
+ alert("Portrait");
+ return 1;
+ }
+ int OnLandscape() //横向
+ {
+ return 1;
+ }
+ int OnPageProperty() //查看页面属性
+ {
+ ole_print.ExecWB(10, 1);
+ return 1;
+ }
+ int OnCustom() //自定义:? 25-400%
+ {
+ return 1;
+ }
+
+ int OnAddToDocument()
+ {
+ string content = htmlStr;
+ if(editing)content = cell.GetHtml();
+ string guid = publiccode::GetGuid();
+
+ string prestr = guid.mid(0,2);
+ prestr = prestr.upper();
+
+
+ content = content.replace("gb2312","utf-16",0);
+ content = content.replace(" ","[空]",0);
+ content = content.replace("&","",0);
+
+ xml x0 = new xml;
+ x0.setNativePointer(xml::CreateInstance());
+ x0.LoadXml("<Bill/>");
+ x0.GetXmlDoc().documentElement.text = content;
+ content = x0.GetXml();
+
+ int ret= xaserver::UploadData("bill"+prestr, guid+".jpg", content);
+ if(ret < 0) trace("error upload");
+
+ string ls_xml ="<DocumentList guid='"+guid+"' update.modify='1' update.new='1'>";
+ ls_xml += "<EntityName>"+ m_EntityName + "</EntityName>";
+ ls_xml += "<EntityID>"+ m_EntityID + "</EntityID>";
+ ls_xml += "<EntityNo>"+ m_EntityNo + "</EntityNo>";
+ ls_xml += "<BillID>"+ billID + "</BillID>";
+ ls_xml += "<BillName>"+ billName + "</BillName>";
+ ls_xml += "</DocumentList>";
+
+ xml x = new xml;
+ x.setNativePointer(xml::CreateInstance());
+ x.LoadXml(ls_xml);
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(xaserverarg::CreateInstance());
+ arg.AddArg("content",x.GetXml());
+
+ if(url::get("/sale/data/DocumentList3/bill/update", arg.GetString(),x)!=1)
+ {
+ string error = x.GetXmlDoc().text;
+ alert("err:"+error);
+ return 1;
+ }
+ string str = x.GetXmlDoc().documentElement.getAttribute("text");
+ if(str == "true")
+ {
+ alert("保存成功!");
+ updated = false;
+ }else
+ {
+ alert("保存失败!");
+ }
+
+ return 1;
+ }
+
+ int SendCtrlCmd(xcontrol xc, string cmd)
+ {
+ win32::SendMessage(xc.GetId(),0x401,cmd,0);
+ return 1;
+ }
+
+ int OnRefreshData()
+ {
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(GetParam());
+ string templateName = arg.GetArgString("template-name");
+ win32::SetWindowText(GetHWND(),templateName);
+ OnHtml(arg);
+ billName = templateName;
+ billPre = arg.GetArgString("template-pre");
+ billID = arg.GetArgString("template-guid");
+ m_EntityID = arg.GetArgString("EntityID");
+ m_EntityNo = arg.GetArgString("EntityNo");
+ m_EntityName = arg.GetArgString("EntityName");
+ m_DocumentID = "";
+ return 1;
+ }
+
+ int OnCmdDispatch(string comdid)
+ {
+ if(comdid=="xmSort")
+ {
+ OpenWindow("dev:xpage[DataSort.dialog.vx]",cast(m_dataset as int));
+ return 1;
+ }
+ if(comdid=="print:PrintImmediate")
+ {
+ updated = true;
+ return OnPrint();
+ }
+ if(comdid=="print:PrintPaper") {
+ updated = true;
+ return PrintPaper();
+ }
+ if(comdid=="print:PrintPreview") {
+ updated = true;
+ return OnPrintPreview();
+ }
+ if(comdid=="print:Portrait") {
+ updated = true;
+ return OnPortrait();
+ }
+ if(comdid=="print:Landscape") {
+ updated = true;
+ return OnLandscape();
+ }
+ if(comdid=="print:PageSetup") {
+ updated = true;
+ return OnPageSetup();
+ }
+ if(comdid=="print:Custom") {
+ updated = true;
+ return OnCustom();
+ }
+ if(comdid=="print:PrintDialog")
+ {
+ if(updated)
+ {
+ int res = win32::MessageBox(this.GetHWND(), "单据已制作,是否保存?","提示",4);
+ if(res == 6)OnCmdDispatch("print:AddToDocumentList");
+ }
+ if(GetParam())
+ {
+ xaserverarg arg1 = new xaserverarg;
+ arg1.setNativePointer(GetParam());
+ arg1.AddArg("action","new");
+ OnPrintDialog();
+ arg1.AddArg("action","");
+ }
+ return 1;
+ }
+ if(comdid.find("print:toExcel",0)>=0) {
+ updated = true;
+ return OntoExcel();
+ }
+ if(comdid.find("print:Export",0)>=0) {
+ updated = true;
+ return OnExport();
+ }
+ if(comdid.find("print:SaveAs",0)>=0) return OnSaveAs();
+ if(comdid.find("print:Edit",0)>=0) {
+ updated = true;
+ return OnEdit();
+ }
+ if(comdid.find("action:Close",0)>=0) return CloseWindow();
+ if(comdid=="print:OpenDocument") return OnOpenDocument();
+ if(comdid=="print:AddToDocumentList") return OnAddToDocument();
+ if(comdid.find("action:",0)>=0) return ProcessFlowAction(comdid, 1);
+
+ if(comdid.left(3) == "xmSort")
+ {
+ //string str =
+ return 1;
+ }
+
+ if(comdid.left(3) == "IK_")
+ {
+ string cmd = comdid.mid(3, comdid.length());
+ SendCtrlCmd(cell,cmd);
+ return 1;
+ }
+ if(comdid=="print:MaintTemplate")
+ {
+ OpenWindow("dev:xpage[Maint.Template.Print.vx]");
+ return 1;
+ }
+ if(comdid == "print:RefreshData"){
+ return OnRefreshData();
+ }
+
+ if(comdid == "xxx")
+ {
+ ole_print.ExecWB(27,0);
+ return 1;
+ alert("xxx");
+ xml x1 = new xml;
+ x1.setNativePointer(xml::CreateInstance());
+ xaserver::ExecXQuery(GetServerUrl(), "[xsl.getdevobj.xq]","<args/>",x1);
+ }
+
+ if(comdid == "xxx")
+ {
+ xml x = new xml;
+ x.setNativePointer(xml::CreateInstance());
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg.AddArg("strHtml",m_strHtml);
+ if (url::get("/sale/data/SysPrintTemplate/WebBrowser",arg.GetString(),x) != 1)
+ {
+ alert("数据集出错了!");
+ return 0;
+ }
+ string strHtml = x.GetXml();
+ ole_print.LoadHtml(strHtml);
+ }
+ return 0;
+ }
+
+ int OnXCommand(ref TXCommandEvent evt,int p)
+ {
+ return OnCmdDispatch(evt.pStrID);
+ }
+
+ int OnAttachEvent()
+ {
+ AttachEvent("WM_XCOMMAND",OnXCommand);
+ AttachEvent("WM_SETFOCUS",OnSetFocus);
+ //AttachEvent("WM_CLOSE",OnCloseOwnerWindow);
+
+ return 0;
+ }
+
+ int getURLParam()
+ {
+ return 1;
+ }
+
+ virtual int BeforeCloseWindow()
+ {
+ if(!updated) return 1;
+
+ int MB_YESNOCANCEL = 3;
+ int IDYES = 6;
+ int IDNO = 7;
+ int IDCANCEL = 2;
+ int re = win32::MessageBox(this.GetHWND(), "单据已制作,是否保存?","提示:",MB_YESNOCANCEL);
+ if(re==IDCANCEL) return -1;
+ if(re==IDNO) return 1;
+ OnCmdDispatch("print:AddToDocumentList");
+ return -1;
+ }
+
+ int onload()
+ {
+ OnAttachEvent();
+ AttachCloseWindow();
+ ole_print = GetControl("ole_print");
+ cell = GetControl("xcell");
+
+ //showgrid = false;
+ editing = false;
+ SetAgent();
+
+ m_dataset = 0;
+ billName = "";
+ billID = "";
+ billPre = "";
+ m_DocumentID = "";
+ PaperPrint = false;
+
+ return 1;
+ }
+
+ int onloaded()
+ {
+ updated = false;
+ if(GetParam())
+ {
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(GetParam());
+ string templateName = arg.GetArgString("template-name");
+ if(templateName =="")
+ {
+ OnPrintDialog();
+ }
+
+ else
+ {
+ win32::SetWindowText(GetHWND(),templateName);
+ OnHtml(arg);
+ billName = templateName;
+ billPre = arg.GetArgString("template-pre");
+ billID = arg.GetArgString("template-guid");
+ m_EntityID = arg.GetArgString("EntityID");
+ m_EntityNo = arg.GetArgString("EntityNo");
+ m_EntityName = arg.GetArgString("EntityName");
+ m_DocumentID = "";
+ }
+ }else
+ OnPrintDialog();
+ return 1;
+ }
+
+};
\ No newline at end of file
diff --git a/jrj/project/workflow/workflow.actionlog.cpp b/jrj/project/workflow/workflow.actionlog.cpp
new file mode 100644
index 0000000..b8dc383
--- /dev/null
+++ b/jrj/project/workflow/workflow.actionlog.cpp
@@ -0,0 +1,66 @@
+class workflow_actionlog : public win__
+ {
+ //命令发布函数
+ int OnCmdDispatch(string comdid)
+ {
+ CloseWindow();
+ return 0;
+ }
+
+ //命令处理事件
+ int OnXCommand(ref TXCommandEvent evt,int param)
+ {
+ return OnCmdDispatch(evt.pStrID);
+ }
+
+ int OnAttachEvent()
+ {
+ //绑定工具条点击事件
+ AttachEvent("WM_XCOMMAND",OnXCommand);
+ }
+
+
+ int onload()
+ {
+ OnAttachEvent();
+
+ xdwgrid__ dw_loglist = new xdwgrid__;
+ dw_loglist.setNativePointer(GetControl("dw_loglist"));
+ dw_loglist.openUrl("/sale/view/workflow.view/template/chkdlg/loglist");
+
+ if(this.GetParam())
+ {
+ xaserverarg__ argx = new xaserverarg__;
+ argx.setNativePointer(argx.CreateInstance());
+ xaserverarg__ arg = this.GetParam();
+ argx.AddArg("EntityID",arg.GetArgString("EntityID"));
+ xml__ x = new xml__;
+ x.setNativePointer(xml__ ::CreateInstance());
+ url::get("/sale/data/workflow.core/workflow/chk/loglist", argx.GetString(), x);
+ dw_loglist.Retrieve(x);
+ dw_loglist.SetReadOnly(true);
+
+ xflowchart__ dw_chart = new xflowchart__;
+ dw_chart.setNativePointer(GetControl("dw_logchart"));
+ xml__ xc = new xml__;
+ xc.setNativePointer(xml__ ::CreateInstance());
+ url::get("/sale/data/workflow.core/workflow/chk/logchart", argx.GetString(), xc);
+ msxml::IXMLDOMElement e = xc.GetXmlDoc().documentElement;
+ dw_chart.LoadEx(e);
+
+ /*
+ string xbox = "<vbox><ximage name='pic' transparent='1' src='/business/flow/"+arg.GetArgString("EntityName")+".jpg'/></vbox>";
+ xnode__ anode = new xnode__;
+ anode.setNativePointer(GetAgentNode("flowimage"));
+ SetAgentNodeContent (anode,xbox);*/
+
+ imageview__ im = new imageview__;
+ im.setNativePointer(GetControl("image"));
+ //alert(arg.GetArgString("EntityName"));
+ im.AddImages("/business/flow/"+arg.GetArgString("EntityName")+".jpg");
+ }
+
+ return 1;
+ }
+
+ }
\ No newline at end of file
diff --git a/jrj/project/workflow/workflow.actionlog_vd.cpp b/jrj/project/workflow/workflow.actionlog_vd.cpp
new file mode 100644
index 0000000..8636365
--- /dev/null
+++ b/jrj/project/workflow/workflow.actionlog_vd.cpp
@@ -0,0 +1,70 @@
+class workflow_actionlog_vd : public win__
+ {
+ //命令发布函数
+ int OnCmdDispatch(string comdid)
+ {
+ CloseWindow();
+ return 0;
+ }
+
+ //命令处理事件
+ int OnXCommand(ref TXCommandEvent evt,int param)
+ {
+ return OnCmdDispatch(evt.pStrID);
+ }
+
+ int OnAttachEvent()
+ {
+ //绑定工具条点击事件
+ AttachEvent("WM_XCOMMAND",OnXCommand);
+ }
+
+
+ int onload()
+ {
+ OnAttachEvent();
+
+
+ xdwgrid__ dw_loglist = new xdwgrid__;
+ dw_loglist.setNativePointer(GetControl("dw_loglist"));
+ dw_loglist.openUrl("/sale/view/workflow.view/template/chkdlg/loglist");
+ if(this.GetParam())
+ {
+
+
+ int iArgs = GetParam();
+ xaserverarg__ argx = new xaserverarg__;
+ argx.setNativePointer(iArgs);
+
+ argx.AddArg("EntityID",argx.GetArgString("EntityID"));
+
+ xml__ x = new xml__;
+ x.setNativePointer(xml__ ::CreateInstance());
+ url::get("/sale/data/workflow.core/workflow/chk/loglist", argx.GetString(), x);
+ dw_loglist.Retrieve(x);
+ dw_loglist.SetReadOnly(true);
+
+ xflowchart__ dw_chart = new xflowchart__;
+ dw_chart.setNativePointer(GetControl("dw_logchart"));
+ xml__ xc = new xml__;
+ xc.setNativePointer(xml__ ::CreateInstance());
+ url::get("/sale/data/workflow.core/workflow/chk/logchart", argx.GetString(), xc);
+ msxml::IXMLDOMElement e = xc.GetXmlDoc().documentElement;
+ dw_chart.LoadEx(e);
+
+ /*
+ string xbox = "<vbox><ximage name='pic' transparent='1' src='/business/flow/"+arg.GetArgString("EntityName")+".jpg'/></vbox>";
+ xnode__ anode = new xnode__;
+ anode.setNativePointer(GetAgentNode("flowimage"));
+ SetAgentNodeContent (anode,xbox);*/
+
+ imageview__ im = new imageview__;
+ im.setNativePointer(GetControl("image"));
+ trace(argx.GetArgString("EntityName"));
+ im.AddImages("/business/flow/"+argx.GetArgString("EntityName")+".jpg");
+ }
+
+ return 1;
+ }
+
+ }
\ No newline at end of file
diff --git a/jrj/project/workflow/workflow.chkdlg.cpp b/jrj/project/workflow/workflow.chkdlg.cpp
new file mode 100644
index 0000000..5b60cd1
--- /dev/null
+++ b/jrj/project/workflow/workflow.chkdlg.cpp
@@ -0,0 +1,68 @@
+class workflow_chkdlg : public win__
+ {
+ //命令发布函数
+ int OnCmdDispatch(string comdid)
+ {
+ if(this.GetParam())
+ {
+ if(comdid=="xmOK")
+ {
+ control__ xc = new control__;
+ xc.setNativePointer(GetControl("content"));
+ string str = ""+xc.GetText();
+ //trace(str);
+ xaserverarg__ arg = this.GetParam();
+ arg.AddArg("content",str);
+ }
+ arg.AddArg("comdid",comdid);
+ }
+ CloseWindow();
+ return 0;
+ }
+
+ //命令处理事件
+ int OnXCommand(ref TXCommandEvent evt,int param)
+ {
+ return OnCmdDispatch(evt.pStrID);
+ }
+
+ int OnAttachEvent()
+ {
+ //绑定工具条点击事件
+ AttachEvent("WM_XCOMMAND",OnXCommand);
+ }
+
+
+ int onload()
+ {
+ OnAttachEvent();
+ xaserverarg__ arg;
+ if(this.GetParam())
+ {
+ arg = this.GetParam();
+ control__ xc = new control__;
+ xc.setNativePointer(GetControl("content"));
+ xc.SetText(""+arg.GetArgString("content"));
+ }
+
+ xdwgrid__ dw_loglist = new xdwgrid__;
+ dw_loglist.setNativePointer(GetControl("dw_loglist"));
+ dw_loglist.openUrl("/sale/view/workflow.view/template/chkdlg/loglist");
+
+ if(this.GetParam())
+ {
+ xaserverarg__ argx = new xaserverarg__;
+ argx.setNativePointer(argx.CreateInstance());
+ arg = this.GetParam();
+ argx.AddArg("EntityID",arg.GetArgString("EntityID"));
+ xml__ x = new xml__;
+ x.setNativePointer(xml__ ::CreateInstance());
+ url::get("/sale/data/workflow.core/workflow/chk/loglist", argx.GetString(), x);
+ dw_loglist.Retrieve(x);
+ dw_loglist.SetReadOnly(true);
+ }
+
+ return 1;
+ }
+
+ }
\ No newline at end of file
diff --git a/jrj/project/workflow/workflow.chkdlg_vd.cpp b/jrj/project/workflow/workflow.chkdlg_vd.cpp
new file mode 100644
index 0000000..c6d51e8
--- /dev/null
+++ b/jrj/project/workflow/workflow.chkdlg_vd.cpp
@@ -0,0 +1,76 @@
+class workflow_chkdlg_vd : public win__
+ {
+ //命令发布函数
+ int OnCmdDispatch(string comdid)
+ {
+ if(this.GetParam())
+ {
+ if(comdid=="xmOK")
+ {
+ control__ xc = new control__;
+ xc.setNativePointer(GetControl("content"));
+ string str = ""+xc.GetText();
+ //trace(str);
+ int iArgs = GetParam();
+ xaserverarg__ arg = new xaserverarg__;
+ arg.setNativePointer(iArgs);
+ arg.AddArg("content",str);
+ }
+ arg.AddArg("comdid",comdid);
+ }
+ CloseWindow();
+ return 0;
+ }
+
+ //命令处理事件
+ int OnXCommand(ref TXCommandEvent evt,int param)
+ {
+ return OnCmdDispatch(evt.pStrID);
+ }
+
+ int OnAttachEvent()
+ {
+ //绑定工具条点击事件
+ AttachEvent("WM_XCOMMAND",OnXCommand);
+ }
+
+
+ int onload()
+ {
+ //alert("新的");
+ OnAttachEvent();
+ xaserverarg__ arg;
+ if(this.GetParam())
+ {
+ int iArgsx = this.GetParam();
+ arg = new xaserverarg__;
+ arg.setNativePointer(iArgsx);
+ //trace(iArgsx);
+ control__ xc = new control__;
+ xc.setNativePointer(GetControl("content"));
+ xc.SetText(""+arg.GetArgString("content"));
+ }
+
+ xdwgrid__ dw_loglist = new xdwgrid__;
+ dw_loglist.setNativePointer(GetControl("dw_loglist"));
+ dw_loglist.openUrl("/sale/view/workflow.view/template/chkdlg/loglist");
+
+ if(this.GetParam())
+ {
+
+ int iArgs = GetParam();
+ xaserverarg__ argx = new xaserverarg__;
+ argx.setNativePointer(iArgs);
+
+ argx.AddArg("EntityID",arg.GetArgString("EntityID"));
+ xml__ x = new xml__;
+ x.setNativePointer(xml__ ::CreateInstance());
+ url::get("/sale/data/workflow.core/workflow/chk/loglist", argx.GetString(), x);
+ dw_loglist.Retrieve(x);
+ dw_loglist.SetReadOnly(true);
+ }
+
+ return 1;
+ }
+
+ }
\ No newline at end of file
--
Gitblit v1.9.3