#prestashop-1.7 #promotions
#prestashop-1.7 #Рекламные акции
Вопрос:
Я хочу создать функцию для рекламных акций в prestashop, но это не работает
Как вы можете видеть, я хочу создать несколько конкретных цен для нескольких продуктов. Моя проблема в том, что этот код не работает.
Я закодировал
- specificPrice.id_group = 1;
- specificPrice.id_group = 1;
- specificPrice.id_cart = 1;
потому что они являются обязательными, но у меня их нет в моей базе данных. Может кто-нибудь помочь мне найти правильное решение? я хочу создать конкретную цену для нескольких продуктов, которая будет применяться ко всем группам, всем покупателям, но я не знаю, какой идентификатор я должен передать specificPrice.id_group….
public static void Promotion()
{
using (SqlConnection con = new SqlConnection(Properties.Settings.Default.HQRConnectionString))
{
con.Open();
string cmdString =
"select"
" P.productId, Pd.price, PD.promotionId "
" from promotiondetails PD "
" join products P "
" on P.productId = Pd.productId "
" where P.isecommerceenabled = '1' "
" and PD.promotionId in (select promotionid from promotionstores where storeid = @StoreId)";
SqlCommand cmd = new SqlCommand(cmdString, con);
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@StoreId", SqlDbType.Int).Value = Settings.Default.WebStoreId;
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable table = new DataTable();
sda.Fill(table);
foreach (DataRow row in table.Rows)
{
string productId = Convert.ToString(row["ProductId"]);
IPosXPO.Products product = unitOfWork.GetObjectByKey<Products>(productId);
Bukimedia.PrestaSharp.Entities.product prod = GetPrestashopProduct(product);
if (product.IsEcommerceEnabled amp;amp; prod != null)
{
specific_price specificPrice = new specific_price();
specificPrice.id_product = prod.id;
int promotionId= Convert.ToInt16(row["PromotionId"]);
IPosXPO.Promotions promotion = unitOfWork.GetObjectByKey<Promotions>(promotionId);
// string format = Convert.ToString(promotion.StartDate);
//DateTime dt = DateTime.ParseExact(format, "YYYY-MM-DD HH:MM:SS", CultureInfo.InvariantCulture);
int year = promotion.StartDate.Year;
int month = promotion.StartDate.Month;
int day = promotion.StartDate.Day;
specificPrice.from = year "-" month "-" day " " "00" ":" "00" ":" "00";
year = promotion.EndDate.Year;
month = promotion.EndDate.Month;
day = promotion.EndDate.Day;
specificPrice.to = year "-" month "-" day " " "00" ":" "00" ":" "00";
decimal price = Convert.ToDecimal(row["Price"]);
specificPrice.id_shop = Settings.Default.WebStoreId;
specificPrice.price = price;
specificPrice.id_cart = 1;
Currencies currency = unitOfWork.GetObjectByKey<Currencies>("EUR");
specificPrice.id_currency = 1;
specificPrice.id_group = 1;
specificPrice.id_customer = null;
specificPrice.reduction_type = "amount";
specificPrice.reduction_tax = 1;
specificPrice.id_country = promotion.CountryId.CountryId;
specificPriceFactory.Add(specificPrice);
}
}
con.Close();
}
}
Ответ №1:
Просто установите это значение равным нулю.
При создании specific_price оставление значений равными 0 означает, что цена будет применена ко всем значениям сущности.
Кроме того, вы также должны установить id_cart = 0, потому что, я думаю, вы не хотите, чтобы конкретные цены были привязаны к конкретным корзинам клиентов.