//US 25.02.2014
        //Suchparameter könen noch nicht ausgewertet werden, da die XML Deserialisierung mit "dataTransfer" noch nicht funktioniert
        public searchSalesVehiclesResponse searchSalesVehicles(searchSalesVehiclesRequest request)
        {
            Int32 fahrzeugid;
            string fahrzeugstatus = "";
            string auftragstatusverkauf = "";
            string strStandtage = "";
            Int32 standtage;
            string zulassungskz = "";
            string marke = "";
            string verkaufstyp = "";
            string bezeichnung = "";
            DateTime datumerstzulassung;
            string datErstzulassung = "";
            DateTime datumausgang;
            string datAusgang = "";
            Int32 kilometerstand;
            string farbe = "";
            Int32 kw;
            string strKW = "";
            string strKilometerstand = "";
            decimal vkempfohlenbrutto;
            decimal vkgeplantbrutto;
            string fahrzeugart = "";
            string strvke = "";
            string strvkg = "";

            DateTime dtDefaultDB;
            dtDefaultDB = Convert.ToDateTime("01.01.1900");

            datumerstzulassung = dtDefaultDB;

            searchSalesVehiclesResponse res = new searchSalesVehiclesResponse();

            interfaceData iData = new interfaceData();
            salesVehicleType sV;

            System.Collections.ArrayList aFahrzeuge = new System.Collections.ArrayList();

            salesmanType sT = new salesmanType();
            sT.identifier = "fmad";
            sT.name = "Fmade";

            System.Xml.Serialization.XmlSerializer xmlReader = new System.Xml.Serialization.XmlSerializer(typeof(Bungert.interfaceData));
            TextReader txtReader = new StringReader(request.Body.arg0);
            Bungert.interfaceData data = new Bungert.interfaceData();
            data = (Bungert.interfaceData)xmlReader.Deserialize(txtReader);

            //Filter wird verarbeitet
            string vinShort = "";
            string licensePlate = "";
            string matchCode = "";
            string bodywork = "";
            string brand = "";
            string color = "";
            string fueltype = "";
            Bungert.interfaceDataSearchSalesVehicleFirstRegistration[] fR;
            string fRfrom = "";
            string fRto = "";
            Bungert.interfaceDataSearchSalesVehicleMilage[] mile;
            string mileFrom = "";
            string mileTo = "";
            string model = "";
            Bungert.interfaceDataSearchSalesVehiclePrice[] price;
            string priceFrom = "";
            string priceTo = "";
            Bungert.interfaceDataSearchSalesVehiclePS[] ps;
            string psFrom = "";
            string psTo = "";
            string salesState = "";
            Bungert.interfaceDataSearchSalesVehicleStandingTime[] standingT;
            string standingTfrom = "";
            string standingTto = "";

            string stockState = "";
            Bungert.interfaceDataSearchSalesVehicleVehicleTypesVehicleType[] vehicleTypes;
            string vehicleT = "";
            string sqlWhere = "";

            //verkürzte Fahrgestellnr
            if (!String.IsNullOrWhiteSpace(vinShort = data.Items[0].vinShort))
                sqlWhere += " AND lower(a.fahrgestellnr) like '%" + vinShort.ToLower() + "%'";
            //ZulassungsKZ
            if (!String.IsNullOrWhiteSpace(licensePlate = data.Items[0].licensePlate))
                sqlWhere += " AND replace(lower(a.zulassungskz), ' ', '') like '%" + licensePlate.ToLower().Replace(" ","") + "%'";
            //Bezeichnung
            if (!String.IsNullOrWhiteSpace(matchCode = data.Items[0].matchcode))
                sqlWhere += " AND lower(a.bezeichnung) like '%" + matchCode.ToLower() + "%'";

            //Ausführung (Limousine/Kombi usw.)
            //bodywork = data.Items[0].bodywork;
            //Marke
            if(!String.IsNullOrWhiteSpace(brand = data.Items[0].brand))
                sqlWhere += " AND lower(a.marke) = '" + brand.ToLower() + "'";
            //Farbe
             if(!String.IsNullOrWhiteSpace(color = data.Items[0].color))
                sqlWhere += " AND lower(a.farbe) like '%" + color.ToLower() + "%'";

            //Datum Erstzulassung
            fR =  data.Items[0].firstRegistration;
            if (fR != null)
            {
                if(!String.IsNullOrWhiteSpace(fRfrom = fR[0].from))
                    sqlWhere += " AND a.datumerstzulassung >= '" + fRfrom.Substring(0,4) + "-" + fRfrom.Substring(4,2) + "-" + fRfrom.Substring(6,2) + "'";
                if(!String.IsNullOrWhiteSpace(fRto = fR[0].to))
                    sqlWhere += " AND a.datumerstzulassung <= '" + fRto.Substring(0, 4) + "-" + fRto.Substring(4, 2) + "-" + fRto.Substring(6, 2) + "'";
            }

            //Treibstoff
            if (!String.IsNullOrWhiteSpace(fueltype = data.Items[0].fuelType))
                sqlWhere += " AND Upper(a.treibstoff) like '" + fueltype + "%'";

            //Kilometerstand
            mile = data.Items[0].milage;
            if (mile != null)
            {
                if (!String.IsNullOrWhiteSpace(mileFrom = mile[0].from))
                    sqlWhere += " AND a.kilometerstand >= " + mileFrom;
                if (!String.IsNullOrWhiteSpace(mileTo = mile[0].to))
                    sqlWhere += " AND a.kilometerstand <= " + mileTo;
            }

            //Verkaufstyp
            if (!String.IsNullOrWhiteSpace(model = data.Items[0].model))
            {
                sqlWhere += " AND (trim(a.verkaufstyp) like '" + model.Trim().Replace(" ", "") + "%'";
                sqlWhere += " OR trim(a.bezeichnung) like '" + model.Trim().Replace(" ", "") + "%')";
            }

            //VK empfohlen brutto
            price = data.Items[0].price;
            if (price != null)
            {
                if (!String.IsNullOrWhiteSpace(priceFrom = price[0].from))
                    sqlWhere += " AND b.vkempfohlenbrutto >= " + priceFrom;
                if (!String.IsNullOrWhiteSpace(priceTo = price[0].to))
                    sqlWhere += " AND b.vkempfohlenbrutto <= " + priceTo;
            }

            //PS (Umrechung auf KW) Faktor 1KW = 1,36PS
            ps = data.Items[0].ps;
            if (ps != null)
            {
                if (!String.IsNullOrWhiteSpace(psFrom = ps[0].from))
                    sqlWhere += " AND a.kw >= " + psFrom + "/1.36";
                if (!String.IsNullOrWhiteSpace(psTo = ps[0].to))
                    sqlWhere += " AND a.kw <= " + psTo + "/1.36";
            }

            //salesState = data.Items[0].salesState;

            //Standzeit
            //standingT = data.Items[0].standingTime;
            //standingTfrom = standingT[0].from;
            //standingTto = standingT[0].to;

            //stockState = data.Items[0].stockState;

            vehicleTypes = data.Items[0].vehicleTypes;

            if (vehicleTypes != null)
            {
                foreach (Bungert.interfaceDataSearchSalesVehicleVehicleTypesVehicleType vT in vehicleTypes)
                {
                    switch (vT.Value)
                    {
                        case "demo":
                            vehicleT += "'vorführwagen',";
                            break;
                        case "used":
                            vehicleT += "'gebrauchtwagen',";
                            break;
                        case "new":
                            vehicleT += "'neuwagen',";
                            break;
                        //Wird in P2 nicht verwendet
                        //case "agency":
                        //    vehicleT += "'agency'";
                        //    break;

                    }
                }
            }

            if (!String.IsNullOrWhiteSpace(vehicleT))
            {
                vehicleT = "(" + vehicleT.Substring(0, vehicleT.Length - 1) + ")";
                sqlWhere += " AND lower(b.fahrzeugart) IN " + vehicleT;
            }
            using (DBConnect myConnect = new DBConnect())
            {
                String sqlCommand;

                //SQL Standtage US 23.05.2014
                //if datumausgang is null then
                //    datediff(day,datumeingang,today(*))
                //    else
                //datediff(day,datumeingang,datumausgang)
                //endif as Standtage,

                sqlCommand = "SELECT b.fahrzeugid, b.fahrzeugstatus, a.marke, a.verkaufstyp, a.bezeichnung, ";
                sqlCommand += "a.kw, a.farbe, a.datumerstzulassung, a.kilometerstand, b.vkempfohlenbrutto, b.vkgeplantbrutto, b.fahrzeugart, a.zulassungskz, ";
                sqlCommand += "b.auftragstatusverkauf, if b.datumausgang is null then datediff(day,b.datumeingang,today(*)) else datediff(day,b.datumeingang,b.datumausgang) endif, b.datumausgang";
                sqlCommand += " FROM bungert.fahrzeug a, bungert.fahrzeugauftrag b";
                sqlCommand += " WHERE  a.fahrzeugid = b.fahrzeugid";
                //sqlCommand += " AND b.zulassungskz = 'B-AR 6700'";
                if(!String.IsNullOrWhiteSpace(sqlWhere))
                    sqlCommand += sqlWhere;
                sqlCommand += " ORDER BY b.fahrzeugid";
                OdbcCommand cmd = new OdbcCommand(sqlCommand, myConnect.conn);

                myConnect.Connect();

                OdbcDataReader reader;
                //DataReader Objekt wird initialisiert

                using (reader = cmd.ExecuteReader())
                {

                    if (reader.HasRows)
                    {

                        while (reader.Read())
                        {
                            sV = new salesVehicleType();

                            fahrzeugid = reader.GetInt32(0);
                            fahrzeugstatus = reader.GetValue(1).ToString();
                            marke = reader.GetValue(2).ToString();
                            verkaufstyp = reader.GetValue(3).ToString();
                            bezeichnung = reader.GetValue(4).ToString();
                            strKW = reader.GetValue(5).ToString();
                            farbe = reader.GetValue(6).ToString();
                            datErstzulassung = reader.GetValue(7).ToString();
                            strKilometerstand = reader.GetValue(8).ToString();
                            //US 12.02.2014 - Umsetzung: Fehler bei Nullwerten während der Konvertierung zu Decimal
                            //vkempfohlenbrutto = reader.GetDecimal(9);
                            strvke = reader.GetValue(9).ToString();
                            strvkg = reader.GetValue(10).ToString();
                            //vkgeplantbrutto = reader.GetDecimal(10);
                            fahrzeugart = reader.GetValue(11).ToString();
                            zulassungskz = reader.GetValue(12).ToString();
                            auftragstatusverkauf = reader.GetValue(13).ToString();
                            strStandtage = reader.GetValue(14).ToString();
                            datAusgang = reader.GetValue(15).ToString();

                            Decimal.TryParse(strvke, out vkempfohlenbrutto);
                            Decimal.TryParse(strvkg, out vkgeplantbrutto);

                            //Datum Erstzulassung
                            if (String.IsNullOrWhiteSpace(datErstzulassung))
                            {
                                datumerstzulassung = dtDefaultDB;
                            }
                            else
                            {
                                datumerstzulassung = Convert.ToDateTime(datErstzulassung);
                            }

                            //US 10.02.2014
                            //Standort muss zum Verkaeufer passen - standardmäßig "location=1"
                            sV.location = 1;

                            sV.vehicleNumber =  fahrzeugid;

                            salesVehicleTypeHeader sVTH = new salesVehicleTypeHeader();

                            sVTH.licensePlate = zulassungskz;
                            sVTH.brand = marke;
                            sVTH.modelShort = verkaufstyp;
                            sVTH.model = bezeichnung;
                            sVTH.modelLong = bezeichnung;

                            if (String.IsNullOrWhiteSpace(strKW))
                            {
                                kw = 0;
                            }
                            else
                            {
                                kw = Convert.ToInt32(strKW);
                            }

                            sVTH.kw = kw;
                            sVTH.kwSpecified = true;

                            if (String.IsNullOrWhiteSpace(strKilometerstand))
                            {
                                kilometerstand = 0;
                            }
                            else
                            {
                                kilometerstand = Convert.ToInt32(strKilometerstand);
                            }

                            sVTH.milage = kilometerstand;
                            sVTH.milageSpecified = true;

                            sVTH.listPrice = Convert.ToDouble(vkempfohlenbrutto);
                            sVTH.listPriceSpecified = true;

                            sVTH.actualSalesPrice = Convert.ToDouble(vkgeplantbrutto);
                            sVTH.actualSalesPriceSpecified = true;

                            //Datum Ausgang
                            if (String.IsNullOrWhiteSpace(datAusgang))
                            {
                                datumausgang = DateTime.MaxValue;
                            }
                            else
                            {
                                datumausgang = Convert.ToDateTime(datAusgang);
                            }

                            //Lagerstatus
                            switch (fahrzeugstatus.ToUpper())
                            {
                                case "NG":
                                    sVTH.stockState = StockState.bestellt;
                                    sVTH.salesState = SalesState.bestellt;
                                    break;
                                default: //IN, VF, VK
                                    sVTH.stockState = StockState.lagernd;
                                    break;
                            }

                            if (datumausgang <= DateTime.Today)
                                sVTH.stockState = StockState.ausgeliefert;

                            //Verkaufsstatus
                            if (fahrzeugstatus.ToUpper() == "NG")
                                sVTH.salesState = SalesState.bestellt;

                            switch (auftragstatusverkauf.ToUpper())
                            {
                                case "ER":
                                    sVTH.salesState = SalesState.reserviert;
                                    break;
                                case "FA":
                                    sVTH.salesState = SalesState.reserviert;
                                    break;
                                case "AB":
                                    sVTH.salesState = SalesState.reserviert;
                                    break;
                                case "NV":
                                    sVTH.salesState = SalesState.verfügbar;
                                    break;
                            }

                            if (String.IsNullOrWhiteSpace(strStandtage))
                            {
                                standtage = 0;
                            }
                            else
                            {
                                standtage = Convert.ToInt32(strStandtage);
                            }

                            sVTH.standingTime = standtage;

                            sV.header = sVTH;

                            aFahrzeuge.Add(sV);

                        }

                    }
                    reader.Close();
                }
            }

            salesVehicleType[] aSalesVehicle = new salesVehicleType[aFahrzeuge.Count];
            //List<salesVehicleType> aSalesVehicle = new List<salesVehicleType>();
            for (int i = 0; i < aFahrzeuge.Count; i++)
            {
                salesVehicleType salesV = (salesVehicleType)aFahrzeuge[i];
                aSalesVehicle[i] = salesV;
            }

            iData.salesVehicle = aSalesVehicle;
            iData.interfaceVersion = 1;
            iData.dataProvider = "STANDARD_INTERFACE";

            iData.callingUser = sT;
            iData.transmissionReason = "";

            System.IO.StringWriter stringWriter = new System.IO.StringWriter();

            var serializer = new XmlSerializer(typeof(interfaceData));
            using (var xw = XmlWriter.Create(stringWriter, new XmlWriterSettings { Encoding = new UTF8Encoding() }))
            {
                serializer.Serialize(xw, iData);

            }

            #region xml encoding
            //string result;
            //using (MemoryStream memoryStream = new MemoryStream())
            //{
            //    XmlSerializer xs = new XmlSerializer(typeof(interfaceData));
            //    XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
            //    xs.Serialize(xmlTextWriter, iData);
            //    result = Encoding.UTF8.GetString(memoryStream.ToArray());
            //}
            //if (String.IsNullOrEmpty(result))
            //    result = "";
            #endregion

            searchSalesVehiclesResponseBody resBody = new searchSalesVehiclesResponseBody();

            resBody.@return = stringWriter.ToString();

            res.Body = resBody;

            return res;
        }
        //US 26.02.2014
        public getSalesVehicleDetailResponse getSalesVehicleDetail(getSalesVehicleDetailRequest request)
        {
            Int32 verkaueferid;
            string strVerkaeuferid = "";
            Int32 kundenkontonr;
            string strKundenkontonr = "";
            string kundensuchname = "";
            string fahrgestellnr = "";
            Int32 modelljahr;
            string strModelljahr = "";
            string innenausstattung = "";
            Int32 hubraum;
            string strHubraum = "";
            string treibstoff = "";
            string zuendschluesselnr = "";
            string tuerschluesselnr = "";
            string radiocode = "";
            string zulassungskz = "";
            DateTime datumabmeldung;
            string strDatumabmeldung = "";
            Int32 anzahlvorbesitzer;
            Int32 vorbesitzeradrid;
            string kbahsnr = "";
            string kbatsnr = "";
            DateTime datumzulassungkunde;
            string strDatumzulassungkunde = "";
            DateTime datumhu;
            string strDatumhu = "";
            DateTime datumau;
            string strDatumau = "";
            Boolean unfallfahrzeug;
            string kfzbriefnr = "";
            string kfzbriefort = "";
            DateTime datumausgang;
            string strDatumausgang = "";
            DateTime datumverkauf;
            string strDatumverkauf = "";
            Boolean differenzbesteuerung;
            Int32 einkaeufer;
            DateTime datumeingang;
            string strDatumeingang = "";
            Int32 gutschriftnr;
            string zusatztext = "";
            string aktenzeichen = "";
            decimal optionenwerkvk;
            string strOWVK;
            decimal zubehoervk;
            string strZVK;
            decimal optionenhaendlervk;
            string strOHVK;
            decimal fahrzeugek;
            string strFEK;
            decimal optionenwerkek;
            string strOWEK;
            decimal optionenhaendlerek;
            string strOHEK;
            decimal zubehoerek;
            string strZEK;
            decimal aufbereitungek;
            string strAEK;
            string motorseriennr = "";
            Int32 vehicleNumber = 0;
            Int32 auftragnr = 0;

            DateTime dtDefaultDB;
            dtDefaultDB = Convert.ToDateTime("01.01.1900");

            datumabmeldung = dtDefaultDB;
            datumzulassungkunde = dtDefaultDB;
            unfallfahrzeug = false;
            datumausgang = dtDefaultDB;
            datumverkauf = dtDefaultDB;
            differenzbesteuerung = false;

            getSalesVehicleDetailResponse res = new getSalesVehicleDetailResponse();

            interfaceData iData = new interfaceData();
            salesVehicleTypeDetailsBasis sVDB;

            System.Collections.ArrayList aFahrzeuge = new System.Collections.ArrayList();

            salesmanType sT = new salesmanType();
            sT.identifier = "fmad";
            sT.name = "Fmade";

            salesVehicleType sV = new salesVehicleType();

            sV.location = 1;

            if (String.IsNullOrWhiteSpace(request.Body.arg0))
            {
                vehicleNumber = 0;
            }
            else
            {
                vehicleNumber = Convert.ToInt32(request.Body.arg0);
            }

            using (DBConnect myConnect = new DBConnect())
            {
                String sqlCommand;

                //US 27.02.2014
                //Optionen aus der Tabelle "fahrzeugauftragoptionen" müssen noch abgerufen werden

                sqlCommand = "SELECT b.verkaeufer, b.kundenkontonr, b.kundensuchname, a.fahrgestellnr, a.modelljahr, a.innenausstattung, a.hubraum, a.treibstoff, a.zuendschluesselnr, a.tuerschluesselnr, a.radiocode,";
                sqlCommand += " a.zulassungskz, b.datumabmeldung, b.anzahlvorbesitzer, b.vorbesitzeradrid, a.kbahsnr, a.kbatsnr, a.datumzulassungkunde, a.datumhu, a.datumau, b.unfallfahrzeug, a.kfzbriefnr, b.kfzbriefort, ";
                sqlCommand += " b.datumausgang, b.datumverkauf, b.differenzbesteuerung, b.einkaeufer, b.datumeingang, b.gutschriftnr, b.zusatztext, b.aktenzeichen, b.optionenwerkvk, b.zubehoervk, b.optionenhaendlervk, ";
                sqlCommand += " b.fahrzeugek, b.optionenwerkek, b.optionenhaendlerek, b.zubehoerek, b.aufbereitungek, a.motorseriennr, b.auftragnr ";
                sqlCommand += " FROM bungert.fahrzeug a, bungert.fahrzeugauftrag b";
                sqlCommand += " WHERE  a.fahrzeugid = b.fahrzeugid";
                sqlCommand += " AND b.fahrzeugid = ";
                sqlCommand +=  String.IsNullOrWhiteSpace(request.Body.arg0.ToString()) ? "0" : request.Body.arg0.ToString() ;
                sqlCommand += " ORDER BY b.fahrzeugid";
                OdbcCommand cmd = new OdbcCommand(sqlCommand, myConnect.conn);

                myConnect.Connect();

                OdbcDataReader reader;
                //DataReader Objekt wird initialisiert

                using (reader = cmd.ExecuteReader())
                {

                    if (reader.HasRows)
                    {

                        while (reader.Read())
                        {
                            sVDB = new salesVehicleTypeDetailsBasis();

                            strVerkaeuferid = reader.GetValue(0).ToString();
                            strKundenkontonr = reader.GetValue(1).ToString();
                            kundensuchname = reader.GetValue(2).ToString();
                            fahrgestellnr = reader.GetValue(3).ToString();
                            strModelljahr = reader.GetValue(4).ToString();
                            innenausstattung = reader.GetValue(5).ToString();
                            strHubraum = reader.GetValue(6).ToString();
                            treibstoff = reader.GetValue(7).ToString();
                            zuendschluesselnr = reader.GetValue(8).ToString();
                            tuerschluesselnr = reader.GetValue(9).ToString();
                            radiocode = reader.GetValue(10).ToString();
                            zulassungskz = reader.GetValue(11).ToString();
                            strDatumabmeldung = reader.GetValue(12).ToString();
                            anzahlvorbesitzer = reader.GetInt32(13);
                            vorbesitzeradrid = reader.GetInt32(14);
                            kbahsnr = reader.GetValue(15).ToString();
                            kbatsnr = reader.GetValue(16).ToString();
                            strDatumzulassungkunde = reader.GetValue(17).ToString();
                            strDatumhu = reader.GetValue(18).ToString();
                            strDatumau = reader.GetValue(19).ToString();
                            unfallfahrzeug = reader.GetBoolean(20);
                            kfzbriefnr = reader.GetValue(21).ToString();
                            kfzbriefort = reader.GetValue(22).ToString();
                            strDatumausgang = reader.GetValue(23).ToString();
                            strDatumverkauf = reader.GetValue(24).ToString();
                            differenzbesteuerung = reader.GetBoolean(25);
                            einkaeufer = reader.GetInt32(26);
                            strDatumeingang = reader.GetValue(27).ToString();
                            gutschriftnr = reader.GetInt32(28);
                            zusatztext = reader.GetValue(29).ToString();
                            aktenzeichen = reader.GetValue(30).ToString();
                            //US 13.03.2014 - Umsetzung: Fehler bei Nullwerten während der Konvertierung zu Decimal
                            strOWVK = reader.GetValue(31).ToString();
                            strZVK = reader.GetValue(32).ToString();
                            strOHVK = reader.GetValue(33).ToString();
                            strFEK = reader.GetValue(34).ToString();
                            strOWEK = reader.GetValue(35).ToString();
                            strOHEK = reader.GetValue(36).ToString();
                            strZEK = reader.GetValue(37).ToString();
                            strAEK = reader.GetValue(38).ToString();
                            motorseriennr = reader.GetValue(39).ToString();
                            auftragnr = reader.GetInt32(40);

                            Decimal.TryParse(strOWVK, out optionenwerkvk);
                            Decimal.TryParse(strZVK, out zubehoervk);
                            Decimal.TryParse(strOHVK, out optionenhaendlervk);
                            Decimal.TryParse(strFEK, out fahrzeugek);
                            Decimal.TryParse(strOWEK, out optionenwerkek);
                            Decimal.TryParse(strOHEK, out optionenhaendlerek);
                            Decimal.TryParse(strZEK, out zubehoerek);
                            Decimal.TryParse(strAEK, out aufbereitungek);

                            salesVehicleTypeDetailsBasisBuyer byer = new salesVehicleTypeDetailsBasisBuyer();

                            salesmanType salesman = new salesmanType();

                            if (String.IsNullOrWhiteSpace(strVerkaeuferid))
                            {
                                verkaueferid = 0;
                            }
                            else
                            {
                                verkaueferid = Convert.ToInt32(strVerkaeuferid);
                            }

                            if (String.IsNullOrWhiteSpace(strKundenkontonr))
                            {
                                kundenkontonr = 0;
                            }
                            else
                            {
                                kundenkontonr = Convert.ToInt32(strKundenkontonr);
                            }

                            salesman = getSalesman(verkaueferid, myConnect);

                            salesVehicleTypeDetailsBasisSalesman sVTDBS = new salesVehicleTypeDetailsBasisSalesman();
                            sVTDBS.id = verkaueferid.ToString();
                            sVTDBS.name = salesman.name;

                            sVDB.salesman = sVTDBS;

                            byer.id = kundenkontonr;
                            byer.idSpecified = true;
                            byer.name = kundensuchname;

                            sVDB.buyer = byer;
                            sVDB.vin = fahrgestellnr;

                            sVDB.yearOfModel = strModelljahr;

                            sVDB.interiorColor = innenausstattung;

                            if (String.IsNullOrWhiteSpace(strHubraum))
                            {
                                hubraum = 0;
                            }
                            else
                            {
                                hubraum = Convert.ToInt32(strHubraum);
                            }

                            sVDB.cubicCapacity = hubraum;
                            sVDB.cubicCapacitySpecified = true;
                            sVDB.fuelType = treibstoff;
                            sVDB.engineNumber = motorseriennr;
                            sVDB.keyNumber1 = zuendschluesselnr;
                            sVDB.keyNumber2 = tuerschluesselnr;
                            sVDB.radioCode = radiocode;
                            sVDB.licensePlate = zulassungskz;

                            //Datum Abmeldung
                            if (String.IsNullOrWhiteSpace(strDatumabmeldung))
                            {
                                datumabmeldung = dtDefaultDB;
                            }
                            else
                            {
                                datumabmeldung = Convert.ToDateTime(strDatumabmeldung);
                            }

                            sVDB.deRegistrationDate = datumabmeldung;
                            sVDB.numberPreOwners = anzahlvorbesitzer;
                            //TODO US 18.03.2014
                            //sVDB.namePrevOwner = vorbesitzeradrid;

                            sVDB.kbaHsn = kbahsnr;
                            sVDB.kbaTsn = kbatsnr;

                            //Datum Zulassung Kunde
                            if (String.IsNullOrWhiteSpace(strDatumzulassungkunde))
                            {
                                datumzulassungkunde = dtDefaultDB;
                            }
                            else
                            {
                                datumzulassungkunde = Convert.ToDateTime(strDatumzulassungkunde);
                            }

                            sVDB.lastRegistrationDate = datumzulassungkunde;
                            sVDB.lastRegistrationDateSpecified = true;

                            //Datum HU
                            if (String.IsNullOrWhiteSpace(strDatumhu))
                            {
                                datumhu = dtDefaultDB;
                            }
                            else
                            {
                                datumhu = Convert.ToDateTime(strDatumhu);
                            }

                            sVDB.testDate1 = datumhu;
                            sVDB.testDate1Specified = true;

                            //Datum AU
                            if (String.IsNullOrWhiteSpace(strDatumau))
                            {
                                datumau = dtDefaultDB;
                            }
                            else
                            {
                                datumau = Convert.ToDateTime(strDatumau);
                            }

                            sVDB.testDate2 = datumau;
                            sVDB.testDate2Specified = true;
                            sVDB.wrack = unfallfahrzeug;
                            sVDB.wrackSpecified = true;
                            sVDB.carLetter = kfzbriefnr;
                            sVDB.carLetterLocation = kfzbriefort;

                            //Datum Ausgang
                            if (String.IsNullOrWhiteSpace(strDatumausgang))
                            {
                                datumausgang = dtDefaultDB;
                            }
                            else
                            {
                                datumausgang = Convert.ToDateTime(strDatumausgang);
                            }

                            sVDB.deliveryDate = datumausgang;
                            sVDB.deliveryDateSpecified = true;

                            //Datum Verkauf
                            if (String.IsNullOrWhiteSpace(strDatumverkauf))
                            {
                                datumverkauf = dtDefaultDB;
                            }
                            else
                            {
                                datumverkauf = Convert.ToDateTime(strDatumverkauf);
                            }

                            sVDB.salesContractDate = datumverkauf;
                            sVDB.salesContractDateSpecified = true;

                            //Datum Eingang
                            if (String.IsNullOrWhiteSpace(strDatumeingang))
                            {
                                datumeingang = dtDefaultDB;
                            }
                            else
                            {
                                datumeingang = Convert.ToDateTime(strDatumeingang);
                            }

                            salesVehicleTypeDetailsBasisIncomeOfVehicle incomeV = new salesVehicleTypeDetailsBasisIncomeOfVehicle();
                            incomeV.vat = differenzbesteuerung;
                            incomeV.date = datumeingang;
                            incomeV.dateSpecified = true;
                            incomeV.invoiceNumber = gutschriftnr.ToString();
                            //TODO US 18.03.2014
                            //Salesman

                            sVDB.incomeOfVehicle = incomeV;
                            sVDB.remarks = zusatztext;
                            sVDB.matchcode = aktenzeichen;

                            salesVehicleTypeDetails details = new salesVehicleTypeDetails();
                            details.basis = sVDB;

                            salesVehicleTypeDetailsPrices prices = new salesVehicleTypeDetailsPrices();
                            prices.optionsSpecified = (prices.options = Convert.ToDouble(optionenwerkvk)) > 0;
                            prices.equipmentSpecified = (prices.equipment = Convert.ToDouble(zubehoervk)) > 0;
                            prices.othersSpecified = (prices.others = Convert.ToDouble(optionenhaendlervk)) > 0;

                            salesVehicleTypeDetailsPricesPurchase purchase = new salesVehicleTypeDetailsPricesPurchase();

                            purchase.vehicleSpecified = (purchase.vehicle = Convert.ToDouble(fahrzeugek)) > 0;
                            purchase.optionsSpecified = (purchase.options = Convert.ToDouble(optionenwerkek)) > 0;
                            purchase.equipmentSpecified = (purchase.equipment = Convert.ToDouble(optionenhaendlerek)) > 0;
                            purchase.othersSpecified = (purchase.others = Convert.ToDouble(zubehoerek)) > 0;

                            prices.purchase = purchase;

                            salesVehicleTypeDetailsPricesEfforts efforts = new salesVehicleTypeDetailsPricesEfforts();
                            efforts.internEffort1Specified = (efforts.internEffort1 = Convert.ToDouble(aufbereitungek)) > 0;

                            prices.efforts = efforts;

                            details.prices = prices;
                            details.options = getOptions(auftragnr, myConnect);
                            sV.details = details;

                            aFahrzeuge.Add(sV);
                        }

                    }
                    reader.Close();
                }
            }

            salesVehicleType[] aSalesVehicle = new salesVehicleType[aFahrzeuge.Count];
            //List<salesVehicleType> aSalesVehicle = new List<salesVehicleType>();
            for (int i = 0; i < aFahrzeuge.Count; i++)
            {
                salesVehicleType salesV = (salesVehicleType)aFahrzeuge[i];
                aSalesVehicle[i] = salesV;
            }

            iData.salesVehicle = aSalesVehicle;
            iData.interfaceVersion = 1;
            iData.dataProvider = "STANDARD_INTERFACE";

            iData.callingUser = sT;
            iData.transmissionReason = "";

            System.IO.StringWriter stringWriter = new System.IO.StringWriter();

            var serializer = new XmlSerializer(typeof(interfaceData));
            using (var xw = XmlWriter.Create(stringWriter, new XmlWriterSettings { Encoding = new UTF8Encoding() }))
            {
                serializer.Serialize(xw, iData);

            }

            #region xml encoding
            //string result;
            //using (MemoryStream memoryStream = new MemoryStream())
            //{
            //    XmlSerializer xs = new XmlSerializer(typeof(interfaceData));
            //    XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
            //    xs.Serialize(xmlTextWriter, iData);
            //    result = Encoding.UTF8.GetString(memoryStream.ToArray());
            //}
            //if (String.IsNullOrEmpty(result))
            //    result = "";
            #endregion

            getSalesVehicleDetailResponseBody resBody = new getSalesVehicleDetailResponseBody();

            resBody.@return = stringWriter.ToString();

            res.Body = resBody;

            return res;
        }