þÿ#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 "viewobject/saleorder.view.hpp" #include "vbusiness/vframe/maint.vframe.vbusiness.hpp" using xml = KXMLDOMDocument; class __declspec(dllexport) MaintPurcherItemWin : public maint { public: xdwtable dw_process; xnode m_agentNode; //Agent Condition xdwgrid dw_list; xdwtable dw_paper; xdwgrid dw_supplier; xdwgrid dw_polist; xstring m_diffstr; xstring TypeEx = L""; xstring NO; xstring Jobname; public: MaintPurcherItemWin(void* implPtr, HWND hWnd) :maint(implPtr, hWnd) {} public: static MaintPurcherItemWin* CreateInstance(void* implPtr, void* hWnd) { MaintPurcherItemWin* pWin = new MaintPurcherItemWin(implPtr, (HWND)hWnd); return pWin; } int SetAgent() { return 1; 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 ViewUpdate(int pr, xstring updateItem, xaserverarg arg) { if (updateItem == L"setstate") PostMessage(GetFrameWindow().GetHWND(), 0x401, (LPARAM)L"xmRefresh", 0); return 1; } bool IsModifyed() { xml x; dw_process.AcceptText(); dw_process.DwUpdateAllTo(x); if (x.selectSingleNode(L"//PItem[(@update.new='1') or (@update.modify='1') or (@update.delete='1')]")) return true; return false; } //q&p¹oÀm;YtQýep int OnSetFocus(TEvent* evt, LPARAM p) { //‘Ín]åQwga SetAgent(); return 1; } int OnSave() { xaserverarg parg = GetArg(); xstring SOLineID = parg.GetArgString(L"SOLineID"); if (SOLineID == L"") return OnSaveDiff(); //if(IsMaintState(SOLineID)) return OnSaveDiff(); xml x1; xml x; dw_process.AcceptText(); dw_process.DwUpdateAllTo(x); xstring val = x.xml(); val = L"<data>" + val + L"</data>"; //alert(val); xaserverarg arg ; 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") { dw_process.ResetUpdateStatus(); //alert(L"OÝ[XbRŸ!"); } else { alert(L"‘Ǎ-~ôb¤OÝ[XY1%!"); } //alert(x.GetXml()); } OnSave1(); return 1; } int OnSaveOne() { xaserverarg parg = GetArg(); xstring SOLineID = parg.GetArgString(L"SOLineID"); if (SOLineID == L"") return OnSaveDiff(); if (IsMaintState(SOLineID)) return OnSaveDiff(); xml x1; xml x; dw_process.AcceptText(); dw_process.DwUpdateAllTo(x); xstring val = x.xml(); val = L"<data>" + val + L"</data>"; //alert(val); xaserverarg arg ; 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") { dw_process.ResetUpdateStatus(); } else { alert(L"OÝ[XY1%!"); } //alert(x.GetXml()); } return 1; } int ProcessUsedArg(xaserverarg arg) { arg.AddArg(L"EntityID", GetEntityID(1)); return 1; } xstring GetEntityName(int pr) { return L"SaleItem3"; } xstring GetEntityID(int pr) { xaserverarg arg = GetArg(); xstring val = arg.GetArgString(L"SOLineID"); if (val == L"") val = arg.GetArgString(L"SOID"); return val; } int OnSave1() { /*for(int i=1; i<=dw_supplier.GetRowCount();i++) { if(dw_supplier.GetItemString(i,L"PaymentMethod")==L"") { alert(L"NØk>e¹_N:zzÿ"); return 0; } }*/ xml x; dw_supplier.AcceptText(); dw_supplier.DwUpdateAllToEx(x); xstring val = x.xml(); val = L"<data>" + val + L"</data>"; xaserverarg arg ; 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") { dw_supplier.ResetUpdateStatus(); alert(L"OÝ[XbRŸ!"); } else { alert(L"]åS‚Oá`oOÝ[XY1%!"); } //alert(x.GetXml()); } return 1; } int OnSaveDiff() { //int ret = OnPreSave(); //if (ret==0) return 0; int ret = OnToDiff(); //alert(m_diffstr); /*if (ret==0) { alert(L"Q…[¹l¡g Oîe9ÿ N —‰cÐN¤!"); return 0;//bill.check.ask N bgˆLT—b }*/ xstring sEntityID = GetEntityID(0);//publiccode::GetGuid(); xml x1; xaserverarg args ; args.AddArg(L"EntityID", GetEntityID(0));//maint::m_EntityID); args.AddArg(L"sEntityID", sEntityID); args.AddArg(L"EntityName", GetEntityName(0)); //args.AddArg(L"val",m_diffstr); //args.AddArg(L"m_flag",m_flag); args.AddArg(L"m_flag", L"1"); //trace(m_diffstr); //trace(sEntityID); args.AddArg(L"content", m_diffstr); //trace(args.GetString()); if (xurl::post(L"/workflow/action/SourcingModify/bill.update0", args.GetString(), x1) != 1) { xstring error = x1.text(); alert(error); return 0; } else { if (x1.selectSingleNode(L"error")) { alert(L"‘Ǎ-~ôb¤OÝ[XQú•!"); return 0; } m_EntityID = sEntityID; } xml x; xaserverarg arg ; arg.AddArg(L"EntityAdjustID", m_EntityID); if (xurl::get(L"/sale/data/SupplierModify/pref/isexists/EntityAdjust", arg.GetString(), x1) == 1) { KXMLDOMElement e = x1.selectSingleNode(L"cnt"); xstring scnt = e.text(); if (scnt == L"0") { m_EntityID = sEntityID; //N¤cbKNŽEntityAdjustIDP< OnRetrieve(); OnRetrieveDiff(); } } //win32::MessageBox(GetHWND(),L"OÝ[XbRŸÿ",L"cÐy:",0); OnSave1(); return 1; } int OnToDiff() { xml x; KXMLDOMDocument xdoc = x; dw_process.DwUpdateAllToDiff(xdoc); m_diffstr = xdoc.xml(); return 1; } int OnLoadDiff() { xml x; xaserverarg arg ; //arg.AddArg(L"EntityID",maint::m_EntityID); arg.AddArg(L"EntityID", GetEntityID(0)); arg.AddArg(L"Type", L"SO"); xaserverarg parg = GetArg(); if (parg.GetArgString(L"SOLineID") != L"") arg.AddArg(L"Type", L"SOLine"); getUrl(L"/sale/data/PurchaseOrder/pref/diffval", arg.GetString(), x); m_diffstr = L"" + xstring(x.xml()); //xdwtable dw_item = dw_process.FindDwTable(L"Item"); //xstring id = dw_item.GetGuid(1); //alert(id+L" "+ m_diffstr); return 1; } int OnRetrieveDiff() { OnLoadDiff(); xaserverarg parg = GetArg(); xstring SOLineID = parg.GetArgString(L"SOLineID"); if (m_diffstr == L"") { if (SOLineID == L"") return 1; m_diffstr = L"<data/>"; } xml x; x.loadXML(m_diffstr); dw_process.RetrieveDiff(x); //dw_process.SetColHeaderHeight(16); dw_process.Redraw(); return 1; } int OnSync() { //need save data xaserverarg arg = GetArg(); xstring SOID = arg.GetArgString(L"SOID"); xstring SOLineID = arg.GetArgString(L"SOLineID"); xstring suppliers1 = L""; xstring suppliers2 = L""; xstring suppliers3 = L""; xstring supplier = L""; int row = 0; int row1 = 0; xml x; KXMLDOMNodeList items; KXMLDOMNodeList items2; KXMLDOMNode t; KXMLDOMNode t2; x = ViewObject::RetrieveData(L"/sale/data/PurchaseOrder/so/poitemlist/nopapercard", L"SOID", SOID); xstring path = L"data/Item/PItem"; //if(SOLineID !=L"") path = L"data/Item[SOLineID='"+SOLineID+L"']/PItem"; items2 = x.selectNodes(path); int len = items2.length(); for (row = 1; row <= dw_supplier.GetRowCount(); row++) { supplier = dw_supplier.GetItemString(row, L"PartyID"); suppliers1 += supplier; } for (row = 0; row < len; row++) { t2 = items2.item(row); supplier = t2.selectSingleNode(L"SupplierID").text(); suppliers3 += supplier; if (suppliers1.find(supplier) < 0 && suppliers2.find(supplier) < 0) { suppliers2 += supplier; row1 = dw_supplier.InsertRow(0); x = ViewObject::RetrieveData(L"/sale/data/PurchaseOrder/so/supplierPrimaryContact", L"PartyID", supplier); items = x.selectNodes(L"data/Item"); t = items.item(0); if (t.selectSingleNode(L"PName"))dw_supplier.SetItemString(row1, L"PName", t.selectSingleNode(L"PName").text()); if (t.selectSingleNode(L"Name"))dw_supplier.SetItemString(row1, L"Name", t.selectSingleNode(L"Name").text()); if (t.selectSingleNode(L"JobTitle"))dw_supplier.SetItemString(row1, L"JobTitle", t.selectSingleNode(L"JobTitle").text()); if (t.selectSingleNode(L"Gender"))dw_supplier.SetItemString(row1, L"Gender", t.selectSingleNode(L"Gender").text()); if (t.selectSingleNode(L"Mobile"))dw_supplier.SetItemString(row1, L"Mobile", t.selectSingleNode(L"Mobile").text()); if (t.selectSingleNode(L"IM"))dw_supplier.SetItemString(row1, L"IM", t.selectSingleNode(L"IM").text()); if (t.selectSingleNode(L"PartyID"))dw_supplier.SetItemString(row1, L"PartyID", t.selectSingleNode(L"PartyID").text()); if (t.selectSingleNode(L"ContactID"))dw_supplier.SetItemString(row1, L"ContactID", t.selectSingleNode(L"ContactID").text()); if (t.selectSingleNode(L"Address"))dw_supplier.SetItemString(row1, L"Address", t.selectSingleNode(L"Address").text()); dw_supplier.SetItemString(row1, L"SOID", SOID); } } for (row = dw_supplier.GetRowCount(); row >= 1; row--) { supplier = dw_supplier.GetItemString(row, L"PartyID"); if (suppliers3.find(supplier) < 0) { dw_supplier.DeleteRow(row); } } return 1; } int AddItem(xdwgrid dw_obj) { int p = GetArg(); OpenWindow(L"dev:xpage[select.item.so.vx]", p); xaserverarg arg = GetArg(); xstring str = arg.GetArgString(L"items"); if (str != L"") { xml x; x.loadXML(str); AddItems(dw_obj, x); } return 1; } int AddItems(xdwgrid dw_obj, xml x) { KXMLDOMNodeList items = x.selectNodes(L"data/Item"); int len = items.length(); int row = 0; for (int i = 0; i < len; i++) { if (i == 0 && dw_obj.GetRowCount() > 0 && dw_obj.GetItemString(dw_obj.GetRowCount(), L"GoodsNo") == L"") { row = dw_obj.GetRowCount(); } else { row = dw_obj.InsertRow(0); } KXMLDOMNode t = items.item(i); if (t.selectSingleNode(L"@guid"))dw_obj.SetItemString(row, L"SOLineID", t.selectSingleNode(L"@guid").text()); if (t.selectSingleNode(L"GoodsNo"))dw_obj.SetItemString(row, L"GoodsNo", t.selectSingleNode(L"GoodsNo").text()); if (t.selectSingleNode(L"Quantity"))dw_obj.SetItemString(row, L"GDNQuantity", t.selectSingleNode(L"Quantity").text()); if (t.selectSingleNode(L"Quantity"))dw_obj.SetItemString(row, L"BuyQuantity", t.selectSingleNode(L"Quantity").text()); if (t.selectSingleNode(L"EName"))dw_obj.SetItemString(row, L"CName", t.selectSingleNode(L"EName").text()); if (t.selectSingleNode(L"CustomerItemNo"))dw_obj.SetItemString(row, L"CustomerItemNo", t.selectSingleNode(L"CustomerItemNo").text()); if (t.selectSingleNode(L"ItemID"))dw_obj.SetItemString(row, L"ItemID", t.selectSingleNode(L"ItemID").text()); if (t.selectSingleNode(L"SOLineID"))dw_obj.SetItemString(row, L"SOLineID", t.selectSingleNode(L"SOLineID").text()); } return 1; } int DeleteItem(xdwgrid dw_obj) { dw_obj.DeleteRow(0); return 1; } int AddItemEx(xdwtable dw_obj) { bool onlypitem = true; int prow = 0; xdwtable dw_pitem = dw_obj.FindDwTable(L"PItem"); xdwtable dw_item = dw_obj.FindDwTable(L"Item"); xdwtable dw = dw_obj.GetCurTable(); if (!dw) { alert(L"‹÷ N-ˆL!"); return 1; } if (onlypitem || dw.GetDwName() == L"PItem") { dw_pitem.InsertGroupRow(dw_item.GetRow(), 0); prow = dw_pitem.GetGroupRowCount(dw_item.GetRow()) + dw_pitem.GetGroupStartRow(dw_item.GetRow()) - 1; dw_pitem.SetItemString(prow, L"BOMRate", L"1:1"); dw_pitem.SetItemString(prow, L"BuyQuantity", dw_item.GetItemString(dw_item.GetRow(), L"GdnQuantity")); return 1; } if (onlypitem == false) { int p = GetWinParam(); OpenWindow(L"dev:xpage[select.item.so.vx]", p); xaserverarg arg = GetArg(); xstring str = arg.GetArgString(L"items"); if (str != L"") { xml x; x.loadXML(str); AddItems(dw_obj, x); } } return 1; } int AddContacts(int row) { xaserverarg arg ; arg.AddArg(L"PartyID", dw_supplier.GetItemString(dw_supplier.GetRow(), L"PartyID")); OpenWindow(L"dev:xpage[select.Contacts.vx]", arg); //xaserverarg arg = p; xstring str = arg.GetArgString(L"items"); //alert(str); if (str != L"") { xml x; x.loadXML(str); AddContactss(row, x); } return 1; } int AddContactss(int row, xml x) { KXMLDOMNodeList items = x.selectNodes(L"data/Item"); //int row = dw_supplier.GetRow(); if (row < 1) return 0; KXMLDOMNode t = items.item(0); if (t.selectSingleNode(L"Name"))dw_supplier.SetItemString(row, L"Name", t.selectSingleNode(L"Name").text()); if (t.selectSingleNode(L"Mobile")) { dw_supplier.SetItemString(row, L"Mobile", t.selectSingleNode(L"Mobile").text()); } else { dw_supplier.SetItemString(row, L"Mobile", L""); } if (t.selectSingleNode(L"IM")) { dw_supplier.SetItemString(row, L"IM", t.selectSingleNode(L"IM").text()); } else { dw_supplier.SetItemString(row, L"IM", L""); } if (t.selectSingleNode(L"ContactID"))dw_supplier.SetItemString(row, L"ContactID", t.selectSingleNode(L"ContactID").text()); dw_supplier.Redraw(); return 1; } int AddItems(xdwtable dw_obj, xml x) { xdwtable dw_pitem = dw_obj.FindDwTable(L"PItem"); xdwtable dw_item = dw_obj.FindDwTable(L"Item"); KXMLDOMNodeList items = x.selectNodes(L"data/Item"); int len = items.length(); int row = 0; for (int i = 0; i < len; i++) { if (i == 0 && dw_item.GetRowCount() > 0 && dw_item.GetItemString(dw_item.GetRowCount(), L"GoodsNo") == L"") { row = dw_item.GetRowCount(); } else { row = dw_item.InsertRow(0); } KXMLDOMNode t = items.item(i); if (t.selectSingleNode(L"@guid"))dw_item.SetItemString(row, L"SOLineID", t.selectSingleNode(L"@guid").text()); if (t.selectSingleNode(L"GoodsNo"))dw_item.SetItemString(row, L"GoodsNo", t.selectSingleNode(L"GoodsNo").text()); if (t.selectSingleNode(L"Quantity"))dw_item.SetItemString(row, L"GDNQuantity", t.selectSingleNode(L"Quantity").text()); if (t.selectSingleNode(L"CName"))dw_item.SetItemString(row, L"CName", t.selectSingleNode(L"CName").text()); if (t.selectSingleNode(L"ShortName"))dw_item.SetItemString(row, L"ShortName", t.selectSingleNode(L"ShortName").text()); if (t.selectSingleNode(L"CustomerPONo"))dw_item.SetItemString(row, L"CustomerPONo", t.selectSingleNode(L"CustomerPONo").text()); if (t.selectSingleNode(L"SalesPersonID"))dw_item.SetItemString(row, L"SalesPersonID", t.selectSingleNode(L"SalesPersonID").text()); if (t.selectSingleNode(L"SalesPersonID/@_displayxstring"))dw_item.SetItemString(row, L"SalesPersonID", t.selectSingleNode(L"SalesPersonID/@_displayxstring").text()); if (t.selectSingleNode(L"Merchandiser"))dw_item.SetItemString(row, L"Merchandiser", t.selectSingleNode(L"Merchandiser").text()); if (t.selectSingleNode(L"Merchandiser/@_displayxstring"))dw_item.SetItemDisplayString(row, L"Merchandiser", t.selectSingleNode(L"Merchandiser/@_displayxstring").text()); if (t.selectSingleNode(L"InnerQty"))dw_item.SetItemString(row, L"InnerQty", t.selectSingleNode(L"InnerQty").text()); if (t.selectSingleNode(L"PackingRate"))dw_item.SetItemString(row, L"PackingRate", t.selectSingleNode(L"PackingRate").text()); if (t.selectSingleNode(L"CustomerItemNo"))dw_item.SetItemString(row, L"CustomerItemNo", t.selectSingleNode(L"CustomerItemNo").text()); if (t.selectSingleNode(L"ItemID"))dw_item.SetItemString(row, L"ItemID", t.selectSingleNode(L"ItemID").text()); if (t.selectSingleNode(L"SOLineID"))dw_item.SetItemString(row, L"SOLineID", t.selectSingleNode(L"SOLineID").text()); if (t.selectSingleNode(L"ScheduleShipDate"))dw_item.SetItemString(row, L"ScheduleShipDate", t.selectSingleNode(L"ScheduleShipDate").text()); int prow = dw_pitem.GetGroupStartRow(row); if (dw_obj == dw_process) { KXMLDOMNodeList poitems = t.selectNodes(L"PO/Item"); int count = poitems.length(); for (int k = 0; k < count; k++) { trace(L"AA"); if (k != 0) dw_pitem.InsertGroupRow(row, 0); int row1 = dw_pitem.GetGroupStartRow(row) + k; KXMLDOMNode tp = poitems.item(k); trace(tp.xml()); dw_pitem.SetItemString(row1, L"BOMRate", L"1:1"); if (t.selectSingleNode(L"Quantity"))dw_pitem.SetItemString(row1, L"BuyQuantity", t.selectSingleNode(L"Quantity").text()); //alert(tp.selectSingleNode(L"BOMType").text()); //if(tp.selectSingleNode(L"Quantity"))dw_pitem.SetItemString(row1,L"BuyQuantity",tp.selectSingleNode(L"Quantity").text()); if (tp.selectSingleNode(L"SupplierID"))dw_pitem.SetItemString(row1, L"SupplierID", tp.selectSingleNode(L"SupplierID").text()); if (tp.selectSingleNode(L"SupplierID/@_displayxstring"))dw_pitem.SetItemDisplayString(row1, L"SupplierID", tp.selectSingleNode(L"SupplierID/@_displayxstring").text()); /*if(tp.selectSingleNode(L"BOMType")) dw_pitem.SetItemString(row1,L"BOMPart",tp.selectSingleNode(L"BOMType").text()); else dw_pitem.SetItemString(row1,L"BOMPart",L"bTÁ"); */if (tp.selectSingleNode(L"POPrice"))dw_pitem.ItemChangeTo(row1, L"BuyUnitPrice", tp.selectSingleNode(L"POPrice").text()); if (tp.selectSingleNode(L"PriceType"))dw_pitem.SetItemString(row1, L"PriceType", tp.selectSingleNode(L"PriceType").text()); if (tp.selectSingleNode(L"productdesc"))dw_pitem.SetItemString(row1, L"TechNote", tp.selectSingleNode(L"productdesc").text()); if (t.selectSingleNode(L"ProductImage"))dw_pitem.SetItemString(row1, L"ProductImage", t.selectSingleNode(L"ProductImage").text()); if (t.selectSingleNode(L"Remarks"))dw_pitem.SetItemString(row1, L"Remarks", t.selectSingleNode(L"Remarks").text()); } } } return 1; } int DeleteItemEx(xdwtable dw_obj) { xdwtable dw = dw_obj.GetCurTable(); xstring dw_n = dw.GetDwName(); xdwtable dw_term = dw_obj.FindDwTable(L"PItem"); xdwtable dw_item = dw_obj.FindDwTable(L"Item"); xstring col = dw_item.GetColumnName(dw_item.GetColumn()); trace(col); int row = 0; if (col != L"CName") { if (dw_n == L"Item") { row = dw_term.GetGroupStartRow(dw_item.GetRow()); xstring BuyQuantity = dw_term.GetItemString(row, L"BuyQuantity"); if (BuyQuantity != L"") { alert(L"QHR –d‘Ǎ-f~Æÿ QR –dN;Oá`o"); return 1; } } if (dw_n == L"PItem") { xstring PONo = dw_term.GetItemString(row, L"PONo"); dw.DeleteRow(0); RecalcAmount(); if (PONo != L"") RecalcAmount(PONo); } else { dw.DeleteRow(0); } } return 1; } int OnRemarks(xdwgrid dw_obj) { /*xdwgrid dw_term = dw_obj.FindDwTable(L"data/supplier"); xaserverarg arg ; int row = dw_term.GetRow(); if(row < 1) return 0; xstring str = dw_term.GetItemString(row,L"Remarks"); arg.AddArg(L"value",str); OpenWindow(L"dev:xpage[memo.edit.new.vx]",arg.getNativePointer()); if(arg.GetArgString(L"comdid")==L"xmOK") { str = arg.GetArgString(L"value"); dw_term.AcceptText(); dw_term.SetItemString(row,L"Remarks",str); //dw_term.Redraw(); }*/ return 0; } int OnTech(xdwtable dw_obj) { xdwtable dw_term = dw_obj.FindDwTable(L"PItem"); xaserverarg arg ; int row = dw_term.GetRow(); if (row < 1) return 0; xstring str = dw_term.GetItemString(row, L"TechNote"); arg.AddArg(L"value", str); OpenWindow(L"dev:xpage[memo.edit.new.vx]", arg); if (arg.GetArgString(L"comdid") == L"xmOK") { str = arg.GetArgString(L"value"); dw_term.AcceptText(); dw_term.SetItemString(row, L"TechNote", str); //dw_term.Redraw(); } return 0; } int OnTech2(xdwtable dw_obj) { xdwtable dw_term = dw_obj.FindDwTable(L"PItem"); xaserverarg arg ; int row = dw_term.GetRow(); if (row < 1) return 0; xstring str = dw_term.GetItemString(row, L"Remarks"); arg.AddArg(L"value", str); OpenWindow(L"dev:xpage[memo.edit.new.vx]", arg); if (arg.GetArgString(L"comdid") == L"xmOK") { str = arg.GetArgString(L"value"); dw_term.AcceptText(); dw_term.SetItemString(row, L"Remarks", str); //dw_term.Redraw(); } return 0; } int OnTech3(xdwtable dw_obj) { xdwtable dw_term = dw_obj.FindDwTable(L"PItem"); xaserverarg arg ; int row = dw_term.GetRow(); if (row < 1) return 0; xstring str = dw_term.GetItemString(row, L"RemarksE"); arg.AddArg(L"value", str); OpenWindow(L"dev:xpage[memo.edit.new.vx]", arg); if (arg.GetArgString(L"comdid") == L"xmOK") { str = arg.GetArgString(L"value"); dw_term.AcceptText(); dw_term.SetItemString(row, L"RemarksE", str); //dw_term.Redraw(); } return 0; } int OnApply() { xaserverarg arg ; xaserverarg parg = GetArg(); xstring SONo = parg.GetArgString(L"SONo"); xstring SOID = SaleOrderView::GetSOID(SONo); arg.AddArg(L"SOID", SOID); arg.AddArg(L"SONo", SONo); OpenWindow(L"dev:xpage[Apply.PurcherItem.vx]",arg ); return 1; } int OnApply1() { xaserverarg arg ; xaserverarg parg = GetArg(); xstring SONo = parg.GetArgString(L"SONo"); xstring SOID = SaleOrderView::GetSOID(SONo); arg.AddArg(L"SOID", SOID); arg.AddArg(L"SONo", SONo); OpenWindow(L"dev:xpage[Apply.PurcherItem.vx]",arg); return 1; } int DeleteItem2() { int row = dw_supplier.GetRow(); dw_supplier.DeleteRow(row); return 1; } int OnDelete() { xdwtable dw_item2 = dw_process.FindDwTable(L"Item"); xaserverarg arg1 ; arg1.setNativePointer(arg1.CreateInstance()); int row1 = dw_item2.GetRow(); if (row1 < 1) return 0; xstring SOLineID = dw_item2.GetItemString(row1, L"SOLineID"); xml numberone = ViewObject::RetrieveData(L"/sale/data/PurchaseOrder/POItemNumberone", L"SOLineID", SOLineID); xstring numberone1 = numberone.text(); int numberone2 = numberone1.toInt(); if (numberone) { if (numberone2 > 0) { alert(L"Y•TT _SRMr¶`N QA‹¸R –dÿ"); return 0; } } int MB_OKCANCEL = 1; int IDOK = 1; int ret = MessageBox(GetHWND(), L"xn‹¤R –d?", L"cÐy:", MB_OKCANCEL); if (ret == IDOK) { xdwtable dw_pitem2 = dw_process.FindDwTable(L"PItem"); xaserverarg arg ; int row = dw_pitem2.GetRow(); if (row < 1) return 0; xstring POID = dw_pitem2.GetItemString(row, L"POID"); xstring POItemID = dw_pitem2.GetItemString(row, L"POItemID"); if (POID == L"") { POID = POItemID; } xml x = ViewObject::RetrieveData(L"/sale/data/PurchaseOrder/POItemDelete", L"POID", POID, L"POItemID", POItemID, L"SOLineID", SOLineID); xstring status = x.xml(); if (status.find(L"ok") == 1) { alert(L"R –dbRŸ"); } else { alert(L"R –dY1%"); } } return 1; } //T}NäSÑ^Qýep int OnCmdDispatch(xstring comdid) { xdwtable dw_cur; if (comdid == L"xmApply") return OnApply(); else if (comdid == L"xmSave") { xdwtable dw_pitem2 = dw_process.FindDwTable(L"PItem"); xdwtable dw_item2 = dw_process.FindDwTable(L"Item"); // if(dw_item2.GetItemString(1,L"OtherFee") !=L"") //{ for (int row2 = 1; row2 <= dw_pitem2.GetRowCount(); row2++) { if (dw_pitem2.GetItemString(row2, L"OtherFee") == L"") { dw_pitem2.SetItemDouble(row2, L"OtherFee", 0.0000); } if (dw_pitem2.GetItemString(row2, L"DeductionFee") == L"") { dw_pitem2.SetItemDouble(row2, L"DeductionFee", 0.0000); } //alert(dw_pitem2.GetItemString(row2,L"BOMPart")); if (dw_pitem2.GetItemString(row2, L"BOMPart") == L"") { alert(L"N§TÁ|{W‹N:zzÿ"); return 0; } if (dw_pitem2.GetItemString(row2, L"PrenatalSamplingTime") == L"") { alert(L"N§RMh7Y}eö•ôN:zzÿ"); return 0; } if (dw_pitem2.GetItemString(row2, L"SampleNumber") == L"") { alert(L"cÐO›Qú'h7TÁepN:zzÿ"); return 0; } if (dw_pitem2.GetItemString(row2, L"DeliveryDate") == L"") { alert(L"N¤'eö•ôN:zzÿ"); return 0; } if (dw_pitem2.GetItemString(row2, L"PackingMethod") == L"") { alert(L"SˆÅe¹_N:zzÿ"); return 0; } if (dw_pitem2.GetItemString(row2, L"PaymentMethod") == L"") { alert(L"‹÷SÌQûc[š]åS‚NØk>e¹_ÿ"); return 0; } if (dw_pitem2.GetItemString(row2, L"Contacter") == L"") { alert(L"‹÷SÌQûc[š€T|ûNºOá`oÿ"); return 0; } } //} /*for(int row3 = 1; row3 <=dw_item2.GetRowCount(); row3++) { if(dw_item2.GetItemString(row3,L"ScheduleShipDate")==L"") { alert(L"[¢b7ggN¤'eågN:zzÿ"); return 0; } }*/ return OnSave(); } else if (comdid == L"xmSaveDiff") { return OnSaveDiff(); } else if (comdid == L"xmSave1") { return OnSave1(); } else if (comdid == L"xmSync") { return OnSync(); } else if (comdid == L"xmTech") { return OnTech(dw_process); } else if (comdid == L"xmTech3") { NO = publiccode::GetUser().no; Jobname = publiccode::GetUser().jobname; if (NO == L"admin") Jobname = L""; if (Jobname == L"‘Ǎ-TX") { OnTech3(dw_process); return 1; } return 1; } else if (comdid == L"xmTech2") { return OnTech2(dw_process); } else if (comdid == L"xmDeleteRow") { return DeleteItemEx(dw_process); } else if (comdid == L"xmAddRow1") { /*dw_cur = dw_process.GetCurTable(); if(dw_cur.GetDwName()==L"Item") return 0; dw_cur.InsertRow(-1); return 1;*/ //return AddItem(dw_list1);AddContacts dw_supplier return AddItemEx(dw_process); } else if (comdid == L"xmAddRow2") { return AddContacts(dw_paper.GetRow()); } else if (comdid == L"xmDeleteRow1") { /*dw_cur = dw_process.GetCurTable(); if(dw_cur.GetDwName()==L"Item") return 0; dw_cur.DeleteRow(0); return 1;*/ //return DeleteItem(dw_list1); return DeleteItemEx(dw_process); /*xaserverarg arg ; arg.AddArg(L"PartyID",dw_list.GetItemString(dw_list.GetRow(),L"PartyID")); int p=cast(arg as int) ; OpenWindow(L"dev:xpage[select.Contacts.vx]", p); return 1;*/ } else if (comdid == L"xmDeleteRow2") { return DeleteItem2(); } else if (comdid == L"xmDelete") { OnDelete(); return 1; } else if (comdid == L"xmHabitPO") { /*xaserverarg arg = GetParam(); //xstring SONo= arg.GetArgString(L"SONo"); //xstring SOID= SaleOrderView::GetSOID(SONo); //arg.AddArg(L"SOID",SOID); int k = cast(dw_paper as int); int m = cast(dw_process as int); arg.AddArg(L"dw_paper",k.toxstring()); arg.AddArg(L"dw_nopaper",m.toxstring()); OpenWindow(L"dev:xpage[Habit.PO.vx]",cast(arg as int));*/ return 1; } else if (comdid == L"xmClose") { CloseWindow(); return 1; } else if (comdid.find(L"action:", 0) >= 0) { //alert(TypeEx); if (TypeEx != L"‘Ǎ-Yt") { if (comdid == L"action:bill.check.agree") { if (IsModifyed()) { alert(L"‹÷QHOÝ[Xepcn!"); return 1; } //OnSave(); xdwtable dw_pitem1 = dw_process.FindDwTable(L"PItem"); xdwtable dw_item1 = dw_process.FindDwTable(L"Item"); int row = 0; for ( row = 1; row <= dw_item1.GetRowCount(); row++) { xstring goodsno = dw_item1.GetItemString(row, L"GoodsNo"); if (goodsno == L"") { alert(L"QlSø'S÷N €ýN:zz"); return 0; } } for (row = 1; row <= dw_pitem1.GetRowCount(); row++) { xstring supplierid = dw_pitem1.GetItemString(row, L"SupplierID"); xml x1 = ViewObject::RetrieveData(L"/sale/data/supplierv3/entity/GetApplyStatus", L"id", supplierid); KXMLDOMNode t = x1.selectNodes(L"ApplyStatus").item(0); xstring status = L""; xstring partyno = L""; if (t.selectSingleNode(L"type")) status = t.selectSingleNode(L"type").text(); if (t.selectSingleNode(L"partyno")) partyno = t.selectSingleNode(L"partyno").text(); //alert(partyno); if (status == L"12" || partyno.find(L"N") > 0) { alert(L"—^kc_O›^”UFN €ý‘Ǎ-"); return 0; } } xaserverarg parg = GetArg(); if (parg.GetArgString(L"SOLineID") == L"") { xaserverarg arg ; arg.AddArg(L"EntityNo", parg.GetArgString(L"SONo")); //alert(parg.GetArgString(L"SONo")); OpenWindow(L"dev:xpage[Apply.SOItem.vx]", arg); return 1; } xml x6; xaserverarg arg6 ; arg6.setNativePointer(arg6.CreateInstance()); arg6.AddArg(L"SOLineID", parg.GetArgString(L"SOLineID")); if (getUrl(L"/sale/data/SaleOrder/UpdateSOLineTypeExS", arg6.GetString(), x6) != 1) { xstring error6 = x6.text(); alert(L"err:" + error6); return 1; } } if (comdid == L"action:bill.check.agreeEx") { if (IsModifyed()) { alert(L"‹÷QHOÝ[Xepcn!"); return 1; } //OnSave(); xdwtable dw_pitem4 = dw_process.FindDwTable(L"PItem"); xdwtable dw_item4 = dw_process.FindDwTable(L"Item"); int row4 = 0; for (row4 = 1; row4 <= dw_item4.GetRowCount(); row4++) { xstring goodsno4 = dw_item4.GetItemString(row4, L"GoodsNo"); if (goodsno4 == L"") { alert(L"QlSø'S÷N €ýN:zz"); return 0; } } for (row4 = 1; row4 <= dw_pitem4.GetRowCount(); row4++) { xstring supplierid4 = dw_pitem4.GetItemString(row4, L"SupplierID"); xml x4 = ViewObject::RetrieveData(L"/sale/data/supplierv3/entity/GetApplyStatus", L"id", supplierid4); KXMLDOMNode t4 = x4.selectNodes(L"ApplyStatus").item(0); xstring status4 = L""; xstring partyno4 = L""; if (t4.selectSingleNode(L"type")) status4 = t4.selectSingleNode(L"type").text(); if (t4.selectSingleNode(L"partyno")) partyno4 = t4.selectSingleNode(L"partyno").text(); if (status4 == L"12" || partyno4.find(L"N") > 0) { alert(L"—^kc_O›^”UFN €ý‘Ǎ-"); return 0; } } xaserverarg parg4 = GetArg(); xstring SOLineID = parg4.GetArgString(L"SOLineID"); if (parg4.GetArgString(L"SOLineID") == L"") { xaserverarg arg4 ; arg4.setNativePointer(arg4.CreateInstance()); arg4.AddArg(L"EntityNo", parg4.GetArgString(L"SONo")); //alert(parg.GetArgString(L"SONo")); OpenWindow(L"dev:xpage[Apply.SOItem.vx]", arg4 ); return 1; } xml x5; xaserverarg arg5 ; arg5.AddArg(L"SOLineID", SOLineID); if (getUrl(L"/sale/data/SaleOrder/UpdateSOLineTypeEx", arg5.GetString(), x5) != 1) { xstring error = x5.text(); alert(L"err:" + error); return 1; } alert(x5.text()); } int ret = ProcessFlowAction(comdid, 1); return ret; } } return 0; } xstring GetSupplerID(xdwtable dw_obj, int row) { xstring supplier = L""; int i = 0; for (i = row; i >= 1; i--) { supplier = dw_obj.GetItemString(i, L"SupplierID"); if (supplier != L"") break; } if (i > 0 && i != row && supplier != L"") dw_obj.SetItemString(row, L"SupplierID", supplier); dw_obj.SetItemDisplayString(row, L"SupplierID", dw_obj.GetItemDisplayString(i, L"SupplierID")); return supplier; } int evalBomRate(int row, xdwgrid dw_obj) { xstring value = dw_obj.GetItemString(row, L"BOMRate"); if (value == L"") return 1; int pos = value.find(L":"); if (pos < 1) pos = value.find(L"/"); double qty = dw_obj.GetItemDouble(row, L"GDNQuantity"); trace(value); if (pos < 1) { double rate = value.toDouble(); if (rate != 0) dw_obj.ItemChangeTo(row, L"BuyQuantity", xstring((qty / rate))); } else { double rate1 = value.left(pos).toDouble(); xstring str = value.mid(pos + 1, 99999); double rate2 = 0; double inc = 0; xstring adjust = L""; if (str.find(L"+L") > 0 || str.find(L"-") > 0) { bool more = true; int pos1 = str.find(L"+L"); if (pos1 < 1) { pos1 = str.find(L"-"); more = false; } adjust = str.mid(pos1 + 1, 9999); if (more) inc = adjust.toDouble(); else inc = -1 * adjust.toDouble(); str = str.left(pos1); } rate2 = str.toDouble(); if (rate1 != 0) dw_obj.ItemChangeTo(row, L"BuyQuantity", xstring((qty * rate2 / rate1))); if (adjust != L"") { dw_obj.ItemChangeTo(row, L"BuyQuantity", xstring((dw_obj.GetItemDouble(row, L"BuyQuantity") + inc))); } dw_obj.Redraw(); } return 1; } int evalBomRate(int row, xdwtable dw_obj) { xstring value = dw_obj.GetItemString(row, L"BOMRate"); if (value == L"") return 1; int pos = value.find(L":"); if (pos < 1) pos = value.find(L"/"); xdwtable dw_source = dw_obj.FindDwTable(L"Item"); double qty = dw_source.GetItemDouble(dw_obj.GetGroupFromRow(row), L"GDNQuantity"); //trace(value); xdwtable PItem = dw_process.FindDwTable(L"PItem"); for (int row2 = 1; row2 <= PItem.GetRowCount(); row2++) { if (pos < 1) { double rate = value.toDouble(); if (rate != 0) dw_obj.ItemChangeTo(row2, L"BuyQuantity", xstring((qty / rate))); } else { double rate1 = value.left(pos).toDouble(); xstring str = value.mid(pos + 1, 99999); double rate2 = 0; double inc = 0; xstring adjust = L""; if (str.find(L"+L") > 0 || str.find(L"-") > 0) { bool more = true; int pos1 = str.find(L"+L"); if (pos1 < 1) { pos1 = str.find(L"-"); more = false; } adjust = str.mid(pos1 + 1, 9999); if (more) inc = adjust.toDouble(); else inc = -1 * adjust.toDouble(); str = str.left(pos1); } rate2 = str.toDouble(); if (rate1 != 0) dw_obj.ItemChangeTo(row2, L"BuyQuantity", xstring((qty * rate2 / rate1))); if (adjust != L"") { dw_obj.ItemChangeTo(row2, L"BuyQuantity", xstring((dw_obj.GetItemDouble(row, L"BuyQuantity") + inc))); } //dw_obj.Redraw(); } } return 1; } int RecalcAmount() { int row = 1; double ttl = 0.0; double amt = 0.0; double platefee = 0.0; double mouldfee = 0.0; //sum papercard //xdwtable dw_pitem = dw_paper.FindDwTable(L"PItem"); xdwtable dw_pitem1 = dw_process.FindDwTable(L"PItem"); /*for(row = 1; row <=dw_pitem.GetRowCount(); row++) { amt = dw_pitem.GetItemDouble(row,L"BuyAmount"); ttl += amt; amt = dw_pitem.GetItemDouble(row,L"PlateFee"); platefee = platefee + amt; } dw_paper.SetItemDouble(1,L"Amount",ttl); dw_paper.SetItemDouble(1,L"PlateFee",platefee);*/ //sum nopapercard ttl = 0.0; for (row = 1; row <= dw_pitem1.GetRowCount(); row++) { amt = dw_pitem1.GetItemDouble(row, L"BuyAmount"); ttl += amt; amt = dw_pitem1.GetItemDouble(row, L"MouldFee"); mouldfee += amt; } dw_process.SetItemDouble(1, L"Amount", ttl); dw_process.SetItemDouble(1, L"MouldFee", mouldfee); return 1; } int RecalcAmount(xstring PONo) { int row = 1; double ttl = 0.0; double amt = 0.0; double platefee = 0; double mouldfee = 0; //sum papercard //xdwtable dw_pitem = dw_paper.FindDwTable(L"PItem"); xdwtable dw_pitem1 = dw_process.FindDwTable(L"PItem"); //sum nopapercard for (row = 1; row <= dw_pitem1.GetRowCount(); row++) { if (dw_pitem1.GetItemString(row, L"PONo").trim() != PONo) continue; amt = dw_pitem1.GetItemDouble(row, L"BuyAmount"); ttl += amt; amt = dw_pitem1.GetItemDouble(row, L"MouldFee"); mouldfee += amt; } for (row = 1; row <= dw_polist.GetRowCount(); row++) { if (dw_polist.GetItemString(row, L"PONo").trim() == PONo) { dw_polist.SetItemDouble(row, L"Amount", ttl); dw_polist.SetItemDouble(row, L"PlateFee", platefee); dw_polist.SetItemDouble(row, L"MouldFee", mouldfee); break; } } return 1; } int OnChangedSupplier(int row, xstring value, xstring col = L"") { xstring PaymentMethod = L""; xstring Contacter = L""; xstring Remarks = L""; xstring Contacter1 = L""; xstring PaymentMethod1 = L""; xdwtable dw_pitem = dw_process.FindDwTable(L"PItem"); xstring SupplierID = dw_pitem.GetItemString(row, L"SupplierID"); xaserverarg arg = GetArg(); //xstring SOLineID = arg.GetArgString(L"SOLineID"); xstring SOID = arg.GetArgString(L"SOID"); int frow = dw_supplier.LookUpRow(L"partyId", SupplierID); if (frow < 1) { xml x = ViewObject::RetrieveData(L"/sale/data/PurchaseOrder/so/ChangedSupplier", L"SOID", SOID, L"SupplierID", SupplierID); xstring status = x.text(); if (status != L"") { if (x.selectSingleNode(L"data/Item/PaymentMethod")) if (x.selectSingleNode(L"data/Item/Contacter")) if (x.selectSingleNode(L"data/Item/PName")) if (x.selectSingleNode(L"data/Item/Name")) if (x.selectSingleNode(L"data/Item/Mobile")) if (x.selectSingleNode(L"data/Item/IM")) if (x.selectSingleNode(L"data/Item/Address")) if (x.selectSingleNode(L"data/Item/ContactID")) if (x.selectSingleNode(L"data/Item/Remarks")) PaymentMethod = x.selectSingleNode(L"data/Item/PaymentMethod").text(); Contacter = x.selectSingleNode(L"data/Item/Contacter").text(); Remarks = x.selectSingleNode(L"data/Item/Remarks").text(); if (col != L"PaymentMethod") dw_pitem.SetItemString(row, L"PaymentMethod", PaymentMethod); if (col != L"Contacter") dw_pitem.SetItemString(row, L"Contacter", Contacter); dw_supplier.InsertRow(0); int prow = dw_supplier.GetRowCount(); dw_supplier.SetItemString(prow, L"PaymentMethod", PaymentMethod); dw_supplier.SetItemString(prow, L"SOID", SOID); dw_supplier.SetItemString(prow, L"PartyID", SupplierID); dw_supplier.SetItemString(prow, L"PName", x.selectSingleNode(L"data/Item/PName").text()); dw_supplier.SetItemString(prow, L"Mobile", x.selectSingleNode(L"data/Item/Mobile").text()); dw_supplier.SetItemString(prow, L"IM", x.selectSingleNode(L"data/Item/IM").text()); dw_supplier.SetItemString(prow, L"Address", x.selectSingleNode(L"data/Item/Address").text()); dw_supplier.SetItemString(prow, L"ContactID", x.selectSingleNode(L"data/Item/ContactID").text()); dw_supplier.SetItemString(prow, L"Name", x.selectSingleNode(L"data/Item/Name").text()); dw_supplier.SetItemString(prow, L"Remarks", Remarks); } } xml x1 = ViewObject::RetrieveData(L"/sale/data/PurchaseOrder/so/ChangedSupplier", L"SOID", SOID, L"SupplierID", SupplierID); if (x1.selectSingleNode(L"data/Item/PaymentMethod")) if (x1.selectSingleNode(L"data/Item/Contacter")) PaymentMethod1 = x1.selectSingleNode(L"data/Item/PaymentMethod").text(); Contacter1 = x1.selectSingleNode(L"data/Item/Contacter").text(); if (col != L"PaymentMethod") dw_pitem.SetItemString(row, L"PaymentMethod", PaymentMethod1); if (col != L"Contacter") dw_pitem.SetItemString(row, L"Contacter", Contacter1); return 1; } int OnProcessItemChanged(TEvent* evt, LPARAM p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; xstring colname = hdr.colname; xstring value = hdr.data; int row = hdr.row; xdwtable dw_object = dw_process.FindDwTable(L"PItem"); xdwtable dw_source = dw_process.FindDwTable(L"Item"); //return 1; dw_source.SetItemString(dw_source.GetRow(), L"SOLineID", dw_source.GetItemString(dw_source.GetRow(), L"SOLineID")); if (colname == L"BOMRate") evalBomRate(row, dw_object); if (colname == L"GDNQuantity") { if (dw_object.GetItemString(row, L"BOMRate") != L"") evalBomRate(row, dw_object); } /**if ( colname == L"BuyUnitPrice" || colname==L"BuyQuantity") { double price = dw_object.GetItemDouble(row,L"BuyUnitPrice");//‘Ǎ-SUN÷ double quantity = dw_object.GetItemDouble(row,L"BuyQuantity"); double amount = quantity * price; tracert ipconfig tracert ipconfig dw_object.SetItemDouble(row,L"BuyAmount",amount); }*/ if (colname == L"BuyItemPrice") { double buyItemPrice1 = dw_object.GetItemDouble(row, L"BuyItemPrice"); xstring PONo = dw_source.GetItemString(dw_object.GetGroupFromRow(row), L"PONo").trim(); double quantity = dw_object.GetItemDouble(row, L"BuyQuantity"); double amount = quantity * buyItemPrice1; dw_object.SetItemDouble(row, L"BuyAmount", amount); RecalcAmount(); //RecalcAmount(PONo); } if (colname == L"BuyQuantity" || colname == L"BuyUnitPrice" || colname == L"OtherFee" || colname == L"DeductionFee") { double price1 = dw_object.GetItemDouble(row, L"BuyUnitPrice"); double x1 = dw_object.GetItemDouble(row, L"OtherFee"); double x2 = dw_object.GetItemDouble(row, L"DeductionFee"); double buyItemPrice = price1 + x1 - x2; dw_object.SetItemDouble(row, L"BuyItemPrice", buyItemPrice); double quantity1 = dw_object.GetItemDouble(row, L"BuyQuantity"); double amount1 = quantity1 * buyItemPrice; dw_object.SetItemDouble(row, L"BuyAmount", amount1); xstring PONo2 = dw_source.GetItemString(dw_object.GetGroupFromRow(row), L"PONo").trim(); RecalcAmount(); //RecalcAmount(PONo2); } if (colname == L"SupplierID") { OnChangedSupplier(row, value, L""); } return 1; } bool IsMaintState(xstring SOLineID) { xml x = ViewObject::RetrieveData(L"/sale/data/PurchaseOrder/poitem/maintstate", L"SOLineID", SOLineID); if (x) { xstring count = x.documentElement().getAttribute(L"count"); if (count > L"0") return true; //delete x; } return false; } //T}NäYtN‹Nö int OnXCommand(TEvent* evt, int param) { return OnCmdDispatch(evt->xcommand.pStrID); } int SureItem(xdwtable dw_dest, xdwgrid dw_src, int drow, int srow, xstring colname, bool display = false, bool changed = false) { if (dw_dest.GetItemString(drow, colname.c_str()) != dw_src.GetItemString(srow, colname.c_str())) { if (changed) dw_dest.ItemChangeTo(drow, colname.c_str(), dw_src.GetItemString(srow, colname.c_str())); else dw_dest.SetItemString(drow, colname.c_str(), dw_src.GetItemString(srow, colname.c_str())); if (display) dw_dest.SetItemDisplayString(drow, colname.c_str(), dw_src.GetItemDisplayString(srow, colname.c_str())); } return 1; } int OnOk() { return 1; } int OnRetrieve() { xaserverarg arg = GetArg(); xstring SOLineID = arg.GetArgString(L"SOLineID"); xstring SONo = arg.GetArgString(L"SONo"); xstring SOID = L""; if (SOLineID) { trace(L"12"); SOID = SaleOrderView::GetSOIDByLineID(SOLineID); SONo = SaleOrderView::GetSONoByLineID(SOLineID); arg.AddArg(L"SOID", SOID); arg.AddArg(L"SONo", SONo); xml x = ViewObject::RetrieveData(L"/sale/data/PurchaseOrder/so/poitemlist/nopapercard2", L"SOLineID", SOLineID); if (x)dw_process.Retrieve(x); x = ViewObject::RetrieveData(L"/sale/data/PurchaseOrder/so/SOPurchaseInfo", L"SOID", SOID); if (x)dw_supplier.Retrieve(x); } else if (SONo) { SOID = SaleOrderView::GetSOID(SONo); arg.AddArg(L"SOID", SOID); trace(L"SONo" + SOID); xml x = ViewObject::RetrieveData(L"/sale/data/PurchaseOrder/so/poitemlist/nopapercardcheck", L"SOID", SOID); if (x)dw_process.Retrieve(x); x = ViewObject::RetrieveData(L"/sale/data/PurchaseOrder/so/SOPurchaseInfo", L"SOID", SOID); if (x)dw_supplier.Retrieve(x); } dw_supplier.SetColumnState(L"SOID", false); dw_supplier.SetColumnState(L"ContactID", false); dw_supplier.SetColumnState(L"PartyID", false); xdwtable dw_item = dw_process.FindDwTable(L"Item"); if (SOLineID) { if (dw_item.GetRowCount() == 1 && dw_item.GetItemString(1, L"GoodsNo") == L"") { xml x = SaleOrderView::GetMaintFormForItemListForPO2(SONo, SOLineID); trace(L"====L" + xstring(x.xml()) + L"====L"); AddItems(dw_process, x); } } dw_process.SetEditUpperMode(true); xdwtable dw_pitem3 = dw_process.FindDwTable(L"PItem"); dw_pitem3.SetColumnProp(L"OtherFee", L"cellprotect", L"1"); dw_pitem3.SetColumnProp(L"DeductionFee", L"cellprotect", L"1"); return 1; } int AddContactssOne(int row, xml x) { KXMLDOMNodeList items = x.selectNodes(L"data/Item"); //int row = dw_supplier.GetRow(); if (row < 1) return 0; KXMLDOMNode t = items.item(0); xdwtable dw_pitem = dw_process.FindDwTable(L"PItem"); xstring Name = t.selectSingleNode(L"Name").text(); xstring Mobile = t.selectSingleNode(L"Mobile").text(); xstring Contacter = Name + Mobile; dw_pitem.SetItemString(row, L"Contacter", Contacter); return 1; } int OnPaymentMethod() { xaserverarg arg ; OpenWindow(L"dev:xpage[paymentmethod.vx]", arg); xstring str = arg.GetArgString(L"Paymentmethod"); if (str != L"") { xdwtable dw_pitem = dw_process.FindDwTable(L"PItem"); dw_pitem.SetItemString(dw_pitem.GetRow(), L"PaymentMethod", str); xstring SupplierID = dw_pitem.GetItemString(dw_pitem.GetRow(), L"SupplierID"); int frow = dw_supplier.LookUpRow(L"partyId", dw_pitem.GetItemString(dw_pitem.GetRow(), L"SupplierID")); if (frow < 1) { OnChangedSupplier(dw_pitem.GetRow(), SupplierID, L"PaymentMethod"); frow = dw_supplier.GetRowCount(); } dw_supplier.SetItemString(frow, L"PaymentMethod", str); } return 1; } int OnContacter() { xaserverarg arg ; xdwtable dw_pitem = dw_process.FindDwTable(L"PItem"); arg.AddArg(L"PartyID", dw_pitem.GetItemString(dw_pitem.GetRow(), L"SupplierID")); OpenWindow(L"dev:xpage[select.Contacts.vx]", arg); //xaserverarg arg = p; xstring str = arg.GetArgString(L"items"); //alert(str); if (str != L"") { xml x; x.loadXML(str); int frow = dw_supplier.LookUpRow(L"partyId", dw_pitem.GetItemString(dw_pitem.GetRow(), L"SupplierID")); if (frow < 1) { OnChangedSupplier(dw_pitem.GetRow(), dw_pitem.GetItemString(dw_pitem.GetRow(), L"SupplierID"), L"Contacter"); frow = dw_supplier.GetRowCount(); } AddContactssOne(dw_pitem.GetRow(), x); AddContactss(frow, x); } return 1; } int OnDoubleClicked(TEvent* evt, LPARAM p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; xstring colname = hdr.colname; int row = hdr.row; xdwtable dw_pitem = dw_process.FindDwTable(L"PItem"); if (colname == L"PaymentMethod") { if (dw_pitem.GetItemString(dw_pitem.GetRow(), L"SupplierID") == L"") { alert(L"‹÷QH béO›^”UF!"); return 1; } return OnPaymentMethod(); } else if (colname == L"Contacter") { if (dw_pitem.GetItemString(dw_pitem.GetRow(), L"SupplierID") == L"") { alert(L"‹÷QH béO›^”UF!"); return 1; } return OnContacter(); } return 1; } int OnDWClick(TEvent* evt, LPARAM p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; xstring value = hdr.data; xstring colname = hdr.colname; if (colname == L"PaymentMethod") { xaserverarg arg ; OpenWindow(L"dev:xpage[paymentmethod.vx]", arg); xstring str = arg.GetArgString(L"Paymentmethod"); if (str != L"") { dw_supplier.SetItemString(hdr.row, L"PaymentMethod", str); dw_supplier.Redraw(); } return 1; } } int OnRowChanged(TEvent* evt, LPARAM p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; int row = hdr.row; if (row < 1) return 1; HCURSOR hCursor = xutil::SetCursorWait(); xutil::RestoreCursor(hCursor); return 1; } int OnAttachEvent() { //~Ñ[š]åQwgap¹QûN‹Nö AttachEvent(L"WM_XCOMMAND", (FEvent)&MaintPurcherItemWin::OnXCommand); //ƒ·SÖq&p¹N‹Nöÿ u(NŽ‘Ín]åQwga AttachEvent(L"WM_SETFOCUS", (FEvent)&MaintPurcherItemWin::OnSetFocus); AttachEvent(L"dw_process", L"DWV_ITEMCHANGED", (FEvent)&MaintPurcherItemWin::OnProcessItemChanged); //AttachEvent(L"dw_supplier",L"DWV_CLICKED",(FEvent)&GDN3MaintWin::OnDWClick); AttachEvent(L"dw_process", L"DWV_DOUBLECLICKED", (FEvent)&MaintPurcherItemWin::OnDoubleClicked); AttachEvent(L"dw_process", L"DWV_ROWFOCUSCHANGED", (FEvent)&MaintPurcherItemWin::OnRowChanged);//~Ñ[šˆLfôe9‰æSÑN‹NöOnRowChanged return 1; } int onload() { dw_process = GetControl(L"dw_process"); //dw_process.openUrl(L"/sale/view/PurchaseOrder/template/item/nopapercardex"); dw_process.openUrl(L"/sale/view/PurchaseOrder/template/POItemForm"); dw_process.SetColHeaderHeight(0); dw_process.SetRowSelectorWidth(0); xdwtable dw_pitem3 = dw_process.FindDwTable(L"PItem"); dw_pitem3.SetColumnProp(L"OtherFee", L"cellprotect", L"1"); dw_pitem3.SetColumnProp(L"DeductionFee", L"cellprotect", L"1"); dw_supplier = GetControl(L"dw_supplier"); dw_supplier.openUrl(L"/sale/view/PurchaseOrder/template/purchaseorder/FactoryInformation"); dw_paper = GetControl(L"dw_paper"); dw_paper.openUrl(L"/sale/view/PurchaseOrder/template/purchaseorder/FactoryInformation"); //xcell x1 = GetControl(L"dw_process"); //x1.SetColumnCount(29); NO = publiccode::GetUser().no; Jobname = publiccode::GetUser().jobname; if (NO == L"admin") Jobname = L""; if (Jobname == L"‘Ǎ-TX") { dw_pitem3.SetColumnProp(L"RemarksE", L"cellprotect", L"1"); } OnAttachEvent(); SetAgent(); return 1; } int onloaded() { SetArg(); OnRetrieve(); OnRetrieveDiff(); xdwtable dw_pitem3 = dw_process.FindDwTable(L"PItem"); dw_pitem3.SetColumnProp(L"RemarksEx", L"cellprotect", L"1"); xdwtable dw_pitem = dw_process.FindDwTable(L"PItem"); xstring PartyID1 = L""; for (int m = 1; m <= dw_pitem.GetRowCount(); m++) { xstring PartyID = dw_pitem.GetItemString(m, L"SupplierID"); if (PartyID1 == L"") PartyID1 = PartyID; else if (PartyID1.find(PartyID) < 0) PartyID1 += L",L" + PartyID; } xaserverarg parg = GetArg(); xstring SOLineID = parg.GetArgString(L"SOLineID"); TypeEx = parg.GetArgString(L"TyPeEx"); //alert(SOLineID+L" "+TypeEx); xml x = ViewObject::RetrieveData(L"/sale/data/PurchaseOrder/so/SOPurchaseInfo3", L"SOLineID", SOLineID, L"SupplierID", PartyID1); if (x)dw_supplier.Retrieve(x); return 1; } };