|
@@ -538,28 +538,6 @@ void CYubaozhuangbiaoqianPageUI::HandleTextCapture(std::string content)
|
|
|
|
|
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- //没有任何弹框,那么就是按扫描商品条码来处理
|
|
|
|
|
- bool ret = this->SaomiaoBarcode(content);
|
|
|
|
|
- if (ret == true)
|
|
|
|
|
- {
|
|
|
|
|
- //已经找到了条码,那么就处理完了
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if (content.length() != 12 && content.length() != 13 && content.length() != 17 && content.length() != 18)
|
|
|
|
|
- {
|
|
|
|
|
- //位数不对,那肯定不是称重条码
|
|
|
|
|
- }
|
|
|
|
|
- else
|
|
|
|
|
- {
|
|
|
|
|
- //如果没有找到条码,就找一下是不是称重的标签秤的码,这个时候要对码进行各种分析了
|
|
|
|
|
- ret = this->BiaoqianchengSaomaBarcode(content);
|
|
|
|
|
- if (ret == true)
|
|
|
|
|
- {
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
bool CYubaozhuangbiaoqianPageUI::HandleCustomMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|
bool CYubaozhuangbiaoqianPageUI::HandleCustomMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|
@@ -586,118 +564,13 @@ void CYubaozhuangbiaoqianPageUI::ClickFoodAction()
|
|
|
|
|
|
|
|
if (is_taocan)
|
|
if (is_taocan)
|
|
|
{
|
|
{
|
|
|
- //点击套餐之后的处理逻辑
|
|
|
|
|
- CFoodpackage foodpackageinfo = m_cur_click_food_item->GetFoodpackageInfo();
|
|
|
|
|
-
|
|
|
|
|
- CDiandanOrderItem clickItem;
|
|
|
|
|
-
|
|
|
|
|
- clickItem.foodpackage_id = foodpackageinfo.id;
|
|
|
|
|
- clickItem.foodpackage_name = foodpackageinfo.name;
|
|
|
|
|
- clickItem.price = foodpackageinfo.price;
|
|
|
|
|
- clickItem.is_dabao = false;
|
|
|
|
|
- clickItem.dabao_money = foodpackageinfo.dabao_money;
|
|
|
|
|
- clickItem.num = "1";
|
|
|
|
|
-
|
|
|
|
|
- //把当前点击商品的信息,保存到orderitem里面,方便后面修改规格的时候使用
|
|
|
|
|
- clickItem.SetFoodpackageInfo(m_cur_click_food_item->GetFoodpackageInfo());
|
|
|
|
|
- clickItem.SetIsTaocan(true);
|
|
|
|
|
-
|
|
|
|
|
- if (m_is_show_modal_wnd == true)
|
|
|
|
|
- {
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //先弹框进行选择属性
|
|
|
|
|
- CDiandanNatureWnd* pNatureFrame = new CDiandanNatureWnd(1);
|
|
|
|
|
- pNatureFrame->SetFoodItemUI(m_cur_click_food_item);
|
|
|
|
|
-
|
|
|
|
|
- if (pNatureFrame != NULL)
|
|
|
|
|
- {
|
|
|
|
|
- m_is_show_modal_wnd = true;
|
|
|
|
|
- m_curModalWnd = pNatureFrame;
|
|
|
|
|
-
|
|
|
|
|
- pNatureFrame->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
|
|
|
|
|
- pNatureFrame->SetIcon(IDI_ICON_DUILIB);
|
|
|
|
|
- pNatureFrame->CenterWindow();
|
|
|
|
|
- UINT ret = pNatureFrame->ShowModal();
|
|
|
|
|
-
|
|
|
|
|
- if (ret == IDOK)
|
|
|
|
|
- {
|
|
|
|
|
- //保存选择的属性
|
|
|
|
|
- std::vector<FoodNatureSelectValue> natureSelectedArray = pNatureFrame->GetNatureSelectedArray();
|
|
|
|
|
- clickItem.natureSelectedArray = natureSelectedArray;
|
|
|
|
|
-
|
|
|
|
|
- m_is_show_modal_wnd = false;
|
|
|
|
|
- delete pNatureFrame;
|
|
|
|
|
- }
|
|
|
|
|
- else
|
|
|
|
|
- {
|
|
|
|
|
- m_is_show_modal_wnd = false;
|
|
|
|
|
- delete pNatureFrame;
|
|
|
|
|
-
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //商品没有商品属性
|
|
|
|
|
- bool is_add_new = false;
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
+ return;
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
|
//点击普通商品之后的处理逻辑
|
|
//点击普通商品之后的处理逻辑
|
|
|
CFood foodinfo = m_cur_click_food_item->GetFoodInfo();
|
|
CFood foodinfo = m_cur_click_food_item->GetFoodInfo();
|
|
|
|
|
|
|
|
- if (foodinfo.stockvalid == "1" && atof(foodinfo.stock.c_str()) < 0.001)
|
|
|
|
|
- {
|
|
|
|
|
- //库存为0了,不做任何处理
|
|
|
|
|
- m_pMainWnd->ShowToast(L"该商品已售完");
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- CDiandanOrderItem clickItem;
|
|
|
|
|
-
|
|
|
|
|
- clickItem.food_id = foodinfo.id;
|
|
|
|
|
- clickItem.food_name = foodinfo.name;
|
|
|
|
|
- clickItem.type_id = foodinfo.type_id;
|
|
|
|
|
- clickItem.price = foodinfo.price;
|
|
|
|
|
- clickItem.is_dabao = false;
|
|
|
|
|
- clickItem.dabao_money = foodinfo.dabao_money;
|
|
|
|
|
- clickItem.num = "1";
|
|
|
|
|
-
|
|
|
|
|
- if (foodinfo.member_price_used == "1")
|
|
|
|
|
- {
|
|
|
|
|
- clickItem.is_member_price_used = true;
|
|
|
|
|
- }
|
|
|
|
|
- else
|
|
|
|
|
- {
|
|
|
|
|
- clickItem.is_member_price_used = false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //处理会员价的json
|
|
|
|
|
- std::string member_price_json = foodinfo.member_price_json;
|
|
|
|
|
-
|
|
|
|
|
- rapidjson::Document document;
|
|
|
|
|
- document.Parse(member_price_json.c_str());
|
|
|
|
|
-
|
|
|
|
|
- rapidjson::Value& member_price = document;
|
|
|
|
|
- for (rapidjson::SizeType i = 0; i < member_price.Size(); ++i)
|
|
|
|
|
- {
|
|
|
|
|
- rapidjson::Value& member_price_info = member_price[i];
|
|
|
|
|
-
|
|
|
|
|
- MemberPrice newPirce;
|
|
|
|
|
- newPirce.id = CLewaimaiJson::ToString(member_price_info["id"]);
|
|
|
|
|
- newPirce.level = CLewaimaiJson::ToString(member_price_info["level"]);
|
|
|
|
|
- newPirce.price = CLewaimaiJson::ToString(member_price_info["price"]);
|
|
|
|
|
-
|
|
|
|
|
- clickItem.m_member_price.push_back(newPirce);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //把当前点击商品的信息,保存到orderitem里面,方便后面修改规格的时候使用
|
|
|
|
|
- clickItem.SetFoodInfo(m_cur_click_food_item->GetFoodInfo());
|
|
|
|
|
- clickItem.SetIsTaocan(false);
|
|
|
|
|
-
|
|
|
|
|
if (foodinfo.is_weight == "1")
|
|
if (foodinfo.is_weight == "1")
|
|
|
{
|
|
{
|
|
|
if (m_is_dianzicheng_lianjie == false)
|
|
if (m_is_dianzicheng_lianjie == false)
|
|
@@ -707,463 +580,26 @@ void CYubaozhuangbiaoqianPageUI::ClickFoodAction()
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- clickItem.is_weight = true;
|
|
|
|
|
-
|
|
|
|
|
//这里要判断是直接区域称重,还是先弹框再称重
|
|
//这里要判断是直接区域称重,还是先弹框再称重
|
|
|
CLabelUI* pLabel = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_page_label_chengzhong_value")));
|
|
CLabelUI* pLabel = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_page_label_chengzhong_value")));
|
|
|
std::wstring ws_weight_value = pLabel->GetText();
|
|
std::wstring ws_weight_value = pLabel->GetText();
|
|
|
std::string s_weight_value = CLewaimaiString::UnicodeToUTF8(ws_weight_value);
|
|
std::string s_weight_value = CLewaimaiString::UnicodeToUTF8(ws_weight_value);
|
|
|
if (atof(s_weight_value.c_str()) < 0.001)
|
|
if (atof(s_weight_value.c_str()) < 0.001)
|
|
|
{
|
|
{
|
|
|
- //如果重量为0了,说明还没有称重,这时候要弹出称重框进行称重
|
|
|
|
|
- if (m_is_show_modal_wnd == true)
|
|
|
|
|
- {
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //这里要弹出称重框,不弹属性框
|
|
|
|
|
- CChengzhongWnd* pChengzhongFrame = new CChengzhongWnd();
|
|
|
|
|
-
|
|
|
|
|
- if (pChengzhongFrame != NULL)
|
|
|
|
|
- {
|
|
|
|
|
- m_is_show_modal_wnd = true;
|
|
|
|
|
- m_curModalWnd = pChengzhongFrame;
|
|
|
|
|
-
|
|
|
|
|
- pChengzhongFrame->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
|
|
|
|
|
- pChengzhongFrame->SetIcon(IDI_ICON_DUILIB);
|
|
|
|
|
- pChengzhongFrame->CenterWindow();
|
|
|
|
|
-
|
|
|
|
|
- pChengzhongFrame->SetTitle(CLewaimaiString::UTF8ToUnicode(foodinfo.name));
|
|
|
|
|
-
|
|
|
|
|
- UINT ret = pChengzhongFrame->ShowModal();
|
|
|
|
|
-
|
|
|
|
|
- if (ret == IDOK)
|
|
|
|
|
- {
|
|
|
|
|
- std::string weight = pChengzhongFrame->m_weight;
|
|
|
|
|
- if (atof(weight.c_str()) < 0.001)
|
|
|
|
|
- {
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- clickItem.num = weight;
|
|
|
|
|
-
|
|
|
|
|
- m_is_show_modal_wnd = false;
|
|
|
|
|
- delete pChengzhongFrame;
|
|
|
|
|
- }
|
|
|
|
|
- else
|
|
|
|
|
- {
|
|
|
|
|
- m_is_show_modal_wnd = false;
|
|
|
|
|
- delete pChengzhongFrame;
|
|
|
|
|
-
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- else
|
|
|
|
|
- {
|
|
|
|
|
- //如果重量不为0了,说明已经称重了,这时候直接使用这个重量
|
|
|
|
|
- clickItem.num = s_weight_value;
|
|
|
|
|
|
|
+ m_pMainWnd->ShowToast(L"该商品为称重商品,请先称重");
|
|
|
|
|
+ return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ CPosPrinter printer;
|
|
|
|
|
+ printer.PrintShangpinTiaoma(foodinfo, s_weight_value);
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
|
- clickItem.is_weight = false;
|
|
|
|
|
-
|
|
|
|
|
- if (foodinfo.is_nature == "1")
|
|
|
|
|
- {
|
|
|
|
|
- //商品有商品属性
|
|
|
|
|
- clickItem.is_nature = true;
|
|
|
|
|
-
|
|
|
|
|
- if (m_is_show_modal_wnd == true)
|
|
|
|
|
- {
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //先弹框进行选择属性
|
|
|
|
|
- CDiandanNatureWnd* pNatureFrame = new CDiandanNatureWnd(1);
|
|
|
|
|
- pNatureFrame->SetFoodItemUI(m_cur_click_food_item);
|
|
|
|
|
-
|
|
|
|
|
- if (pNatureFrame != NULL)
|
|
|
|
|
- {
|
|
|
|
|
- m_is_show_modal_wnd = true;
|
|
|
|
|
- m_curModalWnd = pNatureFrame;
|
|
|
|
|
-
|
|
|
|
|
- pNatureFrame->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
|
|
|
|
|
- pNatureFrame->SetIcon(IDI_ICON_DUILIB);
|
|
|
|
|
- pNatureFrame->CenterWindow();
|
|
|
|
|
- UINT ret = pNatureFrame->ShowModal();
|
|
|
|
|
-
|
|
|
|
|
- if (ret == IDOK)
|
|
|
|
|
- {
|
|
|
|
|
- //保存选择的属性
|
|
|
|
|
- std::vector<FoodNatureSelectValue> natureSelectedArray = pNatureFrame->GetNatureSelectedArray();
|
|
|
|
|
- clickItem.natureSelectedArray = natureSelectedArray;
|
|
|
|
|
-
|
|
|
|
|
- m_is_show_modal_wnd = false;
|
|
|
|
|
- delete pNatureFrame;
|
|
|
|
|
- }
|
|
|
|
|
- else
|
|
|
|
|
- {
|
|
|
|
|
- m_is_show_modal_wnd = false;
|
|
|
|
|
- delete pNatureFrame;
|
|
|
|
|
-
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //商品没有商品属性
|
|
|
|
|
- bool is_add_new = false;
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-//扫描了商品条码的逻辑处理
|
|
|
|
|
-bool CYubaozhuangbiaoqianPageUI::SaomiaoBarcode(std::string barcode)
|
|
|
|
|
-{
|
|
|
|
|
- CSqlite3 sqlite;
|
|
|
|
|
-
|
|
|
|
|
- CFood foodinfo;
|
|
|
|
|
- bool ret = sqlite.GetFoodByBarcode(barcode, foodinfo);
|
|
|
|
|
-
|
|
|
|
|
- if (ret == false)
|
|
|
|
|
- {
|
|
|
|
|
- //说明没找到对应的商品条码
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //这里说明找到了,那么处理添加购物车逻辑,扫码的情况下,这里不管有没有属性,都按没属性处理,不管有没有称重都按没称重处理(以后标签秤可能会修改)
|
|
|
|
|
-
|
|
|
|
|
- if (foodinfo.stockvalid == "1" && atof(foodinfo.stock.c_str()) < 1)
|
|
|
|
|
- {
|
|
|
|
|
- //库存为0了,不做任何处理
|
|
|
|
|
- m_pMainWnd->ShowToast(L"该商品已售完");
|
|
|
|
|
-
|
|
|
|
|
- //只要找到了就返回true
|
|
|
|
|
- return true;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- CDiandanOrderItem clickItem;
|
|
|
|
|
-
|
|
|
|
|
- clickItem.food_id = foodinfo.id;
|
|
|
|
|
- clickItem.food_name = foodinfo.name;
|
|
|
|
|
- clickItem.type_id = foodinfo.type_id;
|
|
|
|
|
- clickItem.price = foodinfo.price;
|
|
|
|
|
- clickItem.is_dabao = false;
|
|
|
|
|
- clickItem.dabao_money = foodinfo.dabao_money;
|
|
|
|
|
- clickItem.num = "1";
|
|
|
|
|
-
|
|
|
|
|
- if (foodinfo.member_price_used == "1")
|
|
|
|
|
- {
|
|
|
|
|
- clickItem.is_member_price_used = true;
|
|
|
|
|
- }
|
|
|
|
|
- else
|
|
|
|
|
- {
|
|
|
|
|
- clickItem.is_member_price_used = false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //处理会员价的json
|
|
|
|
|
- std::string member_price_json = foodinfo.member_price_json;
|
|
|
|
|
-
|
|
|
|
|
- rapidjson::Document document;
|
|
|
|
|
- document.Parse(member_price_json.c_str());
|
|
|
|
|
-
|
|
|
|
|
- rapidjson::Value& member_price = document;
|
|
|
|
|
- for (rapidjson::SizeType i = 0; i < member_price.Size(); ++i)
|
|
|
|
|
- {
|
|
|
|
|
- rapidjson::Value& member_price_info = member_price[i];
|
|
|
|
|
-
|
|
|
|
|
- MemberPrice newPirce;
|
|
|
|
|
- newPirce.id = CLewaimaiJson::ToString(member_price_info["id"]);
|
|
|
|
|
- newPirce.level = CLewaimaiJson::ToString(member_price_info["level"]);
|
|
|
|
|
- newPirce.price = CLewaimaiJson::ToString(member_price_info["price"]);
|
|
|
|
|
-
|
|
|
|
|
- clickItem.m_member_price.push_back(newPirce);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //把当前点击商品的信息,保存到orderitem里面,方便后面修改规格的时候使用
|
|
|
|
|
- clickItem.SetFoodInfo(foodinfo);
|
|
|
|
|
- clickItem.SetIsTaocan(false);
|
|
|
|
|
-
|
|
|
|
|
- clickItem.is_weight = false;
|
|
|
|
|
- clickItem.is_nature = false;
|
|
|
|
|
-
|
|
|
|
|
- //商品没有商品属性
|
|
|
|
|
- bool is_add_new = false;
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- return true;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-bool CYubaozhuangbiaoqianPageUI::BiaoqianchengSaomaBarcode(std::string barcode)
|
|
|
|
|
-{
|
|
|
|
|
- //先根据设置,分辨条码格式
|
|
|
|
|
- std::string bianma;
|
|
|
|
|
- std::string money;
|
|
|
|
|
- std::string weight;
|
|
|
|
|
- std::string jiaoyan;
|
|
|
|
|
-
|
|
|
|
|
- std::string setting_tiaomacheng_geshi = CSetting::GetInstance()->GetParam("setting_tiaomacheng_geshi");
|
|
|
|
|
- if (setting_tiaomacheng_geshi == "1")
|
|
|
|
|
- {
|
|
|
|
|
- if (barcode.length() != 12 && barcode.length() != 13)
|
|
|
|
|
- {
|
|
|
|
|
- //与该模式长度不匹配
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if (barcode.length() == 12)
|
|
|
|
|
- {
|
|
|
|
|
- barcode = CLewaimaiString::BuZifuLeft(barcode, 1, '0');
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //13位【FWWWWWWEEEEEC】
|
|
|
|
|
- bianma = barcode.substr(1, 6);
|
|
|
|
|
- money = barcode.substr(7, 5);
|
|
|
|
|
- jiaoyan = barcode.substr(12, 1);
|
|
|
|
|
- }
|
|
|
|
|
- else if (setting_tiaomacheng_geshi == "2")
|
|
|
|
|
- {
|
|
|
|
|
- if (barcode.length() != 12 && barcode.length() != 13)
|
|
|
|
|
- {
|
|
|
|
|
- //与该模式长度不匹配
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if (barcode.length() == 12)
|
|
|
|
|
- {
|
|
|
|
|
- barcode = CLewaimaiString::BuZifuLeft(barcode, 1, '0');
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //13位【FWWWWWWNNNNNC】
|
|
|
|
|
- bianma = barcode.substr(1, 6);
|
|
|
|
|
- weight = barcode.substr(7, 5);
|
|
|
|
|
- jiaoyan = barcode.substr(12, 1);
|
|
|
|
|
- }
|
|
|
|
|
- else if (setting_tiaomacheng_geshi == "3")
|
|
|
|
|
- {
|
|
|
|
|
- if (barcode.length() != 12 && barcode.length() != 13)
|
|
|
|
|
- {
|
|
|
|
|
- //与该模式长度不匹配
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if (barcode.length() == 12)
|
|
|
|
|
- {
|
|
|
|
|
- barcode = CLewaimaiString::BuZifuLeft(barcode, 1, '0');
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //13位【FFWWWWWEEEEEC】
|
|
|
|
|
- bianma = barcode.substr(2, 5);
|
|
|
|
|
- money = barcode.substr(7, 5);
|
|
|
|
|
- jiaoyan = barcode.substr(12, 1);
|
|
|
|
|
- }
|
|
|
|
|
- else if (setting_tiaomacheng_geshi == "4")
|
|
|
|
|
- {
|
|
|
|
|
- if (barcode.length() != 12 && barcode.length() != 13)
|
|
|
|
|
- {
|
|
|
|
|
- //与该模式长度不匹配
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if (barcode.length() == 12)
|
|
|
|
|
- {
|
|
|
|
|
- barcode = CLewaimaiString::BuZifuLeft(barcode, 1, '0');
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //13位【FFWWWWWNNNNNC】
|
|
|
|
|
- bianma = barcode.substr(2, 5);
|
|
|
|
|
- weight = barcode.substr(7, 5);
|
|
|
|
|
- jiaoyan = barcode.substr(12, 1);
|
|
|
|
|
- }
|
|
|
|
|
- else if (setting_tiaomacheng_geshi == "5")
|
|
|
|
|
- {
|
|
|
|
|
- if (barcode.length() != 17 && barcode.length() != 18)
|
|
|
|
|
- {
|
|
|
|
|
- //与该模式长度不匹配
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if (barcode.length() == 17)
|
|
|
|
|
- {
|
|
|
|
|
- barcode = CLewaimaiString::BuZifuLeft(barcode, 1, '0');
|
|
|
|
|
|
|
+ //普通商品
|
|
|
|
|
+ CPosPrinter printer;
|
|
|
|
|
+ printer.PrintShangpinTiaoma(foodinfo, "0.000");
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- //18位【FWWWWWWEEEEENNNNNC】
|
|
|
|
|
- bianma = barcode.substr(1, 6);
|
|
|
|
|
- money = barcode.substr(7, 5);
|
|
|
|
|
- weight = barcode.substr(12, 5);
|
|
|
|
|
- jiaoyan = barcode.substr(17, 1);
|
|
|
|
|
}
|
|
}
|
|
|
- else if (setting_tiaomacheng_geshi == "6")
|
|
|
|
|
- {
|
|
|
|
|
- if (barcode.length() != 17 && barcode.length() != 18)
|
|
|
|
|
- {
|
|
|
|
|
- //与该模式长度不匹配
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if (barcode.length() == 17)
|
|
|
|
|
- {
|
|
|
|
|
- barcode = CLewaimaiString::BuZifuLeft(barcode, 1, '0');
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //18位【FWWWWWWNNNNNEEEEEC】
|
|
|
|
|
- bianma = barcode.substr(1, 6);
|
|
|
|
|
- weight = barcode.substr(7, 5);
|
|
|
|
|
- money = barcode.substr(12, 5);
|
|
|
|
|
- jiaoyan = barcode.substr(17, 1);
|
|
|
|
|
- }
|
|
|
|
|
- else if (setting_tiaomacheng_geshi == "7")
|
|
|
|
|
- {
|
|
|
|
|
- if (barcode.length() != 17 && barcode.length() != 18)
|
|
|
|
|
- {
|
|
|
|
|
- //与该模式长度不匹配
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if (barcode.length() == 17)
|
|
|
|
|
- {
|
|
|
|
|
- barcode = CLewaimaiString::BuZifuLeft(barcode, 1, '0');
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //18位【FFWWWWWEEEEENNNNNC】
|
|
|
|
|
- bianma = barcode.substr(2, 5);
|
|
|
|
|
- money = barcode.substr(7, 5);
|
|
|
|
|
- weight = barcode.substr(12, 5);
|
|
|
|
|
- jiaoyan = barcode.substr(17, 1);
|
|
|
|
|
- }
|
|
|
|
|
- else if (setting_tiaomacheng_geshi == "8")
|
|
|
|
|
- {
|
|
|
|
|
- if (barcode.length() != 17 && barcode.length() != 18)
|
|
|
|
|
- {
|
|
|
|
|
- //与该模式长度不匹配
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if (barcode.length() == 17)
|
|
|
|
|
- {
|
|
|
|
|
- barcode = CLewaimaiString::BuZifuLeft(barcode, 1, '0');
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //18位【FFWWWWWNNNNNEEEEEC】
|
|
|
|
|
- bianma = barcode.substr(2, 5);
|
|
|
|
|
- weight = barcode.substr(7, 5);
|
|
|
|
|
- money = barcode.substr(12, 5);
|
|
|
|
|
- jiaoyan = barcode.substr(17, 1);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //先检查编码是否存在,如果编码不存在直接返回false
|
|
|
|
|
- int i_bianma = atoi(bianma.c_str());
|
|
|
|
|
- if (i_bianma < 1)
|
|
|
|
|
- {
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- CFood foodinfo;
|
|
|
|
|
-
|
|
|
|
|
- CSqlite3 sqlite;
|
|
|
|
|
- bool ret = sqlite.GetFoodByPluBianma(std::to_string(i_bianma), foodinfo);
|
|
|
|
|
- if (ret == false)
|
|
|
|
|
- {
|
|
|
|
|
- //没找到这个商品
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //走到这里是找到商品了,那么就开始计算价格和重量
|
|
|
|
|
- double d_money = 0;
|
|
|
|
|
- double d_weight = 0;
|
|
|
|
|
-
|
|
|
|
|
- //如果有价格,优先用价格
|
|
|
|
|
- if (money.length() > 0)
|
|
|
|
|
- {
|
|
|
|
|
- //这个出来的单位是分,要把单位转成元
|
|
|
|
|
- d_money = atof(money.c_str());
|
|
|
|
|
-
|
|
|
|
|
- d_money = d_money / 100;
|
|
|
|
|
-
|
|
|
|
|
- //根据价格计算重量
|
|
|
|
|
- d_weight = d_money / atof(foodinfo.price.c_str());
|
|
|
|
|
- }
|
|
|
|
|
- else if (weight.length() > 0)
|
|
|
|
|
- {
|
|
|
|
|
- //这个单位是克,要转化成千克
|
|
|
|
|
- d_weight = atof(weight.c_str());
|
|
|
|
|
-
|
|
|
|
|
- d_weight = d_weight / 1000;
|
|
|
|
|
-
|
|
|
|
|
- //有重量了,其实不需要计算价格,价格加到购物车的时候会自己计算
|
|
|
|
|
- }
|
|
|
|
|
- else
|
|
|
|
|
- {
|
|
|
|
|
- //价格和重量都没有,这是异常情况
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if (foodinfo.stockvalid == "1" && atof(foodinfo.stock.c_str()) < d_weight)
|
|
|
|
|
- {
|
|
|
|
|
- //库存为0了,不做任何处理
|
|
|
|
|
- m_pMainWnd->ShowToast(L"该商品已售完");
|
|
|
|
|
-
|
|
|
|
|
- //只要找到了就返回true
|
|
|
|
|
- return true;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- CDiandanOrderItem clickItem;
|
|
|
|
|
-
|
|
|
|
|
- clickItem.food_id = foodinfo.id;
|
|
|
|
|
- clickItem.food_name = foodinfo.name;
|
|
|
|
|
- clickItem.type_id = foodinfo.type_id;
|
|
|
|
|
- clickItem.price = foodinfo.price;
|
|
|
|
|
- clickItem.is_dabao = false;
|
|
|
|
|
- clickItem.dabao_money = foodinfo.dabao_money;
|
|
|
|
|
- clickItem.num = CLewaimaiString::DoubleToString(d_weight, 3); //重量保留3位小数
|
|
|
|
|
-
|
|
|
|
|
- if (foodinfo.member_price_used == "1")
|
|
|
|
|
- {
|
|
|
|
|
- clickItem.is_member_price_used = true;
|
|
|
|
|
- }
|
|
|
|
|
- else
|
|
|
|
|
- {
|
|
|
|
|
- clickItem.is_member_price_used = false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //处理会员价的json
|
|
|
|
|
- std::string member_price_json = foodinfo.member_price_json;
|
|
|
|
|
-
|
|
|
|
|
- rapidjson::Document document;
|
|
|
|
|
- document.Parse(member_price_json.c_str());
|
|
|
|
|
-
|
|
|
|
|
- rapidjson::Value& member_price = document;
|
|
|
|
|
- for (rapidjson::SizeType i = 0; i < member_price.Size(); ++i)
|
|
|
|
|
- {
|
|
|
|
|
- rapidjson::Value& member_price_info = member_price[i];
|
|
|
|
|
-
|
|
|
|
|
- MemberPrice newPirce;
|
|
|
|
|
- newPirce.id = member_price_info["id"].GetString();
|
|
|
|
|
- newPirce.level = member_price_info["level"].GetString();
|
|
|
|
|
- newPirce.price = member_price_info["price"].GetString();
|
|
|
|
|
-
|
|
|
|
|
- clickItem.m_member_price.push_back(newPirce);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //把当前点击商品的信息,保存到orderitem里面,方便后面修改规格的时候使用
|
|
|
|
|
- clickItem.SetFoodInfo(foodinfo);
|
|
|
|
|
- clickItem.SetIsTaocan(false);
|
|
|
|
|
-
|
|
|
|
|
- clickItem.is_weight = true;
|
|
|
|
|
- clickItem.is_nature = false;
|
|
|
|
|
-
|
|
|
|
|
- //商品没有商品属性
|
|
|
|
|
- bool is_add_new = false;
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- return true;
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//开始搜索某个商品名字
|
|
//开始搜索某个商品名字
|