þÿ#include <wobject/xstring.hpp> #include <xcontrol/xtreeview.hpp> #include <xcontrol/xdwgrid.hpp> #include <wobject/xdouble.hpp> #include <xcontrol/xlayersheet.hpp> #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" using xml = KXMLDOMDocument; class __declspec(dllexport) ExportCreditMaint : public xframe { public: xdwtable dw_base; xnode m_agentNode; //Agent Condition int hObject = 0; xdwgrid dw_item; public: ExportCreditMaint(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} public: static ExportCreditMaint* CreateInstance(void* implPtr, void* hWnd) { ExportCreditMaint* pWin = new ExportCreditMaint(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; } xstring GetGuid() { return publiccode::GetGuid(); } int OnSaveEx() { dw_base.AcceptText(); xstring CustomerID = dw_base.GetItemString(1, L"CustomerID", 0); if (CustomerID == L"") { alert(L"Npe¹T yðN:zzÿ"); return -1; } xstring PaymentMethod = dw_base.GetItemString(1, L"PaymentMethod", 0); if (PaymentMethod == L"") { alert(L"e/NØe¹_N:zzÿ"); return -1; } xstring EffectiveDate = dw_base.GetItemString(1, L"EffectiveDate", 0); if (EffectiveDate == L"") { alert(L"ueHeågN:zzÿ"); return -1; } xstring CreditTerm = dw_base.GetItemString(1, L"CreditTerm", 0); if (CreditTerm == L"") { alert(L"Oáu(g–PN:zzÿ"); return -1; } xstring CreditLimit = dw_base.GetItemString(1, L"CreditLimit", 0); if (CreditLimit == L"") { alert(L"Oáu(˜^¦N:zzÿ"); return -1; } xstring RegistrationNumber = dw_base.GetItemString(1, L"RegistrationNumber", 0); if (RegistrationNumber == L"") { alert(L"Npe¹lèQŒS÷N:zzÿ"); return -1; } xstring FreeDate = dw_base.GetItemString(1, L"FreeDate", 0); if (FreeDate == L"") { alert(L"•òngN:zzÿ"); return -1; } xstring BuyerCode = dw_base.GetItemString(1, L"BuyerCode", 0); if (BuyerCode == L"") { alert(L"Npe¹NãxN:zz,‹÷W([¢b7N-XkQ™Npe¹Nãxÿ"); return -1; } else { xml check_x = ViewObject::RetrieveData(L"/sale/data/Expense3/ExportCreditBuyerCode", L"BuyerCode", BuyerCode); if (check_x) { xstring cut = check_x.documentElement().getAttribute(L"count"); int cutEx = cut.toInt(); xstring ExportCreditID = dw_base.GetItemString(1, L"ExportCreditID", 0); if (cutEx > 0) { if (cutEx == 1 && ExportCreditID != L"") { return OnSave(); } alert(L"Npe¹Nãx]ò[XW(ÿ ‹÷‘Íe° béNpe¹T yðÿ"); return -1; } } } xstring BIType = dw_base.GetItemString(1, L"BIType", 0); if (BIType != L"Y") { alert(L"g*N O [¡bySUcnÿ"); return -1; } OnSave(); return 1; } int OnSave() { xml x ; xaserverarg arg; dw_base.AcceptText(); dw_base.DwUpdateAllTo(x); xstring error = L""; arg.AddArg(L"content", x.xml()); if (xurl::get(L"/sale/data/Expense3/update/ExportCredit", arg.GetString(), x) != 1) { error = x.text(); //alert(error); } else { xstring str = x.documentElement().getAttribute(L"text"); if (str == L"true") { dw_base.ResetUpdateStatus(); //alert(L"OÝ[XbRŸ!"); } else { alert(L"OÝ[XY1%!"); } //alert(str); } if (dw_item.GetRowCount() > 0) { OnSaveS(); } else { alert(L"OÝ[XbRŸ!"); OmSearch(); } return 1; } int OnSaveS() { xml x1 ; x1.setNativePointer(xml::CreateInstance()); dw_item.AcceptText(); dw_item.DwUpdateAllToEx(x1); xaserverarg arg1; arg1.setNativePointer(xaserverarg::CreateInstance()); arg1.AddArg(L"content", x1.xml()); trace(x1.xml()); if (xurl::get(L"/sale/data/Expense3/update/ExportCreditItem", arg1.GetString(), x1) != 1) { xstring error = x1.text(); alert(L"err:" + error); return 1; } xstring str = x1.documentElement().getAttribute(L"text"); if (str == L"true") { dw_item.ResetUpdateStatus(); alert(L"OÝ[XbRŸ!"); OmSearch(); } else { alert(L"OÝ[XY1%!"); } return 1; } //q&p¹oÀm;YtQýep int OnSetFocus(TEvent* evt, LPARAM param) { //‘Ín]åQwga SetAgent(); return 1; } //T}NäSÑ^Qýep int OnCmdDispatch(xstring comdid) { xstring NO = publiccode::GetUser().no; xstring Jobname = publiccode::GetUser().jobname; if (NO == L"admin") Jobname = L""; if (Jobname == L"NR¡TX") { if (comdid == L"XmSearch") { OmSearch(); return 1; } return 1; } if (comdid == L"XmSave") { OnSaveEx(); return 1; } if (comdid == L"XmSearch") { OmSearch(); return 1; } if (comdid == L"AddItem") { AddItem(); return 1; } if (comdid == L"DelItem") { dw_item.DeleteRow(0); return 1; } return 0; } int OnPremiumAmount() { double PremiumRate = dw_base.GetItemDouble(1, L"PremiumRate"); double InsuredAmount = 0.00; for (int i = 1; i <= dw_item.GetRowCount(); i++) { InsuredAmount = dw_item.GetItemDouble(i, L"InsuredAmount"); trace(InsuredAmount.toString()); trace((InsuredAmount * PremiumRate / 100).toString()); dw_item.SetItemDouble(i, L"PremiumAmount", (InsuredAmount * PremiumRate / 100).round(2)); } dw_item.Redraw(); return 1; } int AddItem() { xstring CustomerID = dw_base.GetItemString(1, L"CustomerID"); if (CustomerID != L"") { xaserverarg arg; arg.AddArg(L"HWND", xstring((__int64)GetHWND())); arg.AddArg(L"CustomerID", CustomerID); OpenWindow(L"dev:xpage[ExportCredit.SwitchTo.vx]", cast(arg as int)); if (arg.GetArgString(L"items") != L"") { xstring str = arg.GetArgString(L"items"); ONImportXml(str); } } return 1; } int ONImportXml(xstring str) { if (str != L"") { xml x ; x.loadXML(str); KXMLDOMNodeList items = x.selectNodes(L"data/Item"); int len = items.length(); int row = 0; xstring ID = dw_base.GetGuid(1); for (int i = 0; i < len; i++) { if (i == 0 && dw_item.GetRowCount() > 0 && dw_item.GetItemString(dw_item.GetRowCount(), L"InvoiceNo") == L"") { row = dw_item.GetRowCount(); } else { row = dw_item.InsertRow(0); } KXMLDOMNode e = items.item(i); dw_item.SetItemString(row, L"ExportCreditID", ID); if (e.selectSingleNode(L"InvoiceNo"))dw_item.SetItemString(row, L"InvoiceNo", e.selectSingleNode(L"InvoiceNo").text()); if (e.selectSingleNode(L"SalespersonName"))dw_item.SetItemDisplayString(row, L"SalespersonID", e.selectSingleNode(L"SalespersonName").text()); if (e.selectSingleNode(L"SalespersonID"))dw_item.SetItemString(row, L"SalespersonID", e.selectSingleNode(L"SalespersonID").text()); if (e.selectSingleNode(L"CurrencyCode"))dw_item.SetItemString(row, L"CurrencyCode", e.selectSingleNode(L"CurrencyCode").text()); if (e.selectSingleNode(L"Amount")) dw_item.SetItemString(row, L"Amount", e.selectSingleNode(L"Amount").text()); if (e.selectSingleNode(L"ETD")) dw_item.SetItemString(row, L"ETD", e.selectSingleNode(L"ETD").text()); } } return 1; } //[¡bySUcn int DocCount(xstring guid) { dw_base.AcceptText(); xdwtable dw = dw_base.FindDwTable(L"ExportCredit", 0); xstring count = L"0"; xstring entityid = dw_base.GetItemString(1, L"ExportCreditID", 0); if (entityid.length() <= 0) { entityid = guid; dw_base.SetGuid(1, entityid); } xml x1 = ViewObject::RetrieveData(L"/sale/data/TDocument3/attachment/GetDocCountEx_s", L"entityid", entityid); KXMLDOMNodeList items = x1.selectNodes(L"data/Item"); KXMLDOMNode t = items.item(0); if (t.selectSingleNode(L"count"))count = t.selectSingleNode(L"count").text(); if (count == L"0") { dw_base.SetItemString(1, L"BIType", L"N"); } else { dw_base.SetItemString(1, L"BIType", L"Y"); } } int OnItemClick(ref TNotifyEvent evt, int p) { ref DWNMHDR hdr = evt.pnmh; xstring value = hdr.data; //alert(value); //xdwtable dw = dw_base.FindDwTable(L"item2",0); //xdwtable dw1 = dw_base.FindDwTable(L"item3",0); xaserverarg arg; if (value == L"[¡bySUN O *") { xstring guid = dw_base.GetGuid(1); if (guid.length() <= 0) { guid = publiccode::GetGuid(); dw_base.SetGuid(1, guid); } arg.AddArg(L"entityid", guid); int p3 = cast(arg as int); OpenWindow(L"dev:xpage[maint.Document.ExportCredit.v3.vx]", p3); DocCount(guid); } return 1; } int OnBaseItemChanged(ref TNotifyEvent evt, int p) { ref DWNMHDR hdr = trust(evt.pnmh as ref DWNMHDR); xstring colname = hdr.colname; xstring value = hdr.data; xstring dwname = L"dw_base"; if (value != L"") { KXMLDOMNodeList nlist = GetElement().selectNodes(L"//*[@name='" + dwname + L"']/trans[@for='" + colname + L"']"); ViewObject::TransData(nlist, dw_base, hdr.row, colname, value); } if (colname == L"PremiumRate") { //OnPremiumAmount(); } dw_item.Redraw(); return 1; } //T}NäYtN‹Nö int OnXCommand(TEvent* evt, LPARAM param) { return OnCmdDispatch(evt->xcommand.pStrID); } int OnItemChanged(ref TNotifyEvent evt, int p) { ref DWNMHDR hdr = trust(evt.pnmh as ref DWNMHDR); xstring colname = hdr.colname; xstring value = hdr.data; int row = hdr.row; xstring dwname = L"dw_item"; if (colname == L"Type") { if (value == L"N") { dw_item.SetItemString(row, L"CreatorID", L""); dw_item.SetItemDisplayString(row, L"CreatorID", L""); dw_item.SetItemString(row, L"CreateDate", L""); dw_item.SetItemString(row, L"Note", L""); } else { xstring Createdate = publiccode::GetCurrentDate(); xstring userid = publiccode::GetUser().id; xstring username = publiccode::GetUser().name; dw_item.SetItemString(row, L"CreatorID", userid); dw_item.SetItemDisplayString(row, L"CreatorID", username); dw_item.SetItemString(row, L"CreateDate", Createdate); dw_item.SetGuid(row, publiccode::GetGuid()); } } if (colname == L"InsuredAmount") { double InsuredAmount = dw_item.GetItemDouble(row, L"InsuredAmount"); double PremiumRate = dw_base.GetItemDouble(1, L"PremiumRate"); dw_item.SetItemDouble(row, L"PremiumAmount", (InsuredAmount * PremiumRate / 100).round(2)); //OnPremiumAmount(); } dw_item.Redraw(); return 1; } int OnDoubleClicked(ref TNotifyEvent evt, int p) { ref DWNMHDR hdr = trust(evt.pnmh as ref DWNMHDR); xstring colnames = hdr.colname; xstring values = hdr.data; int rows = hdr.row; xstring dwname = L"dw_item"; xstring Amount = dw_item.GetItemString(rows, L"Amount"); dw_item.SetItemString(rows, L"InsuredAmount", Amount); double PremiumRate = dw_base.GetItemDouble(1, L"PremiumRate"); double InsuredAmount = Amount.toDouble(); dw_item.SetItemDouble(rows, L"PremiumAmount", (InsuredAmount * PremiumRate / 100).round(2)); dw_item.Redraw(); return 1; } int OnAttachEvent() { //~Ñ[š]åQwgap¹QûN‹Nö AttachEvent(L"WM_XCOMMAND", (FEvent)&MaintAP::OnXCommand); //ƒ·SÖq&p¹N‹Nöÿ u(NŽ‘Ín]åQwga AttachEvent(L"WM_SETFOCUS", (FEvent)&MaintAP::OnSetFocus); AttachEvent(L"dw_base", L"DWV_CLICKED", (FEvent)&MaintAP::OnItemClick); AttachEvent(L"dw_base", L"DWV_ITEMCHANGED", (FEvent)&MaintAP::OnBaseItemChanged); AttachEvent(L"dw_item", L"DWV_DOUBLECLICKED", (FEvent)&MaintAP::OnDoubleClicked);//ˆLSÌQû AttachEvent(L"dw_item", L"DWV_ITEMCHANGED", (FEvent)&MaintAP::OnItemChanged); } int OnRetrieve(xstring ExportCreditID) { xml x ; xaserverarg arg; arg.AddArg(L"ExportCreditID", ExportCreditID); if (getUrl(L"/sale/data/Expense3/ExportCreditByID", arg.GetString(), x) != 1) { trace(x.text()); return -1; } else { dw_base.Retrieve(x); dw_base.Redraw(); } if (xurl::get(L"/sale/data/Expense3/GetExportCreditItemEx", arg.GetString(), x) != 1) { trace(x.text()); return -1; } dw_item.Retrieve(x); dw_item.Redraw(); return 1; } int OnNewInital() { xstring sdate = publiccode::GetCurrentDate(); xstring m_userid = publiccode::GetUser().id; xstring m_username = publiccode::GetUser().name; xstring guid = publiccode::GetGuid(); dw_base.SetItemString(1, L"PaymentMethod", L"O/A"); dw_base.SetItemString(1, L"QuotaState", L"g eH"); dw_base.SetItemString(1, L"Whether", L"f/"); dw_base.SetItemString(1, L"RejectionRatio", L"90"); dw_base.SetItemString(1, L"BusinessRisk", L"90"); dw_base.SetGuid(1, guid); } int OmSearch() { if (GetParam()) { xaserverarg arg = GetParam(); if (arg.GetArgString(L"ExportCreditID") != L"") { OnRetrieve(arg.GetArgString(L"ExportCreditID")); } } else { xstring ExportCreditID = dw_base.GetGuid(1); OnRetrieve(ExportCreditID); } return 1; } int onload() { dw_base = GetControl(L"dw_base"); dw_base.openUrl(L"/sale/view/expense3/ExportCredit"); dw_base.SetColHeaderHeight(0); dw_base.SetRowSelectorWidth(0); dw_base.SetHScrollState(false); dw_base.SetVScrollState(false); dw_item = GetControl(L"dw_item"); dw_item.openUrl(L"/sale/view/expense3/ExportCreditItem"); dw_item.SetColumnState(L"ExportCreditItemID", false); dw_item.SetColumnState(L"ExportCreditID", false); OnAttachEvent(); if (GetParam()) { xaserverarg arg = GetParam(); if (arg.GetArgString(L"ExportCreditID") != L"") { OnRetrieve(arg.GetArgString(L"ExportCreditID")); } } else { OnNewInital(); } return 1; } int onloaded() { SetAgent(); return 1; } }; ]