#include <wobject/xstring.hpp>
|
#include <xcontrol/xtreeview.hpp>
|
#include <xcontrol/xdwgrid.hpp>
|
#include <wobject/xdouble.hpp>
|
#include <xcontrol/xlayersheet.hpp>
|
#include <xcontrol/xcell.hpp>
|
|
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
|
#include "vbusiness/vframe/maint.vframe.vbusiness.hpp"
|
#include "viewobject/view.base.hpp"
|
|
using xml = KXMLDOMDocument;
|
class __declspec(dllexport) ExpressMaint : public maint
|
{
|
public:
|
KXMLDOMDocument m_configDoc;
|
xdwtable dw_base;
|
xstring m_userid;
|
xstring m_username;
|
xstring ContactID;
|
xcell dw_cell;
|
xstring m_EntityID = L"";
|
public:
|
ExpressMaint(void* implPtr, HWND hWnd) :maint(implPtr, hWnd) {}
|
public:
|
static ExpressMaint* CreateInstance(void* implPtr, void* hWnd)
|
{
|
ExpressMaint* pWin = new ExpressMaint(implPtr, (HWND)hWnd);
|
return pWin;
|
}
|
|
int setCellReadOnly()
|
{
|
dw_base = GetControl(L"dw_base");
|
dw_cell = dw_base.QueryItem(L"ixcell");
|
xstring strnew = L"<cellprop celltype='' cellformatex='' cellformat='' cellprotectex='' cellprotect='±£»¤' cellvisibleex='' cellvisible='' cellvalid='' cellinitial=''/>";
|
dw_cell.SetCellProps(2, 2, strnew);
|
return 0;
|
}
|
|
|
xstring GetGuid() {
|
return publiccode::GetGuid();
|
}
|
int OnClear() {
|
if (m_EntityID == L"") {
|
//trace(1);
|
m_userid = publiccode::GetUser().personid;
|
m_username = publiccode::GetUser().name;
|
dw_base = GetControl(L"dw_base");
|
dw_base.SetItemString(1, L"PartyID", GetGuid());
|
dw_base.SetItemString(1, L"PStatus", L"1");
|
dw_base.SetItemDisplayString(1, L"PStatus", L"ÓÐЧ");
|
dw_base.SetItemString(1, L"PADStatus", L"1");
|
dw_base.SetItemString(1, L"CreatorID", m_userid);
|
dw_base.SetItemString(1, L"AddressID", GetGuid());
|
dw_base.SetItemString(1, L"PADIdentifyAddressFlag", L"Y");
|
dw_base.SetItemString(1, L"PrimaryFlag", L"Y");
|
dw_base.SetItemString(1, L"Type", L"8");
|
dw_base.SetItemString(1, L"EnterName", m_userid);
|
dw_base.SetItemDisplayString(1, L"EnterName", m_username);
|
dw_base.SetItemString(1, L"CreateDate", publiccode::GetCurrentDate());
|
dw_base.SetItemString(1, L"PBAStatus", L"Y");
|
return 0;
|
|
}
|
return 0;
|
}
|
|
int OnSetFocus(TEvent* evt, LPARAM p)
|
{
|
SetAgent(L"maint");
|
return 1;
|
}
|
int OnAddrow()
|
{
|
dw_base = GetControl(L"dw_base");
|
xdwtable dw =dw_base.GetCurTable();
|
xstring dw_n = dw.GetDwName();
|
if (dw_n == L"item")
|
{
|
dw.InsertRow(0);
|
int rows = dw.GetRowCount();
|
dw.SetRow(rows);
|
|
}
|
return 1;
|
}
|
int OnInsertRow()
|
{
|
dw_base =GetControl(L"dw_base");
|
xdwtable dw = dw_base.GetCurTable();
|
xstring dw_n = dw.GetDwName();
|
if (dw_n == L"item")
|
{
|
int row = dw.GetRow();
|
if (row < 1) return 0;
|
dw.InsertRow(row);
|
dw.SetRow(row);
|
|
}
|
return 1;
|
}
|
|
int OnDeleteRow()
|
{
|
dw_base = GetControl(L"dw_base");
|
xdwtable dw = dw_base.GetCurTable();
|
xstring dw_n = dw.GetDwName();
|
if (dw_n == L"item")
|
{
|
int row = dw.GetRow();
|
if (row < 1) return 0;
|
/*xstring del = dw.GetItemString(row,8);
|
if(del!=L"")
|
{
|
if(m_dels==L"")
|
{
|
m_dels=del;
|
}
|
else
|
{
|
xstring temp=m_dels;
|
m_dels=del + L"|" + temp;
|
//+= L"|"+del;
|
}
|
|
}*/
|
dw.DeleteRow(row);
|
dw.SetRow(row - 1);
|
}
|
//trace(m_dels);
|
return 1;
|
}
|
xstring getGoodsNo()
|
{
|
xml x;
|
|
xaserverarg arg;
|
|
if (getUrl(L"/sale/data/LogisticsCode/pref/express/PartyNo", arg.GetString(), x) != 1)
|
{
|
trace(x.xml());
|
return L"";
|
}
|
KXMLDOMElement e = x.documentElement();
|
if (e)
|
{
|
xstring code = e.text();
|
trace(code);
|
return L"E" + code;
|
}
|
return L"E1000";
|
}
|
int OnPreSave()
|
{
|
dw_base.AcceptText();
|
dw_base = GetControl(L"dw_base");
|
xstring ExpressNo = dw_base.GetItemString(1, L"ExpressNo");
|
if (ExpressNo == L"")
|
{
|
dw_base.SetItemString(1, L"ExpressNo", getGoodsNo());
|
}
|
xdwtable dwcon = dw_base.FindDwTable(L"item", 0);
|
int i;
|
for (i = 1; i <= dwcon.GetRowCount(); i++)
|
{
|
xstring aTemp;
|
xstring aName = dwcon.GetItemString(i, L"ContacterName");
|
if (aName == L"")
|
{
|
aTemp = dwcon.GetItemString(i, L"Mobile") + dwcon.GetItemString(i, L"TEL") + dwcon.GetItemString(i, L"Fax") + dwcon.GetItemString(i, L"Email") + dwcon.GetItemString(i, L"PCRemark");
|
trace(aTemp);
|
if (aTemp != L"")
|
{
|
alert(L"ÁªÏµÈËÃû³Æ±ØÌ");
|
return -1;
|
}
|
}
|
else {
|
xstring ContactID = dwcon.GetItemString(i, L"ContactID");
|
if (ContactID == L"")
|
{
|
dwcon.SetItemString(i, L"ContactID", GetGuid());
|
dwcon.SetItemString(i, L"PCStatus", L"1");
|
//dw_base.SetItemString(1,L"PrimaryContactID",dwcon.GetItemString(1,L"ContactID"));
|
}
|
|
|
|
}
|
}
|
xdwtable dwcon1 = dw_base.FindDwTable(L"PartyBankAccount", 0);
|
int j;
|
xstring sPBABankName = L"";
|
xstring sPBABankAccountNo = L"";
|
for (j = 1; j <= dwcon1.GetRowCount(); j++)
|
{
|
xstring sPBABankName = dwcon1.GetItemString(j, L"Bank");
|
xstring sPBABankAccountNo = dwcon1.GetItemString(j, L"BankNo");
|
|
xstring sPBAAll = sPBABankName + sPBABankAccountNo;
|
if (sPBAAll != L"")
|
{
|
if (sPBABankName == L"")
|
{
|
alert(L"ÒøÐÐÃû³Æ²»ÄÜΪ¿Õ");
|
return -1;
|
}
|
if (sPBABankAccountNo == L"")
|
{
|
alert(L"ÒøÐÐÕË»§²»ÄÜΪ¿Õ");
|
return -1;
|
}
|
}
|
}
|
return 1;
|
}
|
int OnSave()
|
{
|
dw_base = GetControl(L"dw_base");
|
xstring SName = dw_base.GetItemString(1, L"Name");
|
if (SName == L"") {
|
alert(L"ÇëÊäÈë¿ìµÝ¹«Ë¾Ãû³Æ£¡");
|
return -1;
|
}
|
int rec = OnPreSave();
|
if (rec == -1) return -1;
|
xml x;
|
|
dw_base.DwUpdateAllTo(x);
|
trace(x.xml());
|
xaserverarg arg;
|
|
arg.AddArg(L"content", x.xml());
|
arg.AddArg(L"dbmap", L"Express.dbmap");
|
//arg.AddArg(L"m_dels",m_dels);
|
if (getUrl(L"/sale/data/LogisticsCode/entity/express/save", arg.GetString(), x) != 1)
|
{
|
trace(L"error:" + (xstring)x.xml());
|
alert(L"±£´æÊ§°Ü!");
|
return 0;
|
}
|
else
|
{
|
trace(x.xml());
|
if (x.selectSingleNode(L"error"))
|
{
|
alert(L"±£´æ³ö´í2!");
|
return 0;
|
}
|
alert(L"±£´æ³É¹¦!");
|
dw_base.ResetUpdateStatus();
|
setCellReadOnly();
|
}
|
dw_base.Redraw();
|
//m_dels=L"";
|
return 0;
|
}
|
int OnCmdDispatch(xstring comdid)
|
{
|
if (comdid.find(L"action:bill.row.add", 0) >= 0) {
|
OnAddrow();
|
}
|
else if (comdid.find(L"bill.row.insert", 0) >= 0) {
|
OnInsertRow();
|
}
|
else if (comdid.find(L"bill.row.delete", 0) >= 0) {
|
OnDeleteRow();
|
}
|
else if (comdid.find(L"bill.save", 0) >= 0) {
|
//trace(1);
|
OnSave();
|
}
|
return 0;
|
}
|
|
int OnXCommand(TEvent* evt, LPARAM param)
|
{
|
return OnCmdDispatch(evt->xcommand.pStrID);
|
}
|
int OnCellChanged(TEvent* evt, LPARAM p)
|
{
|
dw_base = GetControl(L"dw_base");
|
DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
|
xstring colname = hdr.colname;
|
//trace(colname);
|
if (colname == L"ExpressNo")
|
{
|
xstring cspec = dw_base.GetItemString(1, 1);
|
trace(cspec);
|
xstring SpecRule = L"^\\d*$";
|
xaserverarg args;
|
|
args.AddArg(L"CSpec", cspec);
|
args.AddArg(L"SpecRule", SpecRule);
|
xml x;
|
|
getUrl(L"/sale/data/LogisticsCode/pref/forwarderno/check", args.GetString(), x);
|
if (x.selectSingleNode(L"root/spec"))
|
{
|
alert(L"ÇëÊäÈëÊý×Ö£¡");
|
return 0;
|
}
|
|
}
|
return 1;
|
}
|
int OnAttachEvent()
|
{
|
AttachEvent(L"WM_XCOMMAND", (FEvent)&ExpressMaint::OnXCommand);
|
AttachEvent(L"WM_SETFOCUS", (FEvent)&ExpressMaint::OnSetFocus);
|
AttachEvent(L"dw_base", L"DWV_ITEMCHANGED", (FEvent)&ExpressMaint::OnCellChanged);
|
return 1;
|
}
|
|
int onload()
|
{
|
SetArg();
|
dw_base = GetControl(L"dw_base");
|
|
OnAttachEvent();
|
//if(!m_configDoc) return -1;
|
|
maint::onload();
|
OnClear();
|
return 1;
|
}
|
|
int onloaded()
|
{
|
return maint::onloaded();
|
}
|
|
};
|