xj qian
2024-06-26 86eb6c07cf3d0f75782377454194fad1e5f160d2
add ptr
已添加2个文件
已修改4个文件
5045 ■■■■■ 文件已修改
jrj/ext-jrj/ext-jrj.vcxproj 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/ext-jrj/ext-jrj.vcxproj.filters 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/GDN3.list.cpp 718 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/GDN3.maint.cpp 4228 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/kobject/kxml.hpp 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/wobject/xaserverarg.hpp 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/ext-jrj/ext-jrj.vcxproj
@@ -224,6 +224,12 @@
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\EnquiryEx3.list.cpp" />
    <ClCompile Include="..\project\business\GDN3.list.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\GDN3.maint.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\Product.list.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
jrj/ext-jrj/ext-jrj.vcxproj.filters
@@ -311,5 +311,11 @@
    <ClCompile Include="..\project\business\EnquiryEx3.list.cpp">
      <Filter>project\business</Filter>
    </ClCompile>
    <ClCompile Include="..\project\business\GDN3.list.cpp">
      <Filter>project\business</Filter>
    </ClCompile>
    <ClCompile Include="..\project\business\GDN3.maint.cpp">
      <Filter>project\business</Filter>
    </ClCompile>
  </ItemGroup>
</Project>
jrj/project/business/GDN3.list.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,718 @@
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
class __declspec(dllexport) GDN3list : public listwin
{
public:
    GDN3list(void* implPtr, HWND hWnd) :listwin(implPtr, hWnd) {}
public:
    static GDN3list* CreateInstance(void* implPtr, void* hWnd)
    {
        GDN3list* pWin = new GDN3list(implPtr, (HWND)hWnd);
        return pWin;
    }
public:
    xstring m_sType; //树选中的类型
    xstring m_sTypeTxt; //树选中的数据
    xstring urlTree;
    xstring myDataUrl;
    xstring searchStr;
    xstring rows;
    bool readed;
    int changeddlb;
    xcombobox ddlb_1;
    xcombobox cbx_datashow;
    xtreeview tv_folder;
    xdwgrid   dw_goods;
    xdwgrid   dw_source;
    xdwtable dw_profit;
    xdwgrid dw_custom;
    //process tree
//查找当前树项的顶级目录
    int LookupTopFolder(HTREEVIEW hItem)
    {
        int hRoot = tv_folder.GetRootItem();
        while (tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem);
        return hItem;
    }
    //焦点激活处理函数
    int OnSetFocus(TEvent* evt, int param)
    {
        //重置工具条
        int row = dw_list.GetRow();
        if (row < 1) return 1;
        KXMLDOMElement ele = dw_list.GetRowElement(row);
        xstring id = GetEntityIDName(1);
        trace(L"\rn---" + id);
        xstring entity = ele.selectSingleNode(id).text();
        //trace(entity);
        SetAgent(L"list", entity);
        return 1;
    }
    int ExpandCatChildFolder(HTREEVIEW hItem, KXMLDOMElement ele, int image)
    {
        KXMLDOMNodeList nlist = ele.SelectNodes(L"item");
        int len = nlist.length;
        if (len > 0) tv_folder.SetItemChild(hItem, 1);
        for (int i = 0; i < len; i++)
        {
            KXMLDOMElement e = nlist.item(i);
            xstring name = e.getAttribute(L"name");
            int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), image);
            ExpandCatChildFolder(h, e, 35);
        }
        return 1;
    }
    int ExpandFolderItem(HTREEVIEW hItem, xstring no)
    {
        //xml x = ViewObject::RetrieveData(urlTree,L"no",no);
        xml x = xml::Make();
        xaserverarg arg = xaserverarg::Make();
        arg.AddArg(L"no", no);
        xaserver::ExecXQuery(GetServerUrl(), L"[customerfolder.gdn.sql.xq]", arg.GetString(), x);
        if (!x) return 0;
        KXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes(L"/data/item");
        int len = nlist.length;
        for (int i = 0; i < len; i++)
        {
            KXMLDOMElement e = nlist.item(i);
            xstring name = e.getAttribute(L"name");
            int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), 35);
            ExpandCatChildFolder(h, e, 35);
        }
        x.Free();
        return 1;
    }
    //树展开
    int OnTreeExpanding(ref TNotifyEvent evt, int p)
    {
        ref NMTREEVIEW nmtv = evt.pnmh;
        HTREEVIEW hItem = nmtv.itemNew.hItem;
        int hTopItem = LookupTopFolder(hItem);
        xstring name = tv_folder.GetItemLabel(hTopItem);
        int child = tv_folder.GetChildItem(hItem);
        KXMLDOMElement e = tv_folder.GetItemData(hItem);
        if (!child)ExpandFolderItem(hItem, e.getAttribute(L"no"));
        return 1;
    }
    int  ExpandChildFolder(HTREEVIEW hItem, KXMLDOMElement pElement)
    {
        KXMLDOMNodeList nlist = pElement.SelectNodes(L"Item");
        int len = nlist.length;
        for (int i = 0; i < len; i++)
        {
            KXMLDOMElement e = nlist.item(i);
            xstring name = e.getAttribute(L"name");
            xstring sImage = e.getAttribute(L"image");
            int image = 15;
            //if(sImage) image = sImage.toInt();
            int h = tv_folder.InsertChildItem(tv_folder.GetId(), hItem, name, trust(e as int), image);
            tv_folder.SetItemChild(h, 1);
            ExpandChildFolder(h, e);
        }
        return 1;
    }
    int  InitialFolder()
    {
        KXMLDOMElement xframeElement = GetElement();
        KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial");
        if (e)ExpandChildFolder(0, e);
        return 1;
    }
    int OnTreeSelChanged(ref TNotifyEvent evt, int p)
    {
        if (changeddlb) return 1;
        return OnPreRetrieve();
        return 1;
    }
    int ViewUpdate(int pr, xstring updateItem, xaserverarg  arg)
    {
        if (updateItem == L"del")
        {
            int DelRow = this.dw_list.GetRow();
            this.dw_list.DeleteRow(DelRow);
        }
        else if (updateItem == L"setstate")
        {
            int row = this.dw_list.GetRow();
            if (row < 1) return 1;
            KXMLDOMElement ele = this.dw_list.GetRowElement(row);
            xstring id = GetEntityIDName(1);
            xstring entity = ele.selectSingleNode(id).text();
            SetAgent(L"list", entity);
            if (arg.GetArgString(L"state") != L"")
                //this.dw_list.SetItemString(row, L"ApprovalStatus", arg.GetArgString(L"state"));
                dw_list.SetItemString(row, L"ApplyStatus", arg.GetArgString(L"state"));
            if (arg.GetArgString(L"billstatus") != L"")
            {
                xstring billstatus = arg.GetArgString(L"billstatus");
                xstring statusName = GetBillStatusName(billstatus);
                dw_list.SetItemString(row, L"ApprovalStatus", billstatus);
                dw_list.SetItemDisplayString(row, L"ApprovalStatus", statusName);
            }
            this.dw_list.Redraw();
        }
        return 1;
    }
    bool IsEmptyQueryStr(xstring queryStr)
    {
        if (queryStr == L"") return true;
        if (queryStr == L"<items join='and'/>") return true;
        if (queryStr == L"<items join=\"and\"/>") return true;
        return false;
    }
    //检索
    int OnPreRetrieveEx()
    {
        if (readed) return 1;
        HTREEVIEW hItem = tv_folder.GetSelectedItem();
        if (hItem <= 0)
        {
            hItem = tv_folder.GetRootItem();
            if (hItem <= 0)  return 1;
        }
        int     hCursor = xutil::SetCursorWait();
        KXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
        xstring no = e1.getAttribute(L"no");
        //xml x = 0;
        //x = ViewObject::RetrieveData(myDataUrl,L"no",no,L"QueryTxt", m_QueryTxt,L"rows",rows);
        xstring DeptName = publiccode::GetUser().deptname;
        xaserverarg arg = xaserverarg::Make();
        arg.AddArg(L"no", no);
        arg.AddArg(L"QueryTxt", m_QueryTxt);
        arg.AddArg(L"rows", rows);
        trace(no + L"***" + m_QueryTxt + L"***" + rows);
        /*if(DeptName==L"跟单部"){
            dw_list.DwRetrieve(GetServerUrl(),L"[list.creator.gdn.sql.xq]",arg.GetString());
        }else{
            dw_list.DwRetrieve(GetServerUrl(),L"[list.folder.gdn.sql.xq]",arg.GetString());
        }*/
        dw_list.DwRetrieve(GetServerUrl(), L"[list.folder.gdn.sql.xq]", arg.GetString());
        arg.Free();
        dw_list.SetReadOnly(true);
        dw_list.SetRowSort(L"ETD", false);
        if (dw_list.GetRowCount() >= 1) RetrieveDetail(1);
        xutil::RestoreCursor(hCursor);
        return 1;
    }
    int OnPreRetrieve()
    {
        HTREEVIEW hItem = tv_folder.GetSelectedItem();
        if (hItem <= 0) return 1;
        int hCursor = xutil::SetCursorWait();
        KXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
        xstring no = e1.getAttribute(L"no");
        xml x = 0;
        trace(L"\r\n" + no + L"\r\n" + m_QueryTxt);
        x = ViewObject::RetrieveData(myDataUrl, L"no", no, L"QueryTxt", m_QueryTxt, L"rows", rows);
        if (x)
        {
            dw_list.Retrieve(x);
            dw_list.Redraw();
        }
        else
        {
            dw_list.ResetEx();
            dw_list.Redraw();
        }
        dw_list.SetReadOnly(true);
        dw_list.SetRowSort(L"ETD", false);
        if (dw_list.GetRowCount() >= 1) RetrieveDetail(1);
        xutil::RestoreCursor(hCursor);
        return 1;
    }
    int RetrieveDetail(int row)
    {
        xstring EntityID = dw_list.GetGuid(row);
        xstring InvoiceNo = dw_list.GetItemString(row, L"InvoiceNo");
        dw_goods.DwRetrieve(GetServerUrl(), L"[gdnline.gdn.sql.xq]", L"EntityID", EntityID);
        dw_goods.SetReadOnly(true);
        //dw_source.DwRetrieve(GetServerUrl(),L"[source.gdn.sql.xq]",L"EntityID",  EntityID );
        xml x = ViewObject::RetrieveData(L"/sale/data/GDN/source/maintex1", L"GDNID", EntityID);
        if (x)
            dw_source.Retrieve(x);
        else
            dw_source.Reset();
        dw_source.Redraw();
        dw_source.SetReadOnly(true);
        xml x1 = ViewObject::RetrieveData(L"/sale/data/Custom3/maint/custom/data", L"invno", InvoiceNo);
        if (x1)
            dw_custom.Retrieve(x1);
        else
            dw_custom.Reset();
        dw_custom.Redraw();
        dw_custom.SetReadOnly(true);
        dw_profit.DwRetrieve(GetServerUrl(), L"[profit.dgn.sql.xq]", L"EntityID", EntityID);
        dw_profit.SetReadOnly(true);
        return 1;
    }
    int OnRowChanged(ref TNotifyEvent evt, int p)
    {
        //fixed one event only one process
        listwin::OnRowChanged(evt, p);
        ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
        int row = hdr.row;
        int     hCursor = xutil::SetCursorWait();
        RetrieveDetail(row);
        xutil::RestoreCursor(hCursor);
        return 1;
    }
    /*
int PreOnCmdDispatch(xstring comdid)
{
    //返回0——不在执行以下代码;返回其他——执行以下代码。
    if(comdid==L"action:bill.merge")
    {
        OpenWindow(L"dev:xpage[Merge.GDN.vx]");
        return 0;
    }
    else if(comdid==L"action:bill.check.ask")
    {
        int row = dw_list.GetRow();
        xstring ApprovalStatus = dw_list.GetItemString(row,L"ApprovalStatus");
        if(ApprovalStatus == L"9"){
            alert(L"合并票不允许提交审批!");
            return 0;
        }
        xstring InvoiceNo = dw_list.GetItemString(row,L"InvoiceNo");
        xml x = ViewObject::RetrieveData(L"/sale/data/Gdn/checksource",L"invno",InvoiceNo);
        if(!x) return 1;
        if(x.GetXmlDoc().selectSingleNode(L"error"))
        {
            alert(x.GetXmlDoc().selectSingleNode(L"error").text);
            return 0;
        }
    }
    else if(comdid==L"action:bill.new")
    {
            xstring s = publiccode::GetUser().id;
            xml supplier_x = ViewObject::RetrieveData(L"/sale/data/SupplierV3/entity/FindBySaleType",L"id", s);
            if(supplier_x)
            {
                if(supplier_x.GetXmlDoc().text != L"业务员")
                    {
                    alert(L"当前角色不是业务员不能新增单子,请重新选择角色");
                    return 0;
                }
            }
    }
    return 1;
}
*/
    int OnSearch()
    {
        xaserverarg arg = new xaserverarg;
        arg.setNativePointer(arg.CreateInstance());
        arg.AddArg(L"text", searchStr);
        OpenWindow(L"dev:xpage[search.dialog.vx]", cast(arg as int));
        xstring str = arg.GetArgString(L"text");
        if (str != searchStr)
        {
            searchStr = str;
            dw_list.Filter(L"*", searchStr);
            return 1;
        }
        return 1;
    }
    int PreOnCmdDispatch(xstring comdid)
    {
        if (comdid == L"action:bill.refresh")
        {
            changeddlb = 1;
            int RItem = tv_folder.GetRootItem();
            while (tv_folder.GetChildItem(RItem))
                tv_folder.DeleteItem(tv_folder.GetChildItem(RItem));
            ExpandFolderItem(RItem, L"Category:Customer");
            tv_folder.ExpandItem(RItem);
            tv_folder.ItemFocus(RItem);
            changeddlb = 0;
            return OnPreRetrieve();
        }
        else if (comdid == L"action:bill.merge")
        {
            OpenWindow(L"dev:xpage[Merge.GDN.vx]");
            return 0;
        }
        else if (comdid == L"xmSaveAs")
            return dw_list.SaveAs(L"");
        else if (comdid == L"xmSearch")
            return OnSearch();
        else if (comdid.find(L"bill.print") > 0)
        {
            xstring EntityIDS = dw_list.GetGuid(dw_list.GetRow());
            xml xs = ViewObject::RetrieveData(L"/sale/data/GDN/GetGDNJudge", L"GDNID", EntityIDS);
            xstring Results1 = xs.GetXmlDoc().text();
            if (Results1 != L"")
            {
                alert(Results1);
                return 0;
            }
            OnPrintOne();
            OnPrint();
            return 1;
        }
        else if (comdid == L"action:bill.new")
        {
            if (publiccode::GetUser().name != L"admin")
            {
                xstring s = publiccode::GetUser().id;
                xml supplier_x = ViewObject::RetrieveData(L"/sale/data/SupplierV3/entity/FindBySaleType", L"id", s);
                if (supplier_x)
                {
                    if (supplier_x.GetXmlDoc().text != L"跟单")
                    {
                        alert(L"当前角色不是跟单员不能新增单子,请重新选择角色");
                        return 0;
                    }
                }
            }
        }
        else if (comdid == L"action:bill.GDNDelay")
        {
            xstring EntityIDEx = dw_list.GetGuid(dw_list.GetRow());
            xaserverarg argEx = new xaserverarg;
            argEx.setNativePointer(argEx.CreateInstance());
            trace(EntityIDEx);
            argEx.AddArg(L"GDNID", EntityIDEx);
            OpenWindow(L"dev:xpage[GDNDelay.vx]", cast(argEx as int));
            return 1;
        }
        else if (comdid == L"action:bill.check.ask")
        {
            int row = dw_list.GetRow();
            xstring ApprovalStatus = dw_list.GetItemString(row, L"ApprovalStatus");
            if (ApprovalStatus == L"9") {
                alert(L"合并票不允许提交审批!");
                return 0;
            }
            xstring EntityID = dw_list.GetGuid(dw_list.GetRow());
            xml xx = ViewObject::RetrieveData(L"/sale/data/GDN/GetGDNJudge", L"GDNID", EntityID);
            xstring Results = xx.GetXmlDoc().text();
            if (Results != L"")
            {
                alert(Results);
                return 0;
            }
            xml xx2 = ViewObject::RetrieveData(L"/sale/data/GDN/GetGDNJudgeEx", L"GDNID", EntityID);
            xstring Results2 = xx2.GetXmlDoc().text();
            if (Results2 != L"")
            {
                alert(Results2);
                return 0;
            }
            xml xx3 = ViewObject::RetrieveData(L"/sale/data/GDN/GetGDNJudgeExS", L"GDNID", EntityID);
            xstring Results3 = xx3.GetXmlDoc().text();
            if (Results3 != L"")
            {
                alert(Results3);
                return 0;
            }
            xml xx4 = ViewObject::RetrieveData(L"/sale/data/GDN/GetGDNJudgeAmount", L"GDNID", EntityID);
            xstring Results4 = xx4.GetXmlDoc().text();
            if (Results4 != L"")
            {
                alert(Results4);
                return 0;
            }
            /*xml xx5= ViewObject::RetrieveData(L"/sale/data/GDN/GetGDNCost",L"GDNID",EntityID);
            xstring Results5=xx5.GetXmlDoc().text();
            if(Results5 !=L"")
            {
                alert(Results5);
                return 0;
            }*/
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            trace(EntityID);
            arg.AddArg(L"GDNID", EntityID);
            OpenWindow(L"dev:xpage[GDNDelay.vx]", cast(arg as int));
        }
        else if (comdid == L"action:bill.SourceRemark") return OnSourceRemark();
        return 1;
    }
    int OnSourceRemark()
    {
        xstring name = L"出运明细单";
        xml x = ViewObject::RetrieveData(L"/sale/data/TradeFinance3/GetSetUpRemarks", L"Type", name);
        KXMLDOMNodeList items = x.GetXmlDoc().selectNodes(L"data/Item");
        KXMLDOMNode t = items.item(0);
        xstring Content = L"";
        if (t.selectSingleNode(L"Content"))
        {
            Content = t.selectSingleNode(L"Content").text();
        }
        xaserverarg arg1 = new xaserverarg;
        arg1.setNativePointer(arg1.CreateInstance());
        arg1.AddArg(L"value", Content);
        OpenWindow(L"dev:xpage[memo.edit.new.vx]", arg1.getNativePointer());
        return 1;
    }
    int OnPrint()
    {
        int row = dw_list.GetRow();
        xstring GDNID = dw_list.GetGuid(row);
        xml x = ViewObject::RetrieveData(L"/sale/data/GDN/CheckCDLine", L"GDNID", GDNID);
        xstring  r = x.GetXmlDoc().text();
        int r1 = r.toInt();
        if (x)
        {
            if (r1 > 0)
            {
                alert(L"报关数量和报关金额与出运数量和金额不一致\r\n部分报关数量和金额需要核对!");
            }
        }
        //alert(GDNID);
        return 1;
    }
    int OnPrintOne()
    {
        int row = dw_list.GetRow();
        xstring GDNID = dw_list.GetGuid(row);
        xml x = ViewObject::RetrieveData(L"/sale/data/GDN/CheckGW", L"GDNID", GDNID);
        xstring  r = x.GetXmlDoc().text();
        int r1 = r.toInt();
        if (x)
        {
            if (r1 > 0)
            {
                alert(L"毛重总量或净总重量不一致,需要核对!");
            }
        }
        //alert(GDNID);
        return 1;
    }
    //xcombobox下拉
    int OnSelectDdlb(ref TNotifyEvent evt, int p)
    {
        changeddlb = 1;
        int wid = ddlb_1.GetId();
        int CB_GETCURSEL = 0x0147;
        int nIndex = win32::SendMessage(wid, CB_GETCURSEL, 0, 0);
        KXMLDOMElement e = ddlb_1.GetElement();
        KXMLDOMElement e2 = e.selectSingleNode(L"item[" + (nIndex + 1).toString() + L"]");
        xstring no = e2.selectSingleNode(L"@element").text();
        HTREEVIEW hItem = tv_folder.GetRootItem();
        while (tv_folder.GetChildItem(hItem))
            tv_folder.DeleteItem(tv_folder.GetChildItem(hItem));
        ExpandFolderItem(hItem, no);
        changeddlb = 0;
        return 1;
    }
    int OnSelectDataShowDdlb(ref TNotifyEvent evt, int p)
    {
        int wid = cbx_datashow.GetId();
        int CB_GETCURSEL = 0x0147;
        int nIndex = win32::SendMessage(wid, CB_GETCURSEL, 0, 0);
        KXMLDOMElement e = cbx_datashow.GetElement();
        KXMLDOMElement e2 = e.selectSingleNode(L"item[" + (nIndex + 1).toString() + L"]");
        rows = e2.selectSingleNode(L"@rows").text();
        OnPreRetrieve();
        return 1;
    }
    int AttachEvent()
    {
        AttachEvent(L"tv_folder", L"TVN_SELCHANGED", OnTreeSelChanged); //树选择
        //AttachEvent(L"tv_folder", L"TVN_ITEMEXPANDING",OnTreeExpanding); //树展开
        AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", OnRowChanged);
        AttachEvent(L"cbx_1", L"CBN_SELCHANGE", OnSelectDdlb);
        AttachEvent(L"cbx_datashow", L"CBN_SELCHANGE", OnSelectDataShowDdlb);
        return 1;
    }
    virtual xstring GetTemplateUrl()
    {
        return "/sale/view/GDN/template/GDN/ListEx";
    }
    int onload()
    {
        listwin::onload();
        dw_list.SetColumnState(L"CurrencyNo", false);
        ddlb_1 = GetControl(L"cbx_1");
        cbx_datashow = GetControl(L"cbx_datashow");
        dw_goods = GetControl(L"dw_goods");
        //dw_goods.openUrl(L"/sale/view/GDN/template/GDNItem1");
        dw_goods.SetDataObject(GetServerUrl(), L"dev:sheet[GDN.v3.EX.tpl/GDNItem]");
        dw_goods.SetColumnState(L"ItemID", false);
        dw_goods.SetColumnState(L"LineType", false);
        dw_goods.SetColumnState(L"LineNo", false);
        dw_goods.SetColumnState(L"Assortment", false);
        dw_goods.SetColumnState(L"SOLineNo", false);
        dw_goods.SetColumnState(L"SKUNo", false);
        dw_goods.SetColumnState(L"POCreatorID", false);
        dw_goods.SetColumnState(L"BuyAmount", false);
        dw_goods.SetColumnState(L"CostRate", false);
        dw_goods.SetColumnState(L"CommissionRate", false);
        dw_goods.SetColumnState(L"DiscountRate", false);
        dw_goods.SetColumnState(L"Remark", false);
        dw_goods.SetColumnState(L"DiscountRate", false);
        dw_goods.SetColumnState(L"SOLineID", false);
        dw_goods.SetColumnState(L"PONo", false);
        dw_source = GetControl(L"dw_source");
        //dw_source.openUrl(L"/sale/view/GDN/template/item/sourcing");
        dw_source.SetDataObject(GetServerUrl(), L"dev:sheet[GDN.v3.EX.tpl/SourcingItem]");
        dw_source.SetColumnState(L"POID", false);
        dw_source.SetColumnState(L"InvoiceNo", false);
        dw_source.SetColumnState(L"ETD", false);
        dw_source.SetColumnState(L"SOLineID", false);
        dw_source.SetColumnState(L"ItemID", false);
        dw_source.SetColumnState(L"POItemID", false);
        dw_source.SetColumnState(L"GDNLineID", false);
        dw_source.SetColumnState(L"Amount", false);
        dw_profit = GetControl(L"dw_profit");
        //dw_profit.openUrl(L"/sale/view/GDN/template/Profit");
        dw_profit.SetDataObject(GetServerUrl(), L"dev:sheet[GDN.v3.EX.tpl/Profit]");
        dw_profit.SetColHeaderHeight(0);
        dw_profit.SetRowSelectorWidth(0);
        dw_profit.SetHScrollState(false);
        dw_custom = GetControl(L"dw_custom");
        dw_custom.openUrl(L"/sale/view/Custom3/template/maint");
        dw_custom.SetColumnState(L"ClassifyID", false);
        dw_custom.SetColumnState(L"AmountEx", false);
        //dw_custom.SetReadOnlyColumn(L"CustName",true);
        dw_custom.SetColumnState(L"LineNo", false);
        rows = L"500";
        myDataUrl = L"/sale/data/GDN3/folder/list";
        urlTree = L"/sale/data/GDN3/folder";
        tv_folder = GetControl(L"tv_folder");
        //tv_folder.SetLineAtRoot(true);
        InitialFolder();
        return 1;
    }
    int onloaded()
    {
        HTREEVIEW hItem = tv_folder.GetRootItem();
        ExpandFolderItem(hItem, L"Category:Customer");
        tv_folder.ExpandItem(hItem);
        tv_folder.ItemFocus(hItem);
        listwin::onloaded();
        searchStr = L"";
        readed = true;
        //attach my control event
        AttachEvent();
        readed = false;
        return 1;
    }
    int ProcessUsedArg(xaserverarg arg)
    {
        xstring action = arg.GetArgString(L"Action");
        //trace(L"\r\n*******************action:"+action+L"\r\n");
        if (action == L"bill.open") {
            int row = dw_list.GetRow();
            xstring ApprovalStatus = dw_list.GetItemString(row, L"ApprovalStatus");
            if (ApprovalStatus == L"9")
            {
                arg.AddArg(L"ReadOnly", L"true");
                arg.AddArg(L"ReadOnlyEx", L"true");
            }
        }
        else {
            arg.AddArg(L"ReadOnly", L"false");
        }
        HTREEVIEW hItem = tv_folder.GetCaretItem();
        if (hItem <= 0) return 1;
        KXMLDOMElement e = tv_folder.GetItemData(hItem);
        xstring  no = e.getAttribute(L"no");
        if (no.find(L"Customer:") >= 0)
        {
            arg.AddArg(L"CustomerID", e.getAttribute(L"id"));
            xstring name = e.getAttribute(L"name");
            if (name.find(L"(L") >= 0) name = name.left(name.find(L"(L"));
            arg.AddArg(L"CustomerName", name);
        }
        return 1;
    }
};
jrj/project/business/GDN3.maint.cpp
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
jrj/xframe/kobject/kxml.hpp
@@ -255,6 +255,22 @@
    };
}}
class KXMLDOMElementPtr
{
private:
    KXMLDOMElement* m_pElement;
public:
    KXMLDOMElementPtr(LPARAM ele) :m_pElement((KXMLDOMElement* )ele) {}
    KXMLDOMElementPtr(KXMLDOMElement* pEle) :m_pElement((KXMLDOMElement*)pEle) {}
    KXMLDOMElementPtr(KXMLDOMElement ele) :m_pElement(new KXMLDOMElement(ele)) {}
public:
    KXMLDOMElement* value() { return m_pElement; }
public:
    operator KXMLDOMElement* () { return m_pElement; }
    operator KXMLDOMElement& () { return *m_pElement; }
    KXMLDOMElement*  operator -> () { return m_pElement; }
};
using KXMLDOMDocument=Hxsoft::XFrame::KXMLDOMDocument;
using KXMLDOMNode=Hxsoft::XFrame::KXMLDOMNode;
using KXMLDOMElement=Hxsoft::XFrame::KXMLDOMElement;
jrj/xframe/wobject/xaserverarg.hpp
@@ -120,74 +120,13 @@
    xaserverarg* arg;
public:
    xaserverargPtr() :arg(new xaserverarg) {}
    xaserverargPtr(LPARAM* val) :arg((xaserverarg*)val) {}
    xaserverargPtr(xaserverarg* val) :arg(val) {}
    xaserverargPtr(xaserverarg val) :arg(new xaserverarg(val)){}
public:
    xaserverarg* value() { return arg; }
public:
    operator xaserverarg& () { return *arg; }
    operator xaserverarg* () { return arg; }
    xaserverarg* operator ->() { return arg; }
public:
    int AddArg(string argname, string val, string typ = NULL) //alias "?AddArg@IXAServerArg@XFrame@Hxsoft@@QAEHPB_W00@Z";
    {
        return arg->AddArg(argname, val, typ);
    }
    int ClearArgs() //alias "?ClearArgs@IXAServerArg@XFrame@Hxsoft@@QAEHXZ"  from "xframe.dll";
    {
        return arg->ClearArgs();
    }
    int RemoveArg(string argname) //alias "?RemoveArg@IXAServerArg@XFrame@Hxsoft@@QAEHPB_W@Z";
    {
        return arg->RemoveArg(argname);
    }
    /*int SetArg(string argname,double val,string typ=NULL) //alias "?SetArg@IXAServerArg@XFrame@Hxsoft@@QAEHPB_WNO@Z";
    {
        return arg->SetArg(argname,val,typ);
    }
    int SetArg(string argname,int val,string typ=NULL) //alias "?SetArg@IXAServerArg@XFrame@Hxsoft@@QAEHPB_WHO@Z";
    {
        return arg->SetArg(argname,val,typ);
    }*/
    int SetArg(string argname, string val, string typ = NULL) //alias "?SetArg@IXAServerArg@XFrame@Hxsoft@@QAEHPB_W00@Z";
    {
        return arg->SetArg(argname, val, typ);
    }
    string GetString() //alias "?GetString@IXAServerArg@XFrame@Hxsoft@@QAEPB_WXZ"  from "xframe.dll";
    {
        return arg->GetString();
    }
    static void* CreateInstance() //alias "?CreateInstance@IXAServerArg@XFrame@Hxsoft@@SAPAV123@XZ";
    {
        return Hxsoft::XFrame::IXAServerArg::CreateInstance();
    }
    static int ReleaseInstance(void* p) //alias "?ReleaseInstance@IXAServerArg@XFrame@Hxsoft@@SAHPAV123@@Z";
    {
        Hxsoft::XFrame::IXAServerArg::ReleaseInstance((Hxsoft::XFrame::IXAServerArg*)p);
        return 1;
    }
    bool GetArgBool(string argname) //alias "?GetArgBool@IXAServerArg@XFrame@Hxsoft@@QAE_NPA_W@Z";
    {
        return arg->GetArgBool((LPTSTR)argname);
    }
    double GetArgDouble(string argname) //alias "?GetArgDouble@IXAServerArg@XFrame@Hxsoft@@QAENPA_W@Z";
    {
        return arg->GetArgDouble((LPTSTR)argname);
    }
    int  GetArgInt(string argname) //alias "?GetArgInt@IXAServerArg@XFrame@Hxsoft@@QAEHPA_W@Z";
    {
        return arg->GetArgInt((LPTSTR)argname);
    }
    string GetArgString(string argname) //alias "?GetArgString@IXAServerArg@XFrame@Hxsoft@@QAEPA_WPA_W@Z";
    {
        return arg->GetArgString((LPTSTR)argname);
    }
    int SetParam(LPCTSTR pArgName, LPARAM pValue)
    {
        return arg->SetParam(pArgName, pValue);
    }
    LPARAM GetParam(LPCTSTR pArgName)
    {
        return arg->GetParam(pArgName);
    }
};