Coder Social home page Coder Social logo

atrocore / atropim Goto Github PK

View Code? Open in Web Editor NEW
136.0 9.0 28.0 26.4 MB

AtroPIM is a modern, flexible, configurable, open-source product information management system (PIM) of a new generation.

Home Page: https://atropim.com

License: GNU General Public License v3.0

PHP 65.47% Smarty 2.44% JavaScript 32.09%
pim productinformationmanagement product-information-management productdatamanagement product-data-management productcontentmanagement product-content-management api-centric-architecture product-quality product-management

atropim's Introduction

Logo

This repository is hosted on: https://gitlab.atrocore.com/atrocore/atropim

GitHub mirror: https://github.com/atrocore/atropim

This repository is hosted by GitLab, we use GitHub to host its mirror.

What Is AtroPIM?

anne

AtroPIM is an open-source product information management system (PIM), which is based on AtroCore software platform. AtroPIM (as well as AtroCore) is distributed under GPLv3 License and is free. It has a lot of features right out-of-the-box and thus is an excellent tool for cost-effective and timely application development.

AtroPIM is a single page application (SPA) with an API-centric architecture. It has a flexible data model based on entities, entity attributes and relations of all kinds among them. AtroPIM allows you to gather and store all your product content in one place, enrich it and spread it to several channels like own online shop, amazon, eBay, online shops of your distributors, on a tablet or mobile application. AtroPIM will help you to structure and organize all your flexible data and get rid of excel mess.

What Are the Advantages of AtroPIM?

  • Many out-of-the-box features;
  • Free – 100% open source, licensed under GPLv3;
  • REST API;
  • Responsive and user friendly UI;
  • Configurable (entities, relations, layouts, labels, navigation, dashboards);
  • Extensible with modules;
  • Includes the advantages of AtroCore.

How Does It Work?

AtroPIM is an effective solution for storing, processing and managing your product information. All product data are extracted from different sources, classified, translated and enriched. AtroPIM helps you publish the relevant data on different sales channels with minimum efforts.

unctions_banne

Features

AtroPIM comes with a lot of features directly out of the box, including:

  • associations;
  • measuring units;
  • channels;
  • catalogs;
  • category trees and categories;
  • classifications;
  • product series;
  • products;
  • attribute groups and attributes;
  • product and category images;
  • and much more.

Want to know more about AtroPIM functions and its advantages for you? Please, visit our website.

Technology

AtroPIM is based on EspoCRM and uses PHP7, backbone.js, composer and some Zend Framework 3 libraries.

image

Want to know more about AtroPIM technology? Please, visit our website!

Integrations

AtroPIM has a REST API and can be integrated with any third-party system, channel or marketplace.

We offer the following paid integrations:

  • Data synchronisation with over 2000 Channels via channable.com
  • ODOO
  • SAP Business One,
  • Microsoft Business Central
  • Magento 2
  • Magento 1
  • Shopware 6
  • Shopify
  • and others.

Please contact us, if you want to know more.

Requirements

  • Dedicated (virtual) Linux-based server with root permissions.
  • Ubuntu as Operating System is recommended but not required.
  • PHP 7.4 (or above).
  • MySQL 5.5.3 (or above) or PostgreSQL 14.9 (or above).

Please note, system will definitely NOT work on a usual hosting, a managed server hosting should be checked on a case-by-case basis – with a high probability it will NOT work.

Installation

Installation Guide is available here.

Demo

License

AtroPIM is published under the GNU GPLv3 license.

Resources

atropim's People

Contributors

antebra avatar asapko avatar atrolex avatar douglaswafo avatar goginyan avatar kariglu avatar oletimo avatar romanzablodsky avatar rratsun avatar rzablodskyi avatar yurdm avatar zheravlik avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

atropim's Issues

Product Families have disappeared

Following the latest update to 1.8.1 Product Families have disappeared. I see on the demo this has been removed also. Is this by design? Without families how are attribute groups assigned quickly to products?

Categories are not working properly

Hi there.
I have created several categories and set them.
However, when I create a product, I cannot add it to a category because it's not visible, even though the category is set up as active.
image
If I try the same thing from the category side, I see no products.
image
Any ideas how to fix?

AWS S3 integration

Is there any way to integrate AWS S3 storage into this product? I haven't found anything in the documentation I have come across so far on how to do this. Kindly point me to the right documentation or configuration option on how to accomplish this.

Attribute value list «multi enum» import by csv/excel generates only one value_id

Atropim v 1.6.1. / ImportFeed 1.4.18
attribute with text locale dependend, als multi value list configured. I got 130 Values in 3 languages. To import these into the system I used the importFeed. CSV with columns: attrcode, value_de, value_fr, value_it. Each Value is separated with ~ char.
Import works, the guy is displaying it correctly. When looking into the Database, it created just one value_id, which is wrong. Adding List items manually in gui creates for each item an id, which is referenced in the product_attribute_value table.
further more, with an old import of the values to a product, also the text got imported in that table istead of Id's.

So in my case, I didn't see this at first and after an autom. update of the pim module I got suddenly [null][null]... values in the column: text_value

I fixed the data to my needs, created dummy id's and referenced the id's in the db, for now.

atro_db_after_man_edit

atro_db_after_import

atro_import_feed_config

excel_extract
morach_vorteilstexte2023.xlsx

Product Gallery

After the last update the Product Gallery View is just a blank white page. The list view displays properly still.

Multilanguage enum attribute value not initially stored in database after import

I got attributes defined as enumeration and multi language, example color: When I do a csv import where the value is matched based on the main locale, I got after the import in the database table product_attribute_value: main: schwarz, fr_CH : null, it_CH : null. Only the matching value is present in the value table.

When I open the detail page of the product in pim gui, the value gets immediately written in the translated columns fr_Ch & it_CH.

Would be nice and expected, that after an import all language dependencies are written in the value table ;-)

Simple Import Feeds not importing data

I installed AltroPIM with an empty database.

Now I'm trying to import data into PIM from CSV text files. But the data is not getting into the database.

Please point me to documentation on how to properly add data to the database.

I have over 1,000 products to add and would not want to add it one by one.

Migrate from Treopim

I already used TreoPIM and have lots of data in it. How can I migrate data from existing TreoPIM instance?

`/Product/:entityId/productAssets` ignores language header

Using this Endpoint for the first time (in PIM 1.9.34) it behaves not as expected:

select fields and sending language header returns null
image

select fields and not sending language header returns standard language (I think that's expected)
image

No select fields and no language header returns all languages (that is expected)
image

No select fields and sending language header returns null
image

Edit:
Tested the /Asset Endpoint querying that one product, behaves as expected:
image

Expectation

if sending language header, then select=asset_description,* returns the correct language version as {"access_description":"Localized Value"} (like the other endpoints unless that behavior changed).

Getting bad server response.

Hello,

I have a pim server running.It was running smoothly,however suddenly got an issue.Not getting login screen but getting a bad server response. PFB screen shot.
Screenshot 2022-12-14 at 11 53 31 AM

data/logs file has following entries.

[2022-12-14T06:23:11.914808+00:00] Log.ERROR: API [GET]:/api/v1/Settings, Params:Array ( ) , InputData: - SQLSTATE[42S22]: Column not found: 1054 Unknown column 'measure.name_en_us' in 'field list' [] []
[2022-12-14T06:23:11.915778+00:00] Log.ERROR: Display Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'measure.name_en_us' in 'field list', Code: 42S22 URL: /api/v1/Settings [] []

I tried removing below modules from composer.json file and ran "php composer.phar update", it ran indefinitely so i had to cancel it. Then restored it and again ran "php composer.phar update" command without any success.
"atrocore/core": "",
"atrocore/pim": "
",
"atrocore/dam": "",
"atrocore/export-feeds": "
",
"atrocore/import-feeds": "*"
Request your kind help.
Thanks.

Regards
Anil

Locales not corret when editing labels

When editing the Labels in administration, there are always only three locales to set a label for:
en_US, de_De and ru_RU

This does not change, when configuring other locales for the UI.
In our fresh setup AtroPIM (clean, no sample data), we changed the available UI locales to en_GB and de_DE.
We are now not able to set labels for en_GB, because this is not displayed in labels. Instead there is en_US, which is useless in our case. Also ru_RU stays in label, but it is not used.
See screenshots below.

image

image

Rewritten query string contains control characters or spaces - caused Error 403: Access Denied

Hello everyone,
first some system information:

AtroСore: 1.5.72
PIM: 1.7.35
Apache/2.4.57 (Ubuntu 20.04.6 LTS)
Error 403: Access Denied on loading product page
Apache err-log:
...snap
[Wed May 31 11:07:38.808314 2023] [rewrite:error] [pid 1191038] [client xxx.xxx.xxx.xxx:22850] AH10411: Rewritten query string contains control characters or spaces, referer: https://pim.example.com/
snap...

After Update to Apache Version 2.4.57 Error 403 on loading product page. This causes the attribute tab to fail to load.
Is there a workaround for this or something similar to fix this issue?
image

Many thanks in advance

Attribut Value Validate Regex not executed

Version: pim: 1.5.48, core: 1.4.78
When adding an regular expression to a Attribut with type string, the given value in the product detail page is not getting validated.
Example:
Attribut, string
Regex: /\d\d[.]\d/
Value inserted: string
saved, no issue

Regex in general works, as when you remove the regex from the attribute and set it again, then the system recognizes that there are inproper values in the attribute values. So regex validation just happens while the attribute is saved, not when value is saved.
I guess this behaviour is not intended.

Cannot access to REST API

Hi,
I have installed AtroPIM on my server and I'm currently testing the API.
I checked the API documentation here : https://demo.atropim.com/apidocs/index.html

But, all my request has 404 Not found, I searched on google but I didn't find any resource to debug. You can see my request in the image.
Could you please provide more information, or maybe an example with Postman, to use REST API ?

Thank you
image

Index of Enum Fields shifted after Update to 1.6.11

I've got these Enum fields

image

After the update to 1.6.11 I noticed that the selected values are wrong. and shifted +1

in this case the "2" represents "nicht geeignet"
"nicht geeignet" should be "bedingt geeignet"
"bedingt geeignet" is supposed to be "geeignet"

image

image

Something happened around here:

9b8e886
0ee483d

I placed some debug Statements here:

image

and this is the result:

[2023-01-12T18:40:53.079865+00:00] Log.DEBUG: attribute->typeValue ["geeignet","bedingt geeignet","nicht geeignet"] []
[2023-01-12T18:40:53.080815+00:00] Log.DEBUG: typeValueIds ["","0","1","2"] []
[2023-01-12T18:40:53.081047+00:00] Log.DEBUG: varcharValue 2 [] []
[2023-01-12T18:40:53.081225+00:00] Log.DEBUG: typeValue ["suitable","conditionally suitable","not suitable"] []
[2023-01-12T18:40:53.081384+00:00] Log.DEBUG: key 3 [] []

So I don't know why the data is how it is, but typeValueIds seems to throw things off. (I guess the "" entry represents no selection in the enum drop down.

This whole check is not happening:

if ($key !== false && !empty($entity->get('typeValue')) && array_key_exists($key, $entity->get('typeValue'))) {
$entity->set('value', $entity->get('typeValue')[$key]);
}

and therefore $entity->get('value') is not changing and stays 2.

I hope you can follow me. I don't know if that's a misconfiguration on my side or a side effect of recent changes.

Thanks for looking into it.

old attribute type enum

Does old attribute type as enum still valid in new Pim version?

Suspect old attribute table migration to uptodate is not happening or there isnt one

image

Replace Asset content Error 400

Many Products in PIM have a related asset. To shorten the time of data management, we want to replace the asset it self, therefore we can keep the current saved relations from products to this one asset.
When I try to replace the asset(file) I get an error, this asset exists already. Now I'm not sure:

  1. not possible?
  2. not implemented, to replace the content of the asset?

Steps to reproduce:

  1. create an asset by upload a file
  2. edit the asset
  3. unter file, click on the x symbol
  4. upload new file (same or different anme)
  5. Error 400

Log:
[2023-03-15T14:39:07.569087+00:00] Log.ERROR: API [POST]:/api/v1/:controller, Params:Array ( [controller] => Attachment ) , InputData: - Dieser Asset existiert bereits. [] []
[2023-03-15T14:39:07.569267+00:00] Log.ERROR: Display Error: Dieser Asset existiert bereits., Code: 400 URL: /api/v1/Attachment [] []
[2023-03-15T14:42:03.828441+00:00] Log.ERROR: API [POST]:/api/v1/:controller, Params:Array ( [controller] => Attachment ) , InputData: - Dieser Asset existiert bereits. [] []
[2023-03-15T14:42:03.828614+00:00] Log.ERROR: Display Error: Dieser Asset existiert bereits., Code: 400 URL: /api/v1/Attachment [] []
x_and_upload
error_400

Import issue

I have ran dozens of imports to get them to work. If I add more than 10 fields, the configuration section clears and will no longer show any field matches. The fields continue to remove from the "unused fields" list. Also after I save I can no longer see the matched fields. What is going on here? Any help is greatly appreciated!

Convert ten variable assignments to the usage of combined operators

👀 Some source code analysis tools can help to find opportunities for improving software components.
💭 I propose to increase the usage of combined operators accordingly.

diff --git a/app/Repositories/AbstractRepository.php b/app/Repositories/AbstractRepository.php
index 7ab3f9f..c8cebbe 100644
--- a/app/Repositories/AbstractRepository.php
+++ b/app/Repositories/AbstractRepository.php
@@ -163,7 +163,7 @@ abstract class AbstractRepository extends Base
             $result[$k]['channel'] = '-';
 
             if (!empty($result[$k]['channelId'])) {
-                $result[$k]['id'] = $result[$k]['id'] . '_' . (string)$result[$k]['channelId'];
+                $result[$k]['id'] .= '_' . (string)$result[$k]['channelId'];
             }
         }
 
diff --git a/app/Repositories/Attribute.php b/app/Repositories/Attribute.php
index 0dca4c5..7001186 100644
--- a/app/Repositories/Attribute.php
+++ b/app/Repositories/Attribute.php
@@ -480,7 +480,7 @@ class Attribute extends AbstractRepository
             $sql = '';
             foreach ($data as $row) {
                 // increase max
-                $max = $max + 10;
+                $max += 10;
 
                 // prepare id
                 $id = $row['id'];
diff --git a/app/Repositories/Category.php b/app/Repositories/Category.php
index 8844640..c145795 100644
--- a/app/Repositories/Category.php
+++ b/app/Repositories/Category.php
@@ -437,7 +437,7 @@ class Category extends AbstractRepository
                 ->toArray();
 
             // increase sort order
-            $sortOrder = $sortOrder + 10;
+            $sortOrder += 10;
 
         } elseif ($entity->get('_position') == 'inside') {
             // get collection
@@ -465,7 +465,7 @@ class Category extends AbstractRepository
             $sql .= "UPDATE category SET sort_order=$sortOrder WHERE id='$id';";
 
             // increase sort order
-            $sortOrder = $sortOrder + 10;
+            $sortOrder += 10;
         }
 
         // execute sql
diff --git a/app/Repositories/Product.php b/app/Repositories/Product.php
index cbe2cd2..9f4960c 100644
--- a/app/Repositories/Product.php
+++ b/app/Repositories/Product.php
@@ -428,7 +428,7 @@ class Product extends AbstractRepository
                 $sql = '';
                 foreach ($ids as $id) {
                     // increase max
-                    $max = $max + 10;
+                    $max += 10;
 
                     // prepare sql
                     $sql .= "UPDATE product_category SET sorting='$max' WHERE id='$id';";
diff --git a/app/Services/Product.php b/app/Services/Product.php
index d0547f3..e3de537 100644
--- a/app/Services/Product.php
+++ b/app/Services/Product.php
@@ -536,7 +536,7 @@ class Product extends AbstractService
         $link = 'productAttributeValues';
 
         if (!empty($params['maxSize'])) {
-            $params['maxSize'] = $params['maxSize'] + 1;
+            $params['maxSize'] += 1;
         }
 
         // get select params
@@ -614,7 +614,7 @@ class Product extends AbstractService
                         $camelCaseLocale = ucfirst(Util::toCamelCase(strtolower($locale)));
 
                         $localePav = clone $pav;
-                        $localePav->id = $localePav->id . ProductAttributeValue::LOCALE_IN_ID_SEPARATOR . $locale;
+                        $localePav->id .= ProductAttributeValue::LOCALE_IN_ID_SEPARATOR . $locale;
                         $localePav->set('isLocale', true);
                         $localePav->set('locale', $locale);
                         $localePav->set('attributeName', $localePav->get('attributeName') . ' › ' . $locale);
diff --git a/app/Services/ProductTypesDashlet.php b/app/Services/ProductTypesDashlet.php
index 9810911..6659695 100644
--- a/app/Services/ProductTypesDashlet.php
+++ b/app/Services/ProductTypesDashlet.php
@@ -70,8 +70,8 @@ class ProductTypesDashlet extends AbstractProductDashletService
 
         // prepare result
         foreach ($productData as $type => $value) {
-            $value['active'] = $value['active'] ?? 0;
-            $value['notActive'] = $value['notActive'] ?? 0;
+            $value['active'] ??= 0;
+            $value['notActive'] ??= 0;
 
             $result['list'][] = [
                 'id'        => $type,
diff --git a/app/Services/RevisionField.php b/app/Services/RevisionField.php
index 110d5d2..52cdcfc 100644
--- a/app/Services/RevisionField.php
+++ b/app/Services/RevisionField.php
@@ -138,7 +138,7 @@ class RevisionField extends MultilangRevisionField
                                 "field"    => $fieldName
                             ];
 
-                            $result['total'] = $result['total'] + 1;
+                            $result['total'] += 1;
                         }
                     }
                 }

couldn't create new attributes

After press save on attribute create page this error pops up:
Error 400: Attribute converting from type '' to 'extensibleEnum' is impossible.

How to implement Webhooks for PIM events ?

Hello, I is from Nepal. Me in deep trouble. Me company telling me how I making webhook inside backbone js. Me try to use existing PHP Event module. Me no find solution after 1 weeks and it showing me bery dengerours error.
Please telling us when to implement a general webhook API to emit events from PIM. My job was in danger. Please halp! 🙏

Add Relation to many products causes 400 Error

I made a combined product search, All products of family-Type A and have parent product B. Select all products the filter finds. Actions, add relation: choose Entity (my configured relation type, ist_zubehoer_von, which works on single products without issues), search desired related product, add relation -> Causes 400

System version: 1.4.128
Log:

[2022-11-28T10:28:49.262532+00:00] Log.ERROR: API [POST]:/api/v1/Product/associatedMainProducts/relation, Params:Array ( ) , InputData: {"ids":[],"foreignIds":["63583ebaeb3d0cb38"],"byWhere":true,"where":[{"type":"linkedWith","attribute":"parents","subQuery":[],"value":["63583ebaeb3d0cb38"]},{"type":"equals","attribute":"productFamilyId","subQuery":[],"value":"62fa5b42b01dbbe00"}],"associationId":"62e03b41a32aa82d0"} - [] []
[2022-11-28T10:28:49.262770+00:00] Log.ERROR: Display Error: , Code: 400 URL: /api/v1/Product/associatedMainProducts/relation [] []

gui_steps
atro-2022-11-28.log

Website down?

Read, this ist the follow up of treopim, but the website for astropim is down?

System is updating...

Our AtroCore installation is often stuck while updating.
Screenshot at Jan 05 14-28-25
The only way to make the app available again is to delete data/composer.log.
Afterwards, updating manually via php composer.phar update works fine.

Unable to delete Channels

When attempting to delete an unused Channel from the Channel full page view I get an Error 500 displayed at the top of the page.

When I try to delete from the Channel list view, I get the following notification:

Delete Channel 'l65696928babb49cf' failed: Call to a member function count() on null

Error Creating New Attribute of Type List

Following the update to attributes and types, an error is raised. Error is

Error 400: Validation failed. 'extensibleEnumId' is required.

Create a new attribute, update the code from the default generated code. Update any additional fields as required. Click save and create. Error is displayed

atro_attribute_error

multiple vendors with same product: sku/mpn

We have several vendors that sell the same product at different price points. They use the same MPN/SKU.

When importing I get
"MPN 'CM14C-R-1' should have unique value."
or
Product with such SKU 'SN01C-N-23' already exist

I have set identifier on Sku (or MPN) Brand and Vendor (new entity)

Is there a way to "disable" the uniqueness of the SKU or MPN or have a unique on not only the SKU/MPN ?

Unable to setup a parent under categories

Trying to update an existing category the drop menu to select the parent don't shows anything and only to create a new category but even doing a new one it didn't assign to the existing category as a parent.

running the latest version
core 1.2.38
pim 1.1.34
Screen Shot 2021-06-01 at 13 59 22
Screen Shot 2021-06-01 at 13 59 31
Screen Shot 2021-06-01 at 15 12 49

error from update

Hello i have problem with console? when i do "php composer.phar update" i see
"PHP Warning: Module 'pdo_sqlsrv' already loaded in Unknown on line 0
PHP Fatal error: Uncaught PharException: phar "/var/www/atrocore/composer.phar" has a broken signature in /var/www/atrocore/composer.phar:13
Stack trace:
#0 /var/www/atrocore/composer.phar(13): Phar::mapPhar()
#1 {main}
thrown in /var/www/atrocore/composer.phar on line 13"

And i do update with /#Composer/list and in /DATA/LOGS/ i have: " [2023-09-10T07:54:53.576410+00:00] Log.WARNING: E_WARNING: unlink(data/treo-composer.log): No such file or directory {"code":2,"message":"unlink(data/treo-composer.log): No such file or directory","file":"/var/www/atrocore/vendor/atrocore/core/app/Espo/Console/Daemon.php","line":130} []
[2023-09-10T08:05:04.015523+00:00] Log.WARNING: E_WARNING: file_get_contents(data/treo-composer.log): failed to open stream: No such file or directory {"code":2,"message":"file_get_contents(data/treo-composer.log): failed to open stream: No such file or directory","file":"/var/www/atrocore/vendor/atrocore/core/app/Espo/Console/Daemon.php","line":97} []
[2023-09-10T08:05:04.029435+00:00] Log.WARNING: E_WARNING: unlink(data/treo-composer.log): No such file or directory {"code":2,"message":"unlink(data/treo-composer.log): No such file or directory","file":"/var/www/atrocore/vendor/atrocore/core/app/Espo/Console/Daemon.php","line":103} []
[2023-09-10T08:05:04.049219+00:00] Log.WARNING: E_WARNING: file_get_contents(data/treo-composer.log): failed to open stream: No such file or directory {"code":2,"message":"file_get_contents(data/treo-composer.log): failed to open stream: No such file or directory","file":"/var/www/atrocore/vendor/atrocore/core/app/Espo/Console/Daemon.php","line":97} []
[2023-09-10T08:05:04.050024+00:00] Log.WARNING: E_WARNING: unlink(data/treo-composer.log): No such file or directory {"code":2,"message":"unlink(data/treo-composer.log): No such file or directory","file":"/var/www/atrocore/vendor/atrocore/core/app/Espo/Console/Daemon.php","line":103} []
[2023-09-10T08:09:44.128695+00:00] Log.WARNING: E_WARNING: unlink(data/treo-composer.log): No such file or directory {"code":2,"message":"unlink(data/treo-composer.log): No such file or directory","file":"/var/www/atrocore/vendor/atrocore/core/app/Espo/Console/Daemon.php","line":130} []
[2023-09-10T08:20:59.206398+00:00] Log.WARNING: E_WARNING: file_put_contents(data/treo-composer.log): failed to open stream: Permission denied {"code":2,"message":"file_put_contents(data/treo-composer.log): failed to open stream: Permission denied","file":"/var/www/atrocore/vendor/atrocore/core/app/Espo/Console/Daemon.php","line":108} []
[2023-09-10T08:20:59.260558+00:00] Log.WARNING: E_WARNING: file_put_contents(data/treo-composer.log): failed to open stream: Permission denied {"code":2,"message":"file_put_contents(data/treo-composer.log): failed to open stream: Permission denied","file":"/var/www/atrocore/vendor/atrocore/core/app/Espo/Console/Daemon.php","line":114} []
[2023-09-10T08:20:59.306474+00:00] Log.WARNING: E_WARNING: unlink(data/treo-composer.log): No such file or directory {"code":2,"message":"unlink(data/treo-composer.log): No such file or directory","file":"/var/www/atrocore/vendor/atrocore/core/app/Espo/Console/Daemon.php","line":130} []
"

Cancel Import

How can we cancel an import in the Queue manager? The cancel box is there but is grayed out and not useable. You can see very quickly if your import is not going to work correctly. But have to wait for the full import to finish and then restore. Am I missing something?

API Unable to find product by the attribute filter of the array type when the value contains "/"

Core: 1.8.10
PIM: 1.11.7

  1. Assign an attribute of the array type to a product and set a single value - for example we'll use ac/dc.
  2. Try to find the product by Attribute Filter using this attribute and the value ac/dc.
  3. Expected result: we find the product by the simple search criteria.
  4. Reality: product not found

We see that attribute entity its stored as ["ac\/dc"] in the database due to the / needing to be escaped.

When we snoop around in atrocore\pim\app\SelectManagers\Product.php and the function convertAttributeWhere responsible for the search query, we see that the value it will look for is %"ac/dc"%

If we add a str_replace function and change the / to \\\\/ (4 dashes because of mysql like escape functionality) so that its now the [text_value][value] is %"ac\\/dc"% the product will be correctly returned. But I'm sure you can implement a better solution to the issue.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.