From 6e93e717799723de98287f5a036ab34367bd08cd Mon Sep 17 00:00:00 2001 From: xj qian <qianxj15@sina.com> Date: 星期五, 05 七月 2024 17:15:44 +0800 Subject: [PATCH] update some --- jrj/project/business/AP/list.ap.cpp | 515 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 515 insertions(+), 0 deletions(-) diff --git a/jrj/project/business/AP/list.ap.cpp b/jrj/project/business/AP/list.ap.cpp new file mode 100644 index 0000000..9792b26 --- /dev/null +++ b/jrj/project/business/AP/list.ap.cpp @@ -0,0 +1,515 @@ +#include <wobject/xstring.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xdwgrid.hpp> + +#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" +#include "viewobject/view.base.hpp" + +using xml = KXMLDOMDocument; + class __declspec(dllexport) ListAP : public xframe + { + public: + xstring apType; + xstring DatePicker; + xstring DatePickerOne; + xdwgrid dw_list; + xdwtable dw_arg; + xnode m_agentNode; //Agent Condition + + public: + ListAP(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static ListAP* CreateInstance(void* implPtr, void* hWnd) + { + ListAP* pWin = new ListAP(implPtr, (HWND)hWnd); + return pWin; + } + int SetAgent() + { + xstring xfNodeAgentArea = L"agentarea"; + xnode anode = GetAgentNode(xfNodeAgentArea); + if (m_agentNode) + { + SetAgentNode(anode, m_agentNode); + } + else + { + KXMLDOMElement xframeElement = GetElement(); + KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*"); + if (agent) + { + xstring s = agent.xml(); + m_agentNode = SetAgentNode(anode, s); + } + } + return 1; + } + + //焦点激活处理函数 + int OnSetFocus(TEvent* evt, LPARAM param) + { + //重置工具条 + SetAgent(); + return 1; + } + + xstring GetPayType() + { + xcombobox cbx_type = GetControl(L"cbx_type"); + int h = xcombobox::GetCurSel(cbx_type.GetHWND()); + if (h < 0) return L""; + return xcombobox::GetLBText(cbx_type.GetHWND(), h); + } + + xstring GetEntityName(int pr) + { + return L"AP3"; + } + + xstring GetEntityIDName(int /*param*/ pr) + { + return L"APID"; + } + + xstring GetEntityID(int /*param*/ pr) + { + return dw_list.GetItemString(dw_list.GetRow(), L"APID"); + } + + int ViewUpdate(int pr, xstring updateItem, xaserverarg arg) + { + if (updateItem == L"del") + { + int DelRow = dw_list.GetRow(); + dw_list.DeleteRow(DelRow); + return 1; + } + return 1; + } + + int OnBank() + { + xaserverarg arg; + + OpenWindow(L"dev:xpage[APBank.vx]", arg); + if (arg.GetArgString(L"result") == L"ok") + { + int ll_row = dw_list.GetNextSelectRow(1); + dw_list.AcceptText(); + + while (ll_row > 0 && ll_row <= dw_list.GetRowCount()) + { + dw_list.SetItemString(ll_row, L"PayedTerm", arg.GetArgString(L"PayedTerm")); + dw_list.SetItemString(ll_row, L"PayedBank", arg.GetArgString(L"PayedBank")); + dw_list.SetItemString(ll_row, L"PayedBankNo", arg.GetArgString(L"PayedBankNo")); + ll_row = dw_list.GetNextSelectRow(ll_row + 1); + } + dw_list.Redraw(); + return 1; + } + else return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + if (comdid == L"xmBank") return OnBank(); + if (comdid == L"xmSave") return OnSave(); + if (comdid == L"xmAnalysis") return OnAnalysis(); + if (comdid == L"xmRefresh" || comdid == L"xmSearch") + { + xstring payTypeOne = GetPayType(); + if (payTypeOne == L"已付货款" || payTypeOne == L"待付货款") + { + return OnRetrieveEx(apType, DatePicker); + } + else if (payTypeOne == L"预付货款") + { + apType = L"001"; + return OnRetrieveEx(apType, DatePicker); + } + else if (payTypeOne == L"预付货款(已冲)L") + { + apType = L"001"; + return OnRetrieveEx1(apType, DatePickerOne); + } + + } + if (comdid == L"xmAddRow") + { + xstring payType = GetPayType(); + if (payType == L"已付货款" || payType == L"待付货款") + OpenWindow(L"dev:xpage[APNew3.warizd.vx]"); + else if (payType == L"预付货款" || payType == L"预付货款(已冲)L") + { + xaserverarg arg1; + + arg1.AddArg(L"APType", apType); + + OpenWindow(L"dev:xpage[maint.ap.vx]", arg1); + } + return 1; + } + if (comdid == L"xmSaveAs") + { + dw_list.SaveAs(L""); + return 1; + } + if (comdid == L"xmModifyRow") + { + + int row = dw_list.GetRow(); + if (row < 1) return 1; + KXMLDOMElement ele = dw_list.GetRowElement(row); + xstring APID = ele.selectSingleNode(L"APID").text(); + ele.Release(); + xaserverarg arg; + + arg.AddArg(L"APID", APID); + arg.AddArg(L"APType", apType); + + OpenWindow(L"dev:xpage[maint.ap.vx]", arg); + return 1; + } + if (comdid.find(L"action:", 0) >= 0) + { + xstring payType1 = GetPayType(); + if (payType1 == L"已付货款" || payType1 == L"预付货款") ProcessFlowAction(comdid, 1); + } + return 0; + } + + int OnDoubleClicked(TEvent* evt, LPARAM p) + { + return OnCmdDispatch(L"xmModifyRow"); + } + + int OnCombboChanged(TEvent* evt, int lParam) + { + xstring id = L""; + xstring name = L""; + int h = xcombobox::GetCurSel(evt.hCtrl); + if (h > -1) + { + xstring txt = xcombobox::GetLBText(evt.hCtrl, h); + apType = L"---"; + if (txt == L"已付货款") + { + dw_list.openUrl(L"/sale/view/AP/template/AP/list1"); + apType = L"000"; + OnRetrieveEx(apType, DatePicker); + } + else if (txt == L"待付货款") + { + dw_list.openUrl(L"/sale/view/AP/template/AP/list2"); + OnRetrieveEx(apType, DatePicker); + } + else if (txt == L"预付货款") + { + dw_list.openUrl(L"/sale/view/AP/template/AP/list3"); + apType = L"001"; + OnRetrieveEx(apType, DatePicker); + } + else if (txt == L"预付货款(已冲)L") + { + dw_list.openUrl(L"/sale/view/AP/template/AP/list3"); + apType = L"001"; + OnRetrieveEx1(apType, DatePickerOne); + } + + dw_list.SetColumnState(L"APID", false); + + } + return 1; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnItemChanged(TEvent* evt, LPARAM p) + { + //if(datareading) return 0; + HCURSOR HCursor = xutil::SetCursorWait(); + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + int row = hdr.row; + xstring col = hdr.colname; + xstring data = hdr.data; + xstring ETD = L""; + if (col == L"InvoiceNo") + { + if (dw_list.GetItemString(row, L"InvoiceNo") != L"") + { + xml x12 = ViewObject::RetrieveData(L"/sale/data/AP/GetInvoiceNoEx", L"InvoiceNo", dw_list.GetItemString(row, L"InvoiceNo")); + if (x12) + { + xstring COUNT = x12.text(); + if (COUNT != L"") + { + alert(COUNT); + dw_list.SetItemString(row, L"InvoiceNo", L""); + dw_list.SetItemString(row, L"NotifyInvoiceNo", L""); + dw_list.SetItemString(row, L"GDNDate", L""); + dw_list.Redraw(); + return 1; + } + } + + xml x11 = ViewObject::RetrieveData(L"/sale/data/AP/GetInvoiceNo", L"InvoiceNo", dw_list.GetItemString(row, L"InvoiceNo")); + if (x11) + { + ETD = x11.text(); + } + dw_list.SetItemString(row, L"NotifyInvoiceNo", dw_list.GetItemString(row, L"InvoiceNo")); + dw_list.SetItemString(row, L"GDNDate", ETD); + dw_list.Redraw(); + + return 1; + } + else + { + dw_list.SetItemString(row, L"NotifyInvoiceNo", L""); + dw_list.SetItemString(row, L"GDNDate", L""); + dw_list.Redraw(); + } + } + + return 1; + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&ListAP::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&ListAP::OnSetFocus); + AttachEvent(L"cbx_type", L"CBN_SELCHANGE", (FEvent)&ListAP::OnCombboChanged);//属性组切换list中列的数量变化 + AttachEvent(L"dw_list", L"DWV_DOUBLECLICKED", (FEvent)&ListAP::OnDoubleClicked);//行双击 + AttachEvent(L"cbx_state", L"CBN_SELCHANGE", (FEvent)&ListAP::OnDatePicker); + AttachEvent(L"dw_list", L"DWV_ITEMCHANGED", (FEvent)&ListAP::OnItemChanged); + return 1; + } + + int OnDatePicker(TEvent* evt, int lParam) + { + xstring payTypeTwo = GetPayType(); + if (payTypeTwo == L"已付货款" || payTypeTwo == L"待付货款") + { + int h = xcombobox::GetCurSel(evt.hCtrl); + if (h > -1) + { + xstring txt = xcombobox::GetLBText(evt.hCtrl, h); + if (txt == L"出运日期") + { + apType = L"000"; + DatePicker = L"GDNDate"; + OnRetrieveEx(apType, DatePicker); + } + else if (txt == L"请款日期") + { + apType = L"000"; + DatePicker = L"APDate"; + OnRetrieveEx(apType, DatePicker); + } + else if (txt == L"付款日期") + { + apType = L"000"; + DatePicker = L"PayedDate"; + OnRetrieveEx(apType, DatePicker); + } + } + } + else if (payTypeTwo == L"预付货款") + { + int h1 = xcombobox::GetCurSel(evt.hCtrl); + if (h1 > -1) + { + xstring txt1 = xcombobox::GetLBText(evt.hCtrl, h1); + if (txt1 == L"出运日期") + { + apType = L"001"; + DatePicker = L"GDNDate"; + OnRetrieveEx(apType, DatePicker); + } + else if (txt1 == L"请款日期") + { + apType = L"001"; + DatePicker = L"APDate"; + OnRetrieveEx(apType, DatePicker); + } + else if (txt1 == L"付款日期") + { + apType = L"001"; + DatePicker = L"PayedDate"; + OnRetrieveEx(apType, DatePicker); + } + } + } + else if (payTypeTwo == L"预付货款(已冲)L") + { + int h2 = xcombobox::GetCurSel(evt.hCtrl); + if (h2 > -1) + { + xstring txt2 = xcombobox::GetLBText(evt.hCtrl, h2); + if (txt2 == L"出运日期") + { + apType = L"001"; + DatePickerOne = L"GDNDate"; + OnRetrieveEx1(apType, DatePickerOne); + } + else if (txt2 == L"请款日期") + { + apType = L"001"; + DatePickerOne = L"APDate"; + OnRetrieveEx1(apType, DatePickerOne); + } + else if (txt2 == L"付款日期") + { + apType = L"001"; + DatePickerOne = L"PayedDate"; + OnRetrieveEx1(apType, DatePickerOne); + } + } + } + return 1; + } + + int OnSave() + { + xml x ; + + dw_list.DwUpdateAllToEx(x); + xaserverarg arg; + + arg.AddArg(L"content", x.xml()); + //trace(x.xml); + if (xurl::get(L"/sale/data/AP/update", arg.GetString(), x) != 1) + { + xstring error = x.text(); + alert(L"err:" + error); + return 1; + } + xstring str = x.documentElement().getAttribute(L"text"); + if (str == L"true") + { + dw_list.ResetUpdateStatus(); + alert(L"保存成功!"); + } + else + { + alert(L"保存失败!"); + } + return 1; + } + + int OnRetrieveEx1(xstring APType, xstring DatePickerOne) + { + xml x ; + + xaserverarg arg; + + arg.AddArg(L"QueryTxt", GetControl(L"sle_search").GetText()); + arg.AddArg(L"APType", APType); + arg.AddArg(L"QueryArg", GetQueryArg()); + arg.AddArg(L"DatePicker", DatePickerOne); + + trace(GetQueryArg()); + if (getUrl(L"/sale/data/AP/list9", arg.GetString(), x) != 1) + { + trace(x.text()); + return -1; + } + else + { + dw_list.Retrieve(x); + dw_list.Redraw(); + dw_list.SetReadOnly(true); + dw_list.SetSelectionMode(1); + } + return 1; + } + + xstring GetQueryArg() + { + dw_arg.AcceptText(); + xml x ; + + dw_arg.DwUpdateAllTo(x); + + return x.xml(); + } + + int OnRetrieveEx(xstring APType, xstring DatePicker) + { + xml x ; + + xaserverarg arg; + + arg.AddArg(L"QueryTxt", GetControl(L"sle_search").GetText()); + arg.AddArg(L"APType", APType); + arg.AddArg(L"QueryArg", GetQueryArg()); + arg.AddArg(L"DatePicker", DatePicker); + + trace(GetQueryArg()); + if (getUrl(L"/sale/data/AP/list", arg.GetString(), x) != 1) + { + trace(x.text()); + return -1; + } + else + { + //trace(L"xml=L"+x.xml); + dw_list.Retrieve(x); + dw_list.Redraw(); + //dw_list.SetReadOnly(true); + dw_list.SetSelectionMode(1); + } + return 1; + } + + int OnAnalysis() + { + HCURSOR hCursor = xutil::SetCursorWait(); + xstring str = dw_list.DataAnalysis(L""); + xaserverarg arg; + + arg.AddArg(L"html", str); + int obj = cast(dw_list as int); + arg.AddArg(L"obj", obj.toString()); + OpenWindow(L"dev:xpage[data.vanalysis.vx]", arg); + xutil::RestoreCursor(hCursor); + return 1; + } + + int onload() + { + dw_list = GetControl(L"dw_list"); + dw_list.openUrl(L"/sale/view/AP/template/AP/list1"); + dw_list.SetColumnState(L"APID", false); + dw_list.SetColumnState(L"SupplierID", false); + dw_list.SetColumnState(L"VATNo", false); + + dw_arg = GetControl(L"dw_arg"); + dw_arg.openUrl(L"/sale/view/AR/template/queryarg"); + dw_arg.SetColHeaderHeight(0); + dw_arg.SetRowSelectorWidth(0); + dw_arg.SetHScrollState(false); + dw_arg.SetVScrollState(false); + dw_arg.SetItemString(1, L"DateType", L"本月"); + + OnAttachEvent(); + apType = L"000"; + OnRetrieveEx(apType, DatePicker); + + return 1; + } + + int onloaded() + { + SetAgent(); + + return 1; + } + }; -- Gitblit v1.9.3