xj qian
2024-07-05 6e93e717799723de98287f5a036ab34367bd08cd
jrj/project/business/VATNotify/list.vatnotify.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,410 @@
#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) listvatnotifyWin : public xframe
   {
   public:
      xdwgrid   dw_list;
      xdwpages dw_pages;
      xdwtable dw_arg;
      xnode   m_agentNode;   //Agent Condition
      int    m_pageindex;
      int   m_pagenumber;
      xstring    m_QueryTxt;
      xstring DatePicker;
   public:
      listvatnotifyWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
   public:
      static listvatnotifyWin* CreateInstance(void* implPtr, void* hWnd)
      {
         listvatnotifyWin* pWin = new listvatnotifyWin(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 OnDWClick(TEvent* evt, LPARAM p)
      {
         DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
         xstring value = hdr.data;
         xstring colname = hdr.colname;
         int row = hdr.row;
         if (row < 1) return 1;
         xaserverarg arg;
         if (colname == L"SONo")
         {
            xstring SONo = dw_list.GetItemString(row, colname);
            ;
            arg.AddArg(L"EntityNo", SONo);
            arg.AddArg(L"ReadOnly", L"true");
            OpenWindow(L"dev:xpage[base.maint.so.vx]", arg);
         }
         if (colname == L"InvoiceNo")
         {
            xstring InvoiceNo = dw_list.GetItemString(row, colname);
            ;
            arg.AddArg(L"EntityNo", InvoiceNo);
            arg.AddArg(L"ReadOnly", L"true");
            OpenWindow(L"dev:xpage[maintex.GDN3.vx]", arg);
         }
         return 1;
      }
      int OnPrint()
      {
         xaserverarg& arg = *new xaserverarg;
         arg.AddArg(L"EntityName", L"VATNotify");
         arg.AddArg(L"EntityID", L"", L"");
         xstring InvoiceNo = dw_list.GetItemString(dw_list.GetRow(), L"NInvoiceNo");
         if (InvoiceNo == L"") InvoiceNo = dw_list.GetItemString(dw_list.GetRow(), L"InvoiceNo");
         xstring NInvoiceNoEx = dw_list.GetItemString(dw_list.GetRow(), L"NInvoiceNo");
         xstring InvoiceNoEx = dw_list.GetItemString(dw_list.GetRow(), L"InvoiceNo");
         if (NInvoiceNoEx != InvoiceNoEx)
         {
            NInvoiceNoEx = InvoiceNoEx;
         }
         xstring SupplierID = dw_list.GetItemString(dw_list.GetRow(), L"SupplierID");
         arg.AddArg(L"EntityNo", InvoiceNo, L"");
         arg.AddArg(L"EntityNoEx", NInvoiceNoEx, L"");
         arg.AddArg(L"SupplierID", SupplierID);
         arg.AddArg(L"VATNotifyID", L"");
         trace(InvoiceNo + L"==1" + NInvoiceNoEx + L"==2" + SupplierID + L"==3" + dw_list.GetGuid(dw_list.GetRow()));
         openUrl(L"/sale/view/view.base/xpage/Template/PrintViewEx", &arg);
         return 1;
      }
      int OnPrintItem()
      {
         xaserverarg& arg = *new xaserverarg;
         arg.AddArg(L"EntityName", L"VATNotify");
         arg.AddArg(L"EntityID", L"", L"");
         xstring InvoiceNo = dw_list.GetItemString(dw_list.GetRow(), L"NInvoiceNo");
         if (InvoiceNo == L"") InvoiceNo = dw_list.GetItemString(dw_list.GetRow(), L"InvoiceNo");
         xstring NInvoiceNoEx = dw_list.GetItemString(dw_list.GetRow(), L"NInvoiceNo");
         xstring InvoiceNoEx = dw_list.GetItemString(dw_list.GetRow(), L"InvoiceNo");
         if (NInvoiceNoEx != InvoiceNoEx)
         {
            NInvoiceNoEx = InvoiceNoEx;
         }
         xstring SupplierID = dw_list.GetItemString(dw_list.GetRow(), L"SupplierID");
         arg.AddArg(L"EntityNo", InvoiceNo, L"");
         arg.AddArg(L"EntityNoEx", NInvoiceNoEx, L"");
         arg.AddArg(L"SupplierID", SupplierID);
         arg.AddArg(L"VATNotifyID", dw_list.GetGuid(dw_list.GetRow()));
         trace(L"=====L" + InvoiceNo + L"=====L" + SupplierID + L"=====L" + dw_list.GetGuid(dw_list.GetRow()));
         openUrl(L"/sale/view/view.base/xpage/Template/PrintViewEx", &arg);
         return 1;
      }
      int OnOpen() {
         int row = dw_list.GetRow();
         if (row < 1) return 0;
         KXMLDOMElement ele = dw_list.GetRowElement(row);
         xstring entityid = ele.selectSingleNode(L"InvoiceNo").text();
         xaserverarg arg;
         arg.AddArg(L"invoiceno", entityid);
         OpenWindow(L"dev:xpage[simple.maint.vatnotify.vx]", arg);
         return 1;
      }
      int OnPapercardOpen() {
         int row = dw_list.GetRow();
         if (row < 1) return 0;
         KXMLDOMElement ele = dw_list.GetRowElement(row);
         xstring entityid = ele.selectSingleNode(L"InvoiceNo").text();
         xstring classifyID = ele.selectSingleNode(L"ClassifyID").text();
         xstring supplierID = ele.selectSingleNode(L"SupplierID").text();
         xstring cname = ele.selectSingleNode(L"CName").text();
         xaserverarg arg;
         arg.AddArg(L"invoiceno", entityid);
         arg.AddArg(L"ClassifyID", classifyID);
         arg.AddArg(L"SupplierID", supplierID);
         arg.AddArg(L"CName", cname);
         OpenWindow(L"dev:xpage[maint.papercard.vatnotify.vx]", arg);
         return 1;
      }
      int OnModify() {
         int row = dw_list.GetRow();
         if (row < 1) return 0;
         KXMLDOMElement ele = dw_list.GetRowElement(row);
         xstring entityid = ele.selectSingleNode(L"InvoiceNo").text();
         xaserverarg arg;
         arg.AddArg(L"invoiceno", entityid);
         OpenWindow(L"dev:xpage[update.vatnotify.vx]", arg);
         return 1;
      }
      int Onfinish() {
         return 1;
      }
      int OnDeleteRow()
      {
         if (dw_list.GetRow() < 1) return 1;
         int row = dw_list.GetRow();
         xstring InvoiceNo = dw_list.GetItemString(row, L"InvoiceNo");
         int res = MessageBox(GetHWND(), L"是否确认删除" + InvoiceNo + L"的开票通知?", L"提示", 4);
         if (res == 6)
         {
            xml x = ViewObject::RetrieveData(L"/sale/data/VATNotify/entity/delete", L"invoiceno", InvoiceNo);
            if (!x)
            {
               alert(L"删除错误");
               return 1;
            }
            //dw_list.DeleteRow(row);
            alert(x.text());
            OnRetrieve(DatePicker);
         }
         return 1;
      }
      //命令发布函数
      int OnCmdDispatch(xstring comdid)
      {
         if (comdid == L"xm:import") {
            OpenWindow(L"dev:xpage[import.vatnotify.vx]", 0);
         }
         if (comdid == L"action:bill.open") {
            OnOpen();
         }
         else if (comdid == L"xm:notify") {
            OnOpen();
         }
         else if (comdid == L"xm:papercardnotify") {
            OnPapercardOpen();
         }
         else if (comdid == L"xm:modify") {
            OnModify();
         }
         else if (comdid == L"xm:finish") {
            Onfinish();
         }
         else if (comdid == L"xm:ratecalc") {
         }
         else if (comdid == L"find")
         {
            m_QueryTxt = GetControl(L"txt").GetText();
            return OnRetrieve(DatePicker);
         }
         else if (comdid == L"xmRefresh")
         {
            return OnRetrieve(DatePicker);
         }
         else if (comdid == L"xmDeleteRow")
         {
            return OnDeleteRow();
         }
         else if (comdid == L"xmPrint") {
            return OnPrint();
         }
         else if (comdid == L"xmPrintItem") {
            return OnPrintItem();
         }
         else if (comdid == L"xmSaveAs")
         {
            dw_list.SaveAs(L"");
            return 1;
         }
         return 0;
      }
      //命令处理事件
      int OnXCommand(TEvent* evt, LPARAM param)
      {
         return OnCmdDispatch(evt->xcommand.pStrID);
      }
      int OnAttachEvent()
      {
         //绑定工具条点击事件
         AttachEvent(L"WM_XCOMMAND", (FEvent)&listvatnotifyWin::OnXCommand);
         //获取焦点事件,用于重置工具条
         AttachEvent(L"WM_SETFOCUS", (FEvent)&listvatnotifyWin::OnSetFocus);
         AttachEvent(L"dw_list", L"DWV_CLICKED", (FEvent)&listvatnotifyWin::OnDWClick);
         AttachEvent(L"cbx_state", L"CBN_SELCHANGE", (FEvent)&listvatnotifyWin::OnDatePicker);
         return 1;
      }
      int OnDatePicker(TEvent* evt, int lParam)
      {
         DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
         int h = xcombobox::GetCurSel(evt.hCtrl);
         if (h > -1)
         {
            xstring txt = xcombobox::GetLBText(evt.hCtrl, h);
            if (txt == L"通知日期")
            {
               DatePicker = L"NotifyDate";
               OnRetrieve(DatePicker);
            }
            else if (txt == L"出运日期")
            {
               DatePicker = L"ETD";
               OnRetrieve(DatePicker);
            }
         }
         return 1;
      }
      xstring GetQueryArg()
      {
         dw_arg.AcceptText();
         xml x ;
         dw_arg.DwUpdateAllTo(x);
         return x.xml();
      }
      int  OnRetrieve(xstring DatePicker)
      {
         HCURSOR  hCursor = xutil::SetCursorWait();
         xml x ;
         xaserverarg arg;
         arg.AddArg(L"pageindex", xstring(m_pageindex));
         arg.AddArg(L"pagenumber", xstring(m_pagenumber));
         arg.AddArg(L"QueryTxt", m_QueryTxt);
         arg.AddArg(L"QueryArg", GetQueryArg());
         arg.AddArg(L"DatePicker", DatePicker);
         if (getUrl(L"/sale/data/VATNotify/entity/listOne", arg.GetString(), x) != 1)
         {
            trace(x.text());
            xutil::RestoreCursor(hCursor);
            return -1;
         }
         else
         {
            //trace(x.xml);
            KXMLDOMElement ele = x.documentElement();
            if (dw_pages.ptr_native_)
            {
               if (ele.selectSingleNode(L"@TotalPage"))
               {
                  xstring s = ele.selectSingleNode(L"@TotalPage").text(); //总数量
                  dw_pages.SetMaxPage(s.toInt());
               }
            }
            dw_list.Retrieve(x);
            dw_list.Redraw();
            dw_list.SetReadOnly(true);
         }
         xutil::RestoreCursor(hCursor);
         return 1;
      }
      int OnChangePages(TEvent* evt, LPARAM p)
      {
         PAGENMHDR& h = *(PAGENMHDR*)evt->notify.pnmh;
         int c = h.cur;
         HCURSOR hCursor = xutil::SetCursorWait();
         m_pageindex = c;
         OnRetrieve(DatePicker);
         xutil::RestoreCursor(hCursor);
         return 1;
      }
      int OnDoubleClicked(TEvent* evt, LPARAM p)
      {
         HCURSOR hCursor = xutil::SetCursorWait();
         OnCmdDispatch(L"action:bill.open");
         xutil::RestoreCursor(hCursor);
         return 1;
      }
      int onload()
      {
         dw_list = GetControl(L"dw_list");
         dw_list.openUrl(L"/sale/view/VATNotify/template/VATNotify/list");
         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"本月");
         //dw_arg.SetItemString(1,L"DateType",L"");
         AttachEvent(L"dw_list", L"DWV_DOUBLECLICKED", (FEvent)&listvatnotifyWin::OnDoubleClicked);//行双击
         dw_pages = GetControl(L"pages");
         AttachEvent(L"pages", L"PAGE_CLICK", (FEvent)&listvatnotifyWin::OnChangePages);
         OnAttachEvent();
         return 1;
      }
      int onloaded()
      {
         SetAgent();
         m_pageindex = 1;
         m_pagenumber = 10000;
         m_QueryTxt = L"";
         //OnRetrieve();
         return 1;
      }
   };