#include #include #include #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" using xml = KXMLDOMDocument; class __declspec(dllexport) UpdateVatNotifyWin : public xframe { public: xdwgrid dw_list; xdwgrid dw_item; xdwgrid dw_goods; xnode m_agentNode; //Agent Condition xstring InvNo; public: UpdateVatNotifyWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} public: static UpdateVatNotifyWin* CreateInstance(void* implPtr, void* hWnd) { UpdateVatNotifyWin* pWin = new UpdateVatNotifyWin(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; } int OnSave() { xml x; dw_list.AcceptText(); dw_list.DwUpdateAllToEx(x); xaserverarg arg; arg.AddArg(L"content", x.xml()); trace(x.xml()); //return 1; if (xurl::get(L"/sale/data/VATNotify/base/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 OnCmdDispatch(xstring comdid) { if (comdid == L"xmReplaceRow") { return OnReplaceRow(); } if (comdid == L"xmReplaceSupplier") { return OnReplaceSupplier(); } else if (comdid == L"xmAddRow") { return OnAddRow(); } else if (comdid == L"xmSave") { return OnSave(); } else if (comdid == L"xmDeleteRow") { return OnDeleteRow(); } if (comdid == L"xmClose") { CloseWindow(); return 1; } return 0; } int OnDeleteRow() { if (dw_list.GetRowCount() == dw_item.GetRowCount()) { int res = MessageBox(GetHWND(), L"Äã¿ÉÒÔÓÃÌæ»»Íê³ÉÏàÓ¦µÄ²Ù×÷£¬»¹¼ÌÐøÉ¾³ýÂð?", L"Ìáʾ", 4); if (res != 6) return 1; } else { int res1 = MessageBox(GetHWND(), L"È·ÈÏɾ³ý¶ÔÓ¦µÄÐÐ?", L"Ìáʾ", 4); if (res1 != 6) return 1; } dw_list.DeleteRow(0); dw_list.Redraw(); return 1; } int OnAddRow() { if (dw_item.GetRow() < 1) return 1; int ll_row1 = dw_item.GetRow(); dw_list.InsertRow(0); int ll_row = dw_list.GetRowCount(); KXMLDOMElement e = dw_item.GetRowElement(ll_row1); dw_list.SetItemString(ll_row, L"SupplierID", dw_item.GetItemString(ll_row1, L"SupplierID")); dw_list.SetItemDisplayString(ll_row, L"SupplierID", dw_item.GetItemDisplayString(ll_row1, L"SupplierID")); dw_list.SetItemString(ll_row, L"CQuantity", dw_item.GetItemString(ll_row1, L"CustQuantity")); dw_list.SetItemString(ll_row, L"Amount", dw_item.GetItemString(ll_row1, L"Amount")); dw_list.SetItemString(ll_row, L"ClassifyID", dw_item.GetItemString(ll_row1, L"ClassifyID")); dw_list.SetItemDisplayString(ll_row, L"ClassifyID", dw_item.GetItemDisplayString(ll_row1, L"ClassifyID")); dw_list.SetItemString(ll_row, L"CName", dw_item.GetItemDisplayString(ll_row1, L"ClassifyID")); if (e.selectSingleNode(L"Quantity")) dw_list.SetItemString(ll_row, L"Quantity", e.selectSingleNode(L"Quantity").text()); if (e.selectSingleNode(L"CreatorID")) dw_list.SetItemString(ll_row, L"CreatorID", e.selectSingleNode(L"CreatorID").text()); if (e.selectSingleNode(L"CreateDate")) dw_list.SetItemString(ll_row, L"CreateDate", e.selectSingleNode(L"CreateDate").text()); if (e.selectSingleNode(L"ModifierID")) dw_list.SetItemString(ll_row, L"ModifierID", e.selectSingleNode(L"ModifierID").text()); if (e.selectSingleNode(L"ModifyDate")) dw_list.SetItemString(ll_row, L"ModifyDate", e.selectSingleNode(L"ModifyDate").text()); if (e.selectSingleNode(L"VATRate")) dw_list.SetItemString(ll_row, L"VATRate", e.selectSingleNode(L"VATRate").text()); if (e.selectSingleNode(L"VATRefundRate")) dw_list.SetItemString(ll_row, L"VATRefundRate", e.selectSingleNode(L"VATRefundRate").text()); if (e.selectSingleNode(L"CustomUOM")) dw_list.SetItemString(ll_row, L"CQtyUnit", e.selectSingleNode(L"CustomUOM").text()); if (e.selectSingleNode(L"IsFinish")) dw_list.SetItemString(ll_row, L"IsFinish", e.selectSingleNode(L"IsFinish").text()); if (e.selectSingleNode(L"Type")) dw_list.SetItemString(ll_row, L"Type", e.selectSingleNode(L"Type").text()); if (e.selectSingleNode(L"InvoiceNo")) dw_list.SetItemString(ll_row, L"InvoiceNo", e.selectSingleNode(L"InvoiceNo").text()); dw_list.Redraw(); dw_item.SetItemString(ll_row1, L"Relation", xstring(ll_row)); dw_item.Redraw(); return 1; } int OnReplaceSupplier() { int ll_row = dw_list.GetRow(); int ll_row1 = dw_item.GetRow(); if (ll_row < 1 || ll_row1 < 1) { alert(L"ûÓвÙ×÷!"); return 1; } xstring SupplierID1 = dw_item.GetItemString(ll_row1, L"SupplierID"); dw_list.SetItemString(ll_row, L"SupplierID", SupplierID1); dw_list.SetItemDisplayString(ll_row, L"SupplierID", dw_item.GetItemDisplayString(ll_row1, L"SupplierID")); dw_list.Redraw(); return 1; } int OnReplaceRow() { int ll_row = dw_list.GetRow(); int ll_row1 = dw_item.GetRow(); if (ll_row < 1 || ll_row1 < 1) { alert(L"ûÓвÙ×÷!"); return 1; } bool updateSupplier = false; bool updatePrice = false; bool updateClassifyID = false; xstring SupplierID = dw_list.GetItemString(ll_row, L"SupplierID"); xstring CQuantity = dw_list.GetItemString(ll_row, L"CQuantity"); xstring Amount = dw_list.GetItemString(ll_row, L"Amount"); xstring ClassifyID = dw_list.GetItemString(ll_row, L"ClassifyID"); xstring SupplierID1 = dw_item.GetItemString(ll_row1, L"SupplierID"); xstring CQuantity1 = dw_item.GetItemString(ll_row1, L"CustQuantity"); xstring Amount1 = dw_item.GetItemString(ll_row1, L"Amount"); xstring ClassifyID1 = dw_item.GetItemString(ll_row1, L"ClassifyID"); if (SupplierID != SupplierID1) updateSupplier = true; if (CQuantity != CQuantity1) updatePrice = true; if (Amount != Amount1) updatePrice = true; if (ClassifyID != ClassifyID1) updateClassifyID = true; if (updateSupplier && updatePrice && updateClassifyID) { int res = MessageBox(GetHWND(), L"ÉÏÏÂÊý¾Ý±¨¹ØÆ·Ãû¡¢¼Û¸ñ¡¢¹¤³§È«²»Ò»Ö£¬ÊÇ·ñÒªÇ¿ÖÆÌæ»»?", L"Ìáʾ", 4); if (res != 6) return 1; } if (updateSupplier) { dw_list.SetItemString(ll_row, L"SupplierID", SupplierID1); dw_list.SetItemDisplayString(ll_row, L"SupplierID", dw_item.GetItemDisplayString(ll_row1, L"SupplierID")); } if (updatePrice) { dw_list.SetItemString(ll_row, L"CQuantity", CQuantity1); dw_list.SetItemString(ll_row, L"Amount", Amount1); } if (updateClassifyID) { dw_list.SetItemString(ll_row, L"ClassifyID", ClassifyID); dw_list.SetItemDisplayString(ll_row, L"ClassifyID", dw_item.GetItemDisplayString(ll_row1, L"ClassifyID")); dw_list.SetItemString(ll_row, L"CName", dw_item.GetItemDisplayString(ll_row1, L"ClassifyID")); } dw_list.Redraw(); dw_item.SetItemString(ll_row1, L"Relation",xstring(ll_row)); dw_item.Redraw(); return 1; } //ÃüÁî´¦Àíʼþ int OnXCommand(TEvent* evt, LPARAM param) { return OnCmdDispatch(evt->xcommand.pStrID); } int OnAttachEvent() { //°ó¶¨¹¤¾ßÌõµã»÷ʼþ AttachEvent(L"WM_XCOMMAND", (FEvent)&UpdateVatNotifyWin::OnXCommand); //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ AttachEvent(L"WM_SETFOCUS", (FEvent)&UpdateVatNotifyWin::OnSetFocus); AttachEvent(L"dw_item", L"DWV_ROWFOCUSCHANGED", (FEvent)&UpdateVatNotifyWin::OnRowChanged); return 1; } int RetrieveCustomSource(xstring classifyID, xstring supplierID) { xml x; xaserverarg arg ; if (GetWinParam()) { arg = GetArg(); InvNo = arg.GetArgString(L"invoiceno"); } else arg.AddArg(L"invoiceno", InvNo); arg.AddArg(L"ClassifyID", classifyID); arg.AddArg(L"SupplierID", supplierID); if (getUrl(L"/sale/data/VATNotify/pref/CustomSource", arg.GetString(), x) != 1) { trace(x.text()); return -1; } else { dw_goods.Retrieve(x); dw_goods.Redraw(); } } int OnRowChanged(TEvent* evt, LPARAM p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; int row = hdr.row; if (row < 1) return 1; KXMLDOMElement e = dw_item.GetRowElement(row); xstring classifyID = e.selectSingleNode(L"ClassifyID").text(); xstring supplierID = e.selectSingleNode(L"SupplierID").text(); e.Release(); RetrieveCustomSource(classifyID, supplierID); return 1; } int OnRetrieve() { xml x ; xaserverarg arg; if (GetWinParam()) { arg = GetArg(); InvNo = arg.GetArgString(L"invoiceno"); } else arg.AddArg(L"invoiceno", InvNo); if (getUrl(L"/sale/data/VATNotify/entity/base/miss", arg.GetString(), x) != 1) { trace(x.text()); //return -1; } else { //alert(x.xml); dw_list.Retrieve(x); dw_list.Redraw(); } if (getUrl(L"/sale/data/VATNotify/pref/GdnInvoice", arg.GetString(), x) != 1) { trace(x.text()); return -1; } else { dw_item.Retrieve(x); dw_item.Redraw(); dw_item.SetReadOnly(true); if (dw_item.GetRowCount() > 0) { KXMLDOMElement e = dw_item.GetRowElement(1); xstring classifyID = e.selectSingleNode(L"ClassifyID").text(); xstring supplierID = e.selectSingleNode(L"SupplierID").text(); e.Release(); trace(L"!" + classifyID + L" " + supplierID); RetrieveCustomSource(classifyID, supplierID); } } return 1; } int onload() { SetArg(); dw_list = GetControl(L"dw_list"); dw_list.openUrl(L"/sale/view/VATNotify/template/VATNotify/item"); dw_item = GetControl(L"dw_item"); dw_item.openUrl(L"/sale/view/VATNotify/template/VATNotify/DItem"); dw_goods = GetControl(L"dw_goods"); dw_goods.openUrl(L"/sale/view/VATNotify/template/VATNotify/DItem1"); OnRetrieve(); OnAttachEvent(); return 1; } int onloaded() { //SetAgent(); return 1; } };