dc36ce2ae4
The MODIFICA button on the action page was opening the catalog editor
(name/brand/category). Users expect it to edit the physical item in hand.
Changes:
- MODIFICA button → openInventoryEdit(): edits the inventory row directly.
If product is in one location → opens editActionInventoryItem directly.
If multiple locations → shows a location picker modal first.
- editActionInventoryItem modal already has: qty ±, unit, conf size, location
buttons, expiry date, vacuum toggle — all fields for the instance.
- Catalog editing (name/brand/category) moved to a small secondary link
'⚙️ Modifica scheda prodotto' shown discreetly below the action buttons.
- Removed redundant 'Tocca una riga per modificare' hint from status bar.
- Added .btn-link-small CSS class for the secondary catalog-edit link.
1 line
14 KiB
JSON
1 line
14 KiB
JSON
{"success":true,"items":[{"product_id":70,"name":"Latte Parzialmente Scremato Uht","brand":"Latteria","category":"bevande","unit":"conf","current_qty":0,"default_qty":500,"package_unit":"ml","pct_left":0,"use_count":13,"buy_count":3,"daily_rate":6.04,"uses_per_month":13.9,"days_since_last_use":12,"days_left":0,"expiry_date":null,"days_to_expiry":999,"is_opened":false,"urgency":"critical","reasons":["Esaurito","Uso frequente (13x)"],"score":135,"on_bring":false,"locations":""},{"product_id":10,"name":"Passata di pomodoro","brand":"Primia","category":"en:condiments","unit":"g","current_qty":0,"default_qty":700,"package_unit":"","pct_left":0,"use_count":8,"buy_count":3,"daily_rate":47.04,"uses_per_month":8.6,"days_since_last_use":1,"days_left":0,"expiry_date":null,"days_to_expiry":999,"is_opened":false,"urgency":"critical","reasons":["Esaurito","Uso frequente (8x)"],"score":135,"on_bring":false,"locations":""},{"product_id":115,"name":"Aglio rosso","brand":"Duoccio","category":"condimenti","unit":"pz","current_qty":0,"default_qty":0,"package_unit":"","pct_left":0,"use_count":2,"buy_count":2,"daily_rate":0.12,"uses_per_month":2.4,"days_since_last_use":18,"days_left":0,"expiry_date":null,"days_to_expiry":999,"is_opened":false,"urgency":"critical","reasons":["Esaurito"],"score":100,"on_bring":false,"locations":""},{"product_id":152,"name":"Muesli Frutta Secca","brand":"Crownfield","category":"altro","unit":"g","current_qty":0,"default_qty":750,"package_unit":"","pct_left":0,"use_count":4,"buy_count":2,"daily_rate":29.1,"uses_per_month":5.9,"days_since_last_use":12,"days_left":0,"expiry_date":null,"days_to_expiry":999,"is_opened":false,"urgency":"critical","reasons":["Esaurito"],"score":100,"on_bring":false,"locations":""},{"product_id":69,"name":"Cipolla Dorata","brand":"","category":"verdura","unit":"pz","current_qty":1.8,"default_qty":0,"package_unit":"","pct_left":19,"use_count":15,"buy_count":1,"daily_rate":0.37,"uses_per_month":16.1,"days_since_last_use":1,"days_left":5,"expiry_date":"2026-04-13","days_to_expiry":5,"is_opened":false,"urgency":"high","reasons":["Finisce tra ~5gg"],"score":90,"on_bring":false,"locations":"frigo"},{"product_id":3,"name":"Cracker integrali","brand":"Barilla,Mulino Bianco","category":"en:snacks","unit":"conf","current_qty":2,"default_qty":25,"package_unit":"g","pct_left":12,"use_count":6,"buy_count":1,"daily_rate":0.5,"uses_per_month":6.4,"days_since_last_use":9,"days_left":4,"expiry_date":"2026-04-28","days_to_expiry":20,"is_opened":true,"urgency":"high","reasons":["Quasi finito (12%)"],"score":90,"on_bring":false,"locations":"dispensa"},{"product_id":47,"name":"Lenticchie","brand":"Primia","category":"en:plant-based-foods-and-beverages","unit":"conf","current_qty":2,"default_qty":400,"package_unit":"g","pct_left":1,"use_count":5,"buy_count":4,"daily_rate":32.13,"uses_per_month":5.4,"days_since_last_use":3,"days_left":0,"expiry_date":"2029-12-13","days_to_expiry":1345,"is_opened":false,"urgency":"high","reasons":["Quasi finito (1%)"],"score":90,"on_bring":false,"locations":"dispensa"},{"product_id":161,"name":"Yogurt agrumi","brand":"Vipiteno","category":"latticini","unit":"conf","current_qty":0.3,"default_qty":500,"package_unit":"g","pct_left":26,"use_count":2,"buy_count":1,"daily_rate":0.64,"uses_per_month":1,"days_since_last_use":1,"days_left":0,"expiry_date":"2026-04-09","days_to_expiry":1,"is_opened":true,"urgency":"medium","reasons":["Finisce tra ~0gg","Scade tra 1gg"],"score":90,"on_bring":false,"locations":"frigo"},{"product_id":154,"name":"Mela Rossa","brand":"","category":"frutta","unit":"pz","current_qty":6,"default_qty":1,"package_unit":"","pct_left":27,"use_count":6,"buy_count":1,"daily_rate":0.8,"uses_per_month":9,"days_since_last_use":3,"days_left":8,"expiry_date":"2026-04-15","days_to_expiry":7,"is_opened":false,"urgency":"medium","reasons":["Finisce tra ~8gg"],"score":60,"on_bring":false,"locations":"frigo"},{"product_id":144,"name":"Pancetta Dolce","brand":"Negroni","category":"en:meats-and-their-products","unit":"conf","current_qty":1,"default_qty":80,"package_unit":"g","pct_left":50,"use_count":1,"buy_count":1,"daily_rate":0.04,"uses_per_month":1.3,"days_since_last_use":8,"days_left":23,"expiry_date":"2026-09-11","days_to_expiry":156,"is_opened":false,"urgency":"high","reasons":["Solo 1 confezione rimasta"],"score":60,"on_bring":true,"locations":"frigo"},{"product_id":196,"name":"Pizza Regina Alta Margherita","brand":"Cameo","category":"surgelati","unit":"pz","current_qty":1,"default_qty":1,"package_unit":"","pct_left":100,"use_count":0,"buy_count":1,"daily_rate":0,"uses_per_month":0,"days_since_last_use":0,"days_left":365,"expiry_date":"2026-10-04","days_to_expiry":179,"is_opened":false,"urgency":"high","reasons":["Solo 1 pezzo rimasto"],"score":60,"on_bring":false,"locations":"freezer"},{"product_id":29,"name":"Sale marino iodato","brand":"Primia","category":"","unit":"pz","current_qty":1,"default_qty":1,"package_unit":"","pct_left":100,"use_count":0,"buy_count":1,"daily_rate":0,"uses_per_month":0,"days_since_last_use":28,"days_left":365,"expiry_date":null,"days_to_expiry":999,"is_opened":false,"urgency":"high","reasons":["Solo 1 pezzo rimasto"],"score":60,"on_bring":false,"locations":"dispensa"},{"product_id":56,"name":"Tonno all'Olio di Oliva","brand":"Rio Mare","category":"conserve","unit":"pz","current_qty":1,"default_qty":1,"package_unit":"","pct_left":50,"use_count":1,"buy_count":1,"daily_rate":0.04,"uses_per_month":1.1,"days_since_last_use":26,"days_left":28,"expiry_date":"2029-12-31","days_to_expiry":1363,"is_opened":false,"urgency":"high","reasons":["Solo 1 pezzo rimasto"],"score":60,"on_bring":false,"locations":"dispensa"},{"product_id":163,"name":"Yogurt vaniglia","brand":"Vipiteno","category":"latticini","unit":"conf","current_qty":1,"default_qty":500,"package_unit":"g","pct_left":100,"use_count":0,"buy_count":1,"daily_rate":0,"uses_per_month":0,"days_since_last_use":1,"days_left":365,"expiry_date":"2026-05-19","days_to_expiry":41,"is_opened":false,"urgency":"high","reasons":["Solo 1 confezione rimasta"],"score":60,"on_bring":false,"locations":"frigo"},{"product_id":106,"name":"Zuppalatte","brand":"Colussi","category":"en:plant-based-foods-and-beverages","unit":"conf","current_qty":1,"default_qty":250,"package_unit":"g","pct_left":33,"use_count":1,"buy_count":1,"daily_rate":0.08,"uses_per_month":1.2,"days_since_last_use":25,"days_left":12,"expiry_date":"2027-06-01","days_to_expiry":419,"is_opened":false,"urgency":"high","reasons":["Solo 1 confezione rimasta"],"score":60,"on_bring":false,"locations":"dispensa"},{"product_id":166,"name":"mix energia","brand":"","category":"","unit":"pz","current_qty":1,"default_qty":1,"package_unit":"","pct_left":100,"use_count":0,"buy_count":1,"daily_rate":0,"uses_per_month":0,"days_since_last_use":1,"days_left":365,"expiry_date":"2026-11-29","days_to_expiry":235,"is_opened":false,"urgency":"high","reasons":["Solo 1 pezzo rimasto"],"score":60,"on_bring":false,"locations":"dispensa"},{"product_id":132,"name":"Noci sgusciate","brand":"Fruttbella","category":"conserve","unit":"g","current_qty":60,"default_qty":200,"package_unit":"","pct_left":30,"use_count":4,"buy_count":1,"daily_rate":6.14,"uses_per_month":5.3,"days_since_last_use":3,"days_left":10,"expiry_date":"2026-04-29","days_to_expiry":21,"is_opened":true,"urgency":"medium","reasons":["Finisce tra ~10gg"],"score":50,"on_bring":true,"locations":"dispensa"},{"product_id":130,"name":"Uova Sfoglia Gialla","brand":"Naturelle","category":"latticini","unit":"pz","current_qty":4,"default_qty":1,"package_unit":"","pct_left":67,"use_count":5,"buy_count":2,"daily_rate":0.35,"uses_per_month":6.6,"days_since_last_use":1,"days_left":11,"expiry_date":"2026-04-09","days_to_expiry":1,"is_opened":false,"urgency":"medium","reasons":["Scade tra 1gg"],"score":50,"on_bring":false,"locations":"frigo"},{"product_id":87,"name":"Aroma per dolci e creme Rum","brand":"Dr. Oetker, Cameo, Paneangeli","category":"en:food-additives","unit":"pz","current_qty":2,"default_qty":5,"package_unit":"","pct_left":40,"use_count":3,"buy_count":1,"daily_rate":0.11,"uses_per_month":3.3,"days_since_last_use":3,"days_left":18,"expiry_date":"2028-09-28","days_to_expiry":904,"is_opened":false,"urgency":"medium","reasons":["Solo 2 pezzi rimasti"],"score":40,"on_bring":false,"locations":"dispensa"},{"product_id":195,"name":"Aroma vaniglia","brand":"Dr. Oetker, Cameo, Paneangeli","category":"en:food-additives","unit":"conf","current_qty":2,"default_qty":4,"package_unit":"ml","pct_left":100,"use_count":0,"buy_count":1,"daily_rate":0,"uses_per_month":0,"days_since_last_use":0,"days_left":365,"expiry_date":"2026-10-04","days_to_expiry":179,"is_opened":false,"urgency":"medium","reasons":["Solo 2 confezioni rimaste"],"score":40,"on_bring":false,"locations":"dispensa"},{"product_id":86,"name":"Arome Orange Pour Gateaux","brand":"Dr. Oetker, Cameo, Paneangeli","category":"","unit":"pz","current_qty":2,"default_qty":1,"package_unit":"","pct_left":67,"use_count":1,"buy_count":1,"daily_rate":0.04,"uses_per_month":1.1,"days_since_last_use":7,"days_left":54,"expiry_date":"2027-02-01","days_to_expiry":299,"is_opened":false,"urgency":"medium","reasons":["Solo 2 pezzi rimasti"],"score":40,"on_bring":false,"locations":"dispensa"},{"product_id":170,"name":"Avocado Hass","brand":"Alce nero","category":"en:plant-based-foods-and-beverages","unit":"pz","current_qty":2,"default_qty":2,"package_unit":"","pct_left":100,"use_count":0,"buy_count":1,"daily_rate":0,"uses_per_month":0,"days_since_last_use":1,"days_left":365,"expiry_date":"2026-10-03","days_to_expiry":178,"is_opened":false,"urgency":"medium","reasons":["Solo 2 pezzi rimasti"],"score":40,"on_bring":false,"locations":"dispensa"},{"product_id":8,"name":"Condoro Sugo Al Pomodoro Sauce Le Conserve Della Nonna","brand":"Fini, Le conserve della nonna","category":"en:condiments","unit":"conf","current_qty":2,"default_qty":350,"package_unit":"g","pct_left":1,"use_count":0,"buy_count":2,"daily_rate":0,"uses_per_month":0,"days_since_last_use":28,"days_left":365,"expiry_date":"2028-07-31","days_to_expiry":845,"is_opened":false,"urgency":"medium","reasons":["Solo 2 confezioni rimaste"],"score":40,"on_bring":false,"locations":"dispensa"},{"product_id":190,"name":"Finocchio Biologico","brand":"Alce Nero","category":"verdura","unit":"pz","current_qty":2,"default_qty":2,"package_unit":"","pct_left":100,"use_count":0,"buy_count":1,"daily_rate":0,"uses_per_month":0,"days_since_last_use":0,"days_left":365,"expiry_date":"2026-04-21","days_to_expiry":13,"is_opened":false,"urgency":"medium","reasons":["Solo 2 pezzi rimasti"],"score":40,"on_bring":false,"locations":"frigo"},{"product_id":1,"name":"Grissini","brand":"GrissinBon","category":"en:plant-based-foods-and-beverages","unit":"conf","current_qty":2,"default_qty":500,"package_unit":"","pct_left":100,"use_count":0,"buy_count":1,"daily_rate":0,"uses_per_month":0,"days_since_last_use":28,"days_left":365,"expiry_date":"2026-07-09","days_to_expiry":92,"is_opened":false,"urgency":"medium","reasons":["Solo 2 confezioni rimaste"],"score":40,"on_bring":false,"locations":"dispensa"},{"product_id":129,"name":"Latte di Montagna","brand":"Mila","category":"en:dairies","unit":"conf","current_qty":4.8,"default_qty":1000,"package_unit":"ml","pct_left":192,"use_count":14,"buy_count":6,"daily_rate":0.45,"uses_per_month":18.4,"days_since_last_use":0,"days_left":11,"expiry_date":"2026-04-11","days_to_expiry":3,"is_opened":true,"urgency":"low","reasons":["Previsto esaurimento tra ~11gg"],"score":40,"on_bring":false,"locations":"frigo"},{"product_id":92,"name":"Lievito istantaneo","brand":"Paneangeli","category":"altro","unit":"g","current_qty":5,"default_qty":15,"package_unit":"","pct_left":33,"use_count":1,"buy_count":1,"daily_rate":0.37,"uses_per_month":1.1,"days_since_last_use":27,"days_left":13,"expiry_date":"2026-04-10","days_to_expiry":2,"is_opened":true,"urgency":"medium","reasons":["Scade tra 2gg"],"score":40,"on_bring":false,"locations":"dispensa"},{"product_id":55,"name":"Mais Dolce","brand":"Despar","category":"conserve","unit":"conf","current_qty":2,"default_qty":160,"package_unit":"g","pct_left":0,"use_count":0,"buy_count":1,"daily_rate":0,"uses_per_month":0,"days_since_last_use":28,"days_left":365,"expiry_date":"2028-12-31","days_to_expiry":998,"is_opened":false,"urgency":"medium","reasons":["Solo 2 confezioni rimaste"],"score":40,"on_bring":false,"locations":"dispensa"},{"product_id":39,"name":"Panna da cucina","brand":"Chef, Parmalat","category":"altro","unit":"conf","current_qty":2,"default_qty":125,"package_unit":"g","pct_left":67,"use_count":2,"buy_count":1,"daily_rate":0.01,"uses_per_month":2.1,"days_since_last_use":8,"days_left":138,"expiry_date":"2026-04-29","days_to_expiry":21,"is_opened":true,"urgency":"medium","reasons":["Solo 2 confezioni rimaste"],"score":40,"on_bring":false,"locations":"dispensa"},{"product_id":2,"name":"Pera Italiana Succo e polpa frutta","brand":"Conserve Italia, Valfrutta","category":"bevande","unit":"conf","current_qty":2,"default_qty":200,"package_unit":"ml","pct_left":50,"use_count":3,"buy_count":1,"daily_rate":0.11,"uses_per_month":3.2,"days_since_last_use":2,"days_left":19,"expiry_date":"2027-02-01","days_to_expiry":299,"is_opened":false,"urgency":"medium","reasons":["Solo 2 confezioni rimaste"],"score":40,"on_bring":false,"locations":"dispensa"},{"product_id":127,"name":"Polpa di pomodoro finissima","brand":"Primia","category":"en:plant-based-foods-and-beverages","unit":"conf","current_qty":2,"default_qty":500,"package_unit":"g","pct_left":1,"use_count":0,"buy_count":2,"daily_rate":0,"uses_per_month":0,"days_since_last_use":23,"days_left":365,"expiry_date":"2028-03-14","days_to_expiry":706,"is_opened":false,"urgency":"medium","reasons":["Solo 2 confezioni rimaste"],"score":40,"on_bring":false,"locations":"dispensa"},{"product_id":114,"name":"Vino bianco Trebbiano igt Rubicone","brand":"Vesoletto","category":"bevande","unit":"conf","current_qty":2,"default_qty":250,"package_unit":"ml","pct_left":100,"use_count":1,"buy_count":1,"daily_rate":0,"uses_per_month":1.2,"days_since_last_use":4,"days_left":365,"expiry_date":"2027-04-03","days_to_expiry":360,"is_opened":false,"urgency":"medium","reasons":["Solo 2 confezioni rimaste"],"score":40,"on_bring":false,"locations":"frigo"},{"product_id":136,"name":"Biscotti Pastefrolle","brand":"Balocco","category":"snack","unit":"g","current_qty":350,"default_qty":700,"package_unit":"","pct_left":67,"use_count":4,"buy_count":2,"daily_rate":30.7,"uses_per_month":5.3,"days_since_last_use":3,"days_left":11,"expiry_date":null,"days_to_expiry":999,"is_opened":false,"urgency":"low","reasons":["Previsto esaurimento tra ~11gg"],"score":25,"on_bring":false,"locations":"dispensa"}],"cached_at":"2026-04-07T12:50:02+00:00","cached_ts":1775566202} |