static public ArrayList MakeTestData()
        {
            ArrayList aCustomerWorkOrderList = new ArrayList();

            for (int i = 0; i < 10; i++)
            {
                CustomerWorkOrder aCustomerWorkOrder = new CustomerWorkOrder();
                aCustomerWorkOrder.ClientIdentity  = "IMISTD";
                aCustomerWorkOrder.OrderNumber     = "1234";
                aCustomerWorkOrder.OrderSequence   = i;
                aCustomerWorkOrder.SubSequence     = i;
                aCustomerWorkOrder.OrderStatusCode = "AB";
                aCustomerWorkOrder.OrderStatusText = "ABCD";

                aCustomerWorkOrderList.Add(aCustomerWorkOrder);
            }

            return(aCustomerWorkOrderList);
        }
        static public ArrayList Read(IDataReader reader)
        {
            ArrayList aCustomerWorkOrderList = new ArrayList();

            while (reader.Read())
            {
                CustomerWorkOrder aCustomerWorkOrder = new CustomerWorkOrder();
                aCustomerWorkOrder.ClientIdentity  = reader.GetString(0);
                aCustomerWorkOrder.OrderNumber     = reader.GetString(1);
                aCustomerWorkOrder.OrderSequence   = reader.GetInt32(2);
                aCustomerWorkOrder.SubSequence     = reader.GetInt32(3);
                aCustomerWorkOrder.OrderStatusCode = reader.GetString(4);
                aCustomerWorkOrder.OrderStatusText = reader.GetString(5);

                aCustomerWorkOrderList.Add(aCustomerWorkOrder);
            }

            reader.Close();

            return(aCustomerWorkOrderList);
        }
        public CustomerOrderInfoDoc GetCustomerOrderInfo(
            string PartnerName,
            string LanguageId,
            string ClientIdentity,
            string OrderNumber,
            Nullable <int> OrderSequence)
        {
            if ((PartnerName == "") || (PartnerName == null))
            {
                // test mode!
                CustomerOrderInfoDoc testres = new CustomerOrderInfoDoc();

                ArrayList aCustomerOrderList     = CustomerOrder.MakeTestData();
                ArrayList aCustomerWorkOrderList = CustomerWorkOrder.MakeTestData();
                ArrayList aDepartureList         = Departure.MakeTestData();
                ArrayList aOrderQuantitiesList   = OrderQuantities.MakeTestData();
                ArrayList aCustomerOrderRowList  = CustomerOrderRow.MakeTestData();

                testres.aCustomerOrderList     = aCustomerOrderList.ToArray(typeof(CustomerOrder)) as CustomerOrder[];
                testres.aCustomerWorkOrderList = aCustomerWorkOrderList.ToArray(typeof(CustomerWorkOrder)) as CustomerWorkOrder[];
                testres.aDepartureList         = aDepartureList.ToArray(typeof(Departure)) as Departure[];
                testres.aOrderQuantitiesList   = aOrderQuantitiesList.ToArray(typeof(OrderQuantities)) as OrderQuantities[];
                testres.aCustomerOrderRowList  = aCustomerOrderRowList.ToArray(typeof(CustomerOrderRow)) as CustomerOrderRow[];
                return(testres);
            }

            CustomerOrderInfoDoc res = new CustomerOrderInfoDoc();

            using (DBHelper dbHelper = new DBHelper(PartnerName))
            {
                try
                {
                    WebServicesQuery pkg = new WebServicesQuery(dbHelper.GetDataBase());

                    IDataReader aCustomerOrderRdr     = null;
                    IDataReader aCustomerWorkOrderRdr = null;
                    IDataReader aDepartureRdr         = null;
                    IDataReader aOrderQuantitiesRdr   = null;
                    IDataReader aCustomerOrderRowRdr  = null;

                    pkg.Getcustomerorderinfo(ClientIdentity,
                                             OrderNumber,
                                             OrderSequence,
                                             LanguageId,
                                             out aCustomerOrderRdr,
                                             out aCustomerWorkOrderRdr,
                                             out aDepartureRdr,
                                             out aOrderQuantitiesRdr,
                                             out aCustomerOrderRowRdr);

                    ArrayList aCustomerOrderList     = CustomerOrder.Read(aCustomerOrderRdr);
                    ArrayList aCustomerWorkOrderList = CustomerWorkOrder.Read(aCustomerWorkOrderRdr);
                    ArrayList aDepartureList         = Departure.Read(aDepartureRdr);
                    ArrayList aOrderQuantitiesList   = OrderQuantities.Read(aOrderQuantitiesRdr);
                    ArrayList aCustomerOrderRowList  = CustomerOrderRow.Read(aCustomerOrderRowRdr);

                    res.aCustomerOrderList     = aCustomerOrderList.ToArray(typeof(CustomerOrder)) as CustomerOrder[];
                    res.aCustomerWorkOrderList = aCustomerWorkOrderList.ToArray(typeof(CustomerWorkOrder)) as CustomerWorkOrder[];
                    res.aDepartureList         = aDepartureList.ToArray(typeof(Departure)) as Departure[];
                    res.aOrderQuantitiesList   = aOrderQuantitiesList.ToArray(typeof(OrderQuantities)) as OrderQuantities[];
                    res.aCustomerOrderRowList  = aCustomerOrderRowList.ToArray(typeof(CustomerOrderRow)) as CustomerOrderRow[];

                    dbHelper.GetDataBase().Commit();
                }
                catch (Exception e)
                {
                    try
                    {
                        dbHelper.GetDataBase().Rollback();
                    }
                    catch (Exception)
                    { }
                    Exception InternalError = new Exception("DataError: Error processing data", e);
                    throw (InternalError);
                }
            }

            return(res);
        }