/// <summary> /// получаем конечную цену (маржа и доставка уже включены) /// </summary> /// <param ftpFolder="price">себестоимость</param> /// <param ftpFolder="currency">валюта</param> /// <returns>возвращает конечную цену продажи</returns> public double GetPrice(StockRecord record, string currency, int Marzha = 0) { if (currency == "RUB" && Marzha == 0) { Marzha = marzha; //это для дисконта, там без маржи вызов функции, тут исправил а в других экспортерах возможно это осталось //но возможно у каких-то магазинов тоже это осталось } if (currency == "RUB") { Marzha = marzha; } double price = Exporter.GetPrice(record, currency, "RUB", Marzha); return(price); //double resultPrice; //if (currency == "USD") //{ // if (record.sellPrice > 0) // { // resultPrice = record.sellPrice; // return resultPrice * Settings.USD_SELL; // } // else // { // resultPrice = record.price + Marzha; // return resultPrice * Settings.USD_BUY; // //throw new Exception("нет цены продажи sku:" + record.sku); // } //} //if (currency == "EUR") //{ // if (record.sellPrice > 0) // { // resultPrice = record.sellPrice * Settings.EURO_BUY; // return resultPrice; // } // else // { // if (Marzha == 0) // throw new Exception("marzha = 0. sku: " + record.sku); // record.sellPrice = record.price + Marzha; // resultPrice = record.sellPrice * Settings.EURO_BUY; // return resultPrice; // } //} //if (currency == "CHF") //{ // if (record.sellPrice > 0) // { // resultPrice = record.sellPrice * Settings.CHF_BUY; // return resultPrice; // } // else // { // throw new Exception("нет цены продажи sku:" + record.sku); // } //} //else if (currency == "RUB") //{ // var sneaker = catalog.GetSneakerFromSKU(record.sku); // if (sneaker != null) // { // if (sneaker.type == "Сланцы") // { // resultPrice = record.price + marzha; // return resultPrice; // } // } // resultPrice = record.price + marzha; // return resultPrice; //} //throw new NotImplementedException(); }
public void CreateRecords() { //Program.logger.Info("Nashstock exporting..."); //foreach (var stockRecord in NashStock1.records) //{ // if (stockRecord.quantity > 0) // { // BonanzaRecord bRecord = new BonanzaRecord(); // bRecord.id = stockRecord.sku + "-" + stockRecord.size; // bRecord.size = stockRecord.size; // bRecord.upc = stockRecord.upc; // //double sellPrice = stockRecord.sellPrice; // //if (sellPrice == 0) // // sellPrice = stockRecord.price + marzha; // //double price = (sellPrice + dostavkaFromRussia) / Settings.USD_SELL; // double price = Exporter.GetPrice2(stockRecord.price, NashStockParser.VAT_VALUE, NashStockParser.DELIVERY_TO_USA, NashStockParser.MARZHA, NashStockParser.CURRENCY, "USD"); // bRecord.price = Math.Round(price, 2).ToString(); // Records.Add(bRecord); // } //} //Program.logger.Info("Discont Samara exporting..."); //foreach (var Discont in DiscontStocks) //{ // foreach (var stockRecord in Discont.records) // { // if (stockRecord.quantity > 3) // { // string id = stockRecord.sku + "-" + stockRecord.size; // //double price = GetPrice(stockRecord, "RUB", marzha); // double price = Exporter.GetPrice2(stockRecord.price, DiscontSamaraParser.VAT_VALUE, DiscontSamaraParser.DELIVERY_TO_USA, DiscontSamaraParser.MARZHA, DiscontSamaraParser.CURRENCY, "USD"); // BonanzaRecord bRecord = @GetRecordFromId(id); // if (bRecord == null) // { // bRecord = new BonanzaRecord(); // bRecord.id = id; // bRecord.size = stockRecord.size; // bRecord.upc = stockRecord.upc; // bRecord.price = Math.Round(price, 2).ToString(); // Records.Add(bRecord); // } // else //если уже есть то добавляем только нужное // { // if (String.IsNullOrWhiteSpace(bRecord.upc) && !String.IsNullOrWhiteSpace(stockRecord.upc)) // bRecord.upc = stockRecord.upc; // if (Double.Parse(bRecord.price) > price) // bRecord.price = price.ToString(); // } // } // } //} foreach (var shopStock in ShopStocks) { if (shopStock.Currency == "RUB") { //пропускаем этот магазин, работаем только с зарубежными магазами bool test = true; } else { Program.Logger.Info(shopStock.Name + " exporting..."); foreach (var stockRecord in shopStock.records) { //price //double price = GetPrice(stockRecord, shopStock.Currency, shopStock.Marzha); double price = Exporter.GetPrice2(stockRecord.price, shopStock.VatValue, shopStock.DeliveryToUSA, shopStock.Marzha, shopStock.Currency, "USD"); //double price = Exporter.GetPrice(stockRecord, shopStock.Currency, "USD", shopStock.Marzha); string id = stockRecord.sku + "-" + stockRecord.size; BonanzaRecord bRecord = @GetRecordFromId(id); if (bRecord == null) { bRecord = new BonanzaRecord(); bRecord.id = id; bRecord.size = stockRecord.size; bRecord.upc = stockRecord.upc; bRecord.price = Math.Round(price, 2).ToString(); Records.Add(bRecord); } else //если уже есть то добавляем только нужное { //double price = stockRecord.price + marzha; if (Double.Parse(bRecord.price) > price) { bRecord.price = Math.Round(price, 2).ToString(); } } } } } //стоки объединили теперь добавляем данные из каталога List <BonanzaRecord> newRecords = new List <BonanzaRecord>(); foreach (var bRecord in Records) { var sneaker = GetCatalogRecordFromId(bRecord.id); if (sneaker != null) { //sneaker.brand = "Nike"; bool result = bRecord.run(sneaker.brand, sneaker.title, sneaker.sku, bRecord.size, bRecord.upc, sneaker.sex, sneaker.category, double.Parse(bRecord.price), sneaker.images); if (result) { newRecords.Add(bRecord); } } else { Console.WriteLine("bRecord is not exist in catalog. id: " + bRecord.id); } } //добавляем расширенное описание Description2 int i = 0; foreach (var record in newRecords) { i++; var sneaker = GetCatalogRecordFromId(record.id); var sizes = BonanzaExporter.GetAllSizesFromSku(sneaker.sku, newRecords); var sizeString = BonanzaRecord.CreateSizeString(record.size, sneaker.category); //record.description = BonanzaRecord.SetDescription2(record.title, sneaker.sku, sizeString, sneaker.brand, record.condition, sizes); record.description = BonanzaRecord.CreateDescription2Small(record.title, sneaker.sku, sizeString, sizes); } Records = newRecords; }