private bool LogARepair(RepairsTbl pRepair, bool pCalcOrderData)
        {
            bool _Success = false;
            // create a new order for delivery [RoastDate]
            OrderCls _OrderData      = new OrderCls();
            DateTime _RequiredByDate = DateTime.Now.Date.AddDays(7);

            // add the default data to order
            _OrderData.HeaderData.CustomerID = pRepair.CustomerID;
            _OrderData.HeaderData.Notes      = "Collect/Swop out Machine for Service";

            List <OrderDetailData> orderDetailDatas = new List <OrderDetailData>();
            OrderDetailData        orderDetailData  = new OrderDetailData();

            orderDetailData.ItemTypeID      = ItemTypeTbl.CONST_SERVICEITEMID;
            orderDetailData.QuantityOrdered = 1;


            // Calculate the Data from the customer details
            if (pCalcOrderData)
            {
                TrackerTools _TT = new TrackerTools();
                _OrderData.HeaderData.RoastDate = _TT.GetNextRoastDateByCustomerID(pRepair.CustomerID, ref _RequiredByDate);
                TrackerTools.ContactPreferedItems _ContactPreferedItems = _TT.RetrieveCustomerPrefs(pRepair.CustomerID);

                _OrderData.HeaderData.OrderDate      = DateTime.Now.Date;
                _OrderData.HeaderData.RequiredByDate = _RequiredByDate;
                if (_ContactPreferedItems.RequiresPurchOrder)
                {
                    _OrderData.HeaderData.PurchaseOrder = TrackerTools.CONST_POREQUIRED;
                }
                _OrderData.HeaderData.ToBeDeliveredBy = _ContactPreferedItems.DeliveryByID;
            }
            else
            {
                _OrderData.HeaderData.RoastDate      = _OrderData.HeaderData.OrderDate = DateTime.Now.Date;
                _OrderData.HeaderData.RequiredByDate = _RequiredByDate;
            }
            // save the data to the orders
            OrderTbl _Order = new OrderTbl();

            _Order.InsertNewOrderLine(_OrderData);
            pRepair.RelatedOrderID = _Order.GetLastOrderAdded(_OrderData.HeaderData.CustomerID, _OrderData.HeaderData.OrderDate, ItemTypeTbl.CONST_SERVICEITEMID);

            return(_Success);
        }
        public List <OrderDetailData> LoadOrderDetailData(Int64 CustomerId, DateTime DeliveryDate, String Notes, int MaximumRows, int StartRowIndex)
        {
            List <OrderDetailData> oDetails = new List <OrderDetailData>();
            TrackerDb _TDB    = new TrackerDb();
            string    _sqlCmd = "SELECT [ItemTypeID], [QuantityOrdered], [PackagingID], [OrderID] FROM [OrdersTbl] WHERE ";

            if (CustomerId == 9) //CustomersTbl.CONST_CUSTOMERID_GENERALOROTHER)
            {
//                _sqlCmd += "([CustomerId] = " + CustomersTbl.CONST_STR_CUSTOMERID_GENERALOROTHER + ") AND ([RequiredByDate] = ?) AND ([Notes] = ?)";
                _sqlCmd += "([CustomerId] = 9) AND ([RequiredByDate] = ?) AND ([Notes] = ?)";

                _TDB.AddWhereParams(DeliveryDate, DbType.Date, "@RequiredByDate");
                _TDB.AddWhereParams(Notes, DbType.String, "@Notes");
            }
            else
            {
                _sqlCmd += "([CustomerId] = ?) AND ([RequiredByDate] = ?)";
                _TDB.AddWhereParams(CustomerId, DbType.Int64, "@CustomerId");
                _TDB.AddWhereParams(DeliveryDate, DbType.Date, "@RequiredByDate");
            }
            IDataReader _DataReader = _TDB.ExecuteSQLGetDataReader(_sqlCmd);

            if (_DataReader != null)
            {
                while (_DataReader.Read())
                {
                    OrderDetailData od = new OrderDetailData();

                    od.ItemTypeID      = (_DataReader["ItemTypeID"] == DBNull.Value) ? 0 : (Int32)_DataReader["ItemTypeID"];
                    od.PackagingID     = (_DataReader["PackagingID"] == DBNull.Value) ? 0 : (Int32)_DataReader["PackagingID"];
                    od.OrderID         = (Int32)_DataReader["OrderId"]; // this is the PK cannot be null
                    od.QuantityOrdered = (_DataReader["QuantityOrdered"] == DBNull.Value) ? 1 : Math.Round(Convert.ToDouble(_DataReader["QuantityOrdered"]), 2);

                    oDetails.Add(od);
                }
                _DataReader.Close();
            }
            _TDB.Close();

            return(oDetails);
        }