diff --git a/repositories/ImportRepository.go b/repositories/ImportRepository.go index 3abaddc..fb8b488 100644 --- a/repositories/ImportRepository.go +++ b/repositories/ImportRepository.go @@ -204,11 +204,23 @@ func (importer *Importer) importVariant(product models.Product) (*gm.Product, er if productRepo.HasSizeVariants() { var sizeVariants []gm.ProductFlat for index, variant := range *product.SizeVariants { - if !variant.Sellable { - continue - } + + sku := fmt.Sprintf("%s-%d", product.ProductNumber, variant.ItemNumber) + //todo finde variant first if not exists create + var variantFlat gm.ProductFlat + err := tx.Preload("Product").Preload("Variants").First(&variantFlat, "sku = ?", sku).Error savePoint := "size" + strconv.Itoa(index) tx.SavePoint(savePoint) + if err == nil { + tx.Model(&variantFlat).Updates(map[string]interface{}{"status": variant.Sellable, "parent_id": mainFlat.ID}) + tx.Model(&gm.ProductAttributeValue{}).Where("attribute_id=8 AND product_id=?", variantFlat.ProductID).Update("boolean_value", variant.Sellable) + tx.Model(&variantFlat.Product).Update("parent_id", mainPorduct.ID) + + if variant.Sellable { + importer.updatePrice(variant.Price, &variantFlat) + } + continue + } var sizeOPtion gm.AttributeOption @@ -218,8 +230,6 @@ func (importer *Importer) importVariant(product models.Product) (*gm.Product, er 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) variantProduct.AttributeValues = productRepo.getVariantAttributes(importer.AttributesMap, &variant, sizeOPtion.ID) @@ -230,7 +240,7 @@ func (importer *Importer) importVariant(product models.Product) (*gm.Product, er continue } - variantFlat := productRepo.makeVariantFlat(variant, sizeOPtion.ID, mainFlat.ID, variantProduct.ID) + variantFlat = productRepo.makeVariantFlat(variant, sizeOPtion.ID, mainFlat.ID, variantProduct.ID) if err := tx.Create(&variantFlat).Error; err != nil { log.Println("Variant Flat Create Error: " + err.Error())