Я пытаюсь разработать функцию в prestashop для применения рекламных акций

#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, потому что, я думаю, вы не хотите, чтобы конкретные цены были привязаны к конкретным корзинам клиентов.