From a21121b4ad92f88af51fbf4ab9e1011f2789ff83 Mon Sep 17 00:00:00 2001 From: LiFan <2308045698@qq.com> Date: 星期五, 19 七月 2024 18:34:49 +0800 Subject: [PATCH] update --- jrj/project/business/VATNotify/maint.vatinvoice..cpp | 400 ++++++++++++++ jrj/project/business/VATNotify/del.vatinvoice.cpp | 180 ++++++ jrj/project/business/VATNotify/list.vatinvoice.cpp | 329 ++++++++++++ jrj/project/business/VATNotify/maint.vatinvoiceEx.cpp | 139 +++++ jrj/project/business/VATNotify/VATInvoiceNew.cpp | 529 +++++++++++++++++++ jrj/ext-jrj/ext-jrj.vcxproj | 5 jrj/ext-jrj/ext-jrj.vcxproj.filters | 21 7 files changed, 1,603 insertions(+), 0 deletions(-) diff --git a/jrj/ext-jrj/ext-jrj.vcxproj b/jrj/ext-jrj/ext-jrj.vcxproj index 6827c10..4cb8fbc 100644 --- a/jrj/ext-jrj/ext-jrj.vcxproj +++ b/jrj/ext-jrj/ext-jrj.vcxproj @@ -942,18 +942,23 @@ <ClCompile Include="..\project\business\SystemSettings\view.assignadjust.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> </ClCompile> + <ClCompile Include="..\project\business\VATNotify\del.vatinvoice.cpp" /> + <ClCompile Include="..\project\business\VATNotify\list.vatinvoice.cpp" /> <ClCompile Include="..\project\business\VATNotify\list.vatnotify.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> </ClCompile> <ClCompile Include="..\project\business\VATNotify\maint.papercard.vatnotify.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> </ClCompile> + <ClCompile Include="..\project\business\VATNotify\maint.vatinvoice..cpp" /> + <ClCompile Include="..\project\business\VATNotify\maint.vatinvoiceEx.cpp" /> <ClCompile Include="..\project\business\VATNotify\simple.maint.vatnotify.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> </ClCompile> <ClCompile Include="..\project\business\VATNotify\update.vatnotify.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> </ClCompile> + <ClCompile Include="..\project\business\VATNotify\VATInvoiceNew.cpp" /> <ClCompile Include="..\project\business\VATNotify\VATNotifyParse.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> </ClCompile> diff --git a/jrj/ext-jrj/ext-jrj.vcxproj.filters b/jrj/ext-jrj/ext-jrj.vcxproj.filters index cdd5789..be47a63 100644 --- a/jrj/ext-jrj/ext-jrj.vcxproj.filters +++ b/jrj/ext-jrj/ext-jrj.vcxproj.filters @@ -1139,5 +1139,26 @@ <ClCompile Include="..\project\business\PO\PO.maint.item.line.cpp"> <Filter>project\business\PO</Filter> </ClCompile> + <ClCompile Include="..\project\business\VATNotify\del.vatinvoice.cpp"> + <Filter>project\business\VATNotify</Filter> + </ClCompile> + <ClCompile Include="..\project\business\VATNotify\list.vatinvoice.cpp"> + <Filter>project\business\VATNotify</Filter> + </ClCompile> + <ClCompile Include="..\project\business\VATNotify\maint.vatinvoice..cpp"> + <Filter>project\business\VATNotify</Filter> + </ClCompile> + <ClCompile Include="..\project\business\VATNotify\maint.vatinvoiceEx.cpp"> + <Filter>project\business\VATNotify</Filter> + </ClCompile> + <ClCompile Include="..\project\business\VATNotify\VATInvoiceNew.cpp"> + <Filter>project\business\VATNotify</Filter> + </ClCompile> + <ClCompile Include="..\project\business\AP\list.RefundGDNLine.Entity.xarch.cpp"> + <Filter>project\business\AP</Filter> + </ClCompile> + <ClCompile Include="..\project\business\AP\list.RefundSourcingLine.Entity.xarch.cpp"> + <Filter>project\business\AP</Filter> + </ClCompile> </ItemGroup> </Project> \ No newline at end of file diff --git a/jrj/project/business/VATNotify/VATInvoiceNew.cpp b/jrj/project/business/VATNotify/VATInvoiceNew.cpp new file mode 100644 index 0000000..0bf8ddc --- /dev/null +++ b/jrj/project/business/VATNotify/VATInvoiceNew.cpp @@ -0,0 +1,529 @@ +#include <wobject/xstring.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <wobject/xdouble.hpp> +#include <xcontrol/xlayersheet.hpp> + +#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 = new xml; + + x0.loadXML(L"<data/>"); + + KXMLDOMNodeList t = x.selectNodes(L"data/Item[@update.modify]"); + KXMLDOMElement e1= x0.documentElement(); + int len = t.length(); + for(int i=0;i<len;i++) + { + e1.appendChild(t.item(i)); + } + arg.AddArg(L"content",x0.xml()); + + + if(xurl::get(L"/sale/data/VATNotify/base/update", arg.GetString(),x0)!=1) + { + error = x0.text(); + alert(L"err:"+error); + return 1; + } + str = x0.documentElement().getAttribute(L"text"); + if(str != L"true") + { + alert(L"保存失败!"); + return 1; + } + + dw_2.DwUpdateAllToEx(x); + arg.AddArg(L"content",x.xml()); + + + if(xurl::get(L"/sale/data/VATNotify/vatinvoice/update", arg.GetString(),x)!=1) + { + error = x.text(); + alert(L"err:"+error); + return 1; + } + str = x.documentElement().getAttribute(L"text"); + if(str != L"true") + { + alert(L"保存失败!"); + return 1; + } + + dw_1.ResetUpdateStatus(); + dw_2.ResetUpdateStatus(); + + if(!continueAdd) + { + alert(L"保存成功!"); + CloseWindow(); + } + else + { + ResetDataForContinue(); + m_layer.SelectSheet(0); + } + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + int index; + if (comdid==L"xmPrev") + { + index = m_layer.GetSheetIndex(); + index --; + m_layer.SelectSheet(index); + } + else if (comdid==L"xmNext") + { + index = m_layer.GetSheetIndex(); + index ++; + m_layer.SelectSheet(index); + } + else if(comdid==L"xmCancel") + { + CloseWindow(); + return 1; + } + else if(comdid==L"xmOk") + { + return OnSave(false); + } + else if(comdid==L"xmOkEx") + { + return OnSave(true); + } + else if(comdid==L"xmQuery") + { + OnRetrieve(); + return 1; + } + return 0; + } + + int RecalcVatAmt(int row) + { + double VatRate = dw_1.GetItemDouble(row,L"VATRate"); + if((int)(VatRate*100) < 1) VatRate = 13.0; + double VATRefundRate = dw_1.GetItemDouble(row,L"VATRefundRate"); + double billAmt = dw_1.GetItemDouble(row,L"VATBillAmount"); + double VatAmt = billAmt /(100.0+VatRate)*VatRate; + double VATRefundAmt = billAmt /(100.0+VatRate)*VATRefundRate; + dw_1.SetItemDouble(row,L"VATAmount",VatAmt); + dw_1.SetItemDouble(row,L"RefundAmount",VATRefundAmt); + dw_1.SetItemDouble(row,L"NetAmount",billAmt - VatAmt); + return 1; + } + + int OnItemChanged(TEvent* evt, LPARAM p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.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")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")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"<arg/>"); + 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"<arg/>"); + if(x)dw_1.Retrieve(x); + } + OnAttachEvent(); + //OnRetrieve(); + + + return 1; + } + + int onloaded() + { + //SetAgent(); + + + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/business/VATNotify/del.vatinvoice.cpp b/jrj/project/business/VATNotify/del.vatinvoice.cpp new file mode 100644 index 0000000..4fb524d --- /dev/null +++ b/jrj/project/business/VATNotify/del.vatinvoice.cpp @@ -0,0 +1,180 @@ +#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) DelVATInvoice : public xframe + { + public: + xdwgrid dw_list; + xcombobox cbx_type; + xdwtable dw_arg; + xnode m_agentNode; //Agent Condition + public: + DelVATInvoice(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static DelVATInvoice* CreateInstance(void* implPtr, void* hWnd) + { + DelVATInvoice* pWin = new DelVATInvoice(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 OnDoubleClicked(TEvent* evt, LPARAM p) + { + return OnCmdDispatch(L"xmModifyRow"); + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + + if(comdid==L"xmSaveAs") + { + dw_list.SaveAs(L""); + return 1; + } + else if(comdid==L"xmModifyRow" ) + { + int row2 = dw_list.GetRow(); + xstring VatInvoiceID = dw_list.GetItemString(row2,L"VATInvoiceID"); + + xaserverarg arg ; + + arg.AddArg(L"VatInvoiceID",VatInvoiceID); + OpenWindow(L"dev:xpage[maint.vatinvoiceEx.vx]",arg ); + return 1; + } + else if(comdid==L"xmRetrieve") + { + OnRetrieve(); + return 1; + } + else if(comdid==L"xmRecovery") + { + int row = dw_list.GetRow(); + xstring VATInvoiceID = dw_list.GetItemString(row,L"VATInvoiceID"); + alert(VATInvoiceID); + int MB_OKCANCEL = 1; + int IDOK = 1; + int ret = MessageBox(GetHWND(),L"确认恢复?",L"提示",MB_OKCANCEL); + if(ret == IDOK) + { + ViewObject::RetrieveData(L"/sale/data/VATNotify/DeleteRecovery",L"VATInvoiceID",VATInvoiceID); + OnRetrieve(); + } + return 1; + } + + return 0; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&DelVATInvoice::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&DelVATInvoice::OnSetFocus); + AttachEvent(L"dw_list",L"DWV_DOUBLECLICKED", (FEvent)&DelVATInvoice::OnDoubleClicked);//行双击 + return 1; + } + + + + + xstring GetQueryArg() + { + dw_arg.AcceptText(); + xml x ; + + dw_arg.DwUpdateAllTo(x); + return x.xml(); + } + + int OnRetrieve() + { + HCURSOR hCursor = xutil::SetCursorWait(); + xml x ; + + xaserverarg arg ; + + arg.AddArg(L"QueryTxt",xcontrol( GetControl(L"sle_search")).GetText()); + arg.AddArg(L"QueryArg",GetQueryArg()); + //alert(arg.GetString()); + if (getUrl(L"/sale/data/VATNotify/list/vatinvoiceEx",arg.GetString(),x)!=1) + { + + xutil::RestoreCursor(hCursor); + return -1; + }else + { + dw_list.Retrieve(x); + dw_list.Redraw(); + } + xutil::RestoreCursor(hCursor); + return 1; + } + + + int onload() + { + dw_list = GetControl(L"dw_list"); + dw_list.openUrl(L"/sale/view/VATNotify/template/VATInvoice/list"); + dw_list.SetColumnState(L"VATInvoiceID",false); + dw_list.SetColumnState(L"GRNDate",false); + 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"本月"); + OnAttachEvent(); + OnRetrieve(); + return 1; + } + + int onloaded() + { + SetAgent(); + + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/business/VATNotify/list.vatinvoice.cpp b/jrj/project/business/VATNotify/list.vatinvoice.cpp new file mode 100644 index 0000000..2051d98 --- /dev/null +++ b/jrj/project/business/VATNotify/list.vatinvoice.cpp @@ -0,0 +1,329 @@ +#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) ListVATInvoice : public xframe + { + public: + xdwgrid dw_list; + xcombobox cbx_type; + xdwtable dw_arg; + xnode m_agentNode; //Agent Condition + + xstring DatePicker; + public: + ListVATInvoice(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static ListVATInvoice* CreateInstance(void* implPtr, void* hWnd) + { + ListVATInvoice* pWin = new ListVATInvoice(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; + } + + xstring GetEntityName(int pr) + { + return L"VATInvoice3"; + } + + xstring GetEntityIDName(int /*param*/ pr) + { + return L"VTAInvoiceID"; + } + + xstring GetEntityID(int /*param*/ pr) + { + return dw_list.GetItemString(dw_list.GetRow(),L"VATInvoiceID"); + } + + int ViewUpdate(int pr,xstring updateItem,xaserverarg arg) + { + if( updateItem==L"del") + { + int DelRow = dw_list.GetRow(); + dw_list.DeleteRow(DelRow); + return 1; + } + return 1; + } + + int OnAnalysis() + { + HCURSOR hCursor = xutil::SetCursorWait(); + xstring str = dw_list.DataAnalysis(L""); + xaserverarg arg; + + arg.AddArg(L"html", str); + + OpenWindow(L"dev:xpage[data.vanalysis.vx]",arg); + xutil::RestoreCursor(hCursor); + return 1; + } + + int OnCombboChanged(TEvent* evt, int p) + { + xstring id = L""; + xstring name = L""; + int h = xcombobox::GetCurSel(evt->command.hCtrl); + if(h > -1) + { + xstring txt = xcombobox::GetLBText(evt->command.hCtrl, h); + if(txt==L"增值税票") + { + dw_list.openUrl(L"/sale/view/VATNotify/template/VATInvoice/list"); + dw_list.SetColumnState(L"VATInvoiceID",false); + dw_list.SetColumnState(L"GRNDate",false); + OnRetrieve(DatePicker); + } + else if(txt==L"未开增值税票") + { + dw_list.openUrl(L"/sale/view/VATNotify/template/VATNotify/ListNoVATInvoice"); + OnRetrieveEx(); + } + else if(txt==L"增值税票商品") + { + dw_list.openUrl(L"/sale/view/VATNotify/template/VATInvoice/list1"); + dw_list.SetColumnState(L"VATInvoiceID",false); + OnRetrieveEx1(); + } + } + return 1; + } + + int OnDoubleClicked(TEvent* evt, int p) + { + return OnCmdDispatch(L"xmModifyRow"); + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + if(comdid==L"xmAnalysis") return OnAnalysis(); + if(comdid==L"xmAddRow") + { + OpenWindow(L"dev:xpage[VATInvoiceNew.vx]"); + return 1; + } + else if(comdid==L"xmModifyRow" ) + { + if(xcontrol(GetControl(L"cbx_type")).GetText() ==L"未开增值税票" ) return 1; + int row = dw_list.GetRow(); + xaserverarg arg; + xstring VatInvoiceID = dw_list.GetItemString(row,L"VATInvoiceID"); + OpenWindow(L"dev:xpage[maint.vatinvoice.vx]", arg); + return 1; + } + else if(comdid==L"xmSaveAs") + { + dw_list.SaveAs(L""); + return 1; + } + else if(comdid==L"xmRetrieve" || comdid==L"xmSearch" ) + { + if(xcontrol(GetControl(L"cbx_type")).GetText() ==L"未开增值税票") + { + OnRetrieveEx(); + } + else if(xcontrol(GetControl(L"cbx_type")).GetText() ==L"增值税票商品") + { + OnRetrieveEx1(); + } + else + OnRetrieve(DatePicker); + return 1; + } + else if(comdid.find(L"action:",0)>=0) + { + ProcessFlowAction(comdid,1); + } + else if(comdid==L"DeletedOne") + { + OpenWindow(L"dev:xpage[del.vatinvoice.vx]"); + return 1; + } + + + return 0; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&ListVATInvoice::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&ListVATInvoice::OnSetFocus); + AttachEvent(L"dw_list",L"DWV_DOUBLECLICKED", (FEvent)&ListVATInvoice::OnDoubleClicked);//行双击 + AttachEvent(L"cbx_type",L"CBN_SELCHANGE", (FEvent)&ListVATInvoice::OnCombboChanged);//属性组切换list中列的数量变化 + AttachEvent(L"cbx_state",L"CBN_SELCHANGE", (FEvent)&ListVATInvoice::OnDatePicker); + return 1; + } + + int OnDatePicker(TEvent* evt, int lParam) + { + + int h = xcombobox::GetCurSel(evt->command.hCtrl); + if(h > -1) + { + xstring txt = xcombobox::GetLBText(evt->command.hCtrl, h); + if(txt==L"出运日期") + { + + DatePicker=L"ETD"; + OnRetrieve(DatePicker); + } + else if(txt==L"开票日期") + { + + DatePicker=L"VATDate"; + OnRetrieve(DatePicker); + } + } + return 1; + } + + int OnRetrieveEx1() + { + HCURSOR hCursor = xutil::SetCursorWait(); + xml x ; + + xaserverarg arg ; + + arg.AddArg(L"QueryTxt",xcontrol(GetControl(L"sle_search")).GetText()); + arg.AddArg(L"QueryArg",GetQueryArg()); + if (getUrl(L"/sale/data/VATNotify/list/novatinvoice1",arg.GetString(),x)!=1) + { + + xutil::RestoreCursor(hCursor); + return -1; + }else + { + dw_list.Retrieve(x); + dw_list.Redraw(); + } + dw_list.SetReadOnly(true); + xutil::RestoreCursor(hCursor); + return 1; + } + + int OnRetrieveEx() + { + HCURSOR hCursor = xutil::SetCursorWait(); + xml x ; + + xaserverarg arg ; + + arg.AddArg(L"QueryTxt",xcontrol(GetControl(L"sle_search")).GetText()); + arg.AddArg(L"QueryArg",GetQueryArg()); + if (getUrl(L"/sale/data/VATNotify/list/novatinvoice",arg.GetString(),x)!=1) + { + + xutil::RestoreCursor(hCursor); + return -1; + }else + { + dw_list.Retrieve(x); + dw_list.Redraw(); + } + dw_list.SetReadOnly(true); + xutil::RestoreCursor(hCursor); + 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.setNativePointer(arg.CreateInstance()); + arg.AddArg(L"QueryTxt",xcontrol(GetControl(L"sle_search")).GetText()); + arg.AddArg(L"QueryArg",GetQueryArg()); + arg.AddArg(L"DatePicker",DatePicker); + //alert(arg.GetString()); + if (getUrl(L"/sale/data/VATNotify/list/vatinvoice",arg.GetString(),x)!=1) + { + + xutil::RestoreCursor(hCursor); + return -1; + }else + { + dw_list.Retrieve(x); + dw_list.Redraw(); + } + xutil::RestoreCursor(hCursor); + return 1; + } + + + int onload() + { + dw_list = GetControl(L"dw_list"); + dw_list.openUrl(L"/sale/view/VATNotify/template/VATInvoice/list"); + dw_list.SetColumnState(L"VATInvoiceID",false); + dw_list.SetColumnState(L"GRNDate",false); + 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"本月"); + OnAttachEvent(); + OnRetrieve(DatePicker); + return 1; + } + + int onloaded() + { + SetAgent(); + + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/business/VATNotify/maint.vatinvoice..cpp b/jrj/project/business/VATNotify/maint.vatinvoice..cpp new file mode 100644 index 0000000..a72a604 --- /dev/null +++ b/jrj/project/business/VATNotify/maint.vatinvoice..cpp @@ -0,0 +1,400 @@ +#include <wobject/xstring.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <wobject/xdouble.hpp> + +#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" +#include "viewobject/view.base.hpp" + +using xml = KXMLDOMDocument; + class __declspec(dllexport) MaintVATInvoice : public xframe + { + public: + xdwgrid dw_list; + xdwtable dw_base; + xstring VATInvoiceID; + xnode m_agentNode; //Agent Condition + public: + MaintVATInvoice(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static MaintVATInvoice* CreateInstance(void* implPtr, void* hWnd) + { + MaintVATInvoice* pWin = new MaintVATInvoice(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 OnSave() + { + dw_list.AcceptText(); + xstring error; + xstring str; + xml x ; + xaserverarg arg ; + + + + + dw_list.DwUpdateAllToEx(x); + xml x0 ; + + x0.loadXML(L"<data/>"); + + KXMLDOMNodeList t = x.selectNodes(L"data/Item[@update.modify]"); + KXMLDOMElement e1= x0.documentElement(); + int len = t.length(); + for(int i=0;i<len;i++) + { + e1.appendChild(t.item(i)); + } + arg.AddArg(L"content",x0.xml()); + + if(xurl::get(L"/sale/data/VATNotify/base/update", arg.GetString(),x0)!=1) + { + error = x0.text(); + alert(L"err:"+error); + return 1; + } + str = x0.documentElement().getAttribute(L"text"); + if(str != L"true") + { + alert(L"保存失败!"); + return 1; + } + + dw_base.AcceptText(); + xml x1 ; + + dw_base.DwUpdateAllTo(x1); + + arg.AddArg(L"content",x1.xml()); + if(xurl::get(L"/sale/data/VATNotify/vatinvoice/update", arg.GetString(),x1)!=1) + { + error = x1.text(); + alert(L"err:"+error); + return 1; + } + str = x1.documentElement().getAttribute(L"text"); + if(str != L"true") + { + alert(L"保存失败!"); + return 1; + } + + dw_list.ResetUpdateStatus(); + dw_base.ResetUpdateStatus(); + + alert(L"保存成功!"); + CloseWindow(); + return 1; + } + + int RecalcVatAmt(int row) + { + double VatRate = dw_list.GetItemDouble(row,L"VATRate"); + if((int)(VatRate*100) < 1) VatRate = 17.0; + double VATRefundRate = dw_list.GetItemDouble(row,L"VATRefundRate"); + double billAmt = dw_list.GetItemDouble(row,L"VATBillAmount"); + double VatAmt = billAmt /(100.0+VatRate)*VatRate; + double VATRefundAmt = billAmt /(100.0+VatRate)*VATRefundRate; + dw_list.SetItemDouble(row,L"VATAmount",VatAmt); + dw_list.SetItemDouble(row,L"RefundAmount",VATRefundAmt); + dw_list.SetItemDouble(row,L"NetAmount",billAmt - VatAmt); + + return 1; + } + + //合计 + int SUMRecalcVatAmt() + { + double VATBillAmountEx=0; + double DeduceAmountEx=0; + double GoodsAmountEx=0; + double OverAmountEx=0; + double RefundAmountEx=0; + double VATAmountEx=0; + for(int i = 1;i <=dw_list.GetRowCount(); ++i) + { + double VATBillAmount=dw_list.GetItemDouble(i,L"VATBillAmount"); + VATBillAmountEx+=VATBillAmount; + double DeduceAmount=dw_list.GetItemDouble(i,L"DeduceAmount"); + DeduceAmountEx+=DeduceAmount; + double NetAmount=dw_list.GetItemDouble(i,L"NetAmount"); + GoodsAmountEx+=NetAmount; + double OverAmount=dw_list.GetItemDouble(i,L"OverAmount"); + OverAmountEx+=OverAmount; + double RefundAmount=dw_list.GetItemDouble(i,L"RefundAmount"); + RefundAmountEx+=RefundAmount; + double VATAmount=dw_list.GetItemDouble(i,L"VATAmount"); + VATAmountEx+=VATAmount; + + } + dw_base.SetItemDouble(1,L"VATBillAmount",VATBillAmountEx); + dw_base.SetItemDouble(1,L"DeduceAmount",DeduceAmountEx); + dw_base.SetItemDouble(1,L"GoodsAmount",GoodsAmountEx); + dw_base.SetItemDouble(1,L"OverAmount",OverAmountEx); + dw_base.SetItemDouble(1,L"RefundAmount",RefundAmountEx); + dw_base.SetItemDouble(1,L"VATAmount",VATAmountEx); + + dw_base.Redraw(); + return 1; + } + + int OnItemChanged(TEvent* evt, LPARAM p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.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_list.GetItemDouble(row,L"VATAmount"); + double billAmtt= dw_list.GetItemDouble(row,L"VATBillAmount"); + + double v4= billAmtt - VATAmount; + int v5=(int)VATAmount; + if(v5>=0){ + dw_list.SetItemDouble(row,L"NetAmount",v4); + dw_list.Redraw(); + + dw_base.SetItemDouble(1,L"GoodsAmount",v4); + dw_base.SetItemDouble(1,L"VATAmount",VATAmount); + dw_base.Redraw(); + + } + SUMRecalcVatAmt(); + } + else if(colname==L"RefundAmount") + { + double RefundAmountt=dw_list.GetItemDouble(row,L"RefundAmount"); + //dw_base.SetItemDouble(1,L"RefundAmount",RefundAmountt); + //dw_base.Redraw(); + SUMRecalcVatAmt(); + } + else if(colname==L"VATBillAmount") + { + RecalcVatAmt(row); + + if(value==L"" || value==L"0.00") + { + dw_list.SetItemString(row,L"OverAmount",L""); + dw_list.SetItemString(row,L"DeduceAmount",L""); + }else + { + double NAmount = dw_list.GetItemDouble(row,L"NAmount"); + double billAmt = dw_list.GetItemDouble(row,L"VATBillAmount");//开票金额 + double VATAmount1=dw_list.GetItemDouble(row,L"VATAmount"); //增值税额 + double oAmt1 = dw_list.GetItemDouble(row,L"OverAmount");//多开金额 + double RefundAmount = dw_list.GetItemDouble(row,L"RefundAmount"); + double dAmt1 = dw_list.GetItemDouble(row,L"DeduceAmount");//扣款金额 + double Amt = NAmount - billAmt ; + int v1 = (int)Amt; + int v2 = (billAmt - NAmount); + if(v2 < 0) v2 = - v2; + if(v1 <0 || v2<49 ) + { + dw_list.SetItemDouble(row,L"OverAmount",billAmt - NAmount); + dw_list.SetItemDouble(row,L"DeduceAmount",0.0); + /*dw_base.SetItemDouble(1,L"GoodsAmount",billAmt - VATAmount1); + dw_base.SetItemDouble(1,L"VATAmount",VATAmount1); + dw_base.SetItemDouble(1,L"VATBillAmount",billAmt); + dw_base.SetItemDouble(1,L"DeduceAmount",0.0); + dw_base.SetItemDouble(1,L"OverAmount",billAmt - NAmount); + dw_base.SetItemDouble(1,L"RefundAmount",RefundAmount);*/ + } + else + { + dw_list.SetItemDouble(row,L"OverAmount",0.0); + dw_list.SetItemDouble(row,L"DeduceAmount", NAmount - billAmt); + /*dw_base.SetItemDouble(1,L"GoodsAmount",billAmt - VATAmount1); + dw_base.SetItemDouble(1,L"VATAmount",VATAmount1); + dw_base.SetItemDouble(1,L"VATBillAmount",billAmt); + dw_base.SetItemDouble(1,L"DeduceAmount",NAmount - billAmt); + dw_base.SetItemDouble(1,L"OverAmount",0.0); + dw_base.SetItemDouble(1,L"RefundAmount",RefundAmount);*/ + } + + } + SUMRecalcVatAmt(); + dw_list.Redraw(); + } + else if(colname==L"DeduceAmount" || colname==L"OverAmount") + { + double dAmt = dw_list.GetItemDouble(row,L"DeduceAmount"); + double oAmt = dw_list.GetItemDouble(row,L"OverAmount"); + double nAmt = dw_list.GetItemDouble(row,L"NAmount"); + double VatRate = dw_list.GetItemDouble(row,L"VATRate"); + if((int)(VatRate*100) < 1) VatRate = 17.0; + double VatAmt = (nAmt + oAmt - dAmt)/(100.0+VatRate)*VatRate; //增值税额 + dw_list.SetItemDouble(row,L"VATBillAmount",nAmt + oAmt - dAmt); + /*if(oAmt>0){ + dw_base.SetItemDouble(1,L"GoodsAmount",nAmt + oAmt - dAmt - VatAmt); + dw_base.SetItemDouble(1,L"VATAmount",VatAmt); + dw_base.SetItemDouble(1,L"VATBillAmount",nAmt + oAmt - dAmt); + dw_base.SetItemDouble(1,L"OverAmount",oAmt); + }*/ + RecalcVatAmt(row); + SUMRecalcVatAmt(); + dw_list.Redraw(); + } + + return 1; + } + + + + //焦点激活处理函数 + int OnSetFocus(TEvent* evt, LPARAM param) + { + //重置工具条 + SetAgent(); + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + if(comdid==L"xmClose") + { + CloseWindow(); + return 1; + }else if(comdid==L"xmSave") + { + return OnSave(); + } + return 0; + } + + + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + 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_base.GetItemDouble(hdr.row,L"RefundAmount"); + dw_base.SetItemDouble(hdr.row,L"TaxfundAmount", xdouble((RefundAmount2)).round(2)); + } + + double RefundAmount= dw_base.GetItemDouble(hdr.row,L"RefundAmount"); + double TaxfundAmount1 = dw_base.GetItemDouble(hdr.row,L"TaxfundAmount"); + if(TaxfundAmount1 ==0.00) + { + dw_base.SetItemDouble(hdr.row,L"TaxfundAmount", xdouble((RefundAmount)).round(2)); + } + if (colname == L"TaxfundAmount" || colname == L"AlreadyRefundAmount" || colname == L"RefundAmount") + { + double TaxfundAmount = dw_base.GetItemDouble(hdr.row,L"TaxfundAmount"); + double AlreadyRefundAmount = dw_base.GetItemDouble(hdr.row,L"AlreadyRefundAmount"); + dw_base.SetItemDouble(hdr.row,L"NotRefundAmount", xdouble((TaxfundAmount - AlreadyRefundAmount)).round(2)); + } + return 1; + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&MaintVATInvoice::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&MaintVATInvoice::OnSetFocus); + AttachEvent(L"dw_list",L"DWV_ITEMCHANGED", (FEvent)&MaintVATInvoice::OnItemChanged); + AttachEvent(L"dw_base",L"DWV_ITEMCHANGED", (FEvent)&MaintVATInvoice::OnItemChangedTwo); + return 1; + } + + + int OnRetrieve() + { + xml x ; + + xaserverarg arg = GetArg(); + + arg.AddArg(L"VATInvoiceID",VATInvoiceID); + if (getUrl(L"/sale/data/VATNotify/vatinvoice/base",arg.GetString(),x)!=1) + { + trace(x.text()); + return -1; + }else + { + dw_base.Retrieve(x); + dw_base.Redraw(); + } + + if (getUrl(L"/sale/data/VATNotify/vatinvoice/item",arg.GetString(),x)!=1) + { + trace(x.text()); + return -1; + }else + { + dw_list.Retrieve(x); + dw_list.Redraw(); + } + + return 1; + } + + + int onload() + { + SetArg(); + dw_list = GetControl(L"dw_list"); + dw_list.openUrl(L"/sale/view/VATNotify/template/VATInvoice/item"); + + dw_base = GetControl(L"dw_base"); + dw_base.openUrl(L"/sale/view/VATNotify/template/VATInvoice/base"); + + + + VATInvoiceID = L""; + + + if (GetWinParam()) + { + xaserverarg arg = GetArg(); + VATInvoiceID = arg.GetArgString(L"VATInvoiceID"); + } + + + OnAttachEvent(); + + if(VATInvoiceID !=L"") OnRetrieve(); + + return 1; + } + + int onloaded() + { + SetAgent(); + + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/business/VATNotify/maint.vatinvoiceEx.cpp b/jrj/project/business/VATNotify/maint.vatinvoiceEx.cpp new file mode 100644 index 0000000..a2b3fd3 --- /dev/null +++ b/jrj/project/business/VATNotify/maint.vatinvoiceEx.cpp @@ -0,0 +1,139 @@ +#include <wobject/xstring.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <wobject/xdouble.hpp> + +#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" +#include "viewobject/view.base.hpp" + +using xml = KXMLDOMDocument; + class __declspec(dllexport) MaintVATInvoiceEx : public xframe + { + public: + xdwgrid dw_list; + xdwtable dw_base; + xnode m_agentNode; //Agent Condition + public: + MaintVATInvoiceEx(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static MaintVATInvoiceEx* CreateInstance(void* implPtr, void* hWnd) + { + MaintVATInvoiceEx* pWin = new MaintVATInvoiceEx(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 OnCmdDispatch(xstring comdid) + { + if(comdid==L"xmClose") + { + CloseWindow(); + return 1; + } + return 0; + } + + + + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&MaintVATInvoiceEx::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&MaintVATInvoiceEx::OnSetFocus); + return 1; + } + + + int OnRetrieve(xstring VATInvoiceID) + { + xml x ; + + xaserverarg arg ; + + arg.AddArg(L"VATInvoiceID",VATInvoiceID); + if (getUrl(L"/sale/data/VATNotify/vatinvoice/baseEx",arg.GetString(),x)!=1) + { + trace(x.text()); + return -1; + }else + { + dw_base.Retrieve(x); + dw_base.Redraw(); + } + + if (getUrl(L"/sale/data/VATNotify/vatinvoice/itemEx",arg.GetString(),x)!=1) + { + trace(x.text()); + return -1; + }else + { + dw_list.Retrieve(x); + dw_list.Redraw(); + } + + return 1; + } + + + int onload() + { + SetArg(); + dw_list = GetControl(L"dw_list"); + dw_list.openUrl(L"/sale/view/VATNotify/template/VATInvoice/item"); + + dw_base = GetControl(L"dw_base"); + dw_base.openUrl(L"/sale/view/VATNotify/template/VATInvoice/base"); + + + xaserverarg arg = GetArg(); + xstring VATInvoiceID = arg.GetArgString(L"VatInvoiceID"); + OnRetrieve(VATInvoiceID); + OnAttachEvent(); + + return 1; + } + + int onloaded() + { + SetAgent(); + + return 1; + } + }; \ No newline at end of file -- Gitblit v1.9.3