Beispiel #1
0
        private Hisorder CurorderToHisorder(Curorder order)
        {
            Hisorder h = new Hisorder();

            h.AllDiscount  = order.AllDiscount;
            h.Amount       = order.Amount;
            h.BillDate     = DateTime.Now;
            h.Discount     = order.Discount;
            h.DiscountRate = order.DiscountRate;
            h.DishAmount   = order.DishAmount;
            h.FreeCharge   = order.FreeCharge;
            h.HisorderId   = order.CurorderId;
            h.HmeOrderId   = order.HmeOrderId;
            h.HmeTableId   = order.HmeTableId;
            h.HmeUserId    = order.HmeUserId;
            h.Operatorname = order.Operatorname;
            h.OrderDate    = order.OrderDate;
            h.Paytype      = order.Paytype;
            h.PeopleNum    = order.PeopleNum;
            h.Posname      = order.Posname;
            h.PrepayAmount = order.PrepayAmount;
            h.Roomfee      = order.Roomfee;
            h.Shift        = order.Shift;
            h.Shouldpay    = order.Shouldpay;
            h.Srvfee       = order.Srvfee;
            h.TableName    = order.TableName;
            h.Waiter       = order.Waiter;
            h.Yetpay       = order.Yetpay;
            return(h);
        }
Beispiel #2
0
        /// <summary>
        /// 生成历史结账单
        /// </summary>
        /// <param name="order"></param>
        /// <param name="curorderDetailList"></param>
        /// <returns></returns>
        public static string GenerateHisorderBill(Hisorder order, List <HisorderDetail> DetailList)
        {
            int     col1 = 16, col2 = 8, col3 = 8;
            decimal sum = 0, qtys = 0;
            string  s = string.Empty;

            s += CharTool.Append(App.DinnerName);
            s += CharTool.Append("结账单");
            s += CharTool.Append("流水:" + order.HisorderId, AlignType.Left);
            s += CharTool.Split();

            s += CharTool.Append("品名", AlignType.Left, col1) + CharTool.Append("数量", AlignType.Left, col2) + CharTool.Append("单价", AlignType.Left, col3);
            s += "\n";

            foreach (var item in DetailList)
            {
                qtys += item.Quantity;
                sum  += item.Quantity * item.Price * item.DiscountRate;
                s    += CharTool.Append(item.DishName, AlignType.Left, col1) + CharTool.Append(item.Quantity, AlignType.Left, col2) + CharTool.Append(item.Price, AlignType.Left, col3);
                s    += "\n";
            }
            s += CharTool.Split();
            s += CharTool.Append("合计:", AlignType.Left, col1) + CharTool.Append(qtys.ToString("0.00"), AlignType.Left, col2) + CharTool.Append(sum.ToString("0.00"), AlignType.Left, col3);
            s += "\n";
            s += CharTool.Append(order.Paytype + "支付", AlignType.Left, col1);
            s += CharTool.Append("收银:" + App.OperatorId, AlignType.Right, col2 + col3);
            s += "\n";
            s += CharTool.Append(DateTime.Now, AlignType.Left);
            s += CharTool.Append("欢迎下次光临");
            return(s);
        }
        public HistoryDetail(Hisorder selectproduct)
        {
            InitializeComponent();
            BindingContext = selectproduct;
            send           = selectproduct;

            NavigationPage.SetHasNavigationBar(this, false);

            if (Application.Current.Properties["language"].ToString() == "eng.png")
            {
                totallabel.Text = "Total";
                thblabel.Text   = "THB";
            }
            else
            {
                totallabel.Text = "รวม";
                thblabel.Text   = "บาท";
            }

            if (send.status == "Confirm receipt")
            {
                if (Application.Current.Properties["language"].ToString() == "eng.png")
                {
                    BTN.Text = "Confirm";
                }
                else
                {
                    BTN.Text = "ยืนยัน";
                }
                BTN.BackgroundColor = Color.FromHex("3A4857");
                LoadS2();
            }
            else if (send.status == "Shipping")
            {
                if (Application.Current.Properties["language"].ToString() == "eng.png")
                {
                    BTN.Text = "Shipping";
                }
                else
                {
                    BTN.Text = "กำลังจัดส่ง";
                }
                LoadS1();
            }
            else if (send.status == "Completed")
            {
                if (Application.Current.Properties["language"].ToString() == "eng.png")
                {
                    BTN.Text = "Completed";
                }
                else
                {
                    BTN.Text = "เสร็จสิ้น";
                }
                LoadS3();
            }
        }
Beispiel #4
0
        public Hisorder GetByTablename(string tablename)
        {
            string    sql = "select * from hisorder where tablename = ?";
            DataTable dt  = OdbcTool.ExecuteDataTable(sql, tablename);

            dt.TableName = "hisorder";
            Hisorder o = dt.ToEntity <Hisorder>();

            return(o);
        }
Beispiel #5
0
        public Hisorder GetByHisorderId(string id)
        {
            Hisorder  o   = new Hisorder();
            string    sql = "select * from hisorder where hisorder_id = ?";
            DataTable dt  = OdbcTool.ExecuteDataTable(sql, id);

            dt.TableName = "hisorder";
            o            = dt.ToEntity <Hisorder>();
            return(o);
        }
Beispiel #6
0
        private Bill CreateBill(Hisorder h)
        {
            Bill bill = new Bill();

            bill.BillId     = "PT" + DateTime.Now.ToString("yyyyMMddHHmmssfff");
            bill.OrderId    = h.HisorderId;
            bill.PayDate    = h.BillDate;
            bill.Payee      = h.Operatorname;
            bill.PayType    = h.Paytype;
            bill.PayUsage   = "营业收入";
            bill.RealPay    = h.Shouldpay;
            bill.is_statics = "Y";
            return(bill);
        }
Beispiel #7
0
        /// <summary>
        /// 添加客单
        /// </summary>
        /// <returns></returns>
        public bool AddOrder(Curorder order, IList <CurorderDetail> details, int channel, string paycode)
        {
            int    UserId         = 0;
            string Phone          = string.Empty;
            string HmeFlowId_Last = string.Empty;

            if (order == null || details.Count < 1)
            {
                throw new Exception("客单或客单明细不能为空");
            }

            if (channel > 0)  //如果非现金支付
            {
                Debug.WriteLine(DateTime.Now.ToString() + "\r\n开始提交预结账流水", "结账");
                //提交消费流水(预流水)
                MsgArgs msg = (new HttpSubmitConsumeSerial("0")).Request(order, details);
                if (msg.Code != 1)
                {
                    throw new Exception("提交流水失败\n" + msg.ErrMessage);
                }
                Debug.WriteLine(DateTime.Now.ToString() + "\r\n开始支付", "结账");
                //提交扫码支付
                msg = (new HttpMicropay()).Request(order.HmeOrderId, channel, paycode);
                if (msg.Code != 1)
                {
                    throw new Exception("付款失败\n" + msg.ErrMessage);
                }
                Debug.WriteLine(DateTime.Now.ToString() + "\r\n支付返回", "结账");
                JObject jobj = JObject.Parse(msg.Content);
                if (string.IsNullOrEmpty(jobj["data"]["userId"].ToString()))
                {
                    UserId = 0;
                }
                else
                {
                    UserId = int.Parse(jobj["data"]["userId"].ToString());
                }
                Phone = jobj["data"]["phone"].ToString();
            }

            //转换当前客单及明细为历史客单及明细
            Hisorder h = CurorderToHisorder(order);

            order.HmeUserId = UserId;
            h.HmeUserId     = UserId;
            List <HisorderDetail> hlist = new List <HisorderDetail>();
            Bill bill = CreateBill(h);

            for (int i = 0; i < details.Count; i++)
            {
                hlist.Add(CurorderDetailToHisorderDetail(details[i]));
            }
            try
            {
                Debug.WriteLine(DateTime.Now.ToString() + "\r\n开始保存本地账单", "结账");
                OdbcTransTool tran = new OdbcTransTool();
                OdbcCommand   cmd;
                DataTable     dtHisorder = EntityTool.EntityToDataTable <Hisorder>(h, out cmd);
                tran.UpdateDataTableUsingTrans(dtHisorder, cmd);
                DataTable dtHisorderDetail = EntityTool.EntityListToDataTable(hlist, out cmd);
                tran.UpdateDataTableUsingTrans(dtHisorderDetail, cmd);
                DataTable dtBill = EntityTool.EntityToDataTable <Bill>(bill, out cmd);
                tran.UpdateDataTableUsingTrans(dtBill, cmd);
                tran.Commit();
                Debug.WriteLine(DateTime.Now.ToString() + "\r\n本地账单保存完成", "结账");
                try
                {
                    Debug.WriteLine(DateTime.Now.ToString() + "\r\n开始提交最终结账流水", "结账");
                    //提交消费流水(最终流水),就算失败也不影响结账流程
                    MsgArgs msg = (new HttpSubmitConsumeSerial("1")).Request(order, details);
                    if (msg.Code != 1)
                    {
                        MessageBox.Show("结账成功但提交流水失败\n" + msg.ErrMessage, "提示信息");
                    }
                    Debug.WriteLine(DateTime.Now.ToString() + "\r\n最终结账流水提交完成", "结账");
                    HmeFlowId_Last = JObject.Parse(msg.Content)["data"].ToString();
                }
                catch (Exception e)
                {
                    MessageBox.Show("结账成功但提交流水失败\n" + e.Message, "提示信息");
                }
                string sql = "update hisorder set hme_id = ? where hisorder_id = ?";
                OdbcTool.ExecuteSql(sql, HmeFlowId_Last, h.HisorderId.Substring(0, 18));
                return(true);
            }
            catch (Exception e)
            {
                throw new Exception("添加客单失败\n" + e.Message);
            }
        }