size boyut
This commit is contained in:
parent
da8c13310b
commit
d4ff2a48b3
|
|
@ -1,16 +1,25 @@
|
|||
package gorm_models
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"log"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type AttributeOption struct {
|
||||
ID uint `gorm:"primaryKey"`
|
||||
AttributeID uint
|
||||
AdminName string
|
||||
SortOrder int `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||
ID uint `gorm:"primaryKey"`
|
||||
AttributeID uint
|
||||
AdminName string
|
||||
SortOrder int `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||
Translations []AttributeOptionTranslation
|
||||
}
|
||||
|
||||
type AttributeOptionTranslation struct {
|
||||
ID uint `gorm:"primaryKey"`
|
||||
AttributeOptionID uint
|
||||
Locale string
|
||||
Label string
|
||||
}
|
||||
|
||||
type Attribute struct {
|
||||
|
|
@ -61,11 +70,27 @@ func GetAttributes(db *gorm.DB) ([]Attribute, error) {
|
|||
|
||||
func GetAttributeOption(db *gorm.DB, attrbuteID uint, value string) AttributeOption {
|
||||
var option AttributeOption
|
||||
err := db.FirstOrCreate(&option, AttributeOption{AttributeID: attrbuteID, AdminName: value}).Error
|
||||
if err != nil {
|
||||
log.Println(err.Error())
|
||||
|
||||
err := db.Where("attribute_id=? and admin_name", attrbuteID, value).First(&option).Error
|
||||
|
||||
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
option = AttributeOption{
|
||||
AttributeID: attrbuteID,
|
||||
AdminName: value,
|
||||
SortOrder: 1000,
|
||||
Translations: []AttributeOptionTranslation{
|
||||
{Locale: "tm", Label: value},
|
||||
{Locale: "ru", Label: value},
|
||||
{Locale: "tr", Label: value},
|
||||
},
|
||||
}
|
||||
|
||||
if err := db.Create(&option).Error; err != nil {
|
||||
log.Println(err.Error())
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return option
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -32,13 +32,12 @@ type ProductRelation struct {
|
|||
}
|
||||
|
||||
type ProductFlat struct {
|
||||
ID uint `gorm:"primary_key"`
|
||||
Sku string
|
||||
ProductNumber string `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||
Name string `sql:"DEFAULT:''" gorm:"default:''"`
|
||||
Weight float64 `sql:"DEFAULT:NULL" gorm:"type:decimal(12,4);default:null"`
|
||||
Status bool `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||
//Source string `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||
ID uint `gorm:"primary_key"`
|
||||
Sku string
|
||||
ProductNumber string `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||
Name string `sql:"DEFAULT:''" gorm:"default:''"`
|
||||
Weight float64 `sql:"DEFAULT:NULL" gorm:"type:decimal(12,4);default:null"`
|
||||
Status bool `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||
VisibleIndividually bool `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||
Price float64 `gorm:"type:decimal(12,4)"`
|
||||
MinPrice float64 `gorm:"type:decimal(12,4)"`
|
||||
|
|
@ -60,6 +59,8 @@ type ProductFlat struct {
|
|||
ColorLabel string `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||
Size int `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||
SizeLabel string `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||
Boyut int `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||
BoyutLabel string `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||
MetaTitle string `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||
MetaKeywords string `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||
BrandID uint `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||
|
|
|
|||
|
|
@ -304,7 +304,14 @@ func (importer *Importer) importVariant(product models.Product) (*gm.Product, er
|
|||
}
|
||||
savePoint := "size" + strconv.Itoa(index)
|
||||
tx.SavePoint(savePoint)
|
||||
sizeOPtion := gm.GetAttributeOption(tx, importer.AttributesMap["size"].ID, variant.AttributeValue)
|
||||
|
||||
var sizeOPtion gm.AttributeOption
|
||||
|
||||
if variant.AttributeName == "Beden" {
|
||||
sizeOPtion = gm.GetAttributeOption(tx, importer.AttributesMap["size"].ID, variant.AttributeValue)
|
||||
} else {
|
||||
sizeOPtion = gm.GetAttributeOption(tx, importer.AttributesMap["boyut"].ID, variant.AttributeValue)
|
||||
}
|
||||
|
||||
sku := fmt.Sprintf("%s-%d", product.ProductNumber, variant.ItemNumber)
|
||||
variantProduct := productRepo.makeVariant(mainPorduct.ID, mainPorduct.AttributeFamilyID, sku)
|
||||
|
|
@ -422,9 +429,45 @@ func (importer *Importer) updateVariant(product models.Product) (*gm.Product, er
|
|||
}
|
||||
|
||||
if flat.Product.Type == "configurable" {
|
||||
|
||||
//todo update variant prices
|
||||
//todo create none existing variant
|
||||
//todo update min max price
|
||||
} else {
|
||||
|
||||
price := product.Price
|
||||
|
||||
if price.OriginalPrice.Value > price.DiscountedPrice.Value {
|
||||
|
||||
importer.baza.Model(&flat).Updates(map[string]interface{}{
|
||||
"price": price.OriginalPrice.Value,
|
||||
"special_price": price.DiscountedPrice.Value,
|
||||
"min_price": price.DiscountedPrice.Value,
|
||||
"max_price": price.OriginalPrice.Value,
|
||||
})
|
||||
|
||||
importer.baza.Model(&gm.ProductAttributeValue{}).
|
||||
Where("attribute_id = 11 and product_id = ?", flat.ProductID).
|
||||
Update("float_value", price.OriginalPrice.Value)
|
||||
|
||||
importer.baza.Model(&gm.ProductAttributeValue{}).
|
||||
Where("attribute_id = 13 and product_id = ?", flat.ProductID).
|
||||
Update("float_value", price.DiscountedPrice.Value)
|
||||
} else {
|
||||
|
||||
importer.baza.Model(&flat).Updates(map[string]interface{}{
|
||||
"price": price.DiscountedPrice.Value,
|
||||
"special_price": nil,
|
||||
"min_price": price.DiscountedPrice.Value,
|
||||
"max_price": price.DiscountedPrice.Value,
|
||||
})
|
||||
|
||||
importer.baza.Model(&gm.ProductAttributeValue{}).
|
||||
Where("attribute_id = 11 and product_id = ?", flat.ProductID).
|
||||
Update("float_value", price.DiscountedPrice.Value)
|
||||
|
||||
importer.baza.Where("attribute_id = 13 and product_id = ?", flat.ProductID).
|
||||
Delete(&gm.ProductAttributeValue{})
|
||||
}
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -198,12 +198,20 @@ func (pr *ProductRepo) makeVariantFlat(variant models.Variant, SizID, parentID,
|
|||
ProductNumber: fmt.Sprintf("%d", variant.ItemNumber),
|
||||
Weight: pr.Weight,
|
||||
FavoritesCount: uint(pr.Data.FavoriteCount),
|
||||
SizeLabel: variant.AttributeValue,
|
||||
Size: int(SizID),
|
||||
MaxPrice: maxPRice,
|
||||
MinPrice: variant.Price.DiscountedPrice.Value,
|
||||
Price: maxPRice,
|
||||
ProductID: productID,
|
||||
//SizeLabel: variant.AttributeValue,
|
||||
//Size: int(SizID),
|
||||
MaxPrice: maxPRice,
|
||||
MinPrice: variant.Price.DiscountedPrice.Value,
|
||||
Price: maxPRice,
|
||||
ProductID: productID,
|
||||
}
|
||||
|
||||
if variant.AttributeName == "Beden" {
|
||||
flat.Size = int(SizID)
|
||||
flat.SizeLabel = variant.AttributeValue
|
||||
} else {
|
||||
flat.Boyut = int(SizID)
|
||||
flat.BoyutLabel = variant.AttributeValue
|
||||
}
|
||||
|
||||
if flat.MaxPrice > flat.MinPrice {
|
||||
|
|
@ -253,9 +261,14 @@ func (pr *ProductRepo) getVariantAttributes(AttributesMap map[string]gm.Attribut
|
|||
{AttributeID: AttributesMap["name"].ID, TextValue: pr.Data.Name, Channel: "default", Locale: "tm"},
|
||||
{AttributeID: AttributesMap["weight"].ID, TextValue: pr.Data.Weight},
|
||||
{AttributeID: AttributesMap["status"].ID, BooleanValue: true},
|
||||
{AttributeID: AttributesMap["size"].ID, IntegerValue: int(SizID)},
|
||||
//{AttributeID: AttributesMap["size"].ID, IntegerValue: int(SizID)},
|
||||
{AttributeID: AttributesMap["price"].ID, FloatValue: price},
|
||||
}
|
||||
if product.AttributeName == "Beden" {
|
||||
attributes = append(attributes, gm.ProductAttributeValue{AttributeID: AttributesMap["size"].ID, IntegerValue: int(SizID)})
|
||||
} else {
|
||||
attributes = append(attributes, gm.ProductAttributeValue{AttributeID: AttributesMap["boyut"].ID, IntegerValue: int(SizID)})
|
||||
}
|
||||
|
||||
if pr.Data.Color != "" {
|
||||
attributes = append(attributes, gm.ProductAttributeValue{AttributeID: AttributesMap["color"].ID, IntegerValue: int(pr.ColorOption.ID)})
|
||||
|
|
|
|||
Loading…
Reference in New Issue