| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941 |
- #include "../pch/pch.h"
- #include "CShoukuanPageUI.h"
- #include "../control/ControlEx.h"
- #include "../wnd/CWeixinzhifuShoukuanWnd.h"
- #include "../wnd/CHuiyuanShoukuanWnd.h"
- #include "../wnd/CXianjinShoukuanWnd.h"
- #include "../wnd/CFulikaShoukuanWnd.h"
- #include "../wnd/CZidingyiShoukuanWnd.h"
- #include "../wnd/CMainWnd.h"
- #include "../print/CPosPrinter.h"
- CShoukuanPageUI::CShoukuanPageUI()
- {
- }
- CShoukuanPageUI::~CShoukuanPageUI()
- {
- }
- //初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
- void CShoukuanPageUI::InitShow()
- {
- InitMoney();
- UpdateJiesuanInfo();
- if (m_is_zidingyizhifu_init == false)
- {
- //初始化结算页面的支付方式
- this->InitJiesuanZhifu();
- m_is_zidingyizhifu_init = true;
- }
- //更新结算按钮位置
- UpdateJiesuanZhifuPos();
- }
- //处理按钮点击类事件
- void CShoukuanPageUI::HandleClickMsg(TNotifyUI& msg)
- {
- CDuiString senderName = msg.pSender->GetName();
- if (senderName == L"jianpan_1")
- {
- CEditUI* pContent = static_cast<CEditUI*>(this->FindSubControl(_T("shoukuan_page_money_edit")));
- wstring wsReason = pContent->GetText();
- wsReason = CLewaimaiString::ShuziInputFormat(wsReason, L"1");
- pContent->SetText(wsReason.c_str());
- pContent->SetFocus();
- UpdateJiesuanInfo();
- }
- else if (senderName == L"jianpan_2")
- {
- CEditUI* pContent = static_cast<CEditUI*>(this->FindSubControl(_T("shoukuan_page_money_edit")));
- wstring wsReason = pContent->GetText();
- wsReason = CLewaimaiString::ShuziInputFormat(wsReason, L"2");
- pContent->SetText(wsReason.c_str());
- pContent->SetFocus();
- UpdateJiesuanInfo();
- }
- else if (senderName == L"jianpan_3")
- {
- CEditUI* pContent = static_cast<CEditUI*>(this->FindSubControl(_T("shoukuan_page_money_edit")));
- wstring wsReason = pContent->GetText();
- wsReason = CLewaimaiString::ShuziInputFormat(wsReason, L"3");
- pContent->SetText(wsReason.c_str());
- pContent->SetFocus();
- UpdateJiesuanInfo();
- }
- else if (senderName == L"jianpan_4")
- {
- CEditUI* pContent = static_cast<CEditUI*>(this->FindSubControl(_T("shoukuan_page_money_edit")));
- wstring wsReason = pContent->GetText();
- wsReason = CLewaimaiString::ShuziInputFormat(wsReason, L"4");
- pContent->SetText(wsReason.c_str());
- pContent->SetFocus();
- UpdateJiesuanInfo();
- }
- else if (senderName == L"jianpan_5")
- {
- CEditUI* pContent = static_cast<CEditUI*>(this->FindSubControl(_T("shoukuan_page_money_edit")));
- wstring wsReason = pContent->GetText();
- wsReason = CLewaimaiString::ShuziInputFormat(wsReason, L"5");
- pContent->SetText(wsReason.c_str());
- pContent->SetFocus();
- UpdateJiesuanInfo();
- }
- else if (senderName == L"jianpan_6")
- {
- CEditUI* pContent = static_cast<CEditUI*>(this->FindSubControl(_T("shoukuan_page_money_edit")));
- wstring wsReason = pContent->GetText();
- wsReason = CLewaimaiString::ShuziInputFormat(wsReason, L"6");
- pContent->SetText(wsReason.c_str());
- pContent->SetFocus();
- UpdateJiesuanInfo();
- }
- else if (senderName == L"jianpan_7")
- {
- CEditUI* pContent = static_cast<CEditUI*>(this->FindSubControl(_T("shoukuan_page_money_edit")));
- wstring wsReason = pContent->GetText();
- wsReason = CLewaimaiString::ShuziInputFormat(wsReason, L"7");
- pContent->SetText(wsReason.c_str());
- pContent->SetFocus();
- UpdateJiesuanInfo();
- }
- else if (senderName == L"jianpan_8")
- {
- CEditUI* pContent = static_cast<CEditUI*>(this->FindSubControl(_T("shoukuan_page_money_edit")));
- wstring wsReason = pContent->GetText();
- wsReason = CLewaimaiString::ShuziInputFormat(wsReason, L"8");
- pContent->SetText(wsReason.c_str());
- pContent->SetFocus();
- UpdateJiesuanInfo();
- }
- else if (senderName == L"jianpan_9")
- {
- CEditUI* pContent = static_cast<CEditUI*>(this->FindSubControl(_T("shoukuan_page_money_edit")));
- wstring wsReason = pContent->GetText();
- wsReason = CLewaimaiString::ShuziInputFormat(wsReason, L"9");
- pContent->SetText(wsReason.c_str());
- pContent->SetFocus();
- UpdateJiesuanInfo();
- }
- else if (senderName == L"jianpan_0")
- {
- CEditUI* pContent = static_cast<CEditUI*>(this->FindSubControl(_T("shoukuan_page_money_edit")));
- wstring wsReason = pContent->GetText();
- wsReason = CLewaimaiString::ShuziInputFormat(wsReason, L"0");
- pContent->SetText(wsReason.c_str());
- pContent->SetFocus();
- UpdateJiesuanInfo();
- }
- else if (senderName == L"jianpan_dian")
- {
- CEditUI* pContent = static_cast<CEditUI*>(this->FindSubControl(_T("shoukuan_page_money_edit")));
- wstring wsReason = pContent->GetText();
- wsReason = CLewaimaiString::ShuziInputFormat(wsReason, L".");
- pContent->SetText(wsReason.c_str());
- pContent->SetFocus();
- UpdateJiesuanInfo();
- }
- else if (senderName == L"jianpan_qingkong")
- {
- CEditUI* pContent = static_cast<CEditUI*>(this->FindSubControl(_T("shoukuan_page_money_edit")));
- wstring wsReason = pContent->GetText();
- wsReason = L"0";
- pContent->SetText(wsReason.c_str());
- pContent->SetFocus();
- UpdateJiesuanInfo();
- }
- else if (senderName == L"diandan_jiesuan_zhifufangshi_weixinzhifu_btn")
- {
- //点击微信支付
- this->StartWeixinzhifuShoukuan();
- }
- else if (senderName == L"diandan_jiesuan_zhifufangshi_shoukuan_btn")
- {
- //点击会员支付
- this->StartHuiyuanShoukuan();
- }
- else if (senderName == L"diandan_jiesuan_zhifufangshi_xianjin_btn")
- {
- //点击现金收款
- this->StartXianjinShoukuan();
- }
- else if (senderName == L"diandan_jiesuan_zhifufangshi_fulika_btn")
- {
- //福利卡收款
- this->StartFulikaShoukuan();
- }
- else if (senderName == L"diandan_jiesuan_zhifufangshi_zidingyi_btn")
- {
- //自定义支付
- std::wstring name = msg.pSender->GetText();
- std::wstring selfpay_id = msg.pSender->GetCustomAttribute(L"selfpay_id");
- this->StartZidingyiShoukuan(name, selfpay_id);
- }
- }
- //处理option切换事件
- void CShoukuanPageUI::HandleSelectChangeMsg(TNotifyUI& msg)
- {
- }
- //处理下拉框、radio的切换事件
- void CShoukuanPageUI::HandleItemSelectMsg(TNotifyUI& msg)
- {
- }
- //处理编辑框输入内容改变事件
- void CShoukuanPageUI::HandleTextChangedMsg(TNotifyUI& msg)
- {
-
- }
- //处理扫码枪捕捉到的扫码信息
- void CShoukuanPageUI::HandleTextCapture(std::string content)
- {
- if (m_is_show_modal_wnd == true)
- {
- m_curModalWnd->HandleTextCapture(content);
- return;
- }
- //按付款码处理
- std::string s_Fukuanma = content;
- int length = s_Fukuanma.size();
- if (length != 18 && length != 19)
- {
- //肯定不是付款码
- m_pMainWnd->ShowToast(L"无效的条码!");
- return;
- }
- for (int i = 0; i < length; i++)
- {
- char c = *(s_Fukuanma.c_str() + i);
- if (isdigit(c) == 0)
- {
- //不是数字
- m_pMainWnd->ShowToast(L"无效的条码!");
- return;
- }
- }
- if (s_Fukuanma.find("10") == 0 \
- || s_Fukuanma.find("11") == 0 \
- || s_Fukuanma.find("12") == 0 \
- || s_Fukuanma.find("13") == 0 \
- || s_Fukuanma.find("14") == 0 \
- || s_Fukuanma.find("15") == 0)
- {
- //微信付款码
- }
- else if (s_Fukuanma.find("25") == 0 \
- || s_Fukuanma.find("26") == 0 \
- || s_Fukuanma.find("27") == 0 \
- || s_Fukuanma.find("28") == 0 \
- || s_Fukuanma.find("29") == 0 \
- || s_Fukuanma.find("30") == 0)
- {
- //支付宝付款码
- }
- else if (s_Fukuanma.find("62") == 0)
- {
- //云闪付付款码
- }
- else
- {
- m_pMainWnd->ShowToast(L"无效的条码!");
- return;
- }
- //代码能走到这里,说明肯定就是付款码了,默认唤起支付
- this->StartWeixinzhifuShoukuan(content);
- }
- void CShoukuanPageUI::ShowError(std::wstring err)
- {
- CLabelUI* m_pLabel = static_cast<CLabelUI*>(this->FindSubControl(_T("errorinfo")));
- m_pLabel->SetText(err.c_str());
- m_pLabel->SetVisible(true);
- this->FindSubControl(L"shoukuan_info_layout")->SetVisible(false);
- this->FindSubControl(L"shoukuan_page_no_layout")->SetVisible(true);
- }
- void CShoukuanPageUI::HideError()
- {
- CLabelUI* m_pLabel = static_cast<CLabelUI*>(this->FindSubControl(_T("errorinfo")));
- m_pLabel->SetVisible(true);
- }
- void CShoukuanPageUI::InitJiesuanZhifu()
- {
- CHorizontalLayoutUI* pZhifufangshiLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_layout")));
- int num = 0;
- CHorizontalLayoutUI* pWeixinLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_weixinzhifu")));
- if (CShopinfo::GetInstance()->m_is_online_pay_open == "1")
- {
- //展示微信支付,并且调整位置
- pWeixinLayout->SetVisible(true);
- num++;
- }
- else
- {
- pZhifufangshiLayout->RemoveAt(num);
- }
- //会员支付
- CHorizontalLayoutUI* pHuiyuanLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_huiyuan")));
- if (CShopinfo::GetInstance()->m_is_vip_pay_open == "1")
- {
- pHuiyuanLayout->SetVisible(true);
- num++;
- }
- else
- {
- pZhifufangshiLayout->RemoveAt(num);
- }
- //现金支付
- CHorizontalLayoutUI* pXianjinLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_xianjin")));
- if (CShopinfo::GetInstance()->m_is_cash_pay_open == "1")
- {
- pXianjinLayout->SetVisible(true);
- num++;
- }
- else
- {
- pZhifufangshiLayout->RemoveAt(num);
- }
- /*
- //购物卡
- CHorizontalLayoutUI* pGouwukaLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_gouwuka")));
- if (CShopinfo::GetInstance()->m_is_giftcard_pay_open == "1")
- {
- pGouwukaLayout->SetVisible(true);
- num++;
- }
- else
- {
- pGouwukaLayout->SetVisible(false);
- }
- //美食城临时卡
- CHorizontalLayoutUI* pMeishichengLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_meishicheng")));
- if (CShopinfo::GetInstance()->m_is_food_town_card_pay_open == "1")
- {
- pMeishichengLayout->SetVisible(true);
- num++;
- }
- else
- {
- pMeishichengLayout->SetVisible(false);
- }
- */
- //福利卡
- CHorizontalLayoutUI* pFulikaLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_fulika")));
- if (CShopinfo::GetInstance()->m_is_open_fulika_pay == "1")
- {
- pFulikaLayout->SetVisible(true);
- num++;
- }
- else
- {
- pZhifufangshiLayout->RemoveAt(num);
- }
- //接着添加自定义支付的
- for (std::vector<SelfPay>::iterator it = CShopinfo::GetInstance()->m_self_pay.begin(); it != CShopinfo::GetInstance()->m_self_pay.end(); it++)
- {
- SelfPay selfpay = *it;
- if (selfpay.is_open == "1")
- {
- CButtonUI* newButton = new CButtonUI();
- newButton->SetFixedWidth(120);
- newButton->SetFixedHeight(80);
- newButton->SetText(CLewaimaiString::UTF8ToUnicode(selfpay.name).c_str());
- newButton->SetBorderSize(1);
- newButton->SetBorderColor(0xFFC1C1C1);
- newButton->SetBkColor(0xFFF7F7F7);
- //设置定义属性,在点击按钮的时候好区分
- newButton->SetAttribute(L"name", L"diandan_jiesuan_zhifufangshi_zidingyi_btn");
- newButton->AddCustomAttribute(L"selfpay_id", CLewaimaiString::UTF8ToUnicode(selfpay.id).c_str());
- newButton->SetAttribute(L"float", L"true");
- //必须先Add,才能调用下面的SetPos,否则无效
- pZhifufangshiLayout->Add(newButton);
- num++;
- }
- }
- m_nZhiufuNum = num;
- }
- void CShoukuanPageUI::UpdateJiesuanZhifuPos()
- {
- //添加支付方式
- int nWidth = m_nPageWidth;
- if (nWidth == 0)
- {
- return;
- }
- int nZhangdanWidth = nWidth - 420 - 5;
- if (nZhangdanWidth < 290)
- {
- nZhangdanWidth = 290;
- }
- CVerticalLayoutUI* pZhangdanLayout = static_cast<CVerticalLayoutUI*>(this->FindSubControl(L"diandan_page_jiesuan_zhangdan_layout"));
- pZhangdanLayout->SetFixedWidth(nZhangdanWidth);
- //根据宽度计算每行显示的数量
- int nMeihangNum = (nZhangdanWidth) / 144;
- if (nMeihangNum < 1)
- {
- nMeihangNum = 1;
- }
- int num = 0;
- CHorizontalLayoutUI* pZhifufangshiLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_layout")));
- for (int i = 0; i < m_nZhiufuNum; i++)
- {
- CButtonUI* curItem = static_cast<CButtonUI*>(pZhifufangshiLayout->GetItemAt(i));
- int curRow = num / nMeihangNum + 1;
- int curCol = num % nMeihangNum + 1;
- RECT rect;
- rect.left = (curCol - 1) * 140 + 20;
- rect.right = rect.left + 120;
- rect.top = (curRow - 1) * 100 + 20;
- rect.bottom = rect.top + 80;
- curItem->SetPos(rect);
- num++;
- }
- //调整区域高度
- int lastRow = (num - 1) / nMeihangNum + 1;
- pZhifufangshiLayout->SetFixedHeight(lastRow * 105);
- }
- //初始化收款金额
- void CShoukuanPageUI::InitMoney()
- {
- CEditUI* pMoneyEdit = static_cast<CEditUI*>(this->FindSubControl(_T("shoukuan_page_money_edit")));
- pMoneyEdit->SetText(L"0");
- }
- std::string CShoukuanPageUI::GetMoney()
- {
- CEditUI* pJiajiaEdit = static_cast<CEditUI*>(this->FindSubControl(_T("shoukuan_page_money_edit")));
- wstring ws_jiajia = pJiajiaEdit->GetText();
- double money = atof(CLewaimaiString::UnicodeToUTF8(ws_jiajia).c_str());
- return CLewaimaiString::DoubleToString(money, 2);
- }
- void CShoukuanPageUI::UpdateJiesuanInfo()
- {
- //再刷新账单明细展示
- CVerticalLayoutUI* pmingxiLayout = static_cast<CVerticalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhangdanmingxi_jiage_layout")));
- pmingxiLayout->RemoveAll();
- std::string money = this->GetMoney();
- int item_num = 0;
- //先显示基础价格
- if (true)
- {
- CDialogBuilder builder;
- CDialogBuilderCallbackEx cb;
- CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
- pmingxiLayout->Add(pItem);
- CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
- CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
- pName->SetText(L"原价:");
- pValue->SetText((CLewaimaiString::UTF8ToUnicode(money) + L"元").c_str());
- item_num++;
- }
- pmingxiLayout->SetFixedHeight(item_num * 40);
- CLabelUI* pYingshou = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_total_yingshou")));
- pYingshou->SetText((L"应收金额:" + CLewaimaiString::UTF8ToUnicode(money) + L"元").c_str());
- }
- //开始进行微信支付收款,如果fukuanma不为空,默认自动唤起支付
- void CShoukuanPageUI::StartWeixinzhifuShoukuan(std::string fukuanma)
- {
- if (m_is_show_modal_wnd == true)
- {
- return;
- }
- if (atof(GetMoney().c_str()) < 0.0001)
- {
- m_pMainWnd->ShowToast(L"收款金额不能为0");
- return;
- }
- CWeixinzhifuShoukuanWnd* pShoukuanWnd = new CWeixinzhifuShoukuanWnd;
- if (pShoukuanWnd != NULL)
- {
- m_is_show_modal_wnd = true;
- m_curModalWnd = pShoukuanWnd;
- pShoukuanWnd->SetType(4);
- pShoukuanWnd->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_TOOLWINDOW);
- pShoukuanWnd->SetIcon(IDI_ICON_DUILIB);
- pShoukuanWnd->CenterWindow();
- std::string format_string = GetMoney();
- std::wstring watchValue = CLewaimaiString::UTF8ToUnicode(format_string);
- pShoukuanWnd->InitMoney(watchValue);
- //这里要对提交订单的参数进行组装,然后方便请求
- pShoukuanWnd->SetCommonParams(GetSendorderParams());
- if (fukuanma != "")
- {
- pShoukuanWnd->InitFukuanma(fukuanma);
- }
- UINT ret = pShoukuanWnd->ShowModal();
- if (ret == IDOK)
- {
- int fukuanma_type = pShoukuanWnd->m_fukuanma_type;
- std::string zhifu_type;
- if (fukuanma_type == 1)
- {
- zhifu_type = "weixinzhifu";
- }
- else if (fukuanma_type == 2)
- {
- zhifu_type = "zhifubao";
- }
- else if (fukuanma_type == 3)
- {
- zhifu_type = "yunshanfu";
- }
- //说明收款成功了,需要进行一些后续的处理
- this->StartWorkAfterShoukuan(pShoukuanWnd->m_show_trade_no, zhifu_type);
- m_pMainWnd->ShowToast(L"收款成功!");
- }
- else
- {
-
- }
- m_is_show_modal_wnd = false;
- delete pShoukuanWnd;
- }
- }
- //开始进行会员收款
- void CShoukuanPageUI::StartHuiyuanShoukuan()
- {
- if (m_is_show_modal_wnd == true)
- {
- return;
- }
- if (atof(GetMoney().c_str()) < 0.0001)
- {
- m_pMainWnd->ShowToast(L"收款金额不能为0");
- return;
- }
- CHuiyuanShoukuanWnd* pShoukuanWnd = new CHuiyuanShoukuanWnd();
- if (pShoukuanWnd != NULL)
- {
- m_is_show_modal_wnd = true;
- m_curModalWnd = pShoukuanWnd;
- pShoukuanWnd->SetType(4);
- pShoukuanWnd->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_TOOLWINDOW);
- pShoukuanWnd->SetIcon(IDI_ICON_DUILIB);
- pShoukuanWnd->CenterWindow();
- std::string format_string = GetMoney();
- std::wstring watchValue = CLewaimaiString::UTF8ToUnicode(format_string);
- pShoukuanWnd->InitMoney(watchValue);
- //这里要对提交订单的参数进行组装,然后方便请求
- pShoukuanWnd->SetCommonParams(GetSendorderParams());
- /*
- if (m_is_start_catch && m_catch_string.length() == 18)
- {
- pShoukuanWnd->InitFukuanma(m_catch_string);
- }
- }*/
- UINT ret = pShoukuanWnd->ShowModal();
- if (ret == IDOK)
- {
- std::string balance = pShoukuanWnd->m_balance;
- std::string member_number = pShoukuanWnd->m_member_number;
- //说明收款成功了,需要进行一些后续的处理
- this->StartWorkAfterShoukuan(pShoukuanWnd->m_show_trade_no, "huiyuanzhifu", balance, member_number);
- m_pMainWnd->ShowToast(L"收款成功!");
- }
- m_is_show_modal_wnd = false;
- delete pShoukuanWnd;
- }
- }
- //开始进行现金收款
- void CShoukuanPageUI::StartXianjinShoukuan()
- {
- if (m_is_show_modal_wnd == true)
- {
- return;
- }
- if (atof(GetMoney().c_str()) < 0.0001)
- {
- m_pMainWnd->ShowToast(L"收款金额不能为0");
- return;
- }
- CXianjinShoukuanWnd* pShoukuanWnd = new CXianjinShoukuanWnd();
- if (pShoukuanWnd != NULL)
- {
- m_is_show_modal_wnd = true;
- m_curModalWnd = pShoukuanWnd;
- pShoukuanWnd->SetType(4);
- pShoukuanWnd->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_TOOLWINDOW);
- pShoukuanWnd->SetIcon(IDI_ICON_DUILIB);
- pShoukuanWnd->CenterWindow();
- std::string format_string = GetMoney();
- std::wstring watchValue = CLewaimaiString::UTF8ToUnicode(format_string);
- pShoukuanWnd->InitMoney(watchValue);
- //这里要对提交订单的参数进行组装,然后方便请求
- pShoukuanWnd->SetCommonParams(GetSendorderParams());
- /*
- if (m_is_start_catch && m_catch_string.length() == 18)
- {
- pShoukuanWnd->InitFukuanma(m_catch_string);
- }
- }*/
- UINT ret = pShoukuanWnd->ShowModal();
- if (ret == IDOK)
- {
- m_shishou_value = pShoukuanWnd->m_shishou;
- m_zhaoling_value = pShoukuanWnd->m_zhaoling;
- //说明收款成功了,需要进行一些后续的处理
- this->StartWorkAfterShoukuan(pShoukuanWnd->m_show_trade_no, "xianjinzhifu");
- m_pMainWnd->ShowToast(L"收款成功!");
- }
- m_is_show_modal_wnd = false;
- delete pShoukuanWnd;
- }
- }
- //开始进行福利卡收款
- void CShoukuanPageUI::StartFulikaShoukuan()
- {
- if (m_is_show_modal_wnd == true)
- {
- return;
- }
- if (atof(GetMoney().c_str()) < 0.0001)
- {
- m_pMainWnd->ShowToast(L"收款金额不能为0");
- return;
- }
- CFulikaShoukuanWnd* pShoukuanWnd = new CFulikaShoukuanWnd();
- if (pShoukuanWnd != NULL)
- {
- m_is_show_modal_wnd = true;
- m_curModalWnd = pShoukuanWnd;
- pShoukuanWnd->SetType(4);
- pShoukuanWnd->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_TOOLWINDOW);
- pShoukuanWnd->SetIcon(IDI_ICON_DUILIB);
- pShoukuanWnd->CenterWindow();
- std::string format_string = GetMoney();
- std::wstring watchValue = CLewaimaiString::UTF8ToUnicode(format_string);
- pShoukuanWnd->InitMoney(watchValue);
- //这里要对提交订单的参数进行组装,然后方便请求
- pShoukuanWnd->SetCommonParams(GetSendorderParams());
- /*
- if (m_is_start_catch && m_catch_string.length() == 18)
- {
- pShoukuanWnd->InitFukuanma(m_catch_string);
- }
- }*/
- UINT ret = pShoukuanWnd->ShowModal();
- if (ret == IDOK)
- {
- //说明收款成功了,需要进行一些后续的处理
- this->StartWorkAfterShoukuan(pShoukuanWnd->m_show_trade_no, "fulikazhifu");
- m_pMainWnd->ShowToast(L"收款成功!");
- }
- m_is_show_modal_wnd = false;
- delete pShoukuanWnd;
- }
- }
- //开始自定义支付收款
- void CShoukuanPageUI::StartZidingyiShoukuan(std::wstring name, std::wstring selfpay_id)
- {
- if (m_is_show_modal_wnd == true)
- {
- return;
- }
- if (atof(GetMoney().c_str()) < 0.0001)
- {
- m_pMainWnd->ShowToast(L"收款金额不能为0");
- return;
- }
- CZidingyiShoukuanWnd* pShoukuanWnd = new CZidingyiShoukuanWnd();
- if (pShoukuanWnd != NULL)
- {
- m_is_show_modal_wnd = true;
- m_curModalWnd = pShoukuanWnd;
- pShoukuanWnd->SetType(4);
- pShoukuanWnd->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_TOOLWINDOW);
- pShoukuanWnd->SetIcon(IDI_ICON_DUILIB);
- pShoukuanWnd->CenterWindow();
- std::string format_string = GetMoney();
- std::wstring watchValue = CLewaimaiString::UTF8ToUnicode(format_string);
- pShoukuanWnd->InitMoney(watchValue);
- //这里要对提交订单的参数进行组装,然后方便请求
- pShoukuanWnd->SetCommonParams(GetSendorderParams());
- /*
- if (m_is_start_catch && m_catch_string.length() == 18)
- {
- pShoukuanWnd->InitFukuanma(m_catch_string);
- }
- }*/
- pShoukuanWnd->SetZidingyiName(name);
- pShoukuanWnd->SetZidingyiId(selfpay_id);
- UINT ret = pShoukuanWnd->ShowModal();
- if (ret == IDOK)
- {
- //说明收款成功了,需要进行一些后续的处理
- this->StartWorkAfterShoukuan(pShoukuanWnd->m_show_trade_no, "zidingyizhifu");
- m_pMainWnd->ShowToast(L"收款成功!");
- }
- m_is_show_modal_wnd = false;
- delete pShoukuanWnd;
- }
- }
- //获取通用参数,任何支付方式都要用到的参数,个性化参数在弹框里面处理
- //参考文档 http://apidoc.zhipuzi.com/index.php/home/item/show?item_id=4
- std::map<string, string> CShoukuanPageUI::GetSendorderParams()
- {
- std::map<string, string> params;
- params["order_no"] = CRandomHelper::GetRandString(20);
- params["yingshou_value"] = GetMoney();
- params["shishou_value"] = GetMoney();
- params["zhaoling_value"] = "0";
- params["zhifu_type"] = "";
- return params;
- }
- void CShoukuanPageUI::StartWorkAfterShoukuan(std::string show_trade_no, std::string shoukuan_type, std::string balance, std::string member_number)
- {
- //针对现金收款成功,单独做一个打开钱箱的判断处理
- if (shoukuan_type == "xianjinzhifu")
- {
- std::string setting_is_diannei_xianjin_qianxiang = CSetting::GetInstance()->GetParam("setting_is_diannei_xianjin_qianxiang");
- if (setting_is_diannei_xianjin_qianxiang == "1")
- {
- //打开钱箱
- CPosPrinter printer;
- printer.OpenQianxiang();
- }
- }
- //处理小票打印
- //处理打印
- CShoukuanOrder order = this->GetPrintOrderinfo(show_trade_no, shoukuan_type, balance, member_number);
- CPosPrinter printer;
- printer.PrintShoukuanOrder(order);
- //最后还原收款金额
- this->InitMoney();
- this->UpdateJiesuanInfo();
- }
- CShoukuanOrder CShoukuanPageUI::GetPrintOrderinfo(std::string show_trade_no, std::string shoukuan_type, std::string balance, std::string member_number)
- {
- CShoukuanOrder newOrder;
- newOrder.m_money = this->GetMoney();
- newOrder.shopname = CShopinfo::GetInstance()->m_shop_name;
- newOrder.show_trade_no = show_trade_no;
- newOrder.balance = balance;
- newOrder.member_number = member_number;
- if (shoukuan_type == "weixinzhifu")
- {
- newOrder.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"微信支付");
- }
- else if (shoukuan_type == "zhifubao")
- {
- newOrder.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"支付宝");
- }
- else if (shoukuan_type == "yunshanfu")
- {
- newOrder.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"云闪付");
- }
- else if (shoukuan_type == "huiyuanzhifu")
- {
- newOrder.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"会员支付");
- }
- else if (shoukuan_type == "xianjinzhifu")
- {
- newOrder.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"现金支付");
- }
- else if (shoukuan_type == "fulikazhifu")
- {
- newOrder.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"福利卡支付");
- }
- else if (shoukuan_type == "zidingyizhifu")
- {
- newOrder.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"自定义支付");
- }
- newOrder.order_from = 1;
- newOrder.init_time = CLewaimaiTime::DatetimeToString(time(NULL));
- newOrder.employee_name = CSetting::GetInstance()->getUsername();
- return newOrder;
- }
- void CShoukuanPageUI::SetPos(RECT rc, bool bNeedInvalidate)
- {
- m_nPageWidth = rc.right - rc.left;
- //拖动窗口的时候,更新位置
- UpdateJiesuanZhifuPos();
- CContainerUI::SetPos(rc, bNeedInvalidate);
- }
|