Exemplo n.º 1
0
        void SetOrderItemFromListViewItem(BasicDataSet.OrderItemRow Row, ListViewItem lvItem, int i)
        {
            MenuItemForTag item = (MenuItemForTag)lvItem.Tag;

            Row.No        = (decimal)item.No;
            Row.ProductID = item.productID;
            Row.Price     = (decimal)item.Price;
            Row.Index     = (short)i;
            if (item.classcode == MyConstant.CanDiscountClass)
            {
                Row.Discount = true;
            }
            else
            {
                Row.Discount = false;
            }
        }
Exemplo n.º 2
0
        private void SaveOrder()
        {
            if (FormOnlyForCheck)
            {
                return;
            }
            bool IsNewRecord = (CurrentOrder.RowState == DataRowState.Detached);

            CurrentOrder.InvoiceID = Int32Parse(mtbInvoiceID.Text);
            CurrentOrder.ServantID = Int32Parse(mtbServant.Text);
            CurrentOrder.PeopleNo  = (byte)Int32Parse(comboBoxPeopleNo.Text);
            CurrentOrder.OrderID   = Int32Parse(mtbOrderNo.Text);
            CurrentOrder.Deduct    = Int32Parse(mtbDeduct.Text);
            CurrentOrder.Income    = (decimal)CalcTotal();
            CurrentOrder.CreditID  = Int64Parse(mtbCreditID.Text);
            if (checkDiscount.Checked)
            {
                CurrentOrder.DiscountRate = 0.88M;
            }
            else
            {
                CurrentOrder.DiscountRate = 1M;
            }
            CurrentOrder.TableID = textBoxTable.Text;
            if (CurrentOrder.IsSaveTimeNull())
            {
                CurrentOrder.SaveTime = DateTime.Now;
            }
            if (CurrentOrder.SaveTime.Year < 2007)     // 初值設成 2000.1.1
            {
                CurrentOrder.SaveTime = DateTime.Now;
            }

            try
            {
                if (IsNewRecord)  // get autonumber 處理如此複雜,只好忍痛把AutoNumber 拿掉
                {
                    DataSet1.Order.AddOrderRow(CurrentOrder);
                }
                // Update OrderItem
                try
                {
                    int count = lvNoDiscount.Items.Count + lvCanDiscount.Items.Count;
                    BasicDataSet.OrderItemRow[] ItemRows = new BasicDataSet.OrderItemRow[count];
                    //               OrderDetail = CurrentOrder.GetOrderItemRows();
                    if (OrderDetail != null)
                    {
                        foreach (BasicDataSet.OrderItemRow Row in OrderDetail)
                        {
                            if (Row.Index < count)
                            {
//                              Row.SetParentRow(CurrentOrder);
                                ItemRows[Row.Index] = Row;
                            }
                            else
                            {
                                Row.Delete();
                            }
                        }
                    }
                    int i = 0;
                    foreach (ListViewItem lvItem in lvCanDiscount.Items)
                    {
                        if (i >= count)
                        {
                            break;              // 不應發生,以防萬一
                        }
                        if (ItemRows[i] == null)
                        {
                            BasicDataSet.OrderItemRow Row = DataSet1.OrderItem.NewOrderItemRow();
                            SetOrderItemFromListViewItem(Row, lvItem, i);
                            Row.SetParentRow(CurrentOrder);
                            DataSet1.OrderItem.AddOrderItemRow(Row);
                            ItemRows[i] = Row;
                        }
                        else
                        {
                            ItemRows[i].BeginEdit();
                            SetOrderItemFromListViewItem(ItemRows[i], lvItem, i);  // 原始的資料應該己經設了ParentRow
                            ItemRows[i].EndEdit();
                        }
                        i++;
                    }
                    foreach (ListViewItem lvItem in lvNoDiscount.Items)
                    {
                        if (i >= count)
                        {
                            break;              // 不應發生,以防萬一
                        }
                        if (ItemRows[i] == null)
                        {
                            BasicDataSet.OrderItemRow Row = DataSet1.OrderItem.NewOrderItemRow();
                            SetOrderItemFromListViewItem(Row, lvItem, i);
                            Row.SetParentRow(CurrentOrder);
                            DataSet1.OrderItem.AddOrderItemRow(Row);
                            ItemRows[i] = Row;
                        }
                        else
                        {
                            ItemRows[i].BeginEdit();
                            SetOrderItemFromListViewItem(ItemRows[i], lvItem, i);  // 原始的資料應該己經設了ParentRow
                            ItemRows[i].EndEdit();
                        }
                        i++;
                    }

                    OrderDetail = ItemRows;
                }
                catch (Exception E)
                {
                    MessageBox.Show(E.Message + "<OrderItem更新出錯>");
                    return;
                }
            }
            catch (System.Exception E)
            {
                MessageBox.Show(E.Message + "  <Order更新出錯>");
                return;
            }
            try
            {
                BasicDataSetTableAdapters.OrderTableAdapter adapter = new BasicDataSetTableAdapters.OrderTableAdapter();
                adapter.Connection      = MapPath.BasicConnection;
                adapter.ClearBeforeFill = true;
                adapter.Update(CurrentOrder);
                CurrentOrder.AcceptChanges();
            }
            catch (Exception E)
            {
                MessageBox.Show(E.Message + "Update(CurrentOrder) 出錯");
                return;
            }
            try // 必須把TableAdapter偵側并行違規關掉,否則第二次就存不入
            {
                BasicDataSetTableAdapters.OrderItemTableAdapter adapterItem = new BasicDataSetTableAdapters.OrderItemTableAdapter();
                adapterItem.ClearBeforeFill = true;
                adapterItem.Connection      = MapPath.BasicConnection;
                adapterItem.Update(OrderDetail);
                DataSet1.OrderItem.AcceptChanges();
            }
            catch (Exception E)
            {
                MessageBox.Show(E.Message + "Update(OrderItem)出錯");
            }
        }