Ejemplo n.º 1
0
        private bool ShowOrder(MyOrderRow order)
        {
            var items = order.GetOrderItemRows();

            lvItems.Items.Clear();
            decimal total = 0;
            int     count = 0;;

            foreach (var item in items)
            {
                if (item.RowState == DataRowState.Deleted)
                {
                    continue;
                }
                if (item.IsNoNull())
                {
                    continue;
                }
                if (item.IsProductIDNull())
                {
                    continue;
                }
                if (item.IsPriceNull())
                {
                    item.Price = 0m;
                }
                decimal      no        = item.No;
                decimal      money     = item.Price * no;
                int          productID = item.ProductID;
                ListViewItem lvItem    = lvItems.Items.Add(productID.ToString());
                lvItem.SubItems.Add(FindNameFromProduct(productID));
                lvItem.SubItems.Add(no.ToString("N0"));
                lvItem.SubItems.Add(money.ToString("N0"));
                total += money;
                count++;
            }
            // 計算折扣
            if (!order.IsDiscountRateNull())
            {
                decimal discountRate = order.DiscountRate;
                if (discountRate != 0m && discountRate != 1m)
                {
                    total = Math.Floor(total * discountRate);
                }
            }

            lvItems.Columns[1].Text = "ID " + PureIDStr(order.ID) + (order.Deleted ? " deleted" : "");
            lvItems.Columns[2].Text = count.ToString();
            lvItems.Columns[3].Text = total.ToString("N0");

            labelReturned.Visible = false;
            labelMemberID.Visible = false;
            if (!order.IsIncomeNull())
            {
                if (!order.IsDeductNull())
                {
                    if (order.Income < 0)
                    {
                        total += order.Deduct;
                    }
                    else
                    {
                        total -= order.Deduct;
                    }
                }
                decimal income = Math.Round(order.Income, 2);
                if (total != order.Income)
                {
                    if (order.Income < 0 && total == (-order.Income))
                    {
                        labelReturned.Text    = "收銀" + order.CashierID + " 授權" + order.RCashierID.ToString() + "  退單" + order.OldID.ToString();
                        labelReturned.Visible = true;
                        return(true);
                    }
                    MessageBox.Show("計算金額<" + total.ToString() + ">不符 " + income.ToString());
                    return(false);
                }
                else
                {
                    labelReturned.Text = "收銀 " + order.CashierID;
                    if (!order.IsPrintTimeNull())
                    {
                        labelReturned.Text += "     時間 " + order.PrintTime.ToString("HH:mm:ss");
                    }
                    labelReturned.Visible = true;
                }
            }
            if (!order.IsMemberIDNull() && order.MemberID != "")
            {
                labelMemberID.Text    = "会员" + order.MemberID;
                labelMemberID.Visible = true;
            }
            return(true);
        }