2026-08-07 22:27:49 +02:00
{
2026-08-08 01:29:43 +02:00
"version" : "5.4" ,
2026-08-07 22:27:49 +02:00
"module" : "product" ,
"files" : [
2026-08-20 13:27:23 +02:00
{
"module" : "product" ,
"file" : "configuration.py" ,
"class" : "ConfigurationDefaultCostPriceMethod" ,
"method" : "__register__" ,
"line" : 48 ,
"operations" : [
{
"object" : "backend" ,
"operation" : "get" ,
"tables" : [],
"line" : 49 ,
"args" : [
"'TableHandler'"
],
"kwargs" : {},
"code" : "backend.get('(backend.get('TableHandler'))')" ,
"unresolved" : true ,
"phase" : "before_super"
},
{
"object" : "TableHandler" ,
"operation" : "table_exist" ,
"tables" : [],
"line" : 50 ,
"args" : [
"cls._table"
],
"kwargs" : {},
"code" : "(backend.get('TableHandler')).table_exist(cls._table)" ,
"unresolved" : true ,
"phase" : "before_super"
},
{
"object" : "" ,
"operation" : "migrate_property" ,
"tables" : [],
"line" : 62 ,
"args" : [
"'product.configuration'" ,
"field_names" ,
"cls" ,
"value_names"
],
"kwargs" : {
"fields" : "fields"
},
"code" : "migrate_property(\n 'product.configuration', field_names, cls, value_names,\n fields=fields)" ,
"unresolved" : true ,
"phase" : "after_super" ,
"condition" : "not exist" ,
"via" : [
{
"method" : "_migrate_property" ,
"line" : 56
}
]
}
]
},
{
"module" : "product" ,
"file" : "product.py" ,
"class" : "ProductListPrice" ,
"method" : "__register__" ,
"line" : 411 ,
"operations" : [
{
"object" : "backend" ,
"operation" : "get" ,
"tables" : [],
"line" : 412 ,
"args" : [
"'TableHandler'"
],
"kwargs" : {},
"code" : "backend.get('(backend.get('TableHandler'))')" ,
"unresolved" : true ,
"phase" : "before_super"
},
{
"object" : "TableHandler" ,
"operation" : "table_exist" ,
"tables" : [],
"line" : 413 ,
"args" : [
"cls._table"
],
"kwargs" : {},
"code" : "(backend.get('TableHandler')).table_exist(cls._table)" ,
"unresolved" : true ,
"phase" : "before_super"
},
{
"object" : "" ,
"operation" : "migrate_property" ,
"tables" : [],
"line" : 425 ,
"args" : [
"'product.template'" ,
"field_names" ,
"cls" ,
"value_names"
],
"kwargs" : {
"parent" : "'template'" ,
"fields" : "fields"
},
"code" : "migrate_property(\n 'product.template', field_names, cls, value_names,\n parent='template', fields=fields)" ,
"unresolved" : true ,
"phase" : "after_super" ,
"condition" : "not exist" ,
"via" : [
{
"method" : "_migrate_property" ,
"line" : 418
}
]
}
]
},
2026-08-07 22:27:49 +02:00
{
2026-08-09 02:04:04 +02:00
"module" : "product" ,
"file" : "product.py" ,
2026-08-07 22:27:49 +02:00
"class" : "ProductCostPriceMethod" ,
"method" : "__register__" ,
"line" : 439 ,
"operations" : [
2026-08-20 13:27:23 +02:00
{
"object" : "" ,
"operation" : "Pool" ,
"tables" : [],
"line" : 440 ,
"args" : [],
"kwargs" : {},
"code" : "Pool()" ,
"unresolved" : true ,
"phase" : "before_super"
},
{
"object" : "backend" ,
"operation" : "get" ,
"tables" : [],
"line" : 442 ,
"args" : [
"'TableHandler'"
],
"kwargs" : {},
"code" : "backend.get('(backend.get('TableHandler'))')" ,
"unresolved" : true ,
"phase" : "before_super"
},
{
"object" : "Transaction().connection" ,
"operation" : "cursor" ,
"tables" : [],
"line" : 445 ,
"args" : [],
"kwargs" : {},
"code" : "Transaction().connection.(Transaction().connection.cursor())()" ,
"unresolved" : true ,
"phase" : "before_super"
},
{
"object" : "" ,
"operation" : "Transaction" ,
"tables" : [],
"line" : 445 ,
"args" : [],
"kwargs" : {},
"code" : "Transaction()" ,
"unresolved" : true ,
"phase" : "before_super"
},
{
"object" : "TableHandler" ,
"operation" : "table_exist" ,
"tables" : [],
"line" : 447 ,
"args" : [
"cls._table"
],
"kwargs" : {},
"code" : "(backend.get('TableHandler')).table_exist(cls._table)" ,
"unresolved" : true ,
"phase" : "before_super"
},
{
"object" : "TableHandler" ,
"operation" : "table_exist" ,
"tables" : [],
"line" : 448 ,
"args" : [
"ProductCostPrice._table"
],
"kwargs" : {},
"code" : "(backend.get('TableHandler')).table_exist(ProductCostPrice._table)" ,
"unresolved" : true ,
"phase" : "before_super"
},
{
"object" : "" ,
"operation" : "migrate_property" ,
"tables" : [],
"line" : 471 ,
"args" : [
"'product.template'" ,
"field_names" ,
"cls" ,
"value_names"
],
"kwargs" : {
"parent" : "'template'" ,
"fields" : "fields"
},
"code" : "migrate_property(\n 'product.template', field_names, cls, value_names,\n parent='template', fields=fields)" ,
"unresolved" : true ,
"phase" : "after_super" ,
"condition" : "not exist and (not cost_price_exist)" ,
"via" : [
{
"method" : "_migrate_property" ,
"line" : 454
}
]
},
{
"object" : "" ,
"operation" : "TableHandler" ,
"tables" : [],
"line" : 456 ,
"args" : [
"ProductCostPrice" ,
"module_name"
],
"kwargs" : {},
"code" : "(backend.get('TableHandler'))(ProductCostPrice, module_name)" ,
"unresolved" : true ,
"phase" : "after_super" ,
"condition" : "not exist and cost_price_exist"
},
2026-08-07 22:27:49 +02:00
{
"object" : "cursor" ,
"operation" : "execute" ,
2026-08-08 22:32:31 +02:00
"tables" : [
"product_cost_price_method" ,
"product_cost_price"
],
2026-08-07 22:27:49 +02:00
"line" : 461 ,
"args" : [
"*sql_table.insert(columns=[Column(sql_table, c) for c in columns], values=cost_price.select(*[Column(cost_price, c) for c in columns]))"
],
"kwargs" : {},
2026-08-09 00:47:23 +02:00
"code" : "(Transaction().connection.cursor()).execute(*sql_table.insert(\n columns=[Column(sql_table, c) for c in columns],\n values=cost_price.select(\n *[Column(cost_price, c) for c in columns])))" ,
2026-08-07 22:27:49 +02:00
"phase" : "after_super" ,
"condition" : "cost_price_table.column_exist('template')"
},
{
"object" : "sql_table" ,
"operation" : "insert" ,
2026-08-08 22:32:31 +02:00
"tables" : [
"product_cost_price_method" ,
"product_cost_price"
],
2026-08-07 22:27:49 +02:00
"line" : 461 ,
"args" : [],
"kwargs" : {
"columns" : "[Column(sql_table, c) for c in columns]" ,
"values" : "cost_price.select(*[Column(cost_price, c) for c in columns])"
},
2026-08-09 00:47:23 +02:00
"code" : "sql_table.insert(\n columns=[Column(sql_table, c) for c in columns],\n values=cost_price.select(\n *[Column(cost_price, c) for c in columns]))" ,
2026-08-07 22:27:49 +02:00
"phase" : "after_super" ,
"condition" : "cost_price_table.column_exist('template')"
},
2026-08-20 13:27:23 +02:00
{
"object" : "" ,
"operation" : "Column" ,
"tables" : [],
"line" : 462 ,
"args" : [
"sql_table" ,
"c"
],
"kwargs" : {},
"code" : "Column(sql_table, c)" ,
"unresolved" : true ,
"phase" : "after_super" ,
"condition" : "cost_price_table.column_exist('template')"
},
2026-08-07 22:27:49 +02:00
{
"object" : "cost_price" ,
"operation" : "select" ,
2026-08-08 22:32:31 +02:00
"tables" : [
"product_cost_price"
],
2026-08-07 22:27:49 +02:00
"line" : 463 ,
"args" : [
"*[Column(cost_price, c) for c in columns]"
],
"kwargs" : {},
2026-08-09 00:47:23 +02:00
"code" : "cost_price.select(\n *[Column(cost_price, c) for c in columns])" ,
2026-08-07 22:27:49 +02:00
"phase" : "after_super" ,
"condition" : "cost_price_table.column_exist('template')"
2026-08-20 13:27:23 +02:00
},
{
"object" : "" ,
"operation" : "Column" ,
"tables" : [],
"line" : 464 ,
"args" : [
"cost_price" ,
"c"
],
"kwargs" : {},
"code" : "Column(cost_price, c)" ,
"unresolved" : true ,
"phase" : "after_super" ,
"condition" : "cost_price_table.column_exist('template')"
2026-08-07 22:27:49 +02:00
}
]
},
{
2026-08-09 02:04:04 +02:00
"module" : "product" ,
"file" : "product.py" ,
2026-08-07 22:27:49 +02:00
"class" : "ProductCostPrice" ,
"method" : "__register__" ,
"line" : 494 ,
"operations" : [
2026-08-20 13:27:23 +02:00
{
"object" : "" ,
"operation" : "Pool" ,
"tables" : [],
"line" : 495 ,
"args" : [],
"kwargs" : {},
"code" : "Pool()" ,
"unresolved" : true ,
"phase" : "before_super"
},
{
"object" : "backend" ,
"operation" : "get" ,
"tables" : [],
"line" : 497 ,
"args" : [
"'TableHandler'"
],
"kwargs" : {},
"code" : "backend.get('(backend.get('TableHandler'))')" ,
"unresolved" : true ,
"phase" : "before_super"
},
{
"object" : "Transaction().connection" ,
"operation" : "cursor" ,
"tables" : [],
"line" : 500 ,
"args" : [],
"kwargs" : {},
"code" : "Transaction().connection.(Transaction().connection.cursor())()" ,
"unresolved" : true ,
"phase" : "before_super"
},
{
"object" : "" ,
"operation" : "Transaction" ,
"tables" : [],
"line" : 500 ,
"args" : [],
"kwargs" : {},
"code" : "Transaction()" ,
"unresolved" : true ,
"phase" : "before_super"
},
{
"object" : "TableHandler" ,
"operation" : "table_exist" ,
"tables" : [],
"line" : 502 ,
"args" : [
"cls._table"
],
"kwargs" : {},
"code" : "(backend.get('TableHandler')).table_exist(cls._table)" ,
"unresolved" : true ,
"phase" : "before_super"
},
2026-08-07 22:27:49 +02:00
{
"object" : "table" ,
"operation" : "add_column" ,
2026-08-08 22:32:31 +02:00
"tables" : [
"product_cost_price"
],
2026-08-07 22:27:49 +02:00
"line" : 509 ,
"args" : [
"'template'" ,
"'INTEGER'"
],
"kwargs" : {},
"code" : "table.add_column('template', 'INTEGER')" ,
"phase" : "after_super" ,
"condition" : "not exist"
},
2026-08-20 13:27:23 +02:00
{
"object" : "" ,
"operation" : "migrate_property" ,
"tables" : [],
"line" : 536 ,
"args" : [
"'product.template'" ,
"field_names" ,
"cls" ,
"value_names"
],
"kwargs" : {
"parent" : "'template'" ,
"fields" : "fields"
},
"code" : "migrate_property(\n 'product.template', field_names, cls, value_names,\n parent='template', fields=fields)" ,
"unresolved" : true ,
"phase" : "after_super" ,
"condition" : "not exist" ,
"via" : [
{
"method" : "_migrate_property" ,
"line" : 510
}
]
},
2026-08-07 22:27:49 +02:00
{
"object" : "cursor" ,
"operation" : "execute" ,
2026-08-08 22:32:31 +02:00
"tables" : [
"product_cost_price"
],
2026-08-07 22:27:49 +02:00
"line" : 516 ,
"args" : [
"*sql_table.insert(columns=[Column(sql_table, c) for c in columns] + [sql_table.product], values=sql_table.join(product, condition=sql_table.template == product.template).select(*[Column(sql_table, c) for c in columns] + [product.id], where=(sql_table.template != Null) & (sql_table.product == Null)))"
],
"kwargs" : {},
2026-08-09 00:47:23 +02:00
"code" : "(Transaction().connection.cursor()).execute(*sql_table.insert(\n columns=[Column(sql_table, c) for c in columns]\n + [sql_table.product],\n values=sql_table.join(product,\n condition=sql_table.template == product.template\n ).select(\n *[Column(sql_table, c) for c in columns]\n + [product.id],\n where=(sql_table.template != Null)\n & (sql_table.product == Null))))" ,
2026-08-07 22:27:49 +02:00
"phase" : "after_super" ,
"condition" : "table.column_exist('template')"
},
{
"object" : "sql_table" ,
"operation" : "insert" ,
2026-08-08 22:32:31 +02:00
"tables" : [
"product_cost_price"
],
2026-08-07 22:27:49 +02:00
"line" : 516 ,
"args" : [],
"kwargs" : {
"columns" : "[Column(sql_table, c) for c in columns] + [sql_table.product]" ,
"values" : "sql_table.join(product, condition=sql_table.template == product.template).select(*[Column(sql_table, c) for c in columns] + [product.id], where=(sql_table.template != Null) & (sql_table.product == Null))"
},
2026-08-09 00:47:23 +02:00
"code" : "sql_table.insert(\n columns=[Column(sql_table, c) for c in columns]\n + [sql_table.product],\n values=sql_table.join(product,\n condition=sql_table.template == product.template\n ).select(\n *[Column(sql_table, c) for c in columns]\n + [product.id],\n where=(sql_table.template != Null)\n & (sql_table.product == Null)))" ,
2026-08-07 22:27:49 +02:00
"phase" : "after_super" ,
"condition" : "table.column_exist('template')"
},
2026-08-20 13:27:23 +02:00
{
"object" : "" ,
"operation" : "Column" ,
"tables" : [],
"line" : 517 ,
"args" : [
"sql_table" ,
"c"
],
"kwargs" : {},
"code" : "Column(sql_table, c)" ,
"unresolved" : true ,
"phase" : "after_super" ,
"condition" : "table.column_exist('template')"
},
2026-08-07 22:27:49 +02:00
{
"object" : "sql_table.join(product, condition=sql_table.template == product.template)" ,
"operation" : "select" ,
2026-08-08 22:32:31 +02:00
"tables" : [],
2026-08-07 22:27:49 +02:00
"line" : 519 ,
"args" : [
"*[Column(sql_table, c) for c in columns] + [product.id]"
],
"kwargs" : {
"where" : "(sql_table.template != Null) & (sql_table.product == Null)"
},
2026-08-09 00:47:23 +02:00
"code" : "sql_table.join(product,\n condition=sql_table.template == product.template\n ).select(\n *[Column(sql_table, c) for c in columns]\n + [product.id],\n where=(sql_table.template != Null)\n & (sql_table.product == Null))" ,
2026-08-07 22:27:49 +02:00
"phase" : "after_super" ,
"condition" : "table.column_exist('template')"
},
2026-08-20 13:27:23 +02:00
{
"object" : "sql_table" ,
"operation" : "join" ,
"tables" : [],
"line" : 519 ,
"args" : [
"product"
],
"kwargs" : {
"condition" : "sql_table.template == product.template"
},
"code" : "sql_table.join(product,\n condition=sql_table.template == product.template\n )" ,
"unresolved" : true ,
"phase" : "after_super" ,
"condition" : "table.column_exist('template')"
},
{
"object" : "" ,
"operation" : "Column" ,
"tables" : [],
"line" : 522 ,
"args" : [
"sql_table" ,
"c"
],
"kwargs" : {},
"code" : "Column(sql_table, c)" ,
"unresolved" : true ,
"phase" : "after_super" ,
"condition" : "table.column_exist('template')"
},
2026-08-07 22:27:49 +02:00
{
"object" : "cursor" ,
"operation" : "execute" ,
2026-08-08 22:32:31 +02:00
"tables" : [
"product_cost_price"
],
2026-08-07 22:27:49 +02:00
"line" : 526 ,
"args" : [
"*sql_table.delete(where=(sql_table.template != Null) & (sql_table.product == Null))"
],
"kwargs" : {},
2026-08-09 00:47:23 +02:00
"code" : "(Transaction().connection.cursor()).execute(*sql_table.delete(\n where=(sql_table.template != Null)\n & (sql_table.product == Null)))" ,
2026-08-07 22:27:49 +02:00
"phase" : "after_super" ,
"condition" : "table.column_exist('template')"
},
{
"object" : "sql_table" ,
"operation" : "delete" ,
2026-08-08 22:32:31 +02:00
"tables" : [
"product_cost_price"
],
2026-08-07 22:27:49 +02:00
"line" : 526 ,
"args" : [],
"kwargs" : {
"where" : "(sql_table.template != Null) & (sql_table.product == Null)"
},
2026-08-09 00:47:23 +02:00
"code" : "sql_table.delete(\n where=(sql_table.template != Null)\n & (sql_table.product == Null))" ,
2026-08-07 22:27:49 +02:00
"phase" : "after_super" ,
"condition" : "table.column_exist('template')"
},
{
"object" : "table" ,
"operation" : "drop_column" ,
2026-08-08 22:32:31 +02:00
"tables" : [
"product_cost_price"
],
2026-08-07 22:27:49 +02:00
"line" : 529 ,
"args" : [
"'template'"
],
"kwargs" : {},
"code" : "table.drop_column('template')" ,
"phase" : "after_super" ,
"condition" : "table.column_exist('template')"
}
]
}
]
}