#include #include #include #include #include #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" using xml = KXMLDOMDocument; class __declspec(dllexport) VATInvoiceNew : public xframe { public: xdwgrid dw_1; xdwgrid dw_2; xlayersheet m_layer; xnode m_agentNode; //Agent Condition public: VATInvoiceNew(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} public: static VATInvoiceNew* CreateInstance(void* implPtr, void* hWnd) { VATInvoiceNew* pWin = new VATInvoiceNew(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 OnDoubleClicked(TEvent* evt, int p) { HCURSOR hCursor = xutil::SetCursorWait(); int col = dw_1.GetColumn(); //if(dw_1.GetColumnName(col)==L"Amount") dw_1.ItemChangeTo(dw_1.GetRow(),L"VATBillAmount",dw_1.GetItemString(dw_1.GetRow(),L"NAmount")); dw_1.Redraw(); xutil::RestoreCursor(hCursor); return 1; } //½¹µã¼¤»î´¦Àíº¯Êý int OnSetFocus(TEvent* evt, LPARAM param) { //ÖØÖù¤¾ßÌõ //SetAgent(); return 1; } int ResetDataForContinue() { int i = 1; for (i=dw_1.GetRowCount(); i>=1; i --) { xstring Amount = dw_1.GetItemString(i,L"VATBillAmount"); if (Amount != L"" && Amount != L"0.00" && Amount != L".00") { dw_1.DeleteRow(i); } } for (i=dw_2.GetRowCount(); i>=1; i --) { dw_2.DeleteRow(i); } dw_1.ResetUpdateStatus(); dw_2.ResetUpdateStatus(); return 1; } int OnTabSelectedSheet(TEvent* evt, int p) { int index = m_layer.GetSheetIndex(); if (index == 1) { dw_1.AcceptText(); while (dw_2.GetRowCount() >0) dw_2.DeleteRow(0); int i=0; for (i=1;i <=dw_1.GetRowCount(); i++) { xstring Amount = dw_1.GetItemString(i,L"VATBillAmount"); //trace(L"\r\n"+Amount); if (Amount != L"" && Amount != L"0.00" && Amount != L".00") { xstring ClassifyID = dw_1.GetItemString(i,L"NClassifyID"); xstring InvoiceNo = dw_1.GetItemString(i,L"NInvoiceNo"); if(InvoiceNo==L"") dw_1.GetItemString(i,L"InvoiceNo"); xstring SupplierID = dw_1.GetItemString(i,L"SupplierID"); xstring SupplierName = dw_1.GetItemDisplayString(i,L"SupplierID"); xstring GRNDate=dw_1.GetItemString(i,L"GRNDate"); xstring HasGRN=dw_1.GetItemString(i,L"HasGRN"); xstring HasGRNOne=dw_1.GetItemString(i,L"HasGRNOne"); xstring HasGRNTwo=dw_1.GetItemString(i,L"HasGRNTwo"); xstring SalespersonID=dw_1.GetItemString(i,L"SalespersonID"); xstring SalespersonIDName = dw_1.GetItemDisplayString(i,L"SalespersonID"); xstring Merchandiser=dw_1.GetItemString(i,L"Merchandiser"); xstring PurcharID=dw_1.GetItemString(i,L"PurcharID"); xstring CustomerName=dw_1.GetItemString(i,L"CustomerName"); int row; bool inserted = false; for(row = 1; row <= dw_2.GetRowCount(); row++) { if( InvoiceNo == dw_2.GetItemString(row,L"NInvoiceNo") && SupplierID== dw_2.GetItemString(row,L"SupplierID")) break; } if(row > dw_2.GetRowCount()) { dw_2.InsertRow(0); inserted = true; } if(inserted) { xstring VATInvoiceID = publiccode::GetGuid(); dw_1.SetItemString(i,L"VATInvoiceID",VATInvoiceID); dw_2.SetItemString(row,L"VATInvoiceID",VATInvoiceID); dw_2.SetItemString(row,L"VATSupplierID",SupplierID); dw_2.SetItemDisplayString(row,L"VATSupplierID",SupplierName); dw_2.SetItemString(row,L"SupplierID",SupplierID); dw_2.SetItemDisplayString(row,L"SupplierID",SupplierName); dw_2.SetItemString(row,L"NInvoiceNo",InvoiceNo); dw_2.SetItemString(row,L"DeduceAmount",dw_1.GetItemString(i,L"DeduceAmount")); dw_2.SetItemString(row,L"OverAmount",dw_1.GetItemString(i,L"OverAmount")); dw_2.SetItemString(row,L"VATBillAmount",dw_1.GetItemString(i,L"VATBillAmount")); dw_2.SetItemString(row,L"NetAmount",dw_1.GetItemString(i,L"NetAmount")); dw_2.SetItemString(row,L"VATAmount",dw_1.GetItemString(i,L"VATAmount")); dw_2.SetItemString(row,L"RefundAmount",dw_1.GetItemString(i,L"RefundAmount")); xstring sdate = xstring(publiccode::GetCurrentDate()).left(10); dw_2.SetItemString(row,L"CreateDate",sdate); dw_2.SetItemString(row,L"VATDate",sdate); dw_2.SetItemString(row,L"VATInvoiceDate",sdate); dw_2.SetItemString(row,L"GRNDate",GRNDate); dw_2.SetItemString(row,L"HasGRN",HasGRN); dw_2.SetItemString(row,L"HasGRNOne",HasGRNOne); dw_2.SetItemString(row,L"HasGRNTwo",HasGRNTwo); xstring suserid = publiccode::GetUser().id; xstring susername = publiccode::GetUser().name; dw_2.SetItemString(row,L"CreatorID",suserid); dw_2.SetItemDisplayString(row,L"CreatorID",susername); dw_1.SetItemString(i,L"VATInvoiceID",VATInvoiceID); dw_2.SetItemString(row,L"Salesperson",SalespersonID); dw_2.SetItemDisplayString(row,L"Salesperson",SalespersonIDName); dw_2.SetItemString(row,L"Merchandiser",Merchandiser); dw_2.SetItemString(row,L"PurcharID",PurcharID); dw_2.SetItemString(row,L"CustomerName",CustomerName); }else { dw_1.SetItemString(i,L"VATInvoiceID",dw_2.GetItemString(row,L"VATInvoiceID")); double amt = 0.0; amt = dw_2.GetItemDouble(row,L"DeduceAmount"); amt += dw_1.GetItemDouble(i,L"DeduceAmount"); dw_2.SetItemDouble(row,L"DeduceAmount",amt); amt = dw_2.GetItemDouble(row,L"OverAmount"); amt += dw_1.GetItemDouble(i,L"OverAmount"); dw_2.SetItemDouble(row,L"OverAmount",amt); amt = dw_2.GetItemDouble(row,L"RefundAmount"); amt += dw_1.GetItemDouble(i,L"RefundAmount"); dw_2.SetItemDouble(row,L"RefundAmount",amt); amt = dw_2.GetItemDouble(row,L"VATBillAmount"); amt += dw_1.GetItemDouble(i,L"VATBillAmount"); dw_2.SetItemDouble(row,L"VATBillAmount",amt); amt = dw_2.GetItemDouble(row,L"NetAmount"); amt += dw_1.GetItemDouble(i,L"NetAmount"); dw_2.SetItemDouble(row,L"NetAmount",amt); amt = dw_2.GetItemDouble(row,L"VATAmount"); amt += dw_1.GetItemDouble(i,L"VATAmount"); dw_2.SetItemDouble(row,L"VATAmount",amt); } } } } return 1; } int OnSave(bool continueAdd) { dw_1.AcceptText(); dw_2.AcceptText(); xstring error; xstring str; xml x; xaserverarg arg; dw_1.DwUpdateAllToEx(x); xml x0; x0.loadXML(L""); KXMLDOMNodeList t = x.selectNodes(L"data/Item[@update.modify]"); KXMLDOMElement e1= x0.documentElement(); int len = t.length(); for(int i=0;inotify.pnmh; xstring colname=hdr.colname; xstring value = hdr.data; int row = hdr.row; if(value==L"") return 1; if(colname==L"VATAmount") { double VATAmount=dw_1.GetItemDouble(row,L"VATAmount"); double billAmtt= dw_1.GetItemDouble(row,L"VATBillAmount"); double v4= billAmtt - VATAmount; int v5=(int)VATAmount; if(v5>=0){ dw_1.SetItemDouble(row,L"NetAmount",v4); dw_1.Redraw(); } } else if(colname==L"VATBillAmount") { RecalcVatAmt(row); if(value==L"" || value==L"0.00" || value==L".00") { dw_1.SetItemString(row,L"OverAmount",L""); dw_1.SetItemString(row,L"DeduceAmount",L""); dw_1.SetItemString(row,L"VATBillAmount",L""); }else { double NAmount = dw_1.GetItemDouble(row,L"NAmount"); double billAmt = dw_1.GetItemDouble(row,L"VATBillAmount"); double Amt = NAmount - billAmt ; int v1 =(int) Amt; int v2 = (int)(billAmt - NAmount); if(v2 < 0) v2 = - v2; if(v1 <0 || v2<49 ) { dw_1.SetItemDouble(row,L"OverAmount",billAmt - NAmount); dw_1.SetItemString(row,L"DeduceAmount",L""); } else { dw_1.SetItemString(row,L"OverAmount",L""); dw_1.SetItemDouble(row,L"DeduceAmount", NAmount - billAmt); } } dw_1.Redraw(); /* if ldec_notifyamt - dec(data) < 0 or abs(dec(data) - ldec_notifyamt)<=49 then this.setItem(row,'kkamt',0) this.setItem(row,'dkamt',dec(data) - ldec_notifyamt) else this.setItem(row,'dkamt',0) this.setItem(row,'kkamt',ldec_notifyamt - dec(data)) end if ll_decrate = this.getitemdecimal(row,'retax') ll_incrate = this.getitemdecimal(row,'incrate') if isnull(ll_decrate) then ll_decrate = 13 if isnull(ll_incrate) or ll_incrate=0 then ll_incrate = 17 this.setitem(row,'retaxamt',this.getItemDecimal(row,'billamt')/(100+ll_incrate)*ll_decrate) this.setitem(row,'inctaxamt',this.getItemDecimal(row,'billamt')/(100+ll_incrate)*ll_incrate) end if if dwo.name='kkamt' or dwo.name='dkamt' then ls_prdname = this.object.supplier_cname[row] if isnull(ls_prdname) then ls_prdname = '' if ls_prdname <> '' then ls_firstName = LeftW (trim(ls_prdname), 2) ls_lastName = rightW (trim(ls_prdname), 1) ls_comName = ls_firstName + ls_lastName end if if ls_comName <> '²úÆ·²¿' then this.setitem(row,'billamt',dec(this.Describe(L"evaluate('notifybuyamt - if(isnull(kkamt),0,kkamt) + if(isnull(dkamt),0,dkamt)',L"+xstring(row)+L")"))) else this.setitem(row,'billamt',dec(this.Describe(L"evaluate('prd_nbuyamt - if(isnull(kkamt),0,kkamt) + if(isnull(dkamt),0,dkamt)',L"+xstring(row)+L")"))) end if ll_decrate = this.getitemdecimal(row,'retax') ll_incrate = this.getitemdecimal(row,'incrate') if isnull(ll_decrate) then ll_decrate = 13 if isnull(ll_incrate) or ll_incrate=0 then ll_incrate = 17 this.setitem(row,'retaxamt',this.getItemDecimal(row,'billamt')/(100+ll_incrate)*ll_decrate) this.setitem(row,'inctaxamt',this.getItemDecimal(row,'billamt')/(100+ll_incrate)*ll_incrate) */ } else if(colname==L"DeduceAmount" || colname==L"OverAmount") { double dAmt = dw_1.GetItemDouble(row,L"DeduceAmount"); double oAmt = dw_1.GetItemDouble(row,L"OverAmount"); double nAmt = dw_1.GetItemDouble(row,L"NAmount"); dw_1.SetItemDouble(row,L"VATBillAmount",nAmt + oAmt - dAmt); RecalcVatAmt(row); dw_1.Redraw(); } return 1; } int OnItemChangedTwo(TEvent* evt, LPARAM p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; xstring colname=hdr.colname; xstring value = hdr.data; if (colname == L"RefundAmount") { double RefundAmount2 = dw_2.GetItemDouble(hdr.row,L"RefundAmount"); dw_2.SetItemDouble(hdr.row,L"TaxfundAmount", xdouble((RefundAmount2)).round(2)); } double RefundAmount= dw_2.GetItemDouble(hdr.row,L"RefundAmount"); double TaxfundAmount1 = dw_2.GetItemDouble(hdr.row,L"TaxfundAmount"); //trace(L"RefundAmount+=+++L"+RefundAmount.toString()+L"====TaxfundAmount1+++L"+TaxfundAmount1.toString()); if(TaxfundAmount1 ==0.00) { dw_2.SetItemDouble(hdr.row,L"TaxfundAmount", xdouble((RefundAmount)).round(2)); } if (colname == L"TaxfundAmount" || colname == L"AlreadyRefundAmount" || colname == L"RefundAmount") { double TaxfundAmount = dw_2.GetItemDouble(hdr.row,L"TaxfundAmount"); double AlreadyRefundAmount = dw_2.GetItemDouble(hdr.row,L"AlreadyRefundAmount"); dw_2.SetItemDouble(hdr.row,L"NotRefundAmount", xdouble((TaxfundAmount - AlreadyRefundAmount)).round(2)); } return 1; } //ÃüÁî´¦Àíʼþ int OnXCommand(TEvent* evt, LPARAM param) { return OnCmdDispatch(evt->xcommand.pStrID); } int OnAttachEvent() { //°ó¶¨¹¤¾ßÌõµã»÷ʼþ AttachEvent(L"WM_XCOMMAND", (FEvent)&VATInvoiceNew::OnXCommand); //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ AttachEvent(L"WM_SETFOCUS", (FEvent)&VATInvoiceNew::OnSetFocus); AttachEvent(L"dw_1",L"DWV_DOUBLECLICKED", (FEvent)&VATInvoiceNew::OnDoubleClicked);//ÐÐË«»÷ AttachEvent(L"dw_1",L"DWV_ITEMCHANGED", (FEvent)&VATInvoiceNew::OnItemChanged); AttachEvent(L"dw_2",L"DWV_ITEMCHANGED", (FEvent)&VATInvoiceNew::OnItemChangedTwo); AttachEvent(L"tab_1", L"LYSN_SELECTEDSHEET", (FEvent)&VATInvoiceNew::OnTabSelectedSheet); return 1; } int OnRetrieve() { xml x; xaserverarg arg; arg.AddArg(L"QueryTxt",xcontrol(GetControl(L"sle_search")).GetText()); arg.AddArg(L"QueryArg",L""); if (getUrl(L"/sale/data/VATNotify/list/novatinvoice",arg.GetString(),x)!=1) { trace(x.text()); return -1; }else { //alert(x.GetXml()); dw_1.Retrieve(x); dw_1.Redraw(); } return 1; } int onload() { m_layer = GetControl(L"tab_1"); dw_1 = GetControl(L"dw_1"); dw_1.openUrl(L"/sale/view/VATNotify/template/VATInvoice/ImportList1"); dw_1.SetColumnState(L"GRNDate",false); dw_1.SetColumnState(L"NSupplierID",false); dw_2 = GetControl(L"dw_2"); dw_2.openUrl(L"/sale/view/VATNotify/template/VATInvoice/ImportList2"); dw_2.SetColumnState(L"GRNDate",false); dw_2.SetColumnState(L"NSupplierID",false); xml x; xaserverarg arg = GetArg(); if(arg) { xstring InvoiceNo = arg.GetArgString(L"InvoiceNo"); x = ViewObject::RetrieveData(L"/sale/data/VATNotify/list/novatinvoice",L"QueryTxt",InvoiceNo,L"QueryArg",L""); if(x)dw_1.Retrieve(x); } OnAttachEvent(); //OnRetrieve(); return 1; } int onloaded() { //SetAgent(); return 1; } };