þÿ#include <wobject/xstring.hpp> #include <xcontrol/xtreeview.hpp> #include <xcontrol/xdwgrid.hpp> #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" #include "vbusiness/vframe/frame.vframe.vbusiness.hpp" #include "viewobject/saleorder.view.hpp" using xml = KXMLDOMDocument; class __declspec(dllexport) MakeAllPOExWin : public xframe { public: xdwgrid dw_list; xnode m_agentNode; //Agent Condition MaintPaperCardPOWin lw_obj; public: MakeAllPOExWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} public: static MakeAllPOExWin* CreateInstance(void* implPtr, void* hWnd) { MakeAllPOExWin* pWin = new MakeAllPOExWin(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; } //q&p¹oÀm;YtQýep int OnSetFocus(TEvent* evt, int param) { //‘Ín]åQwga SetAgent(); return 1; } //T}NäSÑ^Qýep int OnCmdDispatch(xstring comdid) { if (comdid == L"xmClose") { CloseWindow(); return 1; } else if (comdid == L"xmMake") { return OnMake(); } return 0; } //T}NäYtN‹Nö int OnXCommand(TEvent* evt, LPARAM p) { return OnCmdDispatch(evt->xcommand.pStrID); } int OnAttachEvent() { //~Ñ[š]åQwgap¹QûN‹Nö AttachEvent(L"WM_XCOMMAND", (FEvent)&MakeAllPOExWin::OnXCommand); //ƒ·SÖq&p¹N‹Nöÿ u(NŽ‘Ín]åQwga AttachEvent(L"WM_SETFOCUS", (FEvent)&MakeAllPOExWin::OnSetFocus); return 1; } int OnMake() { TransData(); return OnSave(); } int EvalAmount() { for (int i = 1; i <= dw_list.GetRowCount(); i++) { xstring supplier = dw_list.GetItemString(i, L"SupplierID"); int k = 1; double amt = 0.0; double amt1 = 0.0; double mouldfee = 0.0; double platefee = 0.0; xstring PONo = L""; xstring mysupplier = L""; xstring DeliveryDate = L""; xdwtable dw_pItem = lw_obj.dw_paper.FindDwTable(L"PItem"); for (k = 1; k <= dw_pItem.GetRowCount(); k++) { PONo = dw_pItem.GetItemString(k, L"PONo"); mysupplier = dw_pItem.GetItemString(k, L"SupplierID"); if (PONo == L"" && mysupplier == supplier) { amt1 = dw_pItem.GetItemDouble(k, L"BuyAmount"); amt += amt1; amt1 = dw_pItem.GetItemDouble(k, L"PlateFee"); platefee += amt1; if (DeliveryDate > dw_pItem.GetItemString(k, L"DeliveryDate")) DeliveryDate = dw_pItem.GetItemString(k, L"DeliveryDate"); } } dw_pItem = lw_obj.dw_process.FindDwTable(L"PItem"); for (k = 1; k <= dw_pItem.GetRowCount(); k++) { PONo = dw_pItem.GetItemString(k, L"PONo"); mysupplier = dw_pItem.GetItemString(k, L"SupplierID"); if (PONo == L"" && mysupplier == supplier) { amt1 = dw_pItem.GetItemDouble(k, L"BuyAmount"); amt += amt1; amt1 = dw_pItem.GetItemDouble(k, L"MouldFee"); mouldfee += amt1; if (DeliveryDate > dw_pItem.GetItemString(k, L"DeliveryDate")) DeliveryDate = dw_pItem.GetItemString(k, L"DeliveryDate"); } } dw_list.SetItemDouble(i, L"Amount", amt); dw_list.SetItemDouble(i, L"MouldFee", mouldfee); dw_list.SetItemDouble(i, L"PlateFee", platefee); dw_list.SetItemString(i, L"DeliveryDate", DeliveryDate); } } int TransData() { dw_list.AcceptText(); for (int i = 1; i <= dw_list.GetRowCount(); i++) { int row = lw_obj.dw_polist.InsertRow(0); KXMLDOMElement ele0 = dw_list.GetRowElement(i); xstring guid = ele0.getAttribute(L"guid"); KXMLDOMElement ele = lw_obj.dw_polist.GetRowElement(row); ele.setAttribute(L"guid", guid); xstring supplier = dw_list.GetItemString(i, L"SupplierID"); lw_obj.dw_polist.SetItemString(row, L"SupplierID", dw_list.GetItemString(i, L"SupplierID")); lw_obj.dw_polist.SetItemDisplayString(row, L"SupplierID", dw_list.GetItemDisplayString(i, L"SupplierID")); lw_obj.dw_polist.SetItemString(row, L"SOID", dw_list.GetItemString(i, L"SOID")); lw_obj.dw_polist.SetItemString(row, L"PODate", dw_list.GetItemString(i, L"PODate")); lw_obj.dw_polist.SetItemString(row, L"CreateDate", dw_list.GetItemString(i, L"PODate")); lw_obj.dw_polist.SetItemString(row, L"PONo", dw_list.GetItemString(i, L"PONo")); lw_obj.dw_polist.SetItemString(row, L"POType", dw_list.GetItemString(i, L"POType")); lw_obj.dw_polist.SetItemString(row, L"CurrencyCode", dw_list.GetItemString(i, L"CurrencyCode")); lw_obj.dw_polist.SetItemString(row, L"ApprovalStatus", dw_list.GetItemString(i, L"ApprovalStatus")); lw_obj.dw_polist.SetItemDisplayString(row, L"ApprovalStatus", dw_list.GetItemDisplayString(i, L"ApprovalStatus")); lw_obj.dw_polist.SetItemString(row, L"CreatorID", dw_list.GetItemString(i, L"CreatorID")); lw_obj.dw_polist.SetItemDisplayString(row, L"CreatorID", dw_list.GetItemDisplayString(i, L"CreatorID")); lw_obj.dw_polist.SetItemString(row, L"BuyerID", dw_list.GetItemString(i, L"BuyerID")); lw_obj.dw_polist.SetItemDisplayString(row, L"BuyerID", dw_list.GetItemDisplayString(i, L"BuyerID")); lw_obj.dw_polist.SetItemString(row, L"DeliveryDate", dw_list.GetItemString(i, L"DeliveryDate")); lw_obj.dw_polist.SetItemString(row, L"Amount", dw_list.GetItemString(i, L"Amount")); lw_obj.dw_polist.SetItemString(row, L"PaymentTermDesc", dw_list.GetItemString(i, L"PaymentTermDesc")); lw_obj.dw_polist.SetItemString(row, L"SalespersonID", dw_list.GetItemString(i, L"SalespersonID")); lw_obj.dw_polist.SetItemDisplayString(row, L"SalespersonID", dw_list.GetItemDisplayString(i, L"SalespersonID")); lw_obj.dw_polist.SetItemString(row, L"POCreatorID", dw_list.GetItemString(i, L"POCreatorID")); lw_obj.dw_polist.SetItemDisplayString(row, L"POCreatorID", dw_list.GetItemDisplayString(i, L"POCreatorID")); int k = 1; xstring PONo = L""; xstring mysupplier = L""; xdwtable dw_pitem = lw_obj.dw_paper.FindDwTable(L"PItem"); for (k = 1; k <= dw_pitem.GetRowCount(); k++) { PONo = dw_pitem.GetItemString(k, L"PONo"); mysupplier = dw_pitem.GetItemString(k, L"SupplierID"); if (PONo == L"" && mysupplier == supplier) { dw_pitem.SetItemString(k, L"PONo", dw_list.GetItemString(i, L"PONo")); dw_pitem.SetItemString(k, L"POID", guid); } } dw_pitem = lw_obj.dw_process.FindDwTable(L"PItem"); for (k = 1; k <= dw_pitem.GetRowCount(); k++) { PONo = dw_pitem.GetItemString(k, L"PONo"); mysupplier = dw_pitem.GetItemString(k, L"SupplierID"); if (PONo == L"" && mysupplier == supplier) { dw_pitem.SetItemString(k, L"PONo", dw_list.GetItemString(i, L"PONo")); dw_pitem.SetItemString(k, L"POID", guid); } } lw_obj.dw_polist.RedrawEx(); //lw_obj.dw_list.RedrawEx(); //lw_obj.dw_list1.RedrawEx(); } return 1; } int OnSave() { xml x1 ; xml x ; xml xp ; lw_obj.dw_polist.DwUpdateAllToEx(xp); lw_obj.dw_paper.DwUpdateAllTo(x); lw_obj.dw_process.DwUpdateAllTo(x1); xstring val = xp.xml(); xstring val0 = x.xml(); xstring val1 = x1.xml(); val = L"<data>" + val + val0 + val1 + L"</data>"; xaserverarg arg; arg.setNativePointer(arg.CreateInstance()); arg.AddArg(L"content", val); if (xurl::get(L"/sale/data/PurchaseOrder/update/polistex", arg.GetString(), x) != 1) { xstring error = x.text(); alert(error); return 1; } else { xstring str = x.documentElement().getAttribute(L"text"); if (str == L"true") { lw_obj.dw_polist.ResetUpdateStatus(); lw_obj.dw_paper.ResetUpdateStatus(); lw_obj.dw_process.ResetUpdateStatus(); alert(L"OÝ[XbRŸ!"); } else { alert(L"OÝ[XY1%!"); } //alert(x.GetXml()); } return 1; } xstring MakePONo(int row) { xaserverarg arg = lw_obj.GetParam(); xstring SONo = arg.GetArgString(L"SONo"); int len = SONo.trim().length(); int mseq = 0; for (int i = 1; i <= lw_obj.dw_polist.GetRowCount(); i++) { xstring PONo = lw_obj.dw_polist.GetItemString(i, L"PONo"); xstring seq = L""; if (PONo != L"") seq = PONo.mid(len + 1, 9999); if (seq.toInt() > mseq) mseq = seq.toInt(); } return SONo + L"A" + xstring((mseq + row)); } int InitialPO(int row, xstring potype, xstring poitemid) { xstring suserid = publiccode::GetUser().id; xstring susername = publiccode::GetUser().name; xml x = ViewObject::RetrieveData(L"/sale/data/PurchaseOrder/po/GetPOItemPerson", L"POItemID", poitemid); if (x) { KXMLDOMNodeList items = x.selectNodes(L"data/Item"); KXMLDOMNode t = items.item(0); if (t.selectSingleNode(L"SalespersonName")) dw_list.SetItemDisplayString(row, L"SalespersonID", t.selectSingleNode(L"SalespersonName").text()); if (t.selectSingleNode(L"SalespersonID")) dw_list.SetItemString(row, L"SalespersonID", t.selectSingleNode(L"SalespersonID").text()); if (potype != L"~¸Sa") { if (t.selectSingleNode(L"POCreatorName")) dw_list.SetItemDisplayString(row, L"POCreatorID", t.selectSingleNode(L"POCreatorName").text()); if (t.selectSingleNode(L"POCreatorID")) dw_list.SetItemString(row, L"POCreatorID", t.selectSingleNode(L"POCreatorID").text()); } else { dw_list.SetItemDisplayString(row, L"PurcharID", susername); dw_list.SetItemString(row, L"PurcharID", suserid); } } xaserverarg arg = lw_obj.GetParam(); xstring SONo = arg.GetArgString(L"SONo"); xstring SOID = SaleOrderView::GetSOID(SONo); xstring sdate = publiccode::GetCurrentDate(); dw_list.SetItemString(row, L"PODate", sdate); dw_list.SetItemString(row, L"PONo", MakePONo(row)); dw_list.SetItemString(row, L"SOID", SOID); KXMLDOMElement ele = dw_list.GetRowElement(row); ele.setAttribute(L"guid", SaleOrderView::GetGuid()); dw_list.SetItemString(row, L"POType", potype); dw_list.SetItemString(row, L"CurrencyCode", L"RMB"); dw_list.SetItemString(row, L"ApprovalStatus", L"1"); dw_list.SetItemDisplayString(row, L"ApprovalStatus", L"e°^ú"); dw_list.SetItemString(row, L"CreatorID", suserid); dw_list.SetItemDisplayString(row, L"CreatorID", susername); dw_list.SetItemString(row, L"BuyerID", L"E9E3C542-062C-4957-B8F4-9B92C3E351FC"); dw_list.SetItemDisplayString(row, L"BuyerID", L"[lâ[¶\OsÛQúSãg –PQlSø"); dw_list.Redraw(); } int Initial() { lw_obj = GetArg(); StringArray suppliers = StringArray::make(); int row = 1; xstring PONo = L""; xstring supplier = L""; xstring POItemID = L""; xdwtable dw_pitem = lw_obj.dw_paper.FindDwTable(L"PItem"); for (row = 1; row <= dw_pitem.GetRowCount(); row++) { PONo = dw_pitem.GetItemString(row, L"PONo"); supplier = dw_pitem.GetItemString(row, L"SupplierID"); double d = dw_pitem.GetItemDouble(row, L"BuyAmount"); POItemID = dw_pitem.GetItemString(row, L"POItemID"); d = d * 100.0; if (xstring(d).toInt() == 0) continue; if (PONo == L"") { if (suppliers.find(supplier) == -1) { suppliers.push_back(supplier); dw_list.InsertRow(0); dw_list.SetItemString(dw_list.GetRowCount(), L"SupplierID", supplier); dw_list.SetItemDisplayString(dw_list.GetRowCount(), L"SupplierID", dw_pitem.GetItemDisplayString(row, L"SupplierID")); InitialPO(dw_list.GetRowCount(), L"~¸Sa", POItemID); } } } dw_pitem = lw_obj.dw_process.FindDwTable(L"PItem"); for (row = 1; row <= dw_pitem.GetRowCount(); row++) { PONo = dw_pitem.GetItemString(row, L"PONo"); supplier = dw_pitem.GetItemString(row, L"SupplierID"); POItemID = dw_pitem.GetItemString(row, L"POItemID"); xstring BOMPart = dw_pitem.GetItemString(row, L"BOMPart"); if (BOMPart == L"rH9") { break; } if (PONo == L"" && supplier != L"") { if (suppliers.find(supplier) == -1) { suppliers.push_back(supplier); dw_list.InsertRow(0); dw_list.SetItemString(dw_list.GetRowCount(), L"SupplierID", supplier); dw_list.SetItemDisplayString(dw_list.GetRowCount(), L"SupplierID", dw_pitem.GetItemDisplayString(row, L"SupplierID")); for (int row2 = 1; row2 <= lw_obj.dw_supplier.GetRowCount(); row2++) { xstring supplier1 = lw_obj.dw_supplier.GetItemString(row2, L"PartyID"); if (supplier1 == supplier) { dw_list.SetItemString(dw_list.GetRowCount(), L"PaymentTermDesc", lw_obj.dw_supplier.GetItemString(row2, L"PaymentMethod")); } } InitialPO(dw_list.GetRowCount(), dw_pitem.GetItemString(row, L"BOMPart"), POItemID); } } } EvalAmount(); return 1; } int onload() { SetArg(); dw_list = GetControl(L"dw_list"); dw_list.openUrl(L"/sale/view/PurchaseOrder/template/purchaseorder/polist"); dw_list.SetColumnState(L"SOID", false); //dw_list.SetColumnState(L"PaymentTermDesc",false); dw_list.SetColumnState(L"BuyerID", false); OnAttachEvent(); if (GetWinParam()) Initial(); return 1; } };