From c6203a6df2b845def09709236901b821d6f7ce24 Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Mon, 8 Jul 2024 09:30:17 +0200 Subject: [PATCH 01/23] quickfix: add unmatched in function --- supabase/functions/process-invoice/index.ts | 29 +++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/supabase/functions/process-invoice/index.ts b/supabase/functions/process-invoice/index.ts index 8f0e2b09..063fecb4 100644 --- a/supabase/functions/process-invoice/index.ts +++ b/supabase/functions/process-invoice/index.ts @@ -376,10 +376,39 @@ Deno.serve(async (req) => { ), ]; + const unmatched = documentAnalysisResult + ?.filter( + (analysis) => + !matchAliasesToRecognizedData.recognizedAliases.some( + (recognizedAlias) => recognizedAlias === analysis?.sanitizedName + ) + ) + .reduce( + (acc, item) => { + if (item?.sanitizedName == null) return acc; + + return { + ...acc, + [item.sanitizedName]: { + price_per_unit: item?.price_per_unit ?? null, + quantity: item?.quantity ?? null, + }, + }; + }, + {} as Record< + string, + { + price_per_unit: number | null; + quantity: number | null; + } + > + ); + return new Response( JSON.stringify({ form: matchAliasesToRecognizedData.recognized, unmatchedAliases, + unmatched, }), { headers: { ...corsHeaders, "Content-Type": "application/json" }, From ce8a31c963b9efa239e276bbc4a238747630f67c Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Wed, 10 Jul 2024 12:54:42 +0200 Subject: [PATCH 02/23] seed based on prod --- .../hooks/useProcessInvoice.mockResponse.json | 79 ++++++++++ native/db/hooks/useProcessInvoice.ts | 12 ++ .../examples/mock-response.json | 79 ++++++++++ .../process-invoice/examples/request.js | 9 +- supabase/seed.sql | 136 ++++++++++-------- 5 files changed, 250 insertions(+), 65 deletions(-) create mode 100644 native/db/hooks/useProcessInvoice.mockResponse.json create mode 100644 supabase/functions/process-invoice/examples/mock-response.json diff --git a/native/db/hooks/useProcessInvoice.mockResponse.json b/native/db/hooks/useProcessInvoice.mockResponse.json new file mode 100644 index 00000000..817af2c7 --- /dev/null +++ b/native/db/hooks/useProcessInvoice.mockResponse.json @@ -0,0 +1,79 @@ +{ + "form": { + "3969": { "product_id": 176, "price_per_unit": 58.51, "quantity": 10 }, + "3970": { "product_id": 175, "price_per_unit": 44.44, "quantity": 17 }, + "3971": { "product_id": 177, "price_per_unit": 5.3, "quantity": 6 }, + "3972": { "product_id": 178, "price_per_unit": 21.85, "quantity": 12 } + }, + "unmatchedAliases": [ + "Sos Czekoladowy Dijo 1kg", + "Sos Czekolada Biała Dijo 1", + "Sos Adwokatowy Dijo 1kg", + "Sos Truskawkowy Dijo 1kg", + "Sos Toffi Dijo 1kg", + "Sos Mix Jagodowy Dijo 1kg", + "Sos Wiśniowy Dijo 1kg", + "Sos Malinowy Dijo 1kg", + "Maliny w Żelu Prospona 3,2kg", + "Jagody w Żelu Prospona 3,2kg", + "Brzoskwinie Kostka Regularna Sandra 4250g", + "Posypka Kolorowa Dijo 1kg", + "Posypka o Smaku Kakaowym Dijo 1kg", + "Wafle Rożek Włoski Madren(35) 546", + "Wafle Kubek Kanadyjski Duży Madren(05) 450", + "Olej Rzepakowy Uniwersalny 51", + "Brzoskwinie Połówki Sandra 820g", + "Wiśnie w Żelu Prospona 3,2kg", + "Wafle Kubek Kanadyjski Średni Madren(04) 450", + "Jabłko Zielone w Żelu Prospona 3,1kg", + "Truskawki w Żelu Dijo 3,2kg", + "Maliny w Żelu Dijo 3,2kg", + "Mleko Mlekovita UHT 3,2% 1L" + ], + "unmatched": { + "Sos Czekoladowy Dijo 1kg": { "price_per_unit": 17.64, "quantity": 1 }, + "Sos Czekolada Biała Dijo 1": { "price_per_unit": 19.38, "quantity": 1 }, + "Sos Adwokatowy Dijo 1kg": { "price_per_unit": 17.24, "quantity": 1 }, + "Sos Truskawkowy Dijo 1kg": { "price_per_unit": 16.8, "quantity": 1 }, + "Sos Toffi Dijo 1kg": { "price_per_unit": 16.44, "quantity": 5 }, + "Sos Mix Jagodowy Dijo 1kg": { "price_per_unit": 18.13, "quantity": 1 }, + "Sos Wiśniowy Dijo 1kg": { "price_per_unit": 16.44, "quantity": 1 }, + "Sos Malinowy Dijo 1kg": { "price_per_unit": 18.13, "quantity": 1 }, + "Maliny w Żelu Prospona 3,2kg": { "price_per_unit": 107.52, "quantity": 1 }, + "Jagody w Żelu Prospona 3,2kg": { "price_per_unit": 91.2, "quantity": 1 }, + "Brzoskwinie Kostka Regularna Sandra 4250g": { + "price_per_unit": 35.65, + "quantity": 2 + }, + "Posypka Kolorowa Dijo 1kg": { "price_per_unit": 16.39, "quantity": 1 }, + "Posypka o Smaku Kakaowym Dijo 1kg": { + "price_per_unit": 17.17, + "quantity": 1 + }, + "Wafle Rożek Włoski Madren(35) 546": { + "price_per_unit": 65.38, + "quantity": 3 + }, + "Wafle Kubek Kanadyjski Duży Madren(05) 450": { + "price_per_unit": 63.08, + "quantity": 2 + }, + "Olej Rzepakowy Uniwersalny 51": { "price_per_unit": 25.45, "quantity": 9 }, + "Brzoskwinie Połówki Sandra 820g": { + "price_per_unit": 7.22, + "quantity": 4 + }, + "Wiśnie w Żelu Prospona 3,2kg": { "price_per_unit": 47, "quantity": 5 }, + "Wafle Kubek Kanadyjski Średni Madren(04) 450": { + "price_per_unit": 59.42, + "quantity": 1 + }, + "Jabłko Zielone w Żelu Prospona 3,1kg": { + "price_per_unit": 44.34, + "quantity": 1 + }, + "Truskawki w Żelu Dijo 3,2kg": { "price_per_unit": 60.35, "quantity": 1 }, + "Maliny w Żelu Dijo 3,2kg": { "price_per_unit": 60.35, "quantity": 1 }, + "Mleko Mlekovita UHT 3,2% 1L": { "price_per_unit": 2.98, "quantity": 12 } + } +} diff --git a/native/db/hooks/useProcessInvoice.ts b/native/db/hooks/useProcessInvoice.ts index a1bdcb11..86a74cf8 100644 --- a/native/db/hooks/useProcessInvoice.ts +++ b/native/db/hooks/useProcessInvoice.ts @@ -7,6 +7,8 @@ import { import { useAppDispatch, useAppSelector } from "../../redux/hooks"; import { supabase } from "../supabase"; import { ProcessInvoiceResponse } from "../types"; +const mockResponse = require("./useProcessInvoice.mockResponse.json"); +const test = false; export const useProcessInvoice = () => { const { showError } = useSnackbar(); @@ -23,6 +25,16 @@ export const useProcessInvoice = () => { base64Photo: string; inventory_id: number | null; }): Promise => { + if (test) { + const data = mockResponse; + dispatch( + documentScannerAction.SET_PROCESSED_INVOICE({ + processedInvoice: data, + }) + ); + return data as ProcessInvoiceResponse; + } + if (inventory_id == null) { showError("Nie udało się przetworzyć zdjęcia"); console.log( diff --git a/supabase/functions/process-invoice/examples/mock-response.json b/supabase/functions/process-invoice/examples/mock-response.json new file mode 100644 index 00000000..817af2c7 --- /dev/null +++ b/supabase/functions/process-invoice/examples/mock-response.json @@ -0,0 +1,79 @@ +{ + "form": { + "3969": { "product_id": 176, "price_per_unit": 58.51, "quantity": 10 }, + "3970": { "product_id": 175, "price_per_unit": 44.44, "quantity": 17 }, + "3971": { "product_id": 177, "price_per_unit": 5.3, "quantity": 6 }, + "3972": { "product_id": 178, "price_per_unit": 21.85, "quantity": 12 } + }, + "unmatchedAliases": [ + "Sos Czekoladowy Dijo 1kg", + "Sos Czekolada Biała Dijo 1", + "Sos Adwokatowy Dijo 1kg", + "Sos Truskawkowy Dijo 1kg", + "Sos Toffi Dijo 1kg", + "Sos Mix Jagodowy Dijo 1kg", + "Sos Wiśniowy Dijo 1kg", + "Sos Malinowy Dijo 1kg", + "Maliny w Żelu Prospona 3,2kg", + "Jagody w Żelu Prospona 3,2kg", + "Brzoskwinie Kostka Regularna Sandra 4250g", + "Posypka Kolorowa Dijo 1kg", + "Posypka o Smaku Kakaowym Dijo 1kg", + "Wafle Rożek Włoski Madren(35) 546", + "Wafle Kubek Kanadyjski Duży Madren(05) 450", + "Olej Rzepakowy Uniwersalny 51", + "Brzoskwinie Połówki Sandra 820g", + "Wiśnie w Żelu Prospona 3,2kg", + "Wafle Kubek Kanadyjski Średni Madren(04) 450", + "Jabłko Zielone w Żelu Prospona 3,1kg", + "Truskawki w Żelu Dijo 3,2kg", + "Maliny w Żelu Dijo 3,2kg", + "Mleko Mlekovita UHT 3,2% 1L" + ], + "unmatched": { + "Sos Czekoladowy Dijo 1kg": { "price_per_unit": 17.64, "quantity": 1 }, + "Sos Czekolada Biała Dijo 1": { "price_per_unit": 19.38, "quantity": 1 }, + "Sos Adwokatowy Dijo 1kg": { "price_per_unit": 17.24, "quantity": 1 }, + "Sos Truskawkowy Dijo 1kg": { "price_per_unit": 16.8, "quantity": 1 }, + "Sos Toffi Dijo 1kg": { "price_per_unit": 16.44, "quantity": 5 }, + "Sos Mix Jagodowy Dijo 1kg": { "price_per_unit": 18.13, "quantity": 1 }, + "Sos Wiśniowy Dijo 1kg": { "price_per_unit": 16.44, "quantity": 1 }, + "Sos Malinowy Dijo 1kg": { "price_per_unit": 18.13, "quantity": 1 }, + "Maliny w Żelu Prospona 3,2kg": { "price_per_unit": 107.52, "quantity": 1 }, + "Jagody w Żelu Prospona 3,2kg": { "price_per_unit": 91.2, "quantity": 1 }, + "Brzoskwinie Kostka Regularna Sandra 4250g": { + "price_per_unit": 35.65, + "quantity": 2 + }, + "Posypka Kolorowa Dijo 1kg": { "price_per_unit": 16.39, "quantity": 1 }, + "Posypka o Smaku Kakaowym Dijo 1kg": { + "price_per_unit": 17.17, + "quantity": 1 + }, + "Wafle Rożek Włoski Madren(35) 546": { + "price_per_unit": 65.38, + "quantity": 3 + }, + "Wafle Kubek Kanadyjski Duży Madren(05) 450": { + "price_per_unit": 63.08, + "quantity": 2 + }, + "Olej Rzepakowy Uniwersalny 51": { "price_per_unit": 25.45, "quantity": 9 }, + "Brzoskwinie Połówki Sandra 820g": { + "price_per_unit": 7.22, + "quantity": 4 + }, + "Wiśnie w Żelu Prospona 3,2kg": { "price_per_unit": 47, "quantity": 5 }, + "Wafle Kubek Kanadyjski Średni Madren(04) 450": { + "price_per_unit": 59.42, + "quantity": 1 + }, + "Jabłko Zielone w Żelu Prospona 3,1kg": { + "price_per_unit": 44.34, + "quantity": 1 + }, + "Truskawki w Żelu Dijo 3,2kg": { "price_per_unit": 60.35, "quantity": 1 }, + "Maliny w Żelu Dijo 3,2kg": { "price_per_unit": 60.35, "quantity": 1 }, + "Mleko Mlekovita UHT 3,2% 1L": { "price_per_unit": 2.98, "quantity": 12 } + } +} diff --git a/supabase/functions/process-invoice/examples/request.js b/supabase/functions/process-invoice/examples/request.js index 596b6c22..a164baa6 100644 --- a/supabase/functions/process-invoice/examples/request.js +++ b/supabase/functions/process-invoice/examples/request.js @@ -2,17 +2,18 @@ const http = require("http"); const fs = require("fs"); // run this script from the directory it's in, otherwise the paths get messed up -const invoiceData = fs.readFileSync("./invoice-example2.json"); +const filename = "invoice-example2" +const invoiceData = fs.readFileSync(`./${filename}.json`); const invoice = JSON.parse(invoiceData); const options = { - hostname: "127.0.0.1", port: 54321, - path: "/functions/v1/scan-doc", + path: "/functions/v1/process-invoice", method: "POST", headers: { "Content-Type": "application/json", Authorization: + // Must be service_key to contact the db from inside the edge functions "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0", }, }; @@ -25,7 +26,7 @@ const req = http.request(options, (res) => { }); res.on("end", () => { - fs.writeFile("./invoice-example2-response.json", data, (err) => { + fs.writeFile(`./${filename}-response.json`, data, (err) => { if (err) throw err; console.log("The file has been saved!"); }); diff --git a/supabase/seed.sql b/supabase/seed.sql index ebf95d59..e95649b2 100644 --- a/supabase/seed.sql +++ b/supabase/seed.sql @@ -1,64 +1,78 @@ --- Restauracje -insert into public.company (name) - values ('Pierogostacja'), ('Grôcznô Ryba'), ('Mięsny jeż'); -INSERT INTO "auth"."users" ("instance_id", "id", "aud", "role", "email", "encrypted_password", "email_confirmed_at", "invited_at", "confirmation_token", "confirmation_sent_at", "recovery_token", "recovery_sent_at", "email_change_token_new", "email_change", "email_change_sent_at", "last_sign_in_at", "raw_app_meta_data", "raw_user_meta_data", "is_super_admin", "created_at", "updated_at", "phone", "phone_confirmed_at", "phone_change", "phone_change_token", "phone_change_sent_at", "email_change_token_current", "email_change_confirm_status", "banned_until", "reauthentication_token", "reauthentication_sent_at", "is_sso_user", "deleted_at") VALUES - ('00000000-0000-0000-0000-000000000000', 'c78156b4-052a-47de-bbd9-db3517a9406d', 'authenticated', 'authenticated', 'adam@example.com', '$2a$10$P9n7io9zuegzlNqbmG1GRe3zGUlDsV8EXEFQC2d7ZJ/B.2.1afBcy', '2024-03-06 12:48:13.948271+00', NULL, '', NULL, '', NULL, '', '', NULL, NULL, '{"provider": "email", "providers": ["email"]}', '{}', NULL, '2024-03-06 12:48:13.94456+00', '2024-03-06 12:48:13.948381+00', NULL, NULL, '', '', NULL, '', 0, NULL, '', NULL, false, NULL), - ('00000000-0000-0000-0000-000000000000', 'eae6bf66-8828-4366-b7ba-5ab9bf3b0707', 'authenticated', 'authenticated', 'nowy@example.com', '$2a$10$JEG3Iosv8HtsGTXQEN0SS.Yso8zDRA/ccQO7w/Eah0FIkRWCNCVEa', '2024-03-06 12:48:28.386941+00', NULL, '', NULL, '', NULL, '', '', NULL, NULL, '{"provider": "email", "providers": ["email"]}', '{}', NULL, '2024-03-06 12:48:28.384754+00', '2024-03-06 12:48:28.387074+00', NULL, NULL, '', '', NULL, '', 0, NULL, '', NULL, false, NULL); +INSERT INTO "auth"."users" ("instance_id", "id", "aud", "role", "email", "encrypted_password", "email_confirmed_at", "invited_at", "confirmation_token", "confirmation_sent_at", "recovery_token", "recovery_sent_at", "email_change_token_new", "email_change", "email_change_sent_at", "last_sign_in_at", "raw_app_meta_data", "raw_user_meta_data", "is_super_admin", "created_at", "updated_at", "phone", "phone_confirmed_at", "phone_change", "phone_change_token", "phone_change_sent_at", "email_change_token_current", "email_change_confirm_status", "banned_until", "reauthentication_token", "reauthentication_sent_at", "is_sso_user", "deleted_at", "is_anonymous") VALUES + ('00000000-0000-0000-0000-000000000000', '6a3ec7ce-ad5e-4bfd-956a-21c775eaf38f', 'authenticated', 'authenticated', 'adam@example.com', '$2a$10$Pr7iIWcpeJWTUm6np037h.cI6YsMjNIPx/mn7eWgbq67NjmHUo6n2', '2024-07-08 09:57:35.651714+00', NULL, '', NULL, '', NULL, '', '', NULL, '2024-07-10 10:07:05.948454+00', '{"provider": "email", "providers": ["email"]}', '{}', NULL, '2024-07-08 09:57:35.621166+00', '2024-07-10 10:07:05.949718+00', NULL, NULL, '', '', NULL, '', 0, NULL, '', NULL, false, NULL, false); + + INSERT INTO "auth"."identities" ("provider_id", "user_id", "identity_data", "provider", "last_sign_in_at", "created_at", "updated_at", "id") VALUES - ('c78156b4-052a-47de-bbd9-db3517a9406d', 'c78156b4-052a-47de-bbd9-db3517a9406d', '{"sub": "c78156b4-052a-47de-bbd9-db3517a9406d", "email": "adam@example.com", "email_verified": false, "phone_verified": false}', 'email', '2024-03-06 12:48:13.946592+00', '2024-03-06 12:48:13.946623+00', '2024-03-06 12:48:13.946623+00', 'c148dd52-80e0-48dc-a3db-55bb2e7412fa'), - ('eae6bf66-8828-4366-b7ba-5ab9bf3b0707', 'eae6bf66-8828-4366-b7ba-5ab9bf3b0707', '{"sub": "eae6bf66-8828-4366-b7ba-5ab9bf3b0707", "email": "nowy@example.com", "email_verified": false, "phone_verified": false}', 'email', '2024-03-06 12:48:28.385693+00', '2024-03-06 12:48:28.385726+00', '2024-03-06 12:48:28.385726+00', '51a5d956-a7b4-43dc-b4d8-46b1ef6d4f4b'); - -update public.worker set name = 'Adam', company_id = 1, is_admin = true where id = 'c78156b4-052a-47de-bbd9-db3517a9406d'; - - -insert into public.product_category (name, company_id, display_order) values - ('Mięsa', 1, 0), - ('Spody do pizzy', 1, 1); - -insert into public.product (name, unit, category_id, company_id, display_order) values - ('Salami Ventricina', 'kg', 1, 1, 0), - ('Mąka Semola Rimacinata', 'worki', 1, 1, 1), - ('Krem Truflowy 3%-sos', 'kg', 2, 1, 0), - ('SPIANATA Pikantna', 'kg', 2, 1, 1), - ('Łyżeczki', 'szt.', NULL, 1, 0), - ('Cukier', 'kg', NULL, 1, 1); - - --- Inwentaryzacje -insert into public.inventory (name, date, company_id, is_delivery) - values - ('Inwentaryzacja 02-07', '2023-02-07 00:00:00+00', 1, false), - ('Dostawa 02-07', '2023-02-07 00:00:00+00', 1, true), - ('Inwentaryzacja 02-08', '2023-02-08 00:00:00+00', 1, false), - ('Dostawa 02-08', '2023-02-08 00:00:00+00', 1, true), - ('Inwentaryzacja 02-09', '2023-02-09 00:00:00+00', 1, false), - ('Dostawa 02-09', '2023-02-09 00:00:00+00', 1, true), - ('Inwentaryzacja 02-10', '2023-02-10 00:00:00+00', 1, false), - ('Dostawa 02-10', '2023-02-10 00:00:00+00', 1, true), - ('Inwentaryzacja 02-11', '2023-02-11 00:00:00+00', 1, false), - ('Dostawa 02-11', '2023-02-11 00:00:00+00', 1, true); - -update public.product_record set price_per_unit = 19.0 where product_id = 1; -update public.product_record set price_per_unit = 20.4 where id = 8; -update public.product_record set price_per_unit = 21.0 where id = 15; -update public.product_record set price_per_unit = 20.1 where id = 22; - -update public.product_record set quantity = 13.69 where product_id = 1; -update public.product_record set quantity = 33.4 where id = 8; -update public.product_record set quantity = 53.0 where id = 15; -update public.product_record set quantity = 3.1 where id = 22; - --- Recepty -insert into public.recipe (name, company_id) - values - ('Sałatka mięsowa', 1), - ('Spaghetti', 1); - -insert into public.recipe_part (quantity, recipe_id, product_id) - values - (0.2, 1, 1), - (0.3, 1, 4), - (0.8, 2, 2), - (0.8, 2, 5); \ No newline at end of file + ('6a3ec7ce-ad5e-4bfd-956a-21c775eaf38f', '6a3ec7ce-ad5e-4bfd-956a-21c775eaf38f', '{"sub": "6a3ec7ce-ad5e-4bfd-956a-21c775eaf38f", "email": "adam@example.com", "email_verified": false, "phone_verified": false}', 'email', '2024-07-08 09:57:35.63829+00', '2024-07-08 09:57:35.638352+00', '2024-07-08 09:57:35.638352+00', '2ba4124c-733a-43da-b83a-3c582d9cdbea'); + + + +INSERT INTO "public"."company" ("id", "created_at", "name") VALUES + (2, '2024-03-11 17:02:20.408101+00', 'Testowa prodowa'); + + +INSERT INTO "public"."product_category" ("id", "created_at", "name", "company_id", "display_order") VALUES + (14, '2024-07-01 20:26:52.249813+00', 'Owoce', 2, 0), + (1, '2024-03-14 09:43:34.607298+00', 'Mięso', 2, 2), + (4, '2024-03-14 12:01:06.956423+00', 'Napoje', 2, 3); + +INSERT INTO "public"."product" ("id", "created_at", "name", "unit", "steps", "company_id", "notification_threshold", "category_id", "display_order", "deleted_at") VALUES + (1, '2024-03-14 09:42:58.096235+00', 'Szynka', 'kg', '{1,5,10}', 2, 0, 1, 0, '2024-07-01 19:50:58.841+00'), + (2, '2024-03-14 09:43:05.126072+00', 'antrykot', 'kg', '{1,5,10}', 2, 0, 1, 1, '2024-07-01 19:51:03.759+00'), + (3, '2024-03-14 09:43:10.463037+00', 'dorsz', 'kg', '{1,5,10}', 2, 0, NULL, 0, '2024-07-01 19:50:40.371+00'), + (4, '2024-03-14 09:43:14.739522+00', 'fladra', 'kg', '{1,5,10}', 2, 0, NULL, 1, '2024-07-01 19:50:45.605+00'), + (5, '2024-03-14 11:58:51.547333+00', 'Pepsi', 'skrz.', '{1,5,10}', 2, 0, 4, 1, '2024-07-01 19:51:34.616+00'), + (6, '2024-03-14 11:59:00.112976+00', 'Mirinda', 'szt.', '{1,5,10}', 2, 0, 4, 0, '2024-07-01 19:50:15.083+00'), + (7, '2024-03-14 11:59:08.019779+00', '7up', 'zgrz.', '{1,5,10}', 2, 0, 4, 2, '2024-07-01 19:51:39.617+00'), + (8, '2024-03-14 11:59:45.742927+00', 'Pilsner', 'szt.', '{1,5,24}', 2, 0, NULL, 0, '2024-07-01 19:50:35.903+00'), + (9, '2024-03-14 12:00:14.474733+00', 'sok pomaranczowy', 'szt.', '{1,5,10}', 2, 0, 4, 3, '2024-07-01 19:51:44.15+00'), + (10, '2024-03-19 10:23:13.614699+00', 'Prosciutto Crudo', 'kg', '{1,5,10}', 2, 0, NULL, 0, '2024-07-01 19:50:20.717+00'), + (13, '2024-04-22 16:33:20.864363+00', 'SALAMI PIKANTE', 'kg', '{1,5,10}', 2, 0, NULL, 0, '2024-07-01 19:50:50.289+00'), + (12, '2024-04-22 16:32:48.107685+00', 'SPINATA', 'kg', '{1,5,10}', 2, 0, NULL, 0, '2024-07-01 19:50:30.152+00'), + (14, '2024-04-22 16:40:48.745131+00', 'mozarella', 'kg', '{1,5,10}', 2, 0, NULL, 0, '2024-07-01 19:50:54.374+00'), + (15, '2024-04-22 16:41:23.811336+00', 'Papryka Jalapeno', 'kg', '{1,5,10}', 2, 0, NULL, 0, '2024-07-01 19:50:25.718+00'), + (175, '2024-07-01 20:05:04.709484+00', 'Gofry Emix', 'Szt', '{1,5,10}', 2, 0, NULL, 0, NULL), + (176, '2024-07-01 20:05:19.27241+00', 'Śmietana', 'szt.', '{1,5,10}', 2, 0, NULL, 0, NULL), + (177, '2024-07-01 20:09:01.6365+00', 'Ananas', 'szt.', '{1,5,10}', 2, 0, NULL, 0, NULL), + (178, '2024-07-01 20:10:26.720252+00', 'Nutella ', 'szt.', '{1,5,10}', 2, 0, NULL, 0, NULL), + (179, '2024-07-01 20:14:01.564668+00', 'Antrykot', 'kg', '{1,5,10}', 2, 0, NULL, 0, NULL); + + +INSERT INTO "public"."inventory" ("id", "created_at", "name", "date", "company_id", "last_product_record_updated_at", "low_quantity_notification_sent", "is_delivery") VALUES + (1, '2024-07-03 14:35:53.232275+00', '3 lipiec', '2024-07-03 14:35:47+00', 2, '2024-07-10 10:20:11.885395+00', false, true); + + +INSERT INTO "public"."recipe" ("id", "created_at", "name", "company_id") VALUES + (1, '2024-04-18 15:12:53.215491+00', 'Pizza Salami Pikante', 2); + + +INSERT INTO "public"."name_alias" ("id", "alias", "recipe_id", "product_id", "company_id") VALUES + (1, '|KROJONA 6-MIESIĘCZNA ATP 500G', NULL, 1, 2), + (2, 'SPIANATA PIKANTNA VACUUM OK. 2.6KG', NULL, 12, 2), + (3, 'SALAMI PIKANTNE VENTRICINA VACUUM OK. 3,2KG', NULL, 13, 2), + (7, 'Gofry Emix 5kg', NULL, 175, 2), + (8, 'Deserowa UHT Bieruńska 33% 5 lit.', NULL, 176, 2), + (9, 'Deserowa UHT Bieruńska 33% 5 lit. Nutella 825 g', NULL, 176, 2), + (10, 'Ananas Kostka Sandra 565g', NULL, 177, 2), + (11, 'Gofry Emix 5kg', NULL, 175, 2), + (12, 'Deserowa UHT Bieruńska 33% 5 lit.', NULL, 176, 2), + (13, 'Ananas Kostka Sandra 565g', NULL, 177, 2), + (14, 'Nutella 825 g', NULL, 178, 2), + (15, 'Gofry Emix 5kg', NULL, 175, 2), + (16, 'Deserowa UHT Bieruńska 33% 5 lit', NULL, 176, 2), + (17, 'Ananas Kostka Sandra 565g', NULL, 177, 2), + (18, 'Nutella 825 g', NULL, 178, 2), + (19, 'Sos Czekoladowy Dijo 1kg', NULL, 179, 2); + + +-- INSERT INTO "public"."product_record" ("id", "created_at", "quantity", "product_id", "inventory_id", "price_per_unit") VALUES +-- (1, '2024-07-03 14:38:09.305644+00', 0, 175, 1, 44.44), +-- (2, '2024-07-03 14:38:09.305644+00', 0, 177, 1, 5.3), +-- (3, '2024-07-03 14:38:09.305644+00', 0, 178, 1, 21.85), +-- (4, '2024-07-03 14:38:09.305644+00', 0, 176, 1, 58.51); + +RESET ALL; + +update public.worker set name = 'Adam', company_id = 2, is_admin = true where id = '6a3ec7ce-ad5e-4bfd-956a-21c775eaf38f'; \ No newline at end of file From dc48215986af5afa736717378bf8a133a6cd9344 Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Wed, 10 Jul 2024 14:52:49 +0200 Subject: [PATCH 03/23] upload mock invoice; improve seed --- native/db/hooks/useProcessInvoice.ts | 12 -- .../documentAnalysisResult.mock.json | 132 ++++++++++++ .../examples/edam-response.json | 21 +- .../process-invoice/examples/edam.jpg | Bin 0 -> 390479 bytes .../process-invoice/examples/edam.json | 7 + supabase/functions/process-invoice/index.ts | 203 +++++++++--------- supabase/seed.sql | 62 ++---- 7 files changed, 267 insertions(+), 170 deletions(-) create mode 100644 supabase/functions/process-invoice/documentAnalysisResult.mock.json rename native/db/hooks/useProcessInvoice.mockResponse.json => supabase/functions/process-invoice/examples/edam-response.json (82%) create mode 100644 supabase/functions/process-invoice/examples/edam.jpg create mode 100644 supabase/functions/process-invoice/examples/edam.json diff --git a/native/db/hooks/useProcessInvoice.ts b/native/db/hooks/useProcessInvoice.ts index 86a74cf8..a1bdcb11 100644 --- a/native/db/hooks/useProcessInvoice.ts +++ b/native/db/hooks/useProcessInvoice.ts @@ -7,8 +7,6 @@ import { import { useAppDispatch, useAppSelector } from "../../redux/hooks"; import { supabase } from "../supabase"; import { ProcessInvoiceResponse } from "../types"; -const mockResponse = require("./useProcessInvoice.mockResponse.json"); -const test = false; export const useProcessInvoice = () => { const { showError } = useSnackbar(); @@ -25,16 +23,6 @@ export const useProcessInvoice = () => { base64Photo: string; inventory_id: number | null; }): Promise => { - if (test) { - const data = mockResponse; - dispatch( - documentScannerAction.SET_PROCESSED_INVOICE({ - processedInvoice: data, - }) - ); - return data as ProcessInvoiceResponse; - } - if (inventory_id == null) { showError("Nie udało się przetworzyć zdjęcia"); console.log( diff --git a/supabase/functions/process-invoice/documentAnalysisResult.mock.json b/supabase/functions/process-invoice/documentAnalysisResult.mock.json new file mode 100644 index 00000000..b3953aa2 --- /dev/null +++ b/supabase/functions/process-invoice/documentAnalysisResult.mock.json @@ -0,0 +1,132 @@ +[ + { + "sanitizedName": "Gofry Emix 5kg", + "price_per_unit": 44.44, + "quantity": 17 + }, + { + "sanitizedName": "Deserowa UHT Bieruńska 33% 5 lit.", + "price_per_unit": 58.51, + "quantity": 10 + }, + { + "sanitizedName": "Nutella 825 g", + "price_per_unit": 21.85, + "quantity": 12 + }, + { + "sanitizedName": "Ananas Kostka Sandra 565g", + "price_per_unit": 5.3, + "quantity": 6 + }, + { + "sanitizedName": "Sos Czekoladowy Dijo 1kg", + "price_per_unit": 17.64, + "quantity": 1 + }, + { + "sanitizedName": "Sos Czekolada Biała Dijo 1", + "price_per_unit": 19.38, + "quantity": 1 + }, + { + "sanitizedName": "Sos Adwokatowy Dijo 1kg", + "price_per_unit": 17.24, + "quantity": 1 + }, + { + "sanitizedName": "Sos Truskawkowy Dijo 1kg", + "price_per_unit": 16.8, + "quantity": 1 + }, + { + "sanitizedName": "Sos Toffi Dijo 1kg", + "price_per_unit": 16.44, + "quantity": 5 + }, + { + "sanitizedName": "Sos Mix Jagodowy Dijo 1kg", + "price_per_unit": 18.13, + "quantity": 1 + }, + { + "sanitizedName": "Sos Wiśniowy Dijo 1kg", + "price_per_unit": 16.44, + "quantity": 1 + }, + { + "sanitizedName": "Sos Malinowy Dijo 1kg", + "price_per_unit": 18.13, + "quantity": 1 + }, + { + "sanitizedName": "Maliny w Żelu Prospona 3,2kg", + "price_per_unit": 107.52, + "quantity": 1 + }, + { + "sanitizedName": "Jagody w Żelu Prospona 3,2kg", + "price_per_unit": 91.2, + "quantity": 1 + }, + { + "sanitizedName": "Brzoskwinie Kostka Regularna Sandra 4250g", + "price_per_unit": 35.65, + "quantity": 2 + }, + { + "sanitizedName": "Posypka Kolorowa Dijo 1kg", + "price_per_unit": 16.39, + "quantity": 1 + }, + { + "sanitizedName": "Posypka o Smaku Kakaowym Dijo 1kg Wafle Rożek Włoski Madren(35) 546", + "price_per_unit": 3.77, + "quantity": 3 + }, + { + "sanitizedName": "Wafle Kubek Kanadyjski Duży Madren(05) 450", + "price_per_unit": 63.08, + "quantity": 2 + }, + { + "sanitizedName": "Olej Rzepakowy Uniwersalny 51", + "price_per_unit": 25.45, + "quantity": 9 + }, + { + "sanitizedName": "Brzoskwinie Połówki Sandra 820g", + "price_per_unit": 7.22, + "quantity": 4 + }, + { + "sanitizedName": "Wiśnie w Żelu Prospona 3,2kg", + "price_per_unit": 47, + "quantity": 5 + }, + { + "sanitizedName": "Wafle Kubek Kanadyjski Średni Madren(04) 450", + "price_per_unit": 59.42, + "quantity": 1 + }, + { + "sanitizedName": "Jabłko Zielone w Żelu Prospona 3,1kg", + "price_per_unit": 44.34, + "quantity": 1 + }, + { + "sanitizedName": "Truskawki w Żelu Dijo 3,2kg", + "price_per_unit": 60.35, + "quantity": 1 + }, + { + "sanitizedName": "Maliny w Żelu Dijo 3,2kg", + "price_per_unit": 60.35, + "quantity": 1 + }, + { + "sanitizedName": "Mleko Mlekovita UHT 3,2% 1L", + "price_per_unit": 2.98, + "quantity": 12 + } +] diff --git a/native/db/hooks/useProcessInvoice.mockResponse.json b/supabase/functions/process-invoice/examples/edam-response.json similarity index 82% rename from native/db/hooks/useProcessInvoice.mockResponse.json rename to supabase/functions/process-invoice/examples/edam-response.json index 817af2c7..87ee2603 100644 --- a/native/db/hooks/useProcessInvoice.mockResponse.json +++ b/supabase/functions/process-invoice/examples/edam-response.json @@ -1,11 +1,11 @@ { "form": { - "3969": { "product_id": 176, "price_per_unit": 58.51, "quantity": 10 }, - "3970": { "product_id": 175, "price_per_unit": 44.44, "quantity": 17 }, - "3971": { "product_id": 177, "price_per_unit": 5.3, "quantity": 6 }, - "3972": { "product_id": 178, "price_per_unit": 21.85, "quantity": 12 } + "1": { "product_id": 1, "price_per_unit": 44.44, "quantity": 17 }, + "2": { "product_id": 2, "price_per_unit": 58.51, "quantity": 10 } }, "unmatchedAliases": [ + "Nutella 825 g", + "Ananas Kostka Sandra 565g", "Sos Czekoladowy Dijo 1kg", "Sos Czekolada Biała Dijo 1", "Sos Adwokatowy Dijo 1kg", @@ -18,8 +18,7 @@ "Jagody w Żelu Prospona 3,2kg", "Brzoskwinie Kostka Regularna Sandra 4250g", "Posypka Kolorowa Dijo 1kg", - "Posypka o Smaku Kakaowym Dijo 1kg", - "Wafle Rożek Włoski Madren(35) 546", + "Posypka o Smaku Kakaowym Dijo 1kg Wafle Rożek Włoski Madren(35) 546", "Wafle Kubek Kanadyjski Duży Madren(05) 450", "Olej Rzepakowy Uniwersalny 51", "Brzoskwinie Połówki Sandra 820g", @@ -31,6 +30,8 @@ "Mleko Mlekovita UHT 3,2% 1L" ], "unmatched": { + "Nutella 825 g": { "price_per_unit": 21.85, "quantity": 12 }, + "Ananas Kostka Sandra 565g": { "price_per_unit": 5.3, "quantity": 6 }, "Sos Czekoladowy Dijo 1kg": { "price_per_unit": 17.64, "quantity": 1 }, "Sos Czekolada Biała Dijo 1": { "price_per_unit": 19.38, "quantity": 1 }, "Sos Adwokatowy Dijo 1kg": { "price_per_unit": 17.24, "quantity": 1 }, @@ -46,12 +47,8 @@ "quantity": 2 }, "Posypka Kolorowa Dijo 1kg": { "price_per_unit": 16.39, "quantity": 1 }, - "Posypka o Smaku Kakaowym Dijo 1kg": { - "price_per_unit": 17.17, - "quantity": 1 - }, - "Wafle Rożek Włoski Madren(35) 546": { - "price_per_unit": 65.38, + "Posypka o Smaku Kakaowym Dijo 1kg Wafle Rożek Włoski Madren(35) 546": { + "price_per_unit": 3.77, "quantity": 3 }, "Wafle Kubek Kanadyjski Duży Madren(05) 450": { diff --git a/supabase/functions/process-invoice/examples/edam.jpg b/supabase/functions/process-invoice/examples/edam.jpg new file mode 100644 index 0000000000000000000000000000000000000000..660f643c1654e2569ccb63fb8d9d0afc61335c2b GIT binary patch literal 390479 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 ^eqRD=c5nK8?+K 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 z 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

u{a7{b~oXE2kHnnL{)*+cc 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%0AtNC@8l{%+t!F#|5}{AIO_$%JBkBM zQk?Dgxq4fNm-{O09MVzHp=WyEE$RH5W$VZ*!7rjmf1b<52-24%mTI0Zyz1uG|x7jGmDDgOa`|7417C7IW8sJ-BRR(7II z1nW>x@`TcUc(crHc4u?fqA$|8+V+nwB4uT#S1;F_@ng51>#yZ9Be2tvbW?ks!bK7s zxvor-j=w@P?>_yS`*6W%pkqw%<0}QW1-8VDzU%X70h84R;J}|}J!VJMH+bE*OGL^) z;8-2$?2j!NoeO-IG{J54DMH;&6vi$$uvy%YSBA2i-^&qZ8 z$X5x8N-8RG#u6?qrH7jNQ8ua_!P&@{7-_Ro(E{`cT3R!bU_8YM`xv%Dbx4o-h+Wj8 z%>Lnw+j}5XHJ=qRi?r2ao!EOFk_G%fOE(oE1yqQ(PUn@EA;6U}OV9X6J#;@X6 z`b2ymHCNI9yyX;#ud+sy~cvU4!HU$!fis%UhF^pH=Wz~Ih)+gqe0egVGAsp=ffW! zAKHg-+W+7&L5{y}*&ZSd_-MDu%9Q6WMSx3$QLzw98spK^l)~Rx7-6?R zg`-GQV5i>)J+f_K7?#Chlmj*=Q4TpW8Ericzkkz@=q_0acm1t<&%g2JQ)R^0n9ajS z?ocK&BRJ;Qy8!sJ9QvUU=@#XktlT#IZ&x|8&=8zR zmkIGTPqu2@FT};mGk-Kx+V&i|W=u)h4VOJPqJlsEro{LuG1&MoB3W(lM5gqg*g({6 z+POF46S3O)n^FHZDU|!~KeWHKejgHQti_Ido~9ExWMSW6r(#~A!aGm( zYM2ed9zj5v0u4P?@|D|_f(CnwH*Jg}F8uJ$g1(flKov(V!$^PwXAY3d0NLL>^cKjCDk;2g?<XVJbdj*%a2#>2|WC zLMj@S9!fO!PQqYDKB=Fe;-wvNDdqK~OD$@8Z{WM#U#MjG-{3Ude{0-${#!J-+ibmJR0KwWM zIt*~adRhv#hC8WRuG7;QxR87ir{c9^qV%luQI`I<|O9t z>a)H#Jba50Suy-`L1C^v?>RS?a6V9;$e+*0)2RbM3D4pVsL{n<&2fKo(l7JzNDUBN zx{xFgM2#%xDY6&q5jgipn{*{?xw`jSfqdxfO29gvo)G&pe5o1j<4=CEQTL#|>eD32Kugz>m&AYH zL~RAl4Qg;~wuvEpIA*GxyYGCK!(?aP6Brjp#jX^rVJ0c?YBf2%D%ry-q&|1WFLPMm zuW{9?C#c%(qJ;(^U8$gzu0MudE7)=;zvY@#iqz`+=lf@RoY!etfg=1 z2&GtXJMwo;gnt~j7n@%-s5>EVfcbYGgo(0$Oi-0GlCX-v>`Kky1V|`N<|pI2=Jd8h zMsE!pXAx`>+zJpm`%fK@Qn{0-FLT-I}O7A zle7|lwKXOJhnqA5G@#N7rq^nH2!3&MY*gTFTWtE{?+Zo`crEprNE$CQxk+xAD$*?P z&=l2A@&0cl|>}$--%cpziVApFHUN1{*?wHt#aOv!$ z;vHJFuUj8|O7)d`jqC+COQ0Mp8SZd!Swc-2k&Cm2zbmhzeuzq+4^GRdG?z zSK|vsanH*{Np%qYU8Rz%PMy+Norv#@Dl_`_Ff#9G^SW&5jo+W)-m$8p971#4k)OLq zsIqg!)LeJmB+e-@ZYEo&2lnp}FwZKRYZ0;GKML>3oqs9m!pDcxdRAl!nA;GgD+H(M zbrj-DGo&tD%QZ`);ur zSfA-VRb^(`2if7ZtY1MTf3M|K4LmLf7(^~qw^f-L(Xz!_yL?GdD9N<3t>s#l(8`Pq z2JAZOV(Qf2TNd&Q)ZFnbyVL;ckey%RBxN$0rSL- zc+vX{zl|SCXld{#6AOh==xhucN9_rZF<3O422DFJUI>rhd-0BObnh5vLZELc17bMk z1ptO*m4Us>xpGr8Fuzu|=#k%ba*ZMJY+Zal`1Yph>MKX9medFJDEW36neEHuuu(rD z*1AukkSABW9<64dF7BHnpaU!-;(HJ~m(@~7*<&eFflj z5H#=a&tdi8EnbIe?&i9p;5`u?W3DR=jIZqkzoNMw(YuANi_B7e<_!-lQ~{d5x{~8@ z?9Z%oUpRr53bQ}RvKCME`!Zt#k6zOT-$l?}*IKLFnCN}x10mbw%P`{|NH(eGaibL} zMt?6BJg}(B{-#B~)xl0rZC-B_MXhIhSJ-vv)$aX!*`gW)9Km*utWrbUm3)$Ac43`c zjvrMFl&BmpX*1^XNZ?;uAr0m~2(<7T=?^T<+Abo{jfpIGT`;~5uP5Su>JOg3Cw&Op z)oD0(p!eXqt;Lb5!`!(NX)sgz^|*?Dy*g|p3W4@`!x?_j=kfX5-=3FnZa~xD=$nkefrFBunnev*XLR7 z_`wj{ajr=MeqqR|_lAfrpvq!~h>>-t&@w9tqilMW$6aZdm#@~L%b?@ArZ}GG8Tc-) zq*cbv`K90PvuwTM;RB z6oz-phE&k&iGKWA#J$kZe6WC1aH@X9R(OV8Y5R_DDb4&pv@JnW8NA@o6NSWc&XG{D z6ik-EP-xu`vC#UsGg;Tm+i-FUHFk_--oOt`%B+LIiVdV+yeO|pR0v00LsrrokqjOY z{R!Qsjn8QRp{Z|vvJp(EU@^jk@?uVXCp;CuxqbO8CyOik4DtB-AKK@=C)G3d%Uecz zY_sI#zcr85RFzNCR5}9XAI*L1cVez9KX38x$h~~=!F)5SsW!9yKQszr&Mv-gJ+$kc z=fW1|U&Z7dWvSbtXwa@7Qkl&*-B(!;-Az(zVTRnCQ9;)E{~0Z~T*S_n z_{wjy+Fdx5*A2)4N<9hGzZ+TyCc7mXa=)}u-Z&au2$8GPgSvVW3*dLvqvy!aj z=%3=ecc-u*KLtI>W6a}XpxLOH$JKeAOH?p!A$W>#j}ql$3$w&EHC(AX-!2=`uxUz; zo8AsKk#4?J!RGZ#gW^t&{v9@+?z3<-{>O%+t8yYvwL3J%;e4g3EW#Odlo{iK7kW4T zKxk0tE}|axi55lK7|M87_hCr=E;dh4IEOw-?8H%qnN5q2ROQAvgn6AGEox2DO7$)F zF(`jnU@shPrHW(;ZK^HVU@TUN=SmR_%_wJIpkA9a7jDOqiuYs*>8xHz1ml#C>qu;!&1z9%g=C($n|8LzH3%3e8#NthlJ&(VVK zzKmUYP(3Y$`kG3|yKB7rq~=4YaWN1*(kmZU}$$7wl?%@J`tNc)(+n7FRBUjg6PeNio5 zbKZB7v$pK`qk=f!`_`6AxM-fPLv%)Iu|>Dcy=BYyRL16GFBKQ(v=PWDn@E9Kz^W>H zZi)z)A?ssEF|22@wSSWBhKe^!%-tJp$!Tf_gnah~VxqO{xT^)t+Tw#;OkA6XpeDV*n|aT;4qNa)sTw{NC^_B4&` zyiRP%)qX)`K&`Tx%G@Xorkkb-iA%v;J^54rAsBIGSb#zaCCl0=+AO=ksfD6Y*L-&} z=Mk-pk7oiZS;s}-*nl2-3e(kh+E%ndcf!iBDa^c}ED7u5x3AOqV_f|H0L-lf^^A#T z{u$!HiL&^(Qt<*QI87WBP|6i)jp8AKz^!D`UH-iwkyxxmlTyDz>Pveg>XvS?wY_%< zy4X@kzOOp*8pCRN4t#xS*3hr%&`JyGp~UdCE&UW)&FU3QUL;BkV%d3y71&8TEWwlD zc9^ri452UQSDxauD~N~N3Jv1$yZ)86%kO1zXZGN+lf8~rr$nJa6TRZUq5iB~c6H#1 zBA&Z6SPZR{BtA1ol|z=MNEvQpj_|^4bI(xKs54j$@6#K|pL8$v*6!?zTmR)wBkKFY zPk-$God+>Zc8smqd$QMn06~YzimqNTNq1N`;i5J8^uy>GYn-{SM6K9#>r85sr>~%Y4fSS8uCn{iMV&}qC5bAS744mxb7kH%x&!j{~{LHu2MAdDCV9MxBwkPX z^rfP2guCm1XbepLNFRo%3#K3*x~M7@t(_=EqjaM8r&#b7%0uH?>&4vz5=A~-vgyu3 zO1EWnF$hRkEiea#&9HoIOiT?mzH=7KU?HGNypj$|?p^KoaIP@onz{6*u#<-gr^Y7# zi=V3(W?A-}rhb)(U{^*R93v(pIMY@dLblkmIZh!wZ+Dy@&`tt%MlAvwC3dSn-RU90@_I)(p` zFPPXurP}#EpU8j_1X%rO-grUuQH*8z8_8H{dXvLMXI>6gu2-p09~t@vqrUE9oV0j5vSe%0 zhzhZFE?NR;X~)wPaJs1)>8p)Beoj7z4gIeLL#l8=`*Xu0yl}m!8z`_A=Xd_*MrU{I zlL3JnB&oacF;>Yoq$UR_tLLSMm_p9@l592r&nkb_K_1$f*Dc@X=C`Kk(+^Q)j_p^MX(}J=6K)tj7Dhs&D`bfL zI8#R)AJwGObs3_?9Pswl;wJW_=1-z*KDgDbFXo1Iez6lku_5+Mbfo`7J4L#Kh)!B4 zM^?7>(Ba)aXUoyt0ed`nrWR{)4QqAW({1CpUPKgP`;1aQryW+ny=D7hs)Ac>RGB*| zta;{zWdgM77HwlAG&w~~&at-psqSomQ~H7(H)zVx_u>P$B2pBN`P1Rg@Z-ByMg!L; zjHqqnm}#AQ%x~XYOC`HX(FEQf?-KuqcApI6`}}#NM+UI855|sJpOV2Ry_8YNs7EQB zY)CIc=HV&Zh%!=B+N{?`gfZi$>lF8sYxdK4jh!YpmdBJfjQL3%zUz`><n9hB$F;vIZ0^9bPkGCw3A1gPJ7W=hzpvqdITrDJBJ32(f z{1j%=m3Vf52%DVgVy_i9b{-a@u~$MW0gUdGuUmQ=seV*E5URiy_=px$yX4X?IwGk+W zQ+BcFE&(~-w~DDuk*k`ybK`vSI-wp?U{N)w_|;qTXqQ*VoVOzK4W;CBu0a{s5Ux}U zE`v>Qlk*kf&=R=n`TUDlnP)@QB6a>-uW8Wv`t{9?e+TG-YrI)!g?U2^x#t`{tits3 zmt=3$YhdK~{p01bak~*ojN(~==|@T_NIj)lj$BB0uwbpAFY0IWkS$|x$d$5MkPP9H z&*iJRRIN-49kCL1xe>(M-#nPMX$vRHq{%4Y9&9n$&8V`;mGCI zeNmcd{@ws{#$UPmi|k)frFNLnrI??!CPf+Y)$8XMETdDmt?8rpNUC|Cz32sTXi~NNxqx1ZX~B>#rG^sv%YWPT?Dl98#B< zjd1Ve$t_Xiuq8(Gw|IC=dmxbRGIy~)InbUson-Q$fHHDXA$qf7)qJPNR`JNGH_40D zIy=*E7{8YbW5EEB)~$#;YwSok4|b~BG`b5KdLq4SE2HucRMB*>%;#%LVBgSIJzWN1 zk~>&+x8ESgKEZiyz5Ao7bIpANg*%upo_fx#Vb+MhGhGi&z}Q=y@+_ULK#S-8<#liL zq0zbEx}Lw@0k4G74|iaX?<}=lwl?<6*Q-*MLg;vcu8@b{RsHe$nt2ZZ=?iMFi5IMt z+$C?nIGggo5B+!hQZRxML6Yg}Eq`be`uHCj8f{+B>D1IlfFt;9!a*Ka^DNmRfMf4W zV}?#PrY;!ZVCp#d{<0};hZ)oVM;o>sQVi8Q6l4_(kw);8xQ+Z&L%N^ED#$x9D7?Yf zy-gHNlZwG{jREKZ@UU#3J?@D1JD;Rf;6$0E62+{8jP>pvgy>p*tV<2pn>tRlP{2IJe}G;8h?B_l}F^)xCMm4`vu=V zY`YpBZn+_SdhKP+oAaUGnxXh44` zagC=W*=_8rEYT*x+e*EecXg)UPV`yZNdUlf=JnB31tx6S-P`p(vMn<{*L?Lek)_Js zdLg}=|3kDe9kx1-f+blL)-VqdkCK;7=8s1ECwaiFS!^6bDqUj7X;>8s76=_lY?5_$ zRLiWel%QYQscIeQm$qn~(%L!r0ob<}t^}S5s*fT`yFUpaDz&5XoCBUqfa=pVIkirI zt%91F*xeQUN$Ykt1WV*+mo2-*>1yfRuXbGZF{|3^I})1KSKUi8Q>hzodjAQ`&vSmM^(c<2ob9 znbF2^Q=LA=h{;ra!Mx^bLlOFf7r(GYT9NLnbtA$xPm>W~9S1D8Tob`H?MBewR+T@5 zRu9~fWc2&O>)2_jf^Y{%*UQhab1~oFUgflWw)6*J+LQ9At@4~a1CG;flCqPg);1E` zo#m9QEKlW+<67pJe<{13MqS*)Xg7Dr|1Lh)YZYc=*vRwl!xDj&4g*s{JtbneU^Gfq zn;dl%n24~|tvQ4{(hd+@ZM61oK1|>GA>hKwC|jR(k8MDrL~K4OVcsrRD>_UC{kOY0 zQho-W*q96>|Dz-{*AREHc~_{qmhI!HHfUHqMIxxqgK*gl$&0)YDVFD3cqOimqIO3tq|Q%t_0@fU2eI~ z0w5RT-l$;Dm{I`8in>rG&(Uyl=OmPAvV?#&xH98cnq;OV1*2gbRv#hf>u6zNt9nf~ z5G)Qcx1T(B1qY~K(k!PPlI1+CYO(+NFrb_olEk9?qeZ@<-(Tbp;S?IS0;B>PJ0Z^= zh1?yt{MjhTAd)^b&x)uURU>RxxGzkQC-EX*33RUX&!b!E`1Os+s=u)8W)dJy$VCQ_MLk?=BwHKlOrcff(VVc1@9ZKSWhBMYj$eiafvN_V=AKUek$BfY9dw}@krLl~x;ipO`C>Tc@Xvp!ECLRM#9C)C9$^k-@nGX#e7zMOVs<7|c=cY3n#uzIl3Q0Q{$8viQc z)T;2V1dj42-kF-P2J|~1hE4tKwYnq#CG%Lqs;`RX(pQr_FLxC>|D;EMtw{IugkDF;b>ib&rx9Gd2W5#+%s)FnEiy5Mx=) z)!OvmXw$XWte43=E}UpzT%;!rpfXITSMvK~&a6!B>bO;re&5pOqST?8E5{4@VTq4*U2M z@KMncLMAKJPK!AF4m=9%hEQIe>eP3-?uW=Z;zx`%rzwvc853Mrd+>&=bmT&w79*@UsQ*Ucg^HYR8%}&8G-iJ-l{KW~xXeO?ar6ER$eJezC&2gR&=#Ib? zBP9=^%9FD(8()L8?wuEWEP|)@1u{3pefF9K#AZj@ZJ!Zg7o8fjPVfQ%q*yuuxFK_? zubLF`k?FTE8{Bvkn+bL_HtS(}X+6My!}&ZA!mye`)`fTd!?@D}FGxmnG1( z2L1Knz|b)J;>z`b3BJY=f)Y1Cy|iGDx2u7B5D^wI5F!sKb2Rp-)_JQjV~wN~%ajp6 z*+-|rS`L|489wlw`=S`Wx|pVd&=&psvqCqd$L*pp(?V4Mk?u2#j%B~lPObZvTc-NF z6X_2^y8NJn;s4gnQY9H8O%WEaT~)Qyzug+=&1_OHDP)K{;%Nvbn#YV*Q&N2L;?G!q z#*>}B!4fA4OaPV)L3N1qS_=d;xXPdt2-l-zxkQ+a_K0%_%4VTE!qo$|%h;sww40pt zX6oYz#iW-NS)L@$_An@G7=#c66kP;r{cO#k$YeEN-I_@FzU@tCW^nN~IQLHP|Iq~1 zWR_4Bqz?(xK7%>7{*}a1w%H4W^kEcnM&|opfwhXZUd)madwS(MKYVilRq{?q zaU(^tBc(FPU$jPwnHx6SMCj-2f%8?uFK@nVe=f-|4k36y9)O^w9Py^Toq|G)l%rTV zf!v1TWc2Z}uO->whmi?xER!0JZMN>}&18P93{9PRgJKr(BUgX)2kzbsEEajnyhUC| z9FGijOlhO8lit(?n7x)Lc4+m?NNxOQG-+>-{FFK7;K^xFjl*?FZQj_5zXtA7n;V8p zVtsO>TL0)pv1_fz4Ct{xJMtcbVE7#=dn0g@i7Xd2MkW)2;QYr?SYVzqam*eJ{*)__ zqT}$BciO7Jes`5GV$M#t=FaVy0XKR}@to;Y6SKZAR5A>0?cFCF#bk%Dw}xPTVU@2c zRq^`xY}E5N`5nuNd$H(m#jc;uPyf6rn0)6q-cnrR?TqVsP&pYPOQ^EEyRsZ?(O#?b zC5h;~V>0MewC%|wI}k+3AIe|K7uSxaoxL`Cs>^78 z@cyk{h}lrdr`jU+;2E<)jne&2%uux&v`0zl72bEs1-D**}y8 z{Na+u?`iZ#oSXJVGE4w5f;uL=mk8c5dt)%PhoML4ulb4F6M+wf!5}fiHsZvz;IBo# z$@UZ_a^E>eFhkmyT+HwiM4VI%=~0zD6)&uCAfF@re`;Yl? zvGUohR3n;8o8oadB8D4iwn*iVBeo|giz6<~h>E6d$qbzZaLh)plR{xUWhYmiEK<*eeXEraYg5@+uC0orq$rOZ6ev;YTtze@Dyc9O`C zl&&^dmDr4-^s&xB0lC@2h&b7)C3;~iV=0;vbo88C@`t%83~eBmL8oMxaQXeBmbXewJVJo6RevoY&sbdqwpbi{fNd9Nd7JDu7t?Q zbpM{sidi?n_-{>GFuAiuGnalqRl#&80bY8JM=1&lrhp+t*l2coRQ2FTcti@xj3a?< zqjo2@iY%V4senpO&Sq|yjdd>`=`xVbL$oe^&C|thbkis`iZn)kD7re}c3qX(bcUFo z$macNk?#VZz@){DDEbb;M-#AlI&)$(*k-3lb~7cP?)I=W=}gO~jbM;0^42j<_*kbtXmM>~o0|xFBwXaH;J*M7}5zKPrRU;>X7% z(c3!2wjY06&nzO+{rT>KBvoJ@y3}lMd|7{lf3_u{V2Nq;w zHJ*2VtNC7<7Wc4>zt*t~E`&bKUXAo?JVU!ZjopvB?1j`jdua7`j&_c&f5XlR{r6PG zjABoOotV3t|1vkf)peN?>U;*2DhyL4Asi`35gcK8=7;|!9w#461irL0jFeBZkR z7_&SA6;hLPel?(qUeNN^y)by_sh(Uz_(SKnyru5CNsPNUQwT$u`PCc;h@B7$rzK8cpWB_u8TFY}ekD5JEV)7<~B; zLG-A|xT=|8nnwIhvyC%XSg4GA5VCY}EXfSa`@5&y_(;<6J=zW!lMFIvq$CU`6Z$(9 z_nR{<@~4th-8y%GY*}} zq@o*XSrG2!_nt}SD7@`ew^#C=(MPdYpLQS=@Ijy+$SLph{$w$6rgfIV937y_ttuhu7JT0F;2%kA}`aK_q&g@q+MQL4JC>} zLypon)0(0}4uWZfFx%?GzR)9Y0NGNK2|b5l0%lmkHwL1fm3Q^>jPeN8M|{E6t6k_U zNo|D-Hdvm1Tt<^yYV~6Qr8@c`6K|l7GI-iO!t{`YQ2U1Y<+v2M9KW(W&ch9HLK2f* zWxxp)20jQYc$s1(e(j$u%W)N=7Dc)FUNii@He;4XzAzq<7^@ya!@%59;KysdY#)K= zbR;VcbWIg0qCmc%E5gTEx+*p|x77D8%1+ItQBtF~~R0eSPa2 z-rz*l(y)bR;r4DjmHsaLvIhijUNdR9K8c1^=+1FN`!t*)6e&g}?y8|qALWcqEyH?Z z1frH>h4^dI!lfwMO7kSB-ghMk<(bg)7VUtf|E#7b@~|$K2oT9{ZHxjUP~?Yik2jJP zGelAHe@THoYpKLDR3_?47~4jbS|Ydlb7$;F_j5~7MMvY_7<-_H0%0ohjw+4dGHA8s z);Y1Y!KR-&w-roYpyd)#VZ-I2`Y>un;5z>7g7!sU*7?u3q-whC?=Wdp%Uw$Mv-o zk(hF&s4Cn&hXsU)rFumwrZ+ezlw^vF&cn?{>$(#^ohwXk45`$cMsTz)F*Cd04;@Z<*S7~!p-Ckg zXg>*mIkh0*^t*YdNeORMq$ykPm*HAS^zF%9eg@yq5s`a$O(!osRu2?;Y^T|hk^!S} z_2V1VJbUEF&t1hzhmX?rr$Eg1GTlERTeIB8J*tJqeJLp=K3)neY?FVd1YIUfz4G}V z<7KHOc5^gI^Q?r%f6RoDEI%;hMR-yD-xZf6F|xTMvWHRIR`7w9h^{T9OBtZCgummdDF`&fN;Sh9i0> z(0u@qrZJ`wBG%314we)FMY&sFKAS<#3nN`(ob|LWtRc4>(ZloY#W!yS(1+WV-d3f6 z?>EaH&~fFbR4(z&_6`+W@(n~qZSY!U&Eia)z6r@pb@x`I?54hHs4ff+Rw@jYVIJw7 zmkA?hKU}?T@lX!M4e&NbbQJY#zR7Gq!?ewNC8Pp*%-%iBsIGEO#WDZ=lS-X`br?es z6YoxX4L9u~3wl-9Z{K?xlB}Q07jzEm4NV_<0m>(N`%V;(A#!YM! zBxPL&6vB3?x-646F6>!0k8*$GtsQv0JqZk6$I{r)CojV_7Ce*$ugtW0N(W`PqqfD< zwl-|Bn}{X{{>Jyp{1mY?CM=UKFK5oN&e5ki%}wo?70;qiavlCSF5R3swiC35%|0FO z#XHpLP6ydsfTCz&%0>y$aN%C;x(NdLab@x>fXdJeYrT6VzMz2^S(p zc0^^uvAP^5cd!>wwHjBL98_gB=1=5CXR@?EyKxS}-D7vThs2Kal(DRI z9+>+VUi;|z?8@j#3JymXX4ul~|A+9dT^@a8;va(3?{Ko-3^NyNv{nvf?;HU0bc4dL zrfU~mI~A+1a#Mqbl>4$(o(3;Z;Ax8Ts^{;+TZ#Rih|quKKtUu0JA(Yb*Oeu zgm-cpoGqNdVaTBqzNkvrjDj>7ojd4n+Ee~@3c~wVisPOnBo{7R4bS0~xSsN&ruNr0 zCaCV&Z+&gfvpm-p3jGaQ zWRdYw;cs8LKHg}(hrmqERv8JBgkXP)A4=ow}xhRF2M$w`|1yJH0D(> zwBOAfd&~-$VZrCFlAU$~--2U}eUa|5T{1U4{}xx(}-1_A+-(TY6w=ndO6 zd?fX5U%es7g<+IpOt;Q$wjcrY0g0Dq3g1$3-Bb0gIKonh5`H(q zS@ZWUiAG?E`}P)ig1qtf1tpH+an$fXgu0L5|9f>Sqy@)rfYWWEWofw(X|5`$X%&=# zVkmf#4YxlUn%(ycaWPE8O?=Gr9|AH5T7Ftw{w#`_N_4X`r!~6|9_KcEsfQ6&C(*b9 z0O7PT$W5bxMlQtPz2iQM_)C(hsd5a}SB&_G9`+rOn8kmhkHEq?09%}!@>|>-OCN5e z(DVNx75SS&YH}&K|6Q@|u86SzJEU7b{{&`^Yva9+tT}L#tl51WX)xgd0+nfbcZTdG z?$A)kS>XV~`6JVL5r1E1RQy1-y+O1X=|D&kTS_}S9A-(_;l*e#S6`{+>XcP*XX4e@ z#SiU|GiH$z)uwG$mb4g2)8MQ^n;V!s2~+v~O8bF#*r_{CNOUVo%aO9bWw3 z$W(py`Rn!!)YZjtEv30=iNrkMDw=fKSBL7L*rA;U@it!(IRDe?m1MadMBSgi)SdOA z5tI-LY~lI9TYwNPKt`aAl4UQO7b1*0oAdgjbkolMeCUt^_X*CYD(!jU@os34KHY*y zU$?NGq)z{i@1v=~s5Wo6j1YA4e+x7zw;=P~pz71{YmqG$Fxt=>HeZZ!|KvUJ6*5(i z%GI-M09v%Zc6Vv%^MKI z?b6(>4=5xZMt`xjU`{H3wD2)7Di#*17^sHmW;L5#{er^?yn(Qjizs4$}>6!0PB_@SXchn*8K zKEk(d6d@txr&LQ*5)Sm0zSd4yVW9?I^rty1;+}*QM0jB6M1E2(V@1|_^9{N5^4Ji1 zmwnK`-tZ${GZXQP7J>jeN3rAW5xUl__Ae}!@jQr` zo?(Iui`a-_K|~yF6M7_4I5|*^5<)pQ-vd4XK!V{!#iP`OtBRnuT5pYRv}pM*MQQVy zfTVsJCZ)V){=wn$QR*McrGsvQA!#%oZNf-80rao{=)DeZNrVKm)kAL$YmRCx_}RAy zeBGjSblir$qvJubG2$8~7z&=eqZL^rz!om$iUxb#2`2?C0li|%uv{RU0Q!# z+B)u&&^Pxm6>zo3E>z_mb`&vRXQT_{!QH$&)VX>gNPJLaX(5KYOlCjoi@bKn&J#bm zQoqB;|C%VIN%vxfsmim3iNY$_{&Pc6itg)4xxQp^onFKJltM)Q=Yfhhx{{Wgf#iST zB7!w8X{GjR>9QCkr_IZ#F6kS%PQBYo7R<(K3|e1zka~>^t}liw42T-^*VVcTYbfjc zK=@qmOl%Dkm=RI2oY_{H3T-O3^Mfuab8`mKtKifZs5{W^p2`;v`AEqf3_7zM5S&_K zaGR*zuud^`isTjcm?OjQ#*NiYj#Q7frkFTUEWUY1q7XRLK~e|;ski^$I@P$lERl;B za6VpAuwQcKMA@a8+97w!)ncJhEiJYhLi}w8um+!nebT2i&H?b%T*l+OdVFPuGg`Fu zMwqtuX3XA?YW!ZqbF9+UBH~ggY&Fs+HOyJLHBjkFM8;zN70v$B9J)j=$_+I(HRodi zA6%Hx4h^)xHC>&eFs5Xn=i=6j3bnn4W7Ble&jr`&x)GECS1X~(EfdxFER=?6yu`x?g-S8XSx4 z`~QY3P-%=#CcJ&eHVc;!(9m66hZ6(Ydy$9I;_zyjGbR=pP9x}+r7Q#5b*qxPAwL;J>IYq(-Py3K};W()qzxt@tvt7=c`uR$YO%GYx4ME;WHDN)T0 zV}VEzVj^PCfR9rR9%}f<0AOrIEkM?oVnam^s>@}d?)_Hro$|@wy9ck!(W3X^EZZM+ zVTjM_19N!55hsVm;i+g1!Xu77d{EPcocKpX&lRW|z2_3H?9>3`0MjnHBQuW{cfX$O zR%C;0`7YbS%H0i#49PM^PcZe9up|8s>AUR}MC!KBujKcO*_iQiG4}mq9xW5xonztG zR0c}ubTh(ZjIpG#tx~XA!xyM6>XsthV-^N|K1vPTwR}sXn>HO)Owd==KvePhuK$jZ znD}RAcfKFU+b|^zVG3DPBj2}<<0l_+k!Yxx><#{prL{A{a!vj1*Dpl*RuzOK)JttO zLXyQ;UDX$m$ZMJ_-Bf(*UqTi9#c-~w`LturAcH9jcf@&C`4rDPxCJgDQK?g5Q`J}M zY~Q~%yC0+*1L@tUF6C{H%M@`?dt5J z+lFz=-v1z1z#8E8V-B6=hYl*=1MRD)t5J+HWZR;39b$I#gYgd!6|<5qi=yR>N0ee= zZqdUW8X~7}b7L)38w!J224`@1seXg{^R|knKX2JWi1j52N0~o+%!|Uw1nwqo9)I}# zOso~Fqu~8455%>Sx}ftL*(xU@YEj%7Q¸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 z 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 literal 0 HcmV?d00001 diff --git a/supabase/functions/process-invoice/examples/edam.json b/supabase/functions/process-invoice/examples/edam.json new file mode 100644 index 00000000..3aead8d3 --- /dev/null +++ b/supabase/functions/process-invoice/examples/edam.json @@ -0,0 +1,7 @@ +{ + "inventory_id": 1, + "image": { + "mime": "image/jpeg", + "data": "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" + } +} diff --git a/supabase/functions/process-invoice/index.ts b/supabase/functions/process-invoice/index.ts index 063fecb4..8d54823e 100644 --- a/supabase/functions/process-invoice/index.ts +++ b/supabase/functions/process-invoice/index.ts @@ -11,6 +11,9 @@ import isEmpty from "lodash/isEmpty"; import { isNil } from "../_shared/isNil.ts"; import { createClient } from "@supabase/supabase-js@2"; import { Database } from "../_shared/database.types.ts"; +import mockDocumentAnalysisResult from "./documentAnalysisResult.mock.json" with {type: "json"}; + +const test = false; const DocumentIntelligenceEndpoint = Deno.env.get( "DOCUMENT_INTELLIGENCE_ENDPOINT" @@ -186,109 +189,113 @@ Deno.serve(async (req) => { } | null)[] | null = null; - if (!DocumentIntelligenceEndpoint || !DocumentIntelligenceApiKey) { - console.error("Environment variables are not set up correctly"); - return new Response("Environment variables are not set up correctly.", { - status: 500, - }); - } - - const client = DocumentIntelligence(DocumentIntelligenceEndpoint, { - key: DocumentIntelligenceApiKey, - }); - const initialResponse = await client - .path("/documentModels/{modelId}:analyze", "prebuilt-invoice") - .post({ - contentType: "application/json", - body: { - base64Source: requestBody.image.data, - }, - }); - - const poller = await getLongRunningPoller(client, initialResponse); - const result = (await poller.pollUntilDone()) - .body as AnalyzeResultOperationOutput; - - // to mock, copy a json from examples - // const result = mockResponse; + if (test) { + documentAnalysisResult = mockDocumentAnalysisResult; + } else { + if (!DocumentIntelligenceEndpoint || !DocumentIntelligenceApiKey) { + console.error("Environment variables are not set up correctly"); + return new Response("Environment variables are not set up correctly.", { + status: 500, + }); + } - // analyzeResult?.documents?.[0].fields contents are defined here - // https://learn.microsoft.com/en-gb/azure/ai-services/document-intelligence/concept-invoice?view=doc-intel-4.0.0#line-items - if ( - !result.analyzeResult || - isEmpty(result.analyzeResult?.documents) || - !result.analyzeResult?.documents - ) { - console.error( - `No useful data found during processing, status ${ - result.status - }, ${JSON.stringify(result.error, null, 2)}` - ); - return new Response(`No useful data found during processing`, { - status: 400, - headers: { ...corsHeaders }, + const client = DocumentIntelligence(DocumentIntelligenceEndpoint, { + key: DocumentIntelligenceApiKey, }); - } + const initialResponse = await client + .path("/documentModels/{modelId}:analyze", "prebuilt-invoice") + .post({ + contentType: "application/json", + body: { + base64Source: requestBody.image.data, + }, + }); + + const poller = await getLongRunningPoller(client, initialResponse); + const result = (await poller.pollUntilDone()) + .body as AnalyzeResultOperationOutput; + + // to mock, copy a json from examples + // const result = mockResponse; + + // analyzeResult?.documents?.[0].fields contents are defined here + // https://learn.microsoft.com/en-gb/azure/ai-services/document-intelligence/concept-invoice?view=doc-intel-4.0.0#line-items + if ( + !result.analyzeResult || + isEmpty(result.analyzeResult?.documents) || + !result.analyzeResult?.documents + ) { + console.error( + `No useful data found during processing, status ${ + result.status + }, ${JSON.stringify(result.error, null, 2)}` + ); + return new Response(`No useful data found during processing`, { + status: 400, + headers: { ...corsHeaders }, + }); + } - if (result.analyzeResult.documents.length > 1) { - console.error("More than one page in document"); - return new Response("More than one page in document", { - status: 400, - headers: { ...corsHeaders }, - }); - } + if (result.analyzeResult.documents.length > 1) { + console.error("More than one page in document"); + return new Response("More than one page in document", { + status: 400, + headers: { ...corsHeaders }, + }); + } - if ( - isEmpty(result.analyzeResult?.documents[0].fields) || - !result.analyzeResult.documents[0].fields - ) { - console.error("No data extracted from document"); - return new Response("No data extracted from document", { - status: 400, - headers: { ...corsHeaders }, - }); - } + if ( + isEmpty(result.analyzeResult?.documents[0].fields) || + !result.analyzeResult.documents[0].fields + ) { + console.error("No data extracted from document"); + return new Response("No data extracted from document", { + status: 400, + headers: { ...corsHeaders }, + }); + } - if (result.analyzeResult.documents[0].fields.Items?.type === "object") { - const itemValue = - result.analyzeResult.documents[0].fields.Items?.valueObject; - const sanitizedName = parseStringForResponse( - getName(itemValue?.Description) - ); - const price_per_unit = parseFloatForResponse(getPricePerUnit(itemValue)); - const quantity = parseFloatForResponse(getQuantity(itemValue?.Quantity)); - documentAnalysisResult = [ - { - sanitizedName, - price_per_unit, - quantity, - }, - ]; - } - if (result.analyzeResult.documents[0].fields.Items?.type === "array") { - documentAnalysisResult = - result.analyzeResult.documents[0].fields.Items?.valueArray?.map( - (item) => { - if (item.type !== "object") { - return null; + if (result.analyzeResult.documents[0].fields.Items?.type === "object") { + const itemValue = + result.analyzeResult.documents[0].fields.Items?.valueObject; + const sanitizedName = parseStringForResponse( + getName(itemValue?.Description) + ); + const price_per_unit = parseFloatForResponse(getPricePerUnit(itemValue)); + const quantity = parseFloatForResponse(getQuantity(itemValue?.Quantity)); + documentAnalysisResult = [ + { + sanitizedName, + price_per_unit, + quantity, + }, + ]; + } + if (result.analyzeResult.documents[0].fields.Items?.type === "array") { + documentAnalysisResult = + result.analyzeResult.documents[0].fields.Items?.valueArray?.map( + (item) => { + if (item.type !== "object") { + return null; + } + const itemValue = item.valueObject; + const sanitizedName = parseStringForResponse( + getName(itemValue?.Description) + ); + const price_per_unit = parseFloatForResponse( + getPricePerUnit(itemValue) + ); + const quantity = parseFloatForResponse( + getQuantity(itemValue?.Quantity) + ); + return { + sanitizedName, + price_per_unit, + quantity, + }; } - const itemValue = item.valueObject; - const sanitizedName = parseStringForResponse( - getName(itemValue?.Description) - ); - const price_per_unit = parseFloatForResponse( - getPricePerUnit(itemValue) - ); - const quantity = parseFloatForResponse( - getQuantity(itemValue?.Quantity) - ); - return { - sanitizedName, - price_per_unit, - quantity, - }; - } - ) ?? null; + ) ?? null; + } } // this is extremely inefficient and we should find a better solution @@ -421,5 +428,3 @@ Deno.serve(async (req) => { // curl -v 'http://127.0.0.1:54321/functions/v1/scan-doc' \ // --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0' \ // --data '{"inventory_id":10,"image":{"data":""}}' - -// const mockResponse = diff --git a/supabase/seed.sql b/supabase/seed.sql index e95649b2..fdd3140c 100644 --- a/supabase/seed.sql +++ b/supabase/seed.sql @@ -14,64 +14,32 @@ INSERT INTO "public"."company" ("id", "created_at", "name") VALUES INSERT INTO "public"."product_category" ("id", "created_at", "name", "company_id", "display_order") VALUES - (14, '2024-07-01 20:26:52.249813+00', 'Owoce', 2, 0), - (1, '2024-03-14 09:43:34.607298+00', 'Mięso', 2, 2), - (4, '2024-03-14 12:01:06.956423+00', 'Napoje', 2, 3); + (1, '2024-07-01 20:26:52.249813+00', 'Cukiernicze', 2, 0), + (2, '2024-03-14 12:01:06.956423+00', 'Owoce', 2, 3); INSERT INTO "public"."product" ("id", "created_at", "name", "unit", "steps", "company_id", "notification_threshold", "category_id", "display_order", "deleted_at") VALUES - (1, '2024-03-14 09:42:58.096235+00', 'Szynka', 'kg', '{1,5,10}', 2, 0, 1, 0, '2024-07-01 19:50:58.841+00'), - (2, '2024-03-14 09:43:05.126072+00', 'antrykot', 'kg', '{1,5,10}', 2, 0, 1, 1, '2024-07-01 19:51:03.759+00'), - (3, '2024-03-14 09:43:10.463037+00', 'dorsz', 'kg', '{1,5,10}', 2, 0, NULL, 0, '2024-07-01 19:50:40.371+00'), - (4, '2024-03-14 09:43:14.739522+00', 'fladra', 'kg', '{1,5,10}', 2, 0, NULL, 1, '2024-07-01 19:50:45.605+00'), - (5, '2024-03-14 11:58:51.547333+00', 'Pepsi', 'skrz.', '{1,5,10}', 2, 0, 4, 1, '2024-07-01 19:51:34.616+00'), - (6, '2024-03-14 11:59:00.112976+00', 'Mirinda', 'szt.', '{1,5,10}', 2, 0, 4, 0, '2024-07-01 19:50:15.083+00'), - (7, '2024-03-14 11:59:08.019779+00', '7up', 'zgrz.', '{1,5,10}', 2, 0, 4, 2, '2024-07-01 19:51:39.617+00'), - (8, '2024-03-14 11:59:45.742927+00', 'Pilsner', 'szt.', '{1,5,24}', 2, 0, NULL, 0, '2024-07-01 19:50:35.903+00'), - (9, '2024-03-14 12:00:14.474733+00', 'sok pomaranczowy', 'szt.', '{1,5,10}', 2, 0, 4, 3, '2024-07-01 19:51:44.15+00'), - (10, '2024-03-19 10:23:13.614699+00', 'Prosciutto Crudo', 'kg', '{1,5,10}', 2, 0, NULL, 0, '2024-07-01 19:50:20.717+00'), - (13, '2024-04-22 16:33:20.864363+00', 'SALAMI PIKANTE', 'kg', '{1,5,10}', 2, 0, NULL, 0, '2024-07-01 19:50:50.289+00'), - (12, '2024-04-22 16:32:48.107685+00', 'SPINATA', 'kg', '{1,5,10}', 2, 0, NULL, 0, '2024-07-01 19:50:30.152+00'), - (14, '2024-04-22 16:40:48.745131+00', 'mozarella', 'kg', '{1,5,10}', 2, 0, NULL, 0, '2024-07-01 19:50:54.374+00'), - (15, '2024-04-22 16:41:23.811336+00', 'Papryka Jalapeno', 'kg', '{1,5,10}', 2, 0, NULL, 0, '2024-07-01 19:50:25.718+00'), - (175, '2024-07-01 20:05:04.709484+00', 'Gofry Emix', 'Szt', '{1,5,10}', 2, 0, NULL, 0, NULL), - (176, '2024-07-01 20:05:19.27241+00', 'Śmietana', 'szt.', '{1,5,10}', 2, 0, NULL, 0, NULL), - (177, '2024-07-01 20:09:01.6365+00', 'Ananas', 'szt.', '{1,5,10}', 2, 0, NULL, 0, NULL), - (178, '2024-07-01 20:10:26.720252+00', 'Nutella ', 'szt.', '{1,5,10}', 2, 0, NULL, 0, NULL), - (179, '2024-07-01 20:14:01.564668+00', 'Antrykot', 'kg', '{1,5,10}', 2, 0, NULL, 0, NULL); - + (1, '2024-07-01 20:05:04.709484+00', 'Gofry Emix', 'Szt', '{1,5,10}', 2, 0, 1, 0, NULL), + (2, '2024-07-01 20:05:19.27241+00', 'Śmietana', 'szt.', '{1,5,10}', 2, 0, 1, 0, NULL), + (3, '2024-07-01 20:09:01.6365+00', 'Ananas', 'szt.', '{1,5,10}', 2, 0, 2, 0, NULL), + (4, '2024-07-01 20:10:26.720252+00', 'Nutella', 'szt.', '{1,5,10}', 2, 0, 1, 0, NULL), + (5, '2024-07-01 20:10:26.720252+00', 'Sos Czekoladowy', 'szt.', '{1,5,10}', 2, 0, 1, 0, NULL), + (6, '2024-07-01 20:10:26.720252+00', 'Maliny w żelu', 'szt.', '{1,5,10}', 2, 0, 2, 0, NULL), + (7, '2024-07-01 20:10:26.720252+00', 'Olej rzepakowy', 'szt.', '{1,5,10}', 2, 0, NULL, 0, NULL); INSERT INTO "public"."inventory" ("id", "created_at", "name", "date", "company_id", "last_product_record_updated_at", "low_quantity_notification_sent", "is_delivery") VALUES (1, '2024-07-03 14:35:53.232275+00', '3 lipiec', '2024-07-03 14:35:47+00', 2, '2024-07-10 10:20:11.885395+00', false, true); +DELETE FROM "public"."product_record" WHERE id = 3; +DELETE FROM "public"."product_record" WHERE id = 4; INSERT INTO "public"."recipe" ("id", "created_at", "name", "company_id") VALUES (1, '2024-04-18 15:12:53.215491+00', 'Pizza Salami Pikante', 2); - INSERT INTO "public"."name_alias" ("id", "alias", "recipe_id", "product_id", "company_id") VALUES - (1, '|KROJONA 6-MIESIĘCZNA ATP 500G', NULL, 1, 2), - (2, 'SPIANATA PIKANTNA VACUUM OK. 2.6KG', NULL, 12, 2), - (3, 'SALAMI PIKANTNE VENTRICINA VACUUM OK. 3,2KG', NULL, 13, 2), - (7, 'Gofry Emix 5kg', NULL, 175, 2), - (8, 'Deserowa UHT Bieruńska 33% 5 lit.', NULL, 176, 2), - (9, 'Deserowa UHT Bieruńska 33% 5 lit. Nutella 825 g', NULL, 176, 2), - (10, 'Ananas Kostka Sandra 565g', NULL, 177, 2), - (11, 'Gofry Emix 5kg', NULL, 175, 2), - (12, 'Deserowa UHT Bieruńska 33% 5 lit.', NULL, 176, 2), - (13, 'Ananas Kostka Sandra 565g', NULL, 177, 2), - (14, 'Nutella 825 g', NULL, 178, 2), - (15, 'Gofry Emix 5kg', NULL, 175, 2), - (16, 'Deserowa UHT Bieruńska 33% 5 lit', NULL, 176, 2), - (17, 'Ananas Kostka Sandra 565g', NULL, 177, 2), - (18, 'Nutella 825 g', NULL, 178, 2), - (19, 'Sos Czekoladowy Dijo 1kg', NULL, 179, 2); - - --- INSERT INTO "public"."product_record" ("id", "created_at", "quantity", "product_id", "inventory_id", "price_per_unit") VALUES --- (1, '2024-07-03 14:38:09.305644+00', 0, 175, 1, 44.44), --- (2, '2024-07-03 14:38:09.305644+00', 0, 177, 1, 5.3), --- (3, '2024-07-03 14:38:09.305644+00', 0, 178, 1, 21.85), --- (4, '2024-07-03 14:38:09.305644+00', 0, 176, 1, 58.51); + (1, 'Gofry Emix 5kg', NULL, 1, 2), + (2, 'Deserowa UHT Bieruńska 33% 5 lit.', NULL, 2, 2), + (3, 'Ananas Kostka Sandra 565g', NULL, 3, 2), + (4, 'Nutella 825 g', NULL, 4, 2); RESET ALL; From 0c0eefcf71d4b7855f274967f7880a5e81788243 Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Wed, 10 Jul 2024 15:39:07 +0200 Subject: [PATCH 04/23] README edit xp --- README.md | 2 +- native/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ecbe2444..aa211960 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# invtrack +# InvTrack ## Setup diff --git a/native/README.md b/native/README.md index 9e0e57b8..e2e52229 100644 --- a/native/README.md +++ b/native/README.md @@ -1,4 +1,4 @@ -# invtrack mobile app README +# InvTrack Mobile App ## Setup From a674c733a9ef12ea2b85f293905d12b0ca4c6565 Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Wed, 10 Jul 2024 18:52:52 +0200 Subject: [PATCH 05/23] initial process-invoice rework --- .../DeliveryFormContextProvider.tsx | 18 +- native/db/types/index.ts | 15 +- native/redux/documentScannerSlice.ts | 4 +- native/screens/DocumentScannerModalScreen.tsx | 2 +- .../screens/IdentifyAliasesScreen/Invoice.tsx | 9 +- .../examples/edam-response.json | 156 ++++++++---- supabase/functions/process-invoice/index.ts | 241 +++++++----------- supabase/seed.sql | 39 ++- 8 files changed, 245 insertions(+), 239 deletions(-) diff --git a/native/components/StockFormContext/DeliveryFormContextProvider.tsx b/native/components/StockFormContext/DeliveryFormContextProvider.tsx index 76145775..b65a28f3 100644 --- a/native/components/StockFormContext/DeliveryFormContextProvider.tsx +++ b/native/components/StockFormContext/DeliveryFormContextProvider.tsx @@ -1,17 +1,9 @@ import { useEffect } from "react"; import { FormProvider, useForm } from "react-hook-form"; -import { ProcessInvoiceResponse } from "../../db/types"; import { documentScannerSelector } from "../../redux/documentScannerSlice"; import { useAppSelector } from "../../redux/hooks"; import { StockForm } from "./types"; -const getValuesForForm = (processInvoiceResponse: ProcessInvoiceResponse) => { - if (processInvoiceResponse == null) { - return undefined; - } - return processInvoiceResponse.form; -}; - export const DeliveryFormContextProvider = ({ children, }: { @@ -28,21 +20,21 @@ export const DeliveryFormContextProvider = ({ const dirtyFields = methods.formState.dirtyFields; useEffect(() => { - const valuesForForm = getValuesForForm(processedInvoice); - if (!valuesForForm) return; + if (!processedInvoice) return; + const matchedProductRecords = processedInvoice.matchedProductRecords; - for (const record_id in valuesForForm) { + for (const record_id in matchedProductRecords) { if (record_id in dirtyFields) continue; methods.setValue( `product_records.${record_id}.quantity`, - valuesForForm[record_id].quantity, + matchedProductRecords[record_id].quantity, { shouldDirty: true, } ); methods.setValue( `product_records.${record_id}.price_per_unit`, - valuesForForm[record_id].price_per_unit, + matchedProductRecords[record_id].price_per_unit, { shouldDirty: true, } diff --git a/native/db/types/index.ts b/native/db/types/index.ts index 447fa092..83ae7f1c 100644 --- a/native/db/types/index.ts +++ b/native/db/types/index.ts @@ -66,20 +66,25 @@ export type PatchedDatabase = { }; export type ProcessInvoiceResponse = { - form: { - [recordId: number]: { + matchedProductRecords: { + [id: number]: { product_id: number; price_per_unit: number; quantity: number; }; }; - unmatched: { - [name: string]: { + matchedProductsNotInInventory: { + [id: number]: { price_per_unit: number; quantity: number; }; }; - unmatchedAliases: string[]; + unmatchedRows: { + name: string; + price_per_unit: number; + quantity: number; + }[]; + unmatchedNames: string[]; } | null; export type ProcessSalesRaportResponse = { diff --git a/native/redux/documentScannerSlice.ts b/native/redux/documentScannerSlice.ts index e6351ec2..72c1c4c3 100644 --- a/native/redux/documentScannerSlice.ts +++ b/native/redux/documentScannerSlice.ts @@ -110,8 +110,8 @@ export const documentScannerSlice = createSlice({ selectNewMatched: (state) => state.newMatched, selectProcessedInvoice: (state) => state.processedInvoice, selectProcessedSalesRaport: (state) => state.processedSalesRaport, - selectInvoiceUnmatchedAliases: (state) => - state.processedInvoice?.unmatchedAliases, + selectInvoiceUnmatchedNames: (state) => + state.processedInvoice?.unmatchedNames, selectSalesRaportUnmatchedAliases: (state) => state.processedSalesRaport?.unmatchedAliases, }, diff --git a/native/screens/DocumentScannerModalScreen.tsx b/native/screens/DocumentScannerModalScreen.tsx index 1a2a6dfe..6d58e2cd 100644 --- a/native/screens/DocumentScannerModalScreen.tsx +++ b/native/screens/DocumentScannerModalScreen.tsx @@ -59,7 +59,7 @@ export const DocumentScannerModalScreen = ({ return; } if (processedInvoice != null) - if (inventory_id && !isEmpty(processedInvoice?.unmatchedAliases)) { + if (inventory_id && !isEmpty(processedInvoice?.unmatchedNames)) { navigation.replace("IdentifyAliasesScreen", { inventoryId: inventory_id, isScanningSalesRaport, diff --git a/native/screens/IdentifyAliasesScreen/Invoice.tsx b/native/screens/IdentifyAliasesScreen/Invoice.tsx index ea9631b8..5b6ecacf 100644 --- a/native/screens/IdentifyAliasesScreen/Invoice.tsx +++ b/native/screens/IdentifyAliasesScreen/Invoice.tsx @@ -78,7 +78,7 @@ export const IdentifyAliasesScreenInvoice = () => { const dispatch = useAppDispatch(); const inventoryId = useAppSelector(documentScannerSelector.selectInventoryId); const aliases = useAppSelector( - documentScannerSelector.selectInvoiceUnmatchedAliases + documentScannerSelector.selectInvoiceUnmatchedNames ); const processedInvoice = useAppSelector( @@ -104,10 +104,11 @@ export const IdentifyAliasesScreenInvoice = () => { useEffect(() => { if (isSuccess) { if (processedInvoice) { - let newMatched: typeof processedInvoice.form = []; + let newMatched: typeof processedInvoice.matchedProductRecords = {}; - for (const name in processedInvoice.unmatched) { - const { price_per_unit, quantity } = processedInvoice.unmatched[name]; + for (const name in processedInvoice.unmatchedRows) { + const { price_per_unit, quantity } = + processedInvoice.unmatchedRows[name]; const alias = resolvedAliases?.find((alias) => alias.alias === name); if (!alias || !alias.product_id) continue; const { product_id } = alias; diff --git a/supabase/functions/process-invoice/examples/edam-response.json b/supabase/functions/process-invoice/examples/edam-response.json index 87ee2603..7717359c 100644 --- a/supabase/functions/process-invoice/examples/edam-response.json +++ b/supabase/functions/process-invoice/examples/edam-response.json @@ -1,11 +1,113 @@ { - "form": { + "matchedProductRecords": { "1": { "product_id": 1, "price_per_unit": 44.44, "quantity": 17 }, "2": { "product_id": 2, "price_per_unit": 58.51, "quantity": 10 } }, - "unmatchedAliases": [ - "Nutella 825 g", - "Ananas Kostka Sandra 565g", + "matchedProductsNotInInventory": { + "3": { "price_per_unit": 5.3, "quantity": 6 }, + "4": { "price_per_unit": 21.85, "quantity": 12 } + }, + "unmatchedRows": [ + { + "name": "Sos Czekoladowy Dijo 1kg", + "price_per_unit": 17.64, + "quantity": 1 + }, + { + "name": "Sos Czekolada Biała Dijo 1", + "price_per_unit": 19.38, + "quantity": 1 + }, + { + "name": "Sos Adwokatowy Dijo 1kg", + "price_per_unit": 17.24, + "quantity": 1 + }, + { + "name": "Sos Truskawkowy Dijo 1kg", + "price_per_unit": 16.8, + "quantity": 1 + }, + { "name": "Sos Toffi Dijo 1kg", "price_per_unit": 16.44, "quantity": 5 }, + { + "name": "Sos Mix Jagodowy Dijo 1kg", + "price_per_unit": 18.13, + "quantity": 1 + }, + { "name": "Sos Wiśniowy Dijo 1kg", "price_per_unit": 16.44, "quantity": 1 }, + { "name": "Sos Malinowy Dijo 1kg", "price_per_unit": 18.13, "quantity": 1 }, + { + "name": "Maliny w Żelu Prospona 3,2kg", + "price_per_unit": 107.52, + "quantity": 1 + }, + { + "name": "Jagody w Żelu Prospona 3,2kg", + "price_per_unit": 91.2, + "quantity": 1 + }, + { + "name": "Brzoskwinie Kostka Regularna Sandra 4250g", + "price_per_unit": 35.65, + "quantity": 2 + }, + { + "name": "Posypka Kolorowa Dijo 1kg", + "price_per_unit": 16.39, + "quantity": 1 + }, + { + "name": "Posypka o Smaku Kakaowym Dijo 1kg Wafle Rożek Włoski Madren(35) 546", + "price_per_unit": 3.77, + "quantity": 3 + }, + { + "name": "Wafle Kubek Kanadyjski Duży Madren(05) 450", + "price_per_unit": 63.08, + "quantity": 2 + }, + { + "name": "Olej Rzepakowy Uniwersalny 51", + "price_per_unit": 25.45, + "quantity": 9 + }, + { + "name": "Brzoskwinie Połówki Sandra 820g", + "price_per_unit": 7.22, + "quantity": 4 + }, + { + "name": "Wiśnie w Żelu Prospona 3,2kg", + "price_per_unit": 47, + "quantity": 5 + }, + { + "name": "Wafle Kubek Kanadyjski Średni Madren(04) 450", + "price_per_unit": 59.42, + "quantity": 1 + }, + { + "name": "Jabłko Zielone w Żelu Prospona 3,1kg", + "price_per_unit": 44.34, + "quantity": 1 + }, + { + "name": "Truskawki w Żelu Dijo 3,2kg", + "price_per_unit": 60.35, + "quantity": 1 + }, + { + "name": "Maliny w Żelu Dijo 3,2kg", + "price_per_unit": 60.35, + "quantity": 1 + }, + { + "name": "Mleko Mlekovita UHT 3,2% 1L", + "price_per_unit": 2.98, + "quantity": 12 + } + ], + "unmatchedNames": [ "Sos Czekoladowy Dijo 1kg", "Sos Czekolada Biała Dijo 1", "Sos Adwokatowy Dijo 1kg", @@ -28,49 +130,5 @@ "Truskawki w Żelu Dijo 3,2kg", "Maliny w Żelu Dijo 3,2kg", "Mleko Mlekovita UHT 3,2% 1L" - ], - "unmatched": { - "Nutella 825 g": { "price_per_unit": 21.85, "quantity": 12 }, - "Ananas Kostka Sandra 565g": { "price_per_unit": 5.3, "quantity": 6 }, - "Sos Czekoladowy Dijo 1kg": { "price_per_unit": 17.64, "quantity": 1 }, - "Sos Czekolada Biała Dijo 1": { "price_per_unit": 19.38, "quantity": 1 }, - "Sos Adwokatowy Dijo 1kg": { "price_per_unit": 17.24, "quantity": 1 }, - "Sos Truskawkowy Dijo 1kg": { "price_per_unit": 16.8, "quantity": 1 }, - "Sos Toffi Dijo 1kg": { "price_per_unit": 16.44, "quantity": 5 }, - "Sos Mix Jagodowy Dijo 1kg": { "price_per_unit": 18.13, "quantity": 1 }, - "Sos Wiśniowy Dijo 1kg": { "price_per_unit": 16.44, "quantity": 1 }, - "Sos Malinowy Dijo 1kg": { "price_per_unit": 18.13, "quantity": 1 }, - "Maliny w Żelu Prospona 3,2kg": { "price_per_unit": 107.52, "quantity": 1 }, - "Jagody w Żelu Prospona 3,2kg": { "price_per_unit": 91.2, "quantity": 1 }, - "Brzoskwinie Kostka Regularna Sandra 4250g": { - "price_per_unit": 35.65, - "quantity": 2 - }, - "Posypka Kolorowa Dijo 1kg": { "price_per_unit": 16.39, "quantity": 1 }, - "Posypka o Smaku Kakaowym Dijo 1kg Wafle Rożek Włoski Madren(35) 546": { - "price_per_unit": 3.77, - "quantity": 3 - }, - "Wafle Kubek Kanadyjski Duży Madren(05) 450": { - "price_per_unit": 63.08, - "quantity": 2 - }, - "Olej Rzepakowy Uniwersalny 51": { "price_per_unit": 25.45, "quantity": 9 }, - "Brzoskwinie Połówki Sandra 820g": { - "price_per_unit": 7.22, - "quantity": 4 - }, - "Wiśnie w Żelu Prospona 3,2kg": { "price_per_unit": 47, "quantity": 5 }, - "Wafle Kubek Kanadyjski Średni Madren(04) 450": { - "price_per_unit": 59.42, - "quantity": 1 - }, - "Jabłko Zielone w Żelu Prospona 3,1kg": { - "price_per_unit": 44.34, - "quantity": 1 - }, - "Truskawki w Żelu Dijo 3,2kg": { "price_per_unit": 60.35, "quantity": 1 }, - "Maliny w Żelu Dijo 3,2kg": { "price_per_unit": 60.35, "quantity": 1 }, - "Mleko Mlekovita UHT 3,2% 1L": { "price_per_unit": 2.98, "quantity": 12 } - } + ] } diff --git a/supabase/functions/process-invoice/index.ts b/supabase/functions/process-invoice/index.ts index 8d54823e..82a79325 100644 --- a/supabase/functions/process-invoice/index.ts +++ b/supabase/functions/process-invoice/index.ts @@ -123,18 +123,20 @@ const getQuantity = (item: DocumentFieldOutput | undefined): number | null => { return parseFloat6Precision(item.valueNumber); }; +/** + * This edge function works in two consecutive steps: + * 1. Send the image data to an AI service, get a list of rows in the form {sanitizedName, price_per_unit, quantity} + * 2. Match the list with existing name_alias'es, return a form object to be used on the frontend. + */ Deno.serve(async (req) => { // preflight request if (req.method === "OPTIONS") { return new Response("ok", { headers: corsHeaders }); } - // - // + const requestBody: { image?: { data?: unknown }; inventory_id?: unknown } = await req.json(); - // const requestBody = { image: { data: "" }, inventory_id: 11 }; - // - // + if ( requestBody?.image?.data == null || requestBody?.inventory_id == null || @@ -148,38 +150,7 @@ Deno.serve(async (req) => { }); } - const authHeader = req.headers.get("Authorization"); - if (authHeader == null) { - console.error("Unauthorized"); - return new Response("Unauthorized", { status: 401 }); - } - const supabase = createClient( - Deno.env.get("SUPABASE_URL") ?? "", - Deno.env.get("SUPABASE_ANON_KEY") ?? "", - { global: { headers: { Authorization: authHeader } } } - ); - - const { data: productAliasData, error: productAliasError } = await supabase - .from("name_alias") - .select("alias, product_id") - .is("recipe_id", null); - - if (productAliasError) { - console.error("Error fetching table data"); - return new Response("Error fetching table data", { status: 500 }); - } - - const productIds = productAliasData?.map((item) => item.product_id); - const { data: productRecordData, error: productRecordError } = await supabase - .from("product_record") - .select("id, product_id, quantity, price_per_unit") - .eq("inventory_id", requestBody.inventory_id) - .in("product_id", productIds); - - if (productRecordError) { - console.error("Error fetching table data"); - return new Response("Error fetching table data", { status: 500 }); - } + /** STEP 1: scan and analyze the invoice */ let documentAnalysisResult: | ({ @@ -298,124 +269,108 @@ Deno.serve(async (req) => { } } - // this is extremely inefficient and we should find a better solution - const matchAliasesToRecognizedData = productRecordData.reduce( - (acc, productRecord) => { - const product_id = productRecord.product_id; - const record_id = productRecord.id; + /** STEP 2: match scan result to existing aliases */ - const matchedAliases = productAliasData.filter( - (alias) => alias.product_id === product_id - ); + const authHeader = req.headers.get("Authorization"); + if (authHeader == null) { + console.error("Unauthorized"); + return new Response("Unauthorized", { status: 401 }); + } + const supabase = createClient( + Deno.env.get("SUPABASE_URL") ?? "", + Deno.env.get("SUPABASE_ANON_KEY") ?? "", + { global: { headers: { Authorization: authHeader } } } + ); - if (isEmpty(matchedAliases)) { - return { ...acc }; - } + const { data: productAliasData, error: productAliasError } = await supabase + .from("name_alias") + .select("alias, product_id") + .is("recipe_id", null); - const matchedDocumentData = documentAnalysisResult?.filter( - (documentItem) => - matchedAliases.some( - (matchedAlias) => documentItem?.sanitizedName === matchedAlias.alias - ) - ); + if (productAliasError) { + console.error("Error fetching table data"); + return new Response("Error fetching table data", { status: 500 }); + } - if (matchedDocumentData == null) { - return { ...acc }; - } + const productIds = productAliasData?.map((item) => item.product_id); + const { data: productRecordData, error: productRecordError } = await supabase + .from("product_record") + .select("id, product_id, quantity, price_per_unit") + .eq("inventory_id", requestBody.inventory_id) + .in("product_id", productIds); - const price_per_unit = Math.max( - ...matchedDocumentData.map( - (item) => item?.price_per_unit ?? productRecord?.price_per_unit ?? 0 - ) - ); + if (productRecordError) { + console.error("Error fetching table data"); + return new Response("Error fetching table data", { status: 500 }); + } - const quantity = - matchedDocumentData.reduce( - (sum, item) => sum + (item?.quantity ?? 0), - 0 - ) + productRecord.quantity; - - return { - recognized: { - ...acc.recognized, - [String(record_id)]: { - product_id, - price_per_unit: price_per_unit - ? parseFloatForResponse(price_per_unit) - : // temporary until null handling/merging is figured out in the app - 0, - quantity: quantity - ? parseFloatForResponse(quantity) - : // temporary until null handling/merging is figured out in the app - 0, - }, - }, - recognizedAliases: [ - ...acc.recognizedAliases, - ...matchedAliases.map((a) => a.alias), - ], - }; - }, - { recognized: {}, recognizedAliases: [] } as { - recognized: Record< - string, - { - product_id: number; - price_per_unit: number | null; - quantity: number | null; - } - >; - recognizedAliases: string[]; + const matchedProductRecords: { + [id: number]: { + product_id: number; + price_per_unit: number; + quantity: number; } - ); + } = {}; + const matchedProductsNotInInventory: { + [id: number]: { + price_per_unit: number; + quantity: number; + } + } = {}; + const unmatchedRows: { + name: string; + price_per_unit: number; + quantity: number; + }[] = []; + const unmatchedNames: string[] = []; + + if (!documentAnalysisResult) { + console.error("No analysis result"); + return new Response("No analysis result", { status: 500 }); + } - // we want them unique - const unmatchedAliases = [ - ...new Set( - documentAnalysisResult - ?.filter( - (analysis) => - !matchAliasesToRecognizedData.recognizedAliases.some( - (recognizedAlias) => recognizedAlias === analysis?.sanitizedName - ) - ) - .map((item) => item?.sanitizedName) ?? [] - ), - ]; - - const unmatched = documentAnalysisResult - ?.filter( - (analysis) => - !matchAliasesToRecognizedData.recognizedAliases.some( - (recognizedAlias) => recognizedAlias === analysis?.sanitizedName - ) - ) - .reduce( - (acc, item) => { - if (item?.sanitizedName == null) return acc; - - return { - ...acc, - [item.sanitizedName]: { - price_per_unit: item?.price_per_unit ?? null, - quantity: item?.quantity ?? null, - }, - }; - }, - {} as Record< - string, - { - price_per_unit: number | null; - quantity: number | null; - } - > + for (const row of documentAnalysisResult) { + if (!row || !row.sanitizedName || !row.price_per_unit || !row.quantity) + continue; + const quantity = row.quantity; + const price_per_unit = row.price_per_unit; + + const alias = productAliasData.find((a) => a.alias === row?.sanitizedName); + + if (!alias) { + unmatchedRows.push({ name: row.sanitizedName, price_per_unit, quantity }); + unmatchedNames.push(row.sanitizedName); + continue; + } + + const productRecord = productRecordData.find( + (r) => r.product_id === alias.product_id ); + // TODO: add functionality for recipies + if (!alias.product_id) continue; + + if (!productRecord) { + matchedProductsNotInInventory[alias.product_id] = ({ + price_per_unit, + quantity, + }); + continue; + } + + matchedProductRecords[productRecord.id] = ({ + product_id: alias.product_id, + price_per_unit, + quantity, + }); + } + return new Response( JSON.stringify({ - form: matchAliasesToRecognizedData.recognized, - unmatchedAliases, - unmatched, + matchedProductRecords, + matchedProductsNotInInventory, + unmatchedRows, + unmatchedNames, }), { headers: { ...corsHeaders, "Content-Type": "application/json" }, diff --git a/supabase/seed.sql b/supabase/seed.sql index fdd3140c..bb783d49 100644 --- a/supabase/seed.sql +++ b/supabase/seed.sql @@ -2,35 +2,30 @@ INSERT INTO "auth"."users" ("instance_id", "id", "aud", "role", "email", "encrypted_password", "email_confirmed_at", "invited_at", "confirmation_token", "confirmation_sent_at", "recovery_token", "recovery_sent_at", "email_change_token_new", "email_change", "email_change_sent_at", "last_sign_in_at", "raw_app_meta_data", "raw_user_meta_data", "is_super_admin", "created_at", "updated_at", "phone", "phone_confirmed_at", "phone_change", "phone_change_token", "phone_change_sent_at", "email_change_token_current", "email_change_confirm_status", "banned_until", "reauthentication_token", "reauthentication_sent_at", "is_sso_user", "deleted_at", "is_anonymous") VALUES ('00000000-0000-0000-0000-000000000000', '6a3ec7ce-ad5e-4bfd-956a-21c775eaf38f', 'authenticated', 'authenticated', 'adam@example.com', '$2a$10$Pr7iIWcpeJWTUm6np037h.cI6YsMjNIPx/mn7eWgbq67NjmHUo6n2', '2024-07-08 09:57:35.651714+00', NULL, '', NULL, '', NULL, '', '', NULL, '2024-07-10 10:07:05.948454+00', '{"provider": "email", "providers": ["email"]}', '{}', NULL, '2024-07-08 09:57:35.621166+00', '2024-07-10 10:07:05.949718+00', NULL, NULL, '', '', NULL, '', 0, NULL, '', NULL, false, NULL, false); - - INSERT INTO "auth"."identities" ("provider_id", "user_id", "identity_data", "provider", "last_sign_in_at", "created_at", "updated_at", "id") VALUES ('6a3ec7ce-ad5e-4bfd-956a-21c775eaf38f', '6a3ec7ce-ad5e-4bfd-956a-21c775eaf38f', '{"sub": "6a3ec7ce-ad5e-4bfd-956a-21c775eaf38f", "email": "adam@example.com", "email_verified": false, "phone_verified": false}', 'email', '2024-07-08 09:57:35.63829+00', '2024-07-08 09:57:35.638352+00', '2024-07-08 09:57:35.638352+00', '2ba4124c-733a-43da-b83a-3c582d9cdbea'); +INSERT INTO "public"."company" ("id", "name") VALUES + (2, 'Testowa lokalna'); +INSERT INTO "public"."product_category" ("id", "name", "company_id", "display_order") VALUES + (1, 'Cukiernicze', 2, 0), + (2, 'Owoce', 2, 3); -INSERT INTO "public"."company" ("id", "created_at", "name") VALUES - (2, '2024-03-11 17:02:20.408101+00', 'Testowa prodowa'); - - -INSERT INTO "public"."product_category" ("id", "created_at", "name", "company_id", "display_order") VALUES - (1, '2024-07-01 20:26:52.249813+00', 'Cukiernicze', 2, 0), - (2, '2024-03-14 12:01:06.956423+00', 'Owoce', 2, 3); - -INSERT INTO "public"."product" ("id", "created_at", "name", "unit", "steps", "company_id", "notification_threshold", "category_id", "display_order", "deleted_at") VALUES - (1, '2024-07-01 20:05:04.709484+00', 'Gofry Emix', 'Szt', '{1,5,10}', 2, 0, 1, 0, NULL), - (2, '2024-07-01 20:05:19.27241+00', 'Śmietana', 'szt.', '{1,5,10}', 2, 0, 1, 0, NULL), - (3, '2024-07-01 20:09:01.6365+00', 'Ananas', 'szt.', '{1,5,10}', 2, 0, 2, 0, NULL), - (4, '2024-07-01 20:10:26.720252+00', 'Nutella', 'szt.', '{1,5,10}', 2, 0, 1, 0, NULL), - (5, '2024-07-01 20:10:26.720252+00', 'Sos Czekoladowy', 'szt.', '{1,5,10}', 2, 0, 1, 0, NULL), - (6, '2024-07-01 20:10:26.720252+00', 'Maliny w żelu', 'szt.', '{1,5,10}', 2, 0, 2, 0, NULL), - (7, '2024-07-01 20:10:26.720252+00', 'Olej rzepakowy', 'szt.', '{1,5,10}', 2, 0, NULL, 0, NULL); +INSERT INTO "public"."product" ("id", "name", "unit", "company_id", "notification_threshold", "category_id", "display_order", "deleted_at") VALUES + (1, 'Gofry Emix', 'Szt.', 2, 0, 1, 0, NULL), + (2, 'Śmietana', 'szt.', 2, 0, 1, 0, NULL), + (3, 'Ananas', 'szt.', 2, 0, 2, 0, NULL), + (4, 'Nutella', 'szt.', 2, 0, 1, 0, NULL), + (5, 'Sos Czekoladowy', 'szt.', 2, 0, 1, 0, NULL), + (6, 'Maliny w żelu', 'szt.', 2, 0, 2, 0, NULL), + (7, 'Olej rzepakowy', 'szt.', 2, 0, NULL, 0, NULL); -INSERT INTO "public"."inventory" ("id", "created_at", "name", "date", "company_id", "last_product_record_updated_at", "low_quantity_notification_sent", "is_delivery") VALUES - (1, '2024-07-03 14:35:53.232275+00', '3 lipiec', '2024-07-03 14:35:47+00', 2, '2024-07-10 10:20:11.885395+00', false, true); +INSERT INTO "public"."inventory" ("id", "name", "date", "company_id", "last_product_record_updated_at", "low_quantity_notification_sent", "is_delivery") VALUES + (1, '3 lipiec', '2024-07-03 14:35:47+00', 2, '2024-07-10 10:20:11.885395+00', false, true); -DELETE FROM "public"."product_record" WHERE id = 3; -DELETE FROM "public"."product_record" WHERE id = 4; +DELETE FROM "public"."product_record" WHERE product_id = 3; +DELETE FROM "public"."product_record" WHERE product_id = 4; INSERT INTO "public"."recipe" ("id", "created_at", "name", "company_id") VALUES (1, '2024-04-18 15:12:53.215491+00', 'Pizza Salami Pikante', 2); From 2ac86ef9bd7cbfb3b965c93b6d45d9f882b20cbb Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Wed, 10 Jul 2024 19:45:24 +0200 Subject: [PATCH 06/23] remove unmatchedNames --- native/db/types/index.ts | 1 - native/redux/documentScannerSlice.ts | 4 +- native/screens/DocumentScannerModalScreen.tsx | 2 +- .../screens/IdentifyAliasesScreen/Invoice.tsx | 16 ++-- .../examples/edam-response.json | 24 ------ .../examples/mock-response.json | 79 ------------------- supabase/functions/process-invoice/index.ts | 3 - 7 files changed, 11 insertions(+), 118 deletions(-) delete mode 100644 supabase/functions/process-invoice/examples/mock-response.json diff --git a/native/db/types/index.ts b/native/db/types/index.ts index 83ae7f1c..f1da4b69 100644 --- a/native/db/types/index.ts +++ b/native/db/types/index.ts @@ -84,7 +84,6 @@ export type ProcessInvoiceResponse = { price_per_unit: number; quantity: number; }[]; - unmatchedNames: string[]; } | null; export type ProcessSalesRaportResponse = { diff --git a/native/redux/documentScannerSlice.ts b/native/redux/documentScannerSlice.ts index 72c1c4c3..20c27997 100644 --- a/native/redux/documentScannerSlice.ts +++ b/native/redux/documentScannerSlice.ts @@ -110,8 +110,8 @@ export const documentScannerSlice = createSlice({ selectNewMatched: (state) => state.newMatched, selectProcessedInvoice: (state) => state.processedInvoice, selectProcessedSalesRaport: (state) => state.processedSalesRaport, - selectInvoiceUnmatchedNames: (state) => - state.processedInvoice?.unmatchedNames, + selectInvoiceUnmatchedRows: (state) => + state.processedInvoice?.unmatchedRows, selectSalesRaportUnmatchedAliases: (state) => state.processedSalesRaport?.unmatchedAliases, }, diff --git a/native/screens/DocumentScannerModalScreen.tsx b/native/screens/DocumentScannerModalScreen.tsx index 6d58e2cd..03653c0f 100644 --- a/native/screens/DocumentScannerModalScreen.tsx +++ b/native/screens/DocumentScannerModalScreen.tsx @@ -59,7 +59,7 @@ export const DocumentScannerModalScreen = ({ return; } if (processedInvoice != null) - if (inventory_id && !isEmpty(processedInvoice?.unmatchedNames)) { + if (inventory_id && !isEmpty(processedInvoice?.unmatchedRows)) { navigation.replace("IdentifyAliasesScreen", { inventoryId: inventory_id, isScanningSalesRaport, diff --git a/native/screens/IdentifyAliasesScreen/Invoice.tsx b/native/screens/IdentifyAliasesScreen/Invoice.tsx index 5b6ecacf..a485ad0a 100644 --- a/native/screens/IdentifyAliasesScreen/Invoice.tsx +++ b/native/screens/IdentifyAliasesScreen/Invoice.tsx @@ -77,8 +77,8 @@ export const IdentifyAliasesScreenInvoice = () => { const dispatch = useAppDispatch(); const inventoryId = useAppSelector(documentScannerSelector.selectInventoryId); - const aliases = useAppSelector( - documentScannerSelector.selectInvoiceUnmatchedNames + const unmatchedRows = useAppSelector( + documentScannerSelector.selectInvoiceUnmatchedRows ); const processedInvoice = useAppSelector( @@ -152,7 +152,7 @@ export const IdentifyAliasesScreenInvoice = () => { }); }; - if (isEmpty(aliases) || !aliases) { + if (isEmpty(unmatchedRows) || !unmatchedRows) { // error return ( @@ -200,11 +200,11 @@ export const IdentifyAliasesScreenInvoice = () => { - {aliases.map((alias, i) => ( + {unmatchedRows.map((row, i) => ( { openBottomSheet(() => ( @@ -226,9 +226,9 @@ export const IdentifyAliasesScreenInvoice = () => { 50 ? "xs" : "s"} + variant={row.name.length > 50 ? "xs" : "s"} > - {alias} + {row.name} diff --git a/supabase/functions/process-invoice/examples/edam-response.json b/supabase/functions/process-invoice/examples/edam-response.json index 7717359c..67e96c0a 100644 --- a/supabase/functions/process-invoice/examples/edam-response.json +++ b/supabase/functions/process-invoice/examples/edam-response.json @@ -106,29 +106,5 @@ "price_per_unit": 2.98, "quantity": 12 } - ], - "unmatchedNames": [ - "Sos Czekoladowy Dijo 1kg", - "Sos Czekolada Biała Dijo 1", - "Sos Adwokatowy Dijo 1kg", - "Sos Truskawkowy Dijo 1kg", - "Sos Toffi Dijo 1kg", - "Sos Mix Jagodowy Dijo 1kg", - "Sos Wiśniowy Dijo 1kg", - "Sos Malinowy Dijo 1kg", - "Maliny w Żelu Prospona 3,2kg", - "Jagody w Żelu Prospona 3,2kg", - "Brzoskwinie Kostka Regularna Sandra 4250g", - "Posypka Kolorowa Dijo 1kg", - "Posypka o Smaku Kakaowym Dijo 1kg Wafle Rożek Włoski Madren(35) 546", - "Wafle Kubek Kanadyjski Duży Madren(05) 450", - "Olej Rzepakowy Uniwersalny 51", - "Brzoskwinie Połówki Sandra 820g", - "Wiśnie w Żelu Prospona 3,2kg", - "Wafle Kubek Kanadyjski Średni Madren(04) 450", - "Jabłko Zielone w Żelu Prospona 3,1kg", - "Truskawki w Żelu Dijo 3,2kg", - "Maliny w Żelu Dijo 3,2kg", - "Mleko Mlekovita UHT 3,2% 1L" ] } diff --git a/supabase/functions/process-invoice/examples/mock-response.json b/supabase/functions/process-invoice/examples/mock-response.json deleted file mode 100644 index 817af2c7..00000000 --- a/supabase/functions/process-invoice/examples/mock-response.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "form": { - "3969": { "product_id": 176, "price_per_unit": 58.51, "quantity": 10 }, - "3970": { "product_id": 175, "price_per_unit": 44.44, "quantity": 17 }, - "3971": { "product_id": 177, "price_per_unit": 5.3, "quantity": 6 }, - "3972": { "product_id": 178, "price_per_unit": 21.85, "quantity": 12 } - }, - "unmatchedAliases": [ - "Sos Czekoladowy Dijo 1kg", - "Sos Czekolada Biała Dijo 1", - "Sos Adwokatowy Dijo 1kg", - "Sos Truskawkowy Dijo 1kg", - "Sos Toffi Dijo 1kg", - "Sos Mix Jagodowy Dijo 1kg", - "Sos Wiśniowy Dijo 1kg", - "Sos Malinowy Dijo 1kg", - "Maliny w Żelu Prospona 3,2kg", - "Jagody w Żelu Prospona 3,2kg", - "Brzoskwinie Kostka Regularna Sandra 4250g", - "Posypka Kolorowa Dijo 1kg", - "Posypka o Smaku Kakaowym Dijo 1kg", - "Wafle Rożek Włoski Madren(35) 546", - "Wafle Kubek Kanadyjski Duży Madren(05) 450", - "Olej Rzepakowy Uniwersalny 51", - "Brzoskwinie Połówki Sandra 820g", - "Wiśnie w Żelu Prospona 3,2kg", - "Wafle Kubek Kanadyjski Średni Madren(04) 450", - "Jabłko Zielone w Żelu Prospona 3,1kg", - "Truskawki w Żelu Dijo 3,2kg", - "Maliny w Żelu Dijo 3,2kg", - "Mleko Mlekovita UHT 3,2% 1L" - ], - "unmatched": { - "Sos Czekoladowy Dijo 1kg": { "price_per_unit": 17.64, "quantity": 1 }, - "Sos Czekolada Biała Dijo 1": { "price_per_unit": 19.38, "quantity": 1 }, - "Sos Adwokatowy Dijo 1kg": { "price_per_unit": 17.24, "quantity": 1 }, - "Sos Truskawkowy Dijo 1kg": { "price_per_unit": 16.8, "quantity": 1 }, - "Sos Toffi Dijo 1kg": { "price_per_unit": 16.44, "quantity": 5 }, - "Sos Mix Jagodowy Dijo 1kg": { "price_per_unit": 18.13, "quantity": 1 }, - "Sos Wiśniowy Dijo 1kg": { "price_per_unit": 16.44, "quantity": 1 }, - "Sos Malinowy Dijo 1kg": { "price_per_unit": 18.13, "quantity": 1 }, - "Maliny w Żelu Prospona 3,2kg": { "price_per_unit": 107.52, "quantity": 1 }, - "Jagody w Żelu Prospona 3,2kg": { "price_per_unit": 91.2, "quantity": 1 }, - "Brzoskwinie Kostka Regularna Sandra 4250g": { - "price_per_unit": 35.65, - "quantity": 2 - }, - "Posypka Kolorowa Dijo 1kg": { "price_per_unit": 16.39, "quantity": 1 }, - "Posypka o Smaku Kakaowym Dijo 1kg": { - "price_per_unit": 17.17, - "quantity": 1 - }, - "Wafle Rożek Włoski Madren(35) 546": { - "price_per_unit": 65.38, - "quantity": 3 - }, - "Wafle Kubek Kanadyjski Duży Madren(05) 450": { - "price_per_unit": 63.08, - "quantity": 2 - }, - "Olej Rzepakowy Uniwersalny 51": { "price_per_unit": 25.45, "quantity": 9 }, - "Brzoskwinie Połówki Sandra 820g": { - "price_per_unit": 7.22, - "quantity": 4 - }, - "Wiśnie w Żelu Prospona 3,2kg": { "price_per_unit": 47, "quantity": 5 }, - "Wafle Kubek Kanadyjski Średni Madren(04) 450": { - "price_per_unit": 59.42, - "quantity": 1 - }, - "Jabłko Zielone w Żelu Prospona 3,1kg": { - "price_per_unit": 44.34, - "quantity": 1 - }, - "Truskawki w Żelu Dijo 3,2kg": { "price_per_unit": 60.35, "quantity": 1 }, - "Maliny w Żelu Dijo 3,2kg": { "price_per_unit": 60.35, "quantity": 1 }, - "Mleko Mlekovita UHT 3,2% 1L": { "price_per_unit": 2.98, "quantity": 12 } - } -} diff --git a/supabase/functions/process-invoice/index.ts b/supabase/functions/process-invoice/index.ts index 82a79325..a463691f 100644 --- a/supabase/functions/process-invoice/index.ts +++ b/supabase/functions/process-invoice/index.ts @@ -322,7 +322,6 @@ Deno.serve(async (req) => { price_per_unit: number; quantity: number; }[] = []; - const unmatchedNames: string[] = []; if (!documentAnalysisResult) { console.error("No analysis result"); @@ -339,7 +338,6 @@ Deno.serve(async (req) => { if (!alias) { unmatchedRows.push({ name: row.sanitizedName, price_per_unit, quantity }); - unmatchedNames.push(row.sanitizedName); continue; } @@ -370,7 +368,6 @@ Deno.serve(async (req) => { matchedProductRecords, matchedProductsNotInInventory, unmatchedRows, - unmatchedNames, }), { headers: { ...corsHeaders, "Content-Type": "application/json" }, From 2d4cb06c672d837c5b548a8fbd926908befa1f02 Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Thu, 11 Jul 2024 15:02:14 +0200 Subject: [PATCH 07/23] cascades and alias compound key migration --- ...2_name_alias_compound_key_and_cascades.sql | 50 +++++++++++++++++++ supabase/seed.sql | 10 ++-- 2 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 supabase/migrations/20240711123822_name_alias_compound_key_and_cascades.sql diff --git a/supabase/migrations/20240711123822_name_alias_compound_key_and_cascades.sql b/supabase/migrations/20240711123822_name_alias_compound_key_and_cascades.sql new file mode 100644 index 00000000..c192494b --- /dev/null +++ b/supabase/migrations/20240711123822_name_alias_compound_key_and_cascades.sql @@ -0,0 +1,50 @@ +-- replace id with a coumpound key on alias and company id in name_alias table +drop index if exists "public"."name_alias_id_key"; + +alter table "public"."name_alias" drop column "id"; + +CREATE UNIQUE INDEX name_alias_pkey ON public.name_alias USING btree (alias, company_id); + +alter table "public"."name_alias" add constraint "name_alias_pkey" PRIMARY KEY using index "name_alias_pkey"; + + +-- add cascades where appropriate +alter table "public"."inventory" drop constraint "inventory_company_id_fkey"; +alter table "public"."inventory" add constraint "public_inventory_company_id_fkey" FOREIGN KEY (company_id) REFERENCES company(id) ON UPDATE CASCADE ON DELETE CASCADE not valid; +alter table "public"."inventory" validate constraint "public_inventory_company_id_fkey"; + +alter table "public"."product" drop constraint "product_company_id_fkey"; +alter table "public"."product" add constraint "public_product_company_id_fkey" FOREIGN KEY (company_id) REFERENCES company(id) ON UPDATE CASCADE ON DELETE CASCADE not valid; +alter table "public"."product" validate constraint "public_product_company_id_fkey"; + +alter table "public"."product_record" drop constraint "product_record_inventory_id_fkey"; +alter table "public"."product_record" add constraint "public_product_record_inventory_id_fkey" FOREIGN KEY (inventory_id) REFERENCES inventory(id) ON UPDATE CASCADE ON DELETE CASCADE not valid; +alter table "public"."product_record" validate constraint "public_product_record_inventory_id_fkey"; + +alter table "public"."product_record" drop constraint "product_record_product_id_fkey"; +alter table "public"."product_record" add constraint "public_product_record_product_id_fkey" FOREIGN KEY (product_id) REFERENCES product(id) ON UPDATE CASCADE ON DELETE CASCADE not valid; +alter table "public"."product_record" validate constraint "public_product_record_product_id_fkey"; + +alter table "public"."recipe_part" drop constraint "recipe_part_product_id_fkey"; +alter table "public"."recipe_part" add constraint "public_recipe_part_product_id_fkey" FOREIGN KEY (product_id) REFERENCES product(id) ON UPDATE CASCADE ON DELETE CASCADE not valid; +alter table "public"."recipe_part" validate constraint "public_recipe_part_product_id_fkey"; + +alter table "public"."recipe_record" drop constraint "recipe_record_company_id_fkey"; +alter table "public"."recipe_record" add constraint "public_recipe_record_company_id_fkey" FOREIGN KEY (company_id) REFERENCES company(id) ON UPDATE CASCADE ON DELETE CASCADE not valid; +alter table "public"."recipe_record" validate constraint "public_recipe_record_company_id_fkey"; + +alter table "public"."recipe_record" drop constraint "recipe_record_inventory_id_fkey"; +alter table "public"."recipe_record" add constraint "public_recipe_record_inventory_id_fkey" FOREIGN KEY (inventory_id) REFERENCES inventory(id) ON UPDATE CASCADE ON DELETE CASCADE not valid; +alter table "public"."recipe_record" validate constraint "public_recipe_record_inventory_id_fkey"; + +alter table "public"."recipe_record" drop constraint "recipe_record_recipe_id_fkey"; +alter table "public"."recipe_record" add constraint "public_recipe_record_recipe_id_fkey" FOREIGN KEY (recipe_id) REFERENCES recipe(id) ON UPDATE CASCADE ON DELETE CASCADE not valid; +alter table "public"."recipe_record" validate constraint "public_recipe_record_recipe_id_fkey"; + +alter table "public"."worker" drop constraint "worker_company_id_fkey"; +alter table "public"."worker" add constraint "public_worker_company_id_fkey" FOREIGN KEY (company_id) REFERENCES company(id) ON UPDATE CASCADE ON DELETE CASCADE not valid; +alter table "public"."worker" validate constraint "public_worker_company_id_fkey"; + +alter table "public"."worker" drop constraint "worker_id_fkey"; +alter table "public"."worker" add constraint "public_worker_id_fkey" FOREIGN KEY (id) REFERENCES auth.users(id) ON UPDATE CASCADE ON DELETE CASCADE not valid; +alter table "public"."worker" validate constraint "public_worker_id_fkey"; \ No newline at end of file diff --git a/supabase/seed.sql b/supabase/seed.sql index bb783d49..496e1336 100644 --- a/supabase/seed.sql +++ b/supabase/seed.sql @@ -30,11 +30,11 @@ DELETE FROM "public"."product_record" WHERE product_id = 4; INSERT INTO "public"."recipe" ("id", "created_at", "name", "company_id") VALUES (1, '2024-04-18 15:12:53.215491+00', 'Pizza Salami Pikante', 2); -INSERT INTO "public"."name_alias" ("id", "alias", "recipe_id", "product_id", "company_id") VALUES - (1, 'Gofry Emix 5kg', NULL, 1, 2), - (2, 'Deserowa UHT Bieruńska 33% 5 lit.', NULL, 2, 2), - (3, 'Ananas Kostka Sandra 565g', NULL, 3, 2), - (4, 'Nutella 825 g', NULL, 4, 2); +INSERT INTO "public"."name_alias" ("alias", "recipe_id", "product_id", "company_id") VALUES + ('Gofry Emix 5kg', NULL, 1, 2), + ('Deserowa UHT Bieruńska 33% 5 lit.', NULL, 2, 2), + ('Ananas Kostka Sandra 565g', NULL, 3, 2), + ('Nutella 825 g', NULL, 4, 2); RESET ALL; From bbe291ffd57d821276763082da2e269341a4187c Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Thu, 11 Jul 2024 22:37:38 +0200 Subject: [PATCH 08/23] product records by product_id in app rework --- admin/src/lib/database.types.ts | 67 +++++++++--------- database.types.ts | 67 +++++++++--------- native/components/BarcodeScanner/index.tsx | 3 +- native/components/IDListCard.tsx | 5 +- native/components/RecipeCard.tsx | 20 +++--- .../DeliveryFormContextProvider.tsx | 32 +++++---- native/components/StockFormContext/types.ts | 5 +- native/db/hooks/useGetRecord.ts | 17 +++-- native/db/hooks/useListBarcodes.ts | 9 ++- native/db/hooks/useRecordPanel.tsx | 70 ++++++++++--------- native/db/hooks/useUpdateBarcode.tsx | 6 +- native/db/hooks/useUpdateRecords.ts | 32 +++++---- native/db/types/generated.ts | 67 +++++++++--------- native/navigation/BottomTabNavigation.tsx | 2 +- native/navigation/types.ts | 14 +++- native/screens/DeliveryTabScreen.tsx | 10 +-- .../screens/IdentifyAliasesScreen/Invoice.tsx | 7 +- native/screens/InventoryTabScreen.tsx | 8 +-- native/screens/RecordScreen/index.tsx | 45 ++++++++---- native/utils/useRecordPagination.tsx | 30 ++++---- supabase/functions/_shared/database.types.ts | 67 +++++++++--------- 21 files changed, 318 insertions(+), 265 deletions(-) diff --git a/admin/src/lib/database.types.ts b/admin/src/lib/database.types.ts index 21d13d4b..fa77f5d5 100644 --- a/admin/src/lib/database.types.ts +++ b/admin/src/lib/database.types.ts @@ -135,7 +135,7 @@ export type Database = { } Relationships: [ { - foreignKeyName: "inventory_company_id_fkey" + foreignKeyName: "public_inventory_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" @@ -147,21 +147,18 @@ export type Database = { Row: { alias: string company_id: number - id: number product_id: number | null recipe_id: number | null } Insert: { alias: string company_id: number - id?: number product_id?: number | null recipe_id?: number | null } Update: { alias?: string company_id?: number - id?: number product_id?: number | null recipe_id?: number | null } @@ -249,7 +246,7 @@ export type Database = { referencedColumns: ["id"] }, { - foreignKeyName: "product_company_id_fkey" + foreignKeyName: "public_product_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" @@ -316,35 +313,35 @@ export type Database = { } Relationships: [ { - foreignKeyName: "product_record_inventory_id_fkey" + foreignKeyName: "public_product_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "inventory" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_inventory_id_fkey" + foreignKeyName: "public_product_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "low_quantity_notifications_user_id_view" referencedColumns: ["inventory_id"] }, { - foreignKeyName: "product_record_product_id_fkey" + foreignKeyName: "public_product_record_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "deleted_products" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_product_id_fkey" + foreignKeyName: "public_product_record_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "existing_products" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_product_id_fkey" + foreignKeyName: "public_product_record_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "product" @@ -402,21 +399,21 @@ export type Database = { } Relationships: [ { - foreignKeyName: "recipe_part_product_id_fkey" + foreignKeyName: "public_recipe_part_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "deleted_products" referencedColumns: ["id"] }, { - foreignKeyName: "recipe_part_product_id_fkey" + foreignKeyName: "public_recipe_part_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "existing_products" referencedColumns: ["id"] }, { - foreignKeyName: "recipe_part_product_id_fkey" + foreignKeyName: "public_recipe_part_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "product" @@ -458,28 +455,28 @@ export type Database = { } Relationships: [ { - foreignKeyName: "recipe_record_company_id_fkey" + foreignKeyName: "public_recipe_record_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" referencedColumns: ["id"] }, { - foreignKeyName: "recipe_record_inventory_id_fkey" + foreignKeyName: "public_recipe_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "inventory" referencedColumns: ["id"] }, { - foreignKeyName: "recipe_record_inventory_id_fkey" + foreignKeyName: "public_recipe_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "low_quantity_notifications_user_id_view" referencedColumns: ["inventory_id"] }, { - foreignKeyName: "recipe_record_recipe_id_fkey" + foreignKeyName: "public_recipe_record_recipe_id_fkey" columns: ["recipe_id"] isOneToOne: false referencedRelation: "recipe" @@ -514,14 +511,14 @@ export type Database = { } Relationships: [ { - foreignKeyName: "worker_company_id_fkey" + foreignKeyName: "public_worker_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" referencedColumns: ["id"] }, { - foreignKeyName: "worker_id_fkey" + foreignKeyName: "public_worker_id_fkey" columns: ["id"] isOneToOne: true referencedRelation: "users" @@ -543,7 +540,7 @@ export type Database = { } Relationships: [ { - foreignKeyName: "worker_company_id_fkey" + foreignKeyName: "public_worker_company_id_fkey" columns: ["id"] isOneToOne: false referencedRelation: "company" @@ -597,7 +594,7 @@ export type Database = { referencedColumns: ["id"] }, { - foreignKeyName: "product_company_id_fkey" + foreignKeyName: "public_product_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" @@ -651,7 +648,7 @@ export type Database = { referencedColumns: ["id"] }, { - foreignKeyName: "product_company_id_fkey" + foreignKeyName: "public_product_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" @@ -666,7 +663,7 @@ export type Database = { } Relationships: [ { - foreignKeyName: "worker_id_fkey" + foreignKeyName: "public_worker_id_fkey" columns: ["user_id"] isOneToOne: true referencedRelation: "users" @@ -686,21 +683,21 @@ export type Database = { } Relationships: [ { - foreignKeyName: "product_company_id_fkey" + foreignKeyName: "public_product_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_inventory_id_fkey" + foreignKeyName: "public_product_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "inventory" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_inventory_id_fkey" + foreignKeyName: "public_product_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "low_quantity_notifications_user_id_view" @@ -725,35 +722,35 @@ export type Database = { } Relationships: [ { - foreignKeyName: "product_record_inventory_id_fkey" + foreignKeyName: "public_product_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "inventory" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_inventory_id_fkey" + foreignKeyName: "public_product_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "low_quantity_notifications_user_id_view" referencedColumns: ["inventory_id"] }, { - foreignKeyName: "product_record_product_id_fkey" + foreignKeyName: "public_product_record_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "product" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_product_id_fkey" + foreignKeyName: "public_product_record_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "deleted_products" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_product_id_fkey" + foreignKeyName: "public_product_record_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "existing_products" @@ -772,14 +769,14 @@ export type Database = { } Relationships: [ { - foreignKeyName: "worker_company_id_fkey" + foreignKeyName: "public_worker_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" referencedColumns: ["id"] }, { - foreignKeyName: "worker_id_fkey" + foreignKeyName: "public_worker_id_fkey" columns: ["id"] isOneToOne: true referencedRelation: "users" @@ -1121,6 +1118,10 @@ export type Database = { updated_at: string }[] } + operation: { + Args: Record + Returns: string + } search: { Args: { prefix: string diff --git a/database.types.ts b/database.types.ts index 21d13d4b..fa77f5d5 100644 --- a/database.types.ts +++ b/database.types.ts @@ -135,7 +135,7 @@ export type Database = { } Relationships: [ { - foreignKeyName: "inventory_company_id_fkey" + foreignKeyName: "public_inventory_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" @@ -147,21 +147,18 @@ export type Database = { Row: { alias: string company_id: number - id: number product_id: number | null recipe_id: number | null } Insert: { alias: string company_id: number - id?: number product_id?: number | null recipe_id?: number | null } Update: { alias?: string company_id?: number - id?: number product_id?: number | null recipe_id?: number | null } @@ -249,7 +246,7 @@ export type Database = { referencedColumns: ["id"] }, { - foreignKeyName: "product_company_id_fkey" + foreignKeyName: "public_product_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" @@ -316,35 +313,35 @@ export type Database = { } Relationships: [ { - foreignKeyName: "product_record_inventory_id_fkey" + foreignKeyName: "public_product_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "inventory" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_inventory_id_fkey" + foreignKeyName: "public_product_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "low_quantity_notifications_user_id_view" referencedColumns: ["inventory_id"] }, { - foreignKeyName: "product_record_product_id_fkey" + foreignKeyName: "public_product_record_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "deleted_products" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_product_id_fkey" + foreignKeyName: "public_product_record_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "existing_products" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_product_id_fkey" + foreignKeyName: "public_product_record_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "product" @@ -402,21 +399,21 @@ export type Database = { } Relationships: [ { - foreignKeyName: "recipe_part_product_id_fkey" + foreignKeyName: "public_recipe_part_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "deleted_products" referencedColumns: ["id"] }, { - foreignKeyName: "recipe_part_product_id_fkey" + foreignKeyName: "public_recipe_part_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "existing_products" referencedColumns: ["id"] }, { - foreignKeyName: "recipe_part_product_id_fkey" + foreignKeyName: "public_recipe_part_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "product" @@ -458,28 +455,28 @@ export type Database = { } Relationships: [ { - foreignKeyName: "recipe_record_company_id_fkey" + foreignKeyName: "public_recipe_record_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" referencedColumns: ["id"] }, { - foreignKeyName: "recipe_record_inventory_id_fkey" + foreignKeyName: "public_recipe_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "inventory" referencedColumns: ["id"] }, { - foreignKeyName: "recipe_record_inventory_id_fkey" + foreignKeyName: "public_recipe_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "low_quantity_notifications_user_id_view" referencedColumns: ["inventory_id"] }, { - foreignKeyName: "recipe_record_recipe_id_fkey" + foreignKeyName: "public_recipe_record_recipe_id_fkey" columns: ["recipe_id"] isOneToOne: false referencedRelation: "recipe" @@ -514,14 +511,14 @@ export type Database = { } Relationships: [ { - foreignKeyName: "worker_company_id_fkey" + foreignKeyName: "public_worker_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" referencedColumns: ["id"] }, { - foreignKeyName: "worker_id_fkey" + foreignKeyName: "public_worker_id_fkey" columns: ["id"] isOneToOne: true referencedRelation: "users" @@ -543,7 +540,7 @@ export type Database = { } Relationships: [ { - foreignKeyName: "worker_company_id_fkey" + foreignKeyName: "public_worker_company_id_fkey" columns: ["id"] isOneToOne: false referencedRelation: "company" @@ -597,7 +594,7 @@ export type Database = { referencedColumns: ["id"] }, { - foreignKeyName: "product_company_id_fkey" + foreignKeyName: "public_product_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" @@ -651,7 +648,7 @@ export type Database = { referencedColumns: ["id"] }, { - foreignKeyName: "product_company_id_fkey" + foreignKeyName: "public_product_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" @@ -666,7 +663,7 @@ export type Database = { } Relationships: [ { - foreignKeyName: "worker_id_fkey" + foreignKeyName: "public_worker_id_fkey" columns: ["user_id"] isOneToOne: true referencedRelation: "users" @@ -686,21 +683,21 @@ export type Database = { } Relationships: [ { - foreignKeyName: "product_company_id_fkey" + foreignKeyName: "public_product_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_inventory_id_fkey" + foreignKeyName: "public_product_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "inventory" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_inventory_id_fkey" + foreignKeyName: "public_product_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "low_quantity_notifications_user_id_view" @@ -725,35 +722,35 @@ export type Database = { } Relationships: [ { - foreignKeyName: "product_record_inventory_id_fkey" + foreignKeyName: "public_product_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "inventory" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_inventory_id_fkey" + foreignKeyName: "public_product_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "low_quantity_notifications_user_id_view" referencedColumns: ["inventory_id"] }, { - foreignKeyName: "product_record_product_id_fkey" + foreignKeyName: "public_product_record_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "product" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_product_id_fkey" + foreignKeyName: "public_product_record_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "deleted_products" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_product_id_fkey" + foreignKeyName: "public_product_record_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "existing_products" @@ -772,14 +769,14 @@ export type Database = { } Relationships: [ { - foreignKeyName: "worker_company_id_fkey" + foreignKeyName: "public_worker_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" referencedColumns: ["id"] }, { - foreignKeyName: "worker_id_fkey" + foreignKeyName: "public_worker_id_fkey" columns: ["id"] isOneToOne: true referencedRelation: "users" @@ -1121,6 +1118,10 @@ export type Database = { updated_at: string }[] } + operation: { + Args: Record + Returns: string + } search: { Args: { prefix: string diff --git a/native/components/BarcodeScanner/index.tsx b/native/components/BarcodeScanner/index.tsx index 59fb73da..2765f574 100644 --- a/native/components/BarcodeScanner/index.tsx +++ b/native/components/BarcodeScanner/index.tsx @@ -64,7 +64,8 @@ export const BarcodeScanner = ({ // @ts-ignore navigation.navigate("RecordScreen", { id: inventoryId, - recordId: barcodeMappedToId, + productId: barcodeMappedToId.productId, + recordId: barcodeMappedToId.recordId, }); }; diff --git a/native/components/IDListCard.tsx b/native/components/IDListCard.tsx index 1fcde7f4..1ca56292 100644 --- a/native/components/IDListCard.tsx +++ b/native/components/IDListCard.tsx @@ -52,7 +52,7 @@ export const IDListCard = ({ }: IDListCardProps) => { const styles = useStyles(); const navigation = useNavigation(); - const { data: originalRecord } = useGetRecord(recordId); + const { data: originalRecord } = useGetRecord(inventoryId, productId); const { data: previousQuantity } = useGetPreviousRecordQuantity( inventoryId, productId @@ -67,7 +67,7 @@ export const IDListCard = ({ const quantityDelta = useMemo( () => getQuantityDelta( - form.watch(`product_records.${recordId}`)?.quantity, + form.watch(`product_records.${productId}`)?.quantity, wasQuantityChanged ? originalRecord?.quantity : previousQuantity ), [originalRecord?.quantity, previousQuantity, wasQuantityChanged] @@ -91,6 +91,7 @@ export const IDListCard = ({ // no need to specify, as they both contain the Record route, with these params navigation.navigate("RecordScreen", { recordId, + productId, id, }) } diff --git a/native/components/RecipeCard.tsx b/native/components/RecipeCard.tsx index cb2c2107..b4b443af 100644 --- a/native/components/RecipeCard.tsx +++ b/native/components/RecipeCard.tsx @@ -138,15 +138,11 @@ export const RecipeCard = ({ recordAndMultiplier.forEach((ram) => { if (ram.record_id == null || ram.multiplier == null) return; - const stringifiedRecordId = String(ram.record_id); - // the object may not exist, if the user did not navigate to the given RecordScreen // may change during the form refactor - const oldRecordValues = watch( - `product_records.${stringifiedRecordId}` - ) || { + const oldRecordValues = watch(`product_records.${ram.product_id}`) || { price_per_unit: null, - product_id: ram.product_id, + id: ram.record_id, quantity: ram.record_quantity_backup, }; @@ -163,7 +159,7 @@ export const RecipeCard = ({ } setValue( - `product_records.${stringifiedRecordId}.quantity`, + `product_records.${ram.product_id}.quantity`, newRecordQuantity, { shouldDirty: true, @@ -185,13 +181,13 @@ export const RecipeCard = ({ ) return; - const stringifiedRecordId = String(recordAndMultiplier[0].record_id); - // the object may not exist, if the user did not navigate to the given RecordScreen // may change during the form refactor - const oldRecordValues = watch(`product_records.${stringifiedRecordId}`) || { + const oldRecordValues = watch( + `product_records.${recordAndMultiplier[0].product_id}` + ) || { price_per_unit: null, - product_id: recordAndMultiplier[0].product_id, + id: recordAndMultiplier[0].record_id, quantity: recordAndMultiplier[0].record_quantity_backup, }; @@ -206,7 +202,7 @@ export const RecipeCard = ({ } setValue( - `product_records.${stringifiedRecordId}.quantity`, + `product_records.${recordAndMultiplier[0].product_id}.quantity`, newRecordQuantity, { shouldDirty: true, diff --git a/native/components/StockFormContext/DeliveryFormContextProvider.tsx b/native/components/StockFormContext/DeliveryFormContextProvider.tsx index b65a28f3..a3ef3a11 100644 --- a/native/components/StockFormContext/DeliveryFormContextProvider.tsx +++ b/native/components/StockFormContext/DeliveryFormContextProvider.tsx @@ -1,5 +1,6 @@ import { useEffect } from "react"; import { FormProvider, useForm } from "react-hook-form"; +// import { useCreateProductRecords } from "../../db/hooks/useCreateProductRecords"; import { documentScannerSelector } from "../../redux/documentScannerSlice"; import { useAppSelector } from "../../redux/hooks"; import { StockForm } from "./types"; @@ -7,6 +8,7 @@ import { StockForm } from "./types"; export const DeliveryFormContextProvider = ({ children, }: { + inventoryId: number; children: React.ReactNode; }) => { const processedInvoice = useAppSelector( @@ -19,44 +21,44 @@ export const DeliveryFormContextProvider = ({ const dirtyFields = methods.formState.dirtyFields; + // const { mutate: createProductRecords } = useCreateProductRecords( + // +inventoryId + // ); + useEffect(() => { if (!processedInvoice) return; const matchedProductRecords = processedInvoice.matchedProductRecords; for (const record_id in matchedProductRecords) { + const product_id = matchedProductRecords[record_id].product_id; if (record_id in dirtyFields) continue; methods.setValue( - `product_records.${record_id}.quantity`, + `product_records.${product_id}.quantity`, matchedProductRecords[record_id].quantity, - { - shouldDirty: true, - } + { shouldDirty: true } ); methods.setValue( - `product_records.${record_id}.price_per_unit`, + `product_records.${product_id}.price_per_unit`, matchedProductRecords[record_id].price_per_unit, - { - shouldDirty: true, - } + { shouldDirty: true } ); } }, [processedInvoice]); useEffect(() => { - const valuesForForm = newMatched; - - for (const record_id in valuesForForm) { + for (const record_id in newMatched) { + const product_id = newMatched[record_id].product_id; if (record_id in dirtyFields) continue; methods.setValue( - `product_records.${record_id}.quantity`, - valuesForForm[record_id].quantity, + `product_records.${product_id}.quantity`, + newMatched[record_id].quantity, { shouldDirty: true, } ); methods.setValue( - `product_records.${record_id}.price_per_unit`, - valuesForForm[record_id].price_per_unit, + `product_records.${product_id}.price_per_unit`, + newMatched[record_id].price_per_unit, { shouldDirty: true, } diff --git a/native/components/StockFormContext/types.ts b/native/components/StockFormContext/types.ts index c2875b18..b52e0f02 100644 --- a/native/components/StockFormContext/types.ts +++ b/native/components/StockFormContext/types.ts @@ -1,8 +1,9 @@ export type StockForm = { product_records: { - [record_id: string]: { + [product_id: string]: { + id: number | null; + // product_id: number; quantity: number; - product_id: number; price_per_unit: number | null; }; }; diff --git a/native/db/hooks/useGetRecord.ts b/native/db/hooks/useGetRecord.ts index fa005326..131320bc 100644 --- a/native/db/hooks/useGetRecord.ts +++ b/native/db/hooks/useGetRecord.ts @@ -2,21 +2,26 @@ import { useQuery } from "@tanstack/react-query"; import { supabase } from "../supabase"; -export type UseGetRecordQueryKey = ["product_record", recordId: number]; +export type UseGetRecordQueryKey = [ + "product_record", + inventoryId: number, + productId: number +]; -const getRecord = async (recordId: number) => { +const getRecord = async (inventoryId: number, productId: number) => { const { data, error } = await supabase .from("record_view") .select() - .eq("id", recordId) + .eq("inventory_id", inventoryId) + .eq("product_id", productId) .single(); if (error) throw new Error(error.message); return data; }; -export const useGetRecord = (recordId: number) => { - const query = useQuery(["product_record", recordId], () => - getRecord(recordId) +export const useGetRecord = (inventoryId: number, productId: number) => { + const query = useQuery(["product_record", inventoryId, productId], () => + getRecord(inventoryId, productId) ); return query; }; diff --git a/native/db/hooks/useListBarcodes.ts b/native/db/hooks/useListBarcodes.ts index e17c1d14..92c465d8 100644 --- a/native/db/hooks/useListBarcodes.ts +++ b/native/db/hooks/useListBarcodes.ts @@ -5,13 +5,16 @@ import { supabase } from "../supabase"; import { ProductRecordView } from "../types"; export type BarcodeList = { - [barcode: string]: ProductRecordView["id"]; + [barcode: string]: { + recordId: ProductRecordView["id"]; + productId: ProductRecordView["product_id"]; + }; }; const barcodeList = async (inventory_id: number) => { const res = await supabase .from("record_view") - .select("id, barcode") + .select("id, barcode, product_id") .eq("inventory_id", inventory_id); const data = res.data; @@ -22,7 +25,7 @@ const barcodeList = async (inventory_id: number) => { const barcode: string = item.barcode as string; if (barcode) { - result[barcode] = item.id; + result[barcode] = { recordId: item.id, productId: item.product_id }; } return result; }, {} as BarcodeList); diff --git a/native/db/hooks/useRecordPanel.tsx b/native/db/hooks/useRecordPanel.tsx index b0a5ba0c..003d7cdd 100644 --- a/native/db/hooks/useRecordPanel.tsx +++ b/native/db/hooks/useRecordPanel.tsx @@ -11,8 +11,14 @@ type Form = StockForm; * * Submitting the form is done in a separate hook. */ -export const useRecordPanel = (recordId: number) => { - const recordResult = useGetRecord(recordId); +export const useRecordPanel = ({ + inventoryId, + productId, +}: { + inventoryId: number; + productId: number; +}) => { + const recordResult = useGetRecord(inventoryId, productId); const form = useFormContext

(); if (!form) throw new Error("Missing form context"); @@ -22,62 +28,58 @@ export const useRecordPanel = (recordId: number) => { // guard would be cleaner but for some reason it doesn't work here // no idea why if (record?.product_id && record?.quantity) { - const shouldAddMissingValues = - // is nullish - form.getValues().product_records[recordId.toString()]?.product_id == - null; + const productId = record.product_id; + // const shouldAddMissingValues = + // // is nullish + // form.getValues().product_records[recordId.toString()]?.product_id == + // null; - if (shouldAddMissingValues) { - form.setValue( - `product_records.${recordId.toString()}.product_id`, - record.product_id - ); - } + // if (shouldAddMissingValues) { + // form.setValue( + // `product_records.${recordId.toString()}.product_id`, + // record.product_id + // ); + // } const shouldUpdateQuantity = - !form.getFieldState(`product_records.${recordId}.quantity`).isDirty || + !form.getFieldState(`product_records.${productId}.quantity`).isDirty || record.quantity !== - form.getValues().product_records[recordId.toString()]?.quantity; + form.getValues().product_records[productId.toString()]?.quantity; if (shouldUpdateQuantity) { - form.setValue(`product_records.${recordId}.quantity`, record.quantity); + form.setValue(`product_records.${productId}.quantity`, record.quantity); } const shouldUpdatePrice = - !form.getFieldState(`product_records.${recordId}.price_per_unit`) + !form.getFieldState(`product_records.${productId}.price_per_unit`) .isDirty || record.price_per_unit !== - form.getValues().product_records[recordId.toString()]?.price_per_unit; + form.getValues().product_records[productId.toString()] + ?.price_per_unit; if (shouldUpdatePrice) { form.setValue( - `product_records.${recordId}.price_per_unit`, + `product_records.${productId}.price_per_unit`, record.price_per_unit ); } } - }, [ - recordId, - record?.product_id, - record?.quantity, - record?.price_per_unit, - isSuccess, - ]); + }, [record?.product_id, record?.quantity, record?.price_per_unit, isSuccess]); - const quantity = form.watch(`product_records.${recordId}.quantity`) ?? 0; - const price = form.watch(`product_records.${recordId}.price_per_unit`) ?? 0; + const quantity = form.watch(`product_records.${productId}.quantity`) ?? 0; + const price = form.watch(`product_records.${productId}.price_per_unit`) ?? 0; const setQuantity = useCallback( (quantity: number) => { if (quantity < 0) return; const roundedQuantity = roundFloat(quantity); // dot notation is more performant - form.setValue(`product_records.${recordId}.quantity`, roundedQuantity, { + form.setValue(`product_records.${productId}.quantity`, roundedQuantity, { shouldDirty: true, shouldTouch: true, }); return; }, - [form, recordId, quantity] + [form, productId, quantity] ); const setPrice = useCallback( @@ -86,7 +88,7 @@ export const useRecordPanel = (recordId: number) => { const roundedPrice = roundFloat(price); // dot notation is more performant form.setValue( - `product_records.${recordId}.price_per_unit`, + `product_records.${productId}.price_per_unit`, roundedPrice, { shouldDirty: true, @@ -95,7 +97,7 @@ export const useRecordPanel = (recordId: number) => { ); return; }, - [form, recordId, price] + [form, productId, price] ); const stepperFunction = useCallback( @@ -105,7 +107,7 @@ export const useRecordPanel = (recordId: number) => { if (quantity + step < 0) { form.setValue( // dot notation is more performant - `product_records.${recordId}.quantity`, + `product_records.${productId}.quantity`, 0, { shouldDirty: true, @@ -117,7 +119,7 @@ export const useRecordPanel = (recordId: number) => { const roundedQuantityStep = roundFloat(quantity + step); form.setValue( // dot notation is more performant - `product_records.${recordId}.quantity`, + `product_records.${productId}.quantity`, roundedQuantityStep, { shouldDirty: true, @@ -128,7 +130,7 @@ export const useRecordPanel = (recordId: number) => { }, step, } as const), - [quantity, recordId, form] + [quantity, productId, form] ); if (!isSuccess || !record || !record.steps) diff --git a/native/db/hooks/useUpdateBarcode.tsx b/native/db/hooks/useUpdateBarcode.tsx index 88ad508c..4e48e809 100644 --- a/native/db/hooks/useUpdateBarcode.tsx +++ b/native/db/hooks/useUpdateBarcode.tsx @@ -64,7 +64,11 @@ export const useInsertBarcode = (inventory_id: number) => { ["barcodeList", inventory_id], (old) => { if (!old) return; - return { ...old, [new_barcode]: product_id }; + return { + ...old, + // TODO: check if null recordId here doesn't break it + [new_barcode]: { productId: product_id, recordId: null }, + }; } ); return { previousBarcodesList }; diff --git a/native/db/hooks/useUpdateRecords.ts b/native/db/hooks/useUpdateRecords.ts index 5bb53da0..d5bde05b 100644 --- a/native/db/hooks/useUpdateRecords.ts +++ b/native/db/hooks/useUpdateRecords.ts @@ -3,7 +3,7 @@ import { useMutation, useQueryClient } from "@tanstack/react-query"; import { StockForm } from "../../components/StockFormContext/types"; import { supabase } from "../supabase"; -const updateRecordsForm = async (form: StockForm) => { +const updateRecordsForm = async (form: StockForm, inventoryId: number) => { if ( Object.keys(form.product_records).length && Object.keys(form.recipe_records).length @@ -14,11 +14,12 @@ const updateRecordsForm = async (form: StockForm) => { ( await Promise.all( Object.entries(form.product_records).map( - ([record_id, { quantity, price_per_unit }]) => { + ([product_id, { quantity, price_per_unit }]) => { return supabase .from("product_record") .update({ quantity, price_per_unit }) - .eq("id", Number(record_id)) + .eq("inventory_id", inventoryId) + .eq("product_id", product_id) .select() .single(); } @@ -46,15 +47,15 @@ export const useUpdateRecords = (inventoryId: number) => { const queryClient = useQueryClient(); return useMutation({ - mutationFn: async (form) => await updateRecordsForm(form), + mutationFn: async (form) => await updateRecordsForm(form, inventoryId), onMutate: async (form: StockForm) => { const recordsIterable = Object.entries(form.product_records); await Promise.all( - recordsIterable.map(([recordId, _record]) => { - queryClient.cancelQueries(["product_record", recordId]); + recordsIterable.map(([productId, _record]) => { + queryClient.cancelQueries(["product_record", inventoryId, productId]); queryClient.setQueryData( - ["product_record", recordId], - (old: any) => ({ ...old, ...form.product_records[recordId] }) + ["product_record", inventoryId, productId], + (old: any) => ({ ...old, ...form.product_records[productId] }) ); }) ); @@ -85,12 +86,15 @@ export const useUpdateRecords = (inventoryId: number) => { ]); await Promise.all( data.products.map((updatedRecord) => { - const recordId = updatedRecord?.id; - if (!recordId) return; - queryClient.invalidateQueries(["product_record", recordId], { - exact: true, - refetchType: "all", - }); + const productId = updatedRecord?.product_id; + if (!productId) return; + queryClient.invalidateQueries( + ["product_record", inventoryId, productId], + { + exact: true, + refetchType: "all", + } + ); }) ); } else if (data?.recipes) { diff --git a/native/db/types/generated.ts b/native/db/types/generated.ts index 5737c00a..20b4eea9 100644 --- a/native/db/types/generated.ts +++ b/native/db/types/generated.ts @@ -135,7 +135,7 @@ export type Database = { }; Relationships: [ { - foreignKeyName: "inventory_company_id_fkey"; + foreignKeyName: "public_inventory_company_id_fkey"; columns: ["company_id"]; isOneToOne: false; referencedRelation: "company"; @@ -147,21 +147,18 @@ export type Database = { Row: { alias: string; company_id: number; - id: number; product_id: number | null; recipe_id: number | null; }; Insert: { alias: string; company_id: number; - id?: number; product_id?: number | null; recipe_id?: number | null; }; Update: { alias?: string; company_id?: number; - id?: number; product_id?: number | null; recipe_id?: number | null; }; @@ -249,7 +246,7 @@ export type Database = { referencedColumns: ["id"]; }, { - foreignKeyName: "product_company_id_fkey"; + foreignKeyName: "public_product_company_id_fkey"; columns: ["company_id"]; isOneToOne: false; referencedRelation: "company"; @@ -316,35 +313,35 @@ export type Database = { }; Relationships: [ { - foreignKeyName: "product_record_inventory_id_fkey"; + foreignKeyName: "public_product_record_inventory_id_fkey"; columns: ["inventory_id"]; isOneToOne: false; referencedRelation: "inventory"; referencedColumns: ["id"]; }, { - foreignKeyName: "product_record_inventory_id_fkey"; + foreignKeyName: "public_product_record_inventory_id_fkey"; columns: ["inventory_id"]; isOneToOne: false; referencedRelation: "low_quantity_notifications_user_id_view"; referencedColumns: ["inventory_id"]; }, { - foreignKeyName: "product_record_product_id_fkey"; + foreignKeyName: "public_product_record_product_id_fkey"; columns: ["product_id"]; isOneToOne: false; referencedRelation: "deleted_products"; referencedColumns: ["id"]; }, { - foreignKeyName: "product_record_product_id_fkey"; + foreignKeyName: "public_product_record_product_id_fkey"; columns: ["product_id"]; isOneToOne: false; referencedRelation: "existing_products"; referencedColumns: ["id"]; }, { - foreignKeyName: "product_record_product_id_fkey"; + foreignKeyName: "public_product_record_product_id_fkey"; columns: ["product_id"]; isOneToOne: false; referencedRelation: "product"; @@ -402,21 +399,21 @@ export type Database = { }; Relationships: [ { - foreignKeyName: "recipe_part_product_id_fkey"; + foreignKeyName: "public_recipe_part_product_id_fkey"; columns: ["product_id"]; isOneToOne: false; referencedRelation: "deleted_products"; referencedColumns: ["id"]; }, { - foreignKeyName: "recipe_part_product_id_fkey"; + foreignKeyName: "public_recipe_part_product_id_fkey"; columns: ["product_id"]; isOneToOne: false; referencedRelation: "existing_products"; referencedColumns: ["id"]; }, { - foreignKeyName: "recipe_part_product_id_fkey"; + foreignKeyName: "public_recipe_part_product_id_fkey"; columns: ["product_id"]; isOneToOne: false; referencedRelation: "product"; @@ -458,28 +455,28 @@ export type Database = { }; Relationships: [ { - foreignKeyName: "recipe_record_company_id_fkey"; + foreignKeyName: "public_recipe_record_company_id_fkey"; columns: ["company_id"]; isOneToOne: false; referencedRelation: "company"; referencedColumns: ["id"]; }, { - foreignKeyName: "recipe_record_inventory_id_fkey"; + foreignKeyName: "public_recipe_record_inventory_id_fkey"; columns: ["inventory_id"]; isOneToOne: false; referencedRelation: "inventory"; referencedColumns: ["id"]; }, { - foreignKeyName: "recipe_record_inventory_id_fkey"; + foreignKeyName: "public_recipe_record_inventory_id_fkey"; columns: ["inventory_id"]; isOneToOne: false; referencedRelation: "low_quantity_notifications_user_id_view"; referencedColumns: ["inventory_id"]; }, { - foreignKeyName: "recipe_record_recipe_id_fkey"; + foreignKeyName: "public_recipe_record_recipe_id_fkey"; columns: ["recipe_id"]; isOneToOne: false; referencedRelation: "recipe"; @@ -514,14 +511,14 @@ export type Database = { }; Relationships: [ { - foreignKeyName: "worker_company_id_fkey"; + foreignKeyName: "public_worker_company_id_fkey"; columns: ["company_id"]; isOneToOne: false; referencedRelation: "company"; referencedColumns: ["id"]; }, { - foreignKeyName: "worker_id_fkey"; + foreignKeyName: "public_worker_id_fkey"; columns: ["id"]; isOneToOne: true; referencedRelation: "users"; @@ -543,7 +540,7 @@ export type Database = { }; Relationships: [ { - foreignKeyName: "worker_company_id_fkey"; + foreignKeyName: "public_worker_company_id_fkey"; columns: ["id"]; isOneToOne: false; referencedRelation: "company"; @@ -597,7 +594,7 @@ export type Database = { referencedColumns: ["id"]; }, { - foreignKeyName: "product_company_id_fkey"; + foreignKeyName: "public_product_company_id_fkey"; columns: ["company_id"]; isOneToOne: false; referencedRelation: "company"; @@ -651,7 +648,7 @@ export type Database = { referencedColumns: ["id"]; }, { - foreignKeyName: "product_company_id_fkey"; + foreignKeyName: "public_product_company_id_fkey"; columns: ["company_id"]; isOneToOne: false; referencedRelation: "company"; @@ -666,7 +663,7 @@ export type Database = { }; Relationships: [ { - foreignKeyName: "worker_id_fkey"; + foreignKeyName: "public_worker_id_fkey"; columns: ["user_id"]; isOneToOne: true; referencedRelation: "users"; @@ -686,21 +683,21 @@ export type Database = { }; Relationships: [ { - foreignKeyName: "product_company_id_fkey"; + foreignKeyName: "public_product_company_id_fkey"; columns: ["company_id"]; isOneToOne: false; referencedRelation: "company"; referencedColumns: ["id"]; }, { - foreignKeyName: "product_record_inventory_id_fkey"; + foreignKeyName: "public_product_record_inventory_id_fkey"; columns: ["inventory_id"]; isOneToOne: false; referencedRelation: "inventory"; referencedColumns: ["id"]; }, { - foreignKeyName: "product_record_inventory_id_fkey"; + foreignKeyName: "public_product_record_inventory_id_fkey"; columns: ["inventory_id"]; isOneToOne: false; referencedRelation: "low_quantity_notifications_user_id_view"; @@ -725,35 +722,35 @@ export type Database = { }; Relationships: [ { - foreignKeyName: "product_record_inventory_id_fkey"; + foreignKeyName: "public_product_record_inventory_id_fkey"; columns: ["inventory_id"]; isOneToOne: false; referencedRelation: "inventory"; referencedColumns: ["id"]; }, { - foreignKeyName: "product_record_inventory_id_fkey"; + foreignKeyName: "public_product_record_inventory_id_fkey"; columns: ["inventory_id"]; isOneToOne: false; referencedRelation: "low_quantity_notifications_user_id_view"; referencedColumns: ["inventory_id"]; }, { - foreignKeyName: "product_record_product_id_fkey"; + foreignKeyName: "public_product_record_product_id_fkey"; columns: ["product_id"]; isOneToOne: false; referencedRelation: "product"; referencedColumns: ["id"]; }, { - foreignKeyName: "product_record_product_id_fkey"; + foreignKeyName: "public_product_record_product_id_fkey"; columns: ["product_id"]; isOneToOne: false; referencedRelation: "deleted_products"; referencedColumns: ["id"]; }, { - foreignKeyName: "product_record_product_id_fkey"; + foreignKeyName: "public_product_record_product_id_fkey"; columns: ["product_id"]; isOneToOne: false; referencedRelation: "existing_products"; @@ -772,14 +769,14 @@ export type Database = { }; Relationships: [ { - foreignKeyName: "worker_company_id_fkey"; + foreignKeyName: "public_worker_company_id_fkey"; columns: ["company_id"]; isOneToOne: false; referencedRelation: "company"; referencedColumns: ["id"]; }, { - foreignKeyName: "worker_id_fkey"; + foreignKeyName: "public_worker_id_fkey"; columns: ["id"]; isOneToOne: true; referencedRelation: "users"; @@ -1121,6 +1118,10 @@ export type Database = { updated_at: string; }[]; }; + operation: { + Args: Record; + Returns: string; + }; search: { Args: { prefix: string; diff --git a/native/navigation/BottomTabNavigation.tsx b/native/navigation/BottomTabNavigation.tsx index b541481f..6f890007 100644 --- a/native/navigation/BottomTabNavigation.tsx +++ b/native/navigation/BottomTabNavigation.tsx @@ -58,7 +58,7 @@ const DeliveryStackNavigator = ({ route }: DeliveryTabProps) => { ); return ( - + {uncategorizedRecordList?.map((record) => - record ? ( + record && record.product_id ? ( - record ? ( + record && record.product_id ? ( { if (processedInvoice) { let newMatched: typeof processedInvoice.matchedProductRecords = {}; - for (const name in processedInvoice.unmatchedRows) { - const { price_per_unit, quantity } = - processedInvoice.unmatchedRows[name]; + for (const row of processedInvoice.unmatchedRows) { + const { price_per_unit, quantity, name } = row; + const alias = resolvedAliases?.find((alias) => alias.alias === name); if (!alias || !alias.product_id) continue; const { product_id } = alias; @@ -121,6 +121,7 @@ export const IdentifyAliasesScreenInvoice = () => { newMatched[record.id] = { price_per_unit, quantity, product_id }; } + console.log({ newMatched, resolvedAliases }); dispatch(documentScannerAction.SET_NEW_MATCHED({ newMatched })); } dispatch(documentScannerAction.RESET_PROCESSED_INVOICE()); diff --git a/native/screens/InventoryTabScreen.tsx b/native/screens/InventoryTabScreen.tsx index 25485919..d6e4f4b1 100644 --- a/native/screens/InventoryTabScreen.tsx +++ b/native/screens/InventoryTabScreen.tsx @@ -158,7 +158,7 @@ export default function InventoryTabScreen({ /> ))} {uncategorizedRecordList?.map((record) => - record ? ( + record && record.product_id ? ( - record ? ( + record && record.product_id ? ( - prevRecordId === undefined + prevRecordId === undefined || prevProductId === undefined ? () => {} : () => { !isFirst && - navigate("RecordScreen", { id, recordId: prevRecordId, isDelivery }); + navigate("RecordScreen", { + id, + recordId: prevRecordId, + isDelivery, + productId: prevProductId, + }); }; const navigateToNextRecord = ( navigate: RecordScreenNavigationProp["navigate"], isDelivery: RecordScreenProps["route"]["params"]["isDelivery"], id: number, - prevRecordId: number | undefined, + nextProductId: number | undefined, + nextRecordId: number | undefined, isLast: boolean ) => - prevRecordId === undefined + nextRecordId === undefined || nextProductId === undefined ? () => {} : () => { !isLast && - navigate("RecordScreen", { id, recordId: prevRecordId, isDelivery }); + navigate("RecordScreen", { + id, + recordId: nextRecordId, + isDelivery, + productId: nextProductId, + }); }; export function RecordScreen({ route, navigation }: RecordScreenProps) { const styles = useStyles(); - const { id, recordId, isDelivery } = route.params; + const { id: inventoryId, recordId, isDelivery, productId } = route.params; - const recordPanel = useRecordPanel(recordId); + const recordPanel = useRecordPanel({ inventoryId, productId }); const isLoading = recordPanel?.isLoading; const isSuccess = recordPanel?.isSuccess; const record = recordPanel?.data; - const { data: inventoryName } = useGetInventoryName(+id); - const { data: recordIds } = useListProductRecordIds(id); + const { data: inventoryName } = useGetInventoryName(+inventoryId); + const { data: recordIds } = useListProductRecordIds(inventoryId); + // const { data: productRecords } = useListProductRecords(inventoryId); const { data: previousQuantity } = useGetPreviousRecordQuantity( - id, + inventoryId, record?.product_id ); - const { isFirst, isLast, nextRecordId, prevRecordId } = useRecordPagination( + // TODO: The pagination should respect display order and categories, not go by id + const { isFirst, isLast, nextRecord, prevRecord } = useRecordPagination( recordId, recordIds ); @@ -131,7 +145,8 @@ export function RecordScreen({ route, navigation }: RecordScreenProps) { isLoading || !record?.steps || !record?.inventory_id || - !record?.name + !record?.name || + !record?.product_id ) return ( @@ -221,7 +236,8 @@ export function RecordScreen({ route, navigation }: RecordScreenProps) { navigation.navigate, isDelivery, record.inventory_id, - prevRecordId, + prevRecord?.product_id, + prevRecord?.id, isFirst )} > @@ -265,7 +281,8 @@ export function RecordScreen({ route, navigation }: RecordScreenProps) { navigation.navigate, isDelivery, record.inventory_id, - nextRecordId, + nextRecord?.product_id, + nextRecord?.id, isLast )} > diff --git a/native/utils/useRecordPagination.tsx b/native/utils/useRecordPagination.tsx index 7f90e78d..9da76b85 100644 --- a/native/utils/useRecordPagination.tsx +++ b/native/utils/useRecordPagination.tsx @@ -1,35 +1,37 @@ import { useListProductRecordIds } from "../db/hooks/useListProductRecordIds"; +type LocalRecordType = ReturnType< + typeof useListProductRecordIds +>["data"][number]; + export const useRecordPagination = ( recordId: number | undefined, - recordIds: ReturnType["data"] + records: LocalRecordType[] ): { - nextRecordId: number | undefined; - prevRecordId: number | undefined; + nextRecord: LocalRecordType | undefined; + prevRecord: LocalRecordType | undefined; isLast: boolean; isFirst: boolean; } => { - if (!recordIds || recordIds.length === 0) { + if (!records || records.length === 0) { return { - nextRecordId: undefined, - prevRecordId: undefined, + nextRecord: undefined, + prevRecord: undefined, isLast: false, isFirst: false, }; } - const numberRecordIds: number[] = recordIds.map((r) => r.id); - - const index = numberRecordIds.findIndex((id) => id === recordId); - const isLast = index === numberRecordIds.length - 1; + const index = records.findIndex((r) => r.id === recordId); + const isLast = index === records.length - 1; const isFirst = index === 0; - const nextRecordId = isLast ? undefined : numberRecordIds[index + 1]; - const prevRecordId = isFirst ? undefined : numberRecordIds[index - 1]; + const nextRecord = isLast ? undefined : records[index + 1]; + const prevRecord = isFirst ? undefined : records[index - 1]; return { - nextRecordId, - prevRecordId, + nextRecord, + prevRecord, isLast, isFirst, }; diff --git a/supabase/functions/_shared/database.types.ts b/supabase/functions/_shared/database.types.ts index 21d13d4b..fa77f5d5 100644 --- a/supabase/functions/_shared/database.types.ts +++ b/supabase/functions/_shared/database.types.ts @@ -135,7 +135,7 @@ export type Database = { } Relationships: [ { - foreignKeyName: "inventory_company_id_fkey" + foreignKeyName: "public_inventory_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" @@ -147,21 +147,18 @@ export type Database = { Row: { alias: string company_id: number - id: number product_id: number | null recipe_id: number | null } Insert: { alias: string company_id: number - id?: number product_id?: number | null recipe_id?: number | null } Update: { alias?: string company_id?: number - id?: number product_id?: number | null recipe_id?: number | null } @@ -249,7 +246,7 @@ export type Database = { referencedColumns: ["id"] }, { - foreignKeyName: "product_company_id_fkey" + foreignKeyName: "public_product_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" @@ -316,35 +313,35 @@ export type Database = { } Relationships: [ { - foreignKeyName: "product_record_inventory_id_fkey" + foreignKeyName: "public_product_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "inventory" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_inventory_id_fkey" + foreignKeyName: "public_product_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "low_quantity_notifications_user_id_view" referencedColumns: ["inventory_id"] }, { - foreignKeyName: "product_record_product_id_fkey" + foreignKeyName: "public_product_record_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "deleted_products" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_product_id_fkey" + foreignKeyName: "public_product_record_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "existing_products" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_product_id_fkey" + foreignKeyName: "public_product_record_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "product" @@ -402,21 +399,21 @@ export type Database = { } Relationships: [ { - foreignKeyName: "recipe_part_product_id_fkey" + foreignKeyName: "public_recipe_part_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "deleted_products" referencedColumns: ["id"] }, { - foreignKeyName: "recipe_part_product_id_fkey" + foreignKeyName: "public_recipe_part_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "existing_products" referencedColumns: ["id"] }, { - foreignKeyName: "recipe_part_product_id_fkey" + foreignKeyName: "public_recipe_part_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "product" @@ -458,28 +455,28 @@ export type Database = { } Relationships: [ { - foreignKeyName: "recipe_record_company_id_fkey" + foreignKeyName: "public_recipe_record_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" referencedColumns: ["id"] }, { - foreignKeyName: "recipe_record_inventory_id_fkey" + foreignKeyName: "public_recipe_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "inventory" referencedColumns: ["id"] }, { - foreignKeyName: "recipe_record_inventory_id_fkey" + foreignKeyName: "public_recipe_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "low_quantity_notifications_user_id_view" referencedColumns: ["inventory_id"] }, { - foreignKeyName: "recipe_record_recipe_id_fkey" + foreignKeyName: "public_recipe_record_recipe_id_fkey" columns: ["recipe_id"] isOneToOne: false referencedRelation: "recipe" @@ -514,14 +511,14 @@ export type Database = { } Relationships: [ { - foreignKeyName: "worker_company_id_fkey" + foreignKeyName: "public_worker_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" referencedColumns: ["id"] }, { - foreignKeyName: "worker_id_fkey" + foreignKeyName: "public_worker_id_fkey" columns: ["id"] isOneToOne: true referencedRelation: "users" @@ -543,7 +540,7 @@ export type Database = { } Relationships: [ { - foreignKeyName: "worker_company_id_fkey" + foreignKeyName: "public_worker_company_id_fkey" columns: ["id"] isOneToOne: false referencedRelation: "company" @@ -597,7 +594,7 @@ export type Database = { referencedColumns: ["id"] }, { - foreignKeyName: "product_company_id_fkey" + foreignKeyName: "public_product_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" @@ -651,7 +648,7 @@ export type Database = { referencedColumns: ["id"] }, { - foreignKeyName: "product_company_id_fkey" + foreignKeyName: "public_product_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" @@ -666,7 +663,7 @@ export type Database = { } Relationships: [ { - foreignKeyName: "worker_id_fkey" + foreignKeyName: "public_worker_id_fkey" columns: ["user_id"] isOneToOne: true referencedRelation: "users" @@ -686,21 +683,21 @@ export type Database = { } Relationships: [ { - foreignKeyName: "product_company_id_fkey" + foreignKeyName: "public_product_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_inventory_id_fkey" + foreignKeyName: "public_product_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "inventory" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_inventory_id_fkey" + foreignKeyName: "public_product_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "low_quantity_notifications_user_id_view" @@ -725,35 +722,35 @@ export type Database = { } Relationships: [ { - foreignKeyName: "product_record_inventory_id_fkey" + foreignKeyName: "public_product_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "inventory" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_inventory_id_fkey" + foreignKeyName: "public_product_record_inventory_id_fkey" columns: ["inventory_id"] isOneToOne: false referencedRelation: "low_quantity_notifications_user_id_view" referencedColumns: ["inventory_id"] }, { - foreignKeyName: "product_record_product_id_fkey" + foreignKeyName: "public_product_record_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "product" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_product_id_fkey" + foreignKeyName: "public_product_record_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "deleted_products" referencedColumns: ["id"] }, { - foreignKeyName: "product_record_product_id_fkey" + foreignKeyName: "public_product_record_product_id_fkey" columns: ["product_id"] isOneToOne: false referencedRelation: "existing_products" @@ -772,14 +769,14 @@ export type Database = { } Relationships: [ { - foreignKeyName: "worker_company_id_fkey" + foreignKeyName: "public_worker_company_id_fkey" columns: ["company_id"] isOneToOne: false referencedRelation: "company" referencedColumns: ["id"] }, { - foreignKeyName: "worker_id_fkey" + foreignKeyName: "public_worker_id_fkey" columns: ["id"] isOneToOne: true referencedRelation: "users" @@ -1121,6 +1118,10 @@ export type Database = { updated_at: string }[] } + operation: { + Args: Record + Returns: string + } search: { Args: { prefix: string From a824a2498c7f80a3879d3e4fa72afbd4e3584ff3 Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Sat, 13 Jul 2024 12:23:36 +0200 Subject: [PATCH 09/23] new records found in invoice add --- .../DeliveryFormContextProvider.tsx | 52 ++++++++++- native/db/hooks/useGetProduct.ts | 20 +++++ native/db/hooks/useListProductsCategorized.ts | 35 ++++++++ native/db/hooks/useRecordPanel.tsx | 62 +++---------- native/db/hooks/useUpdateRecords.ts | 25 ++++-- native/screens/DeliveryTabScreen.tsx | 88 +++++++++++-------- native/screens/RecordScreen/index.tsx | 24 ++--- 7 files changed, 199 insertions(+), 107 deletions(-) create mode 100644 native/db/hooks/useGetProduct.ts create mode 100644 native/db/hooks/useListProductsCategorized.ts diff --git a/native/components/StockFormContext/DeliveryFormContextProvider.tsx b/native/components/StockFormContext/DeliveryFormContextProvider.tsx index a3ef3a11..4dde7e86 100644 --- a/native/components/StockFormContext/DeliveryFormContextProvider.tsx +++ b/native/components/StockFormContext/DeliveryFormContextProvider.tsx @@ -1,11 +1,14 @@ import { useEffect } from "react"; import { FormProvider, useForm } from "react-hook-form"; // import { useCreateProductRecords } from "../../db/hooks/useCreateProductRecords"; +import { useListProductRecords } from "../../db"; +import { useListRecipeRecords } from "../../db/hooks/useListRecipeRecords"; import { documentScannerSelector } from "../../redux/documentScannerSlice"; import { useAppSelector } from "../../redux/hooks"; import { StockForm } from "./types"; export const DeliveryFormContextProvider = ({ + inventoryId, children, }: { inventoryId: number; @@ -14,11 +17,40 @@ export const DeliveryFormContextProvider = ({ const processedInvoice = useAppSelector( documentScannerSelector.selectProcessedInvoice ); - const newMatched = useAppSelector(documentScannerSelector.selectNewMatched); + const { data: productRecordsRaw } = useListProductRecords(inventoryId); + + const { data: recipeRecordsRaw } = useListRecipeRecords(inventoryId); + const methods = useForm({ defaultValues: { product_records: {}, recipe_records: {} }, }); + useEffect(() => { + const product_records: StockForm["product_records"] = productRecordsRaw + ? Object.fromEntries( + productRecordsRaw.map((record) => [ + record.product_id, + { + id: record.id, + quantity: record.quantity, + price_per_unit: record.price_per_unit, + }, + ]) + ) + : {}; + const recipe_records: StockForm["recipe_records"] = recipeRecordsRaw + ? Object.fromEntries( + recipeRecordsRaw.map((record) => [ + record.id, + { quantity: record.quantity, recipe_id: record.recipe_id }, + ]) + ) + : {}; + methods.reset({ product_records, recipe_records }); + }, [productRecordsRaw]); + + const newMatched = useAppSelector(documentScannerSelector.selectNewMatched); + const dirtyFields = methods.formState.dirtyFields; // const { mutate: createProductRecords } = useCreateProductRecords( @@ -43,6 +75,24 @@ export const DeliveryFormContextProvider = ({ { shouldDirty: true } ); } + + const matchedProductsNotInInventory = + processedInvoice.matchedProductsNotInInventory; + + for (const product_id in matchedProductsNotInInventory) { + // if (record_id in dirtyFields) continue; + methods.setValue( + `product_records.${product_id}.quantity`, + matchedProductsNotInInventory[product_id].quantity, + { shouldDirty: true } + ); + methods.setValue( + `product_records.${product_id}.price_per_unit`, + matchedProductsNotInInventory[product_id].price_per_unit, + { shouldDirty: true } + ); + } + // console.log(methods.getValues()); }, [processedInvoice]); useEffect(() => { diff --git a/native/db/hooks/useGetProduct.ts b/native/db/hooks/useGetProduct.ts new file mode 100644 index 00000000..4424e3bc --- /dev/null +++ b/native/db/hooks/useGetProduct.ts @@ -0,0 +1,20 @@ +import { useQuery } from "@tanstack/react-query"; + +import { supabase } from "../supabase"; + +export type UseGetProductQueryKey = ["product", productId: number]; + +const getProduct = async (productId: number) => { + const { data, error } = await supabase + .from("product") + .select() + .eq("id", productId) + .single(); + if (error) throw new Error(error.message); + return data; +}; + +export const useGetProduct = (productId: number) => { + const query = useQuery(["product", productId], () => getProduct(productId)); + return query; +}; diff --git a/native/db/hooks/useListProductsCategorized.ts b/native/db/hooks/useListProductsCategorized.ts new file mode 100644 index 00000000..2686c78d --- /dev/null +++ b/native/db/hooks/useListProductsCategorized.ts @@ -0,0 +1,35 @@ +import { useQuery } from "@tanstack/react-query"; +import { supabase } from "../supabase"; + +const listProductsCategorized = async () => { + const response = await supabase + .from("product_category") + .select( + ` + name, display_order, + existing_products ( + id, name, display_order, unit + ) + ` + ) + .order("display_order", { ascending: true }); + + if (response.error) { + console.log(response.error.message); + return null; + } + + return { + ...response, + data: response.data || [], + }; + // return response; +}; + +export const useListProductsCategorized = () => { + const query = useQuery( + ["listProductsCategorized"], + async () => await listProductsCategorized() + ); + return { ...query, data: query.data?.data || [] }; +}; diff --git a/native/db/hooks/useRecordPanel.tsx b/native/db/hooks/useRecordPanel.tsx index 003d7cdd..167e1198 100644 --- a/native/db/hooks/useRecordPanel.tsx +++ b/native/db/hooks/useRecordPanel.tsx @@ -1,9 +1,9 @@ -import { useCallback, useEffect } from "react"; - +import { useCallback } from "react"; import { useFormContext } from "react-hook-form"; import { StockForm } from "../../components/StockFormContext/types"; import { roundFloat } from "../../utils"; -import { useGetRecord } from "./useGetRecord"; +import { useGetProduct } from "./useGetProduct"; + type Form = StockForm; /** * This hook simplifies the process of populating the form with the backend data. @@ -12,58 +12,16 @@ type Form = StockForm; * Submitting the form is done in a separate hook. */ export const useRecordPanel = ({ - inventoryId, productId, }: { inventoryId: number; productId: number; }) => { - const recordResult = useGetRecord(inventoryId, productId); const form = useFormContext(); if (!form) throw new Error("Missing form context"); - const { data: record, isSuccess } = recordResult; - - useEffect(() => { - // guard would be cleaner but for some reason it doesn't work here - // no idea why - if (record?.product_id && record?.quantity) { - const productId = record.product_id; - // const shouldAddMissingValues = - // // is nullish - // form.getValues().product_records[recordId.toString()]?.product_id == - // null; - - // if (shouldAddMissingValues) { - // form.setValue( - // `product_records.${recordId.toString()}.product_id`, - // record.product_id - // ); - // } - - const shouldUpdateQuantity = - !form.getFieldState(`product_records.${productId}.quantity`).isDirty || - record.quantity !== - form.getValues().product_records[productId.toString()]?.quantity; - - if (shouldUpdateQuantity) { - form.setValue(`product_records.${productId}.quantity`, record.quantity); - } - const shouldUpdatePrice = - !form.getFieldState(`product_records.${productId}.price_per_unit`) - .isDirty || - record.price_per_unit !== - form.getValues().product_records[productId.toString()] - ?.price_per_unit; - - if (shouldUpdatePrice) { - form.setValue( - `product_records.${productId}.price_per_unit`, - record.price_per_unit - ); - } - } - }, [record?.product_id, record?.quantity, record?.price_per_unit, isSuccess]); + const productResult = useGetProduct(productId); + const { data: product, isSuccess } = productResult; const quantity = form.watch(`product_records.${productId}.quantity`) ?? 0; const price = form.watch(`product_records.${productId}.price_per_unit`) ?? 0; @@ -133,25 +91,25 @@ export const useRecordPanel = ({ [quantity, productId, form] ); - if (!isSuccess || !record || !record.steps) + if (!isSuccess || !product || !product.steps) return { steppers: { negative: [], positive: [] }, setQuantity, quantity, setPrice, price, - ...recordResult, + productResult, } as const; return { steppers: { - negative: record.steps.map((step) => stepperFunction(-step)), - positive: record.steps.map((step) => stepperFunction(step)), + negative: product.steps.map((step) => stepperFunction(-step)), + positive: product.steps.map((step) => stepperFunction(step)), }, setQuantity, quantity, setPrice, price, - ...recordResult, + productResult, } as const; }; diff --git a/native/db/hooks/useUpdateRecords.ts b/native/db/hooks/useUpdateRecords.ts index d5bde05b..3408d184 100644 --- a/native/db/hooks/useUpdateRecords.ts +++ b/native/db/hooks/useUpdateRecords.ts @@ -13,8 +13,9 @@ const updateRecordsForm = async (form: StockForm, inventoryId: number) => { const data = await Promise.all([ ( await Promise.all( - Object.entries(form.product_records).map( - ([product_id, { quantity, price_per_unit }]) => { + Object.entries(form.product_records) + .filter(([_, { id }]) => !!id) + .map(([product_id, { quantity, price_per_unit }]) => { return supabase .from("product_record") .update({ quantity, price_per_unit }) @@ -22,8 +23,21 @@ const updateRecordsForm = async (form: StockForm, inventoryId: number) => { .eq("product_id", product_id) .select() .single(); - } - ) + }) + ) + ).map((it) => it.data), + ( + await Promise.all( + Object.entries(form.product_records) + .filter(([_, { id }]) => !id) + .map(([product_id, { quantity, price_per_unit }]) => { + return supabase.from("product_record").insert({ + product_id: parseInt(product_id), + quantity, + price_per_unit, + inventory_id: inventoryId, + }); + }) ) ).map((it) => it.data), ( @@ -39,8 +53,7 @@ const updateRecordsForm = async (form: StockForm, inventoryId: number) => { ) ).map((it) => it.data), ]); - console.log(data); - return { products: data[0], recipes: data[1] }; + return { products: data[0], recipes: data[2] }; }; export const useUpdateRecords = (inventoryId: number) => { diff --git a/native/screens/DeliveryTabScreen.tsx b/native/screens/DeliveryTabScreen.tsx index 9b800827..7a69b5d7 100644 --- a/native/screens/DeliveryTabScreen.tsx +++ b/native/screens/DeliveryTabScreen.tsx @@ -15,8 +15,8 @@ import { Skeleton } from "../components/Skeleton"; import { useSnackbar } from "../components/Snackbar/hooks"; import { StockForm } from "../components/StockFormContext/types"; import { useGetInventoryName } from "../db/hooks/useGetInventoryName"; -import { useListCategorizedProductRecords } from "../db/hooks/useListCategorizedProductRecords"; -import { useListUncategorizedProductRecords } from "../db/hooks/useListUncategorizedProductRecords"; +import { useListExistingProducts } from "../db/hooks/useListProducts"; +import { useListProductsCategorized } from "../db/hooks/useListProductsCategorized"; import { useUpdateRecords } from "../db/hooks/useUpdateRecords"; import { DeliveryTabScreenProps } from "../navigation/types"; import { documentScannerAction } from "../redux/documentScannerSlice"; @@ -36,14 +36,38 @@ export default function DeliveryTabScreen({ const dispatch = useAppDispatch(); const { data: inventoryName } = useGetInventoryName(+inventoryId); - const { data: uncategorizedRecordList, isSuccess: uncategorizedIsSuccess } = - useListUncategorizedProductRecords(+inventoryId); - const { data: categorizedRecordList, isSuccess: categorizedIsSuccess } = - useListCategorizedProductRecords(+inventoryId); const deliveryForm = useFormContext(); const deliveryFormValues = deliveryForm.watch(); + const productsResponse = useListExistingProducts(); + const { data: products, isSuccess: productsIsSuccess } = productsResponse; + const uncategorizedProducts = + products + ?.filter( + (p) => + p.category_id === null && deliveryFormValues.product_records[p.id] + ) + .map((p) => ({ + ...deliveryFormValues.product_records[p.id], + ...p, + record_id: deliveryFormValues.product_records[p.id].id, + })) || []; + + const { data: categories, isSuccess: categorizedIsSuccess } = + useListProductsCategorized(); + const categorizedProducts = categories.map((c) => ({ + name: c.name, + display_order: c.display_order, + products: c.existing_products + .filter((p) => p.id in deliveryFormValues.product_records) + .map((p) => ({ + ...deliveryFormValues.product_records[p.id], + ...p, + record_id: deliveryFormValues.product_records[p.id].id, + })), + })); + const { mutate, isSuccess: isUpdateSuccess, @@ -82,7 +106,7 @@ export default function DeliveryTabScreen({ showError("Brak połączenia z internetem"); return; } - mutate(data); + mutate({ product_records: data.product_records, recipe_records: {} }); }, (_errors) => { // TODO show a snackbar? handle error better @@ -91,7 +115,7 @@ export default function DeliveryTabScreen({ )(); }; - if (!uncategorizedIsSuccess || !categorizedIsSuccess) + if (!productsIsSuccess || !categorizedIsSuccess || !inventoryId) return ( @@ -154,22 +178,17 @@ export default function DeliveryTabScreen({ - {uncategorizedRecordList?.map((record) => - record && record.product_id ? ( + {uncategorizedProducts?.map((product) => + product && product.id ? ( ) : ( <> @@ -177,26 +196,21 @@ export default function DeliveryTabScreen({ )} } - sections={categorizedRecordList?.map(({ title, data }, i) => ({ + sections={categorizedProducts?.map((category, i) => ({ id: i + 1, - title: title, - data: data.map((record) => - record && record.product_id ? ( + title: category.name, + data: category.products.map((product, j) => + product && product.id ? ( diff --git a/native/screens/RecordScreen/index.tsx b/native/screens/RecordScreen/index.tsx index ec02d82a..1161d4bf 100644 --- a/native/screens/RecordScreen/index.tsx +++ b/native/screens/RecordScreen/index.tsx @@ -112,19 +112,22 @@ export function RecordScreen({ route, navigation }: RecordScreenProps) { const { id: inventoryId, recordId, isDelivery, productId } = route.params; const recordPanel = useRecordPanel({ inventoryId, productId }); - const isLoading = recordPanel?.isLoading; - const isSuccess = recordPanel?.isSuccess; - const record = recordPanel?.data; + const { productResult } = recordPanel; + const isLoading = productResult?.isLoading; + const isSuccess = productResult?.isSuccess; + const product = productResult?.data; const { data: inventoryName } = useGetInventoryName(+inventoryId); const { data: recordIds } = useListProductRecordIds(inventoryId); // const { data: productRecords } = useListProductRecords(inventoryId); const { data: previousQuantity } = useGetPreviousRecordQuantity( inventoryId, - record?.product_id + product?.id ); // TODO: The pagination should respect display order and categories, not go by id + // TODO: after removing recordId here, it can probably be removed from everywhere + // else in the form, for example in the IDListCard, etc. const { isFirst, isLast, nextRecord, prevRecord } = useRecordPagination( recordId, recordIds @@ -143,10 +146,9 @@ export function RecordScreen({ route, navigation }: RecordScreenProps) { if ( !isSuccess || isLoading || - !record?.steps || - !record?.inventory_id || - !record?.name || - !record?.product_id + !product?.steps || + !product?.name || + !product?.id ) return ( @@ -170,7 +172,7 @@ export function RecordScreen({ route, navigation }: RecordScreenProps) { const { steppers, setQuantity, quantity } = recordPanel; - const { name: recordName, unit } = record; + const { name: recordName, unit } = product; const openManualInput = ( quantity: number, @@ -235,7 +237,7 @@ export function RecordScreen({ route, navigation }: RecordScreenProps) { onPress={navigateToPreviousRecord( navigation.navigate, isDelivery, - record.inventory_id, + inventoryId, prevRecord?.product_id, prevRecord?.id, isFirst @@ -280,7 +282,7 @@ export function RecordScreen({ route, navigation }: RecordScreenProps) { onPress={navigateToNextRecord( navigation.navigate, isDelivery, - record.inventory_id, + inventoryId, nextRecord?.product_id, nextRecord?.id, isLast From 97b9fbd8fd581d83145aeb4906d1350f4e6a1d83 Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Thu, 18 Jul 2024 13:34:36 +0200 Subject: [PATCH 10/23] wip: updating records works --- native/components/DocumentScanner/index.tsx | 21 +++-- native/components/IDListCard.tsx | 6 +- .../StockContext/StockContextProvider.tsx | 86 +++++++++++++++++++ native/components/StockContext/types.ts | 51 +++++++++++ native/db/hooks/useRecordPanel.tsx | 63 ++++---------- native/db/hooks/useUpdateRecords.ts | 30 +++---- native/navigation/BottomTabNavigation.tsx | 8 +- native/package-lock.json | 19 +++- native/package.json | 4 +- native/screens/DeliveryTabScreen.tsx | 71 +++++++-------- native/screens/InventoryTabScreen.tsx | 2 +- .../screens/RecordScreen/RecordScreenForm.tsx | 4 +- native/screens/RecordScreen/index.tsx | 2 +- 13 files changed, 247 insertions(+), 120 deletions(-) create mode 100644 native/components/StockContext/StockContextProvider.tsx create mode 100644 native/components/StockContext/types.ts diff --git a/native/components/DocumentScanner/index.tsx b/native/components/DocumentScanner/index.tsx index 1a18033c..bc8a2e68 100644 --- a/native/components/DocumentScanner/index.tsx +++ b/native/components/DocumentScanner/index.tsx @@ -1,11 +1,8 @@ import { CameraView as ExpoCamera } from "expo-camera"; import React, { useRef } from "react"; -import { - documentScannerAction, - documentScannerSelector, -} from "../../redux/documentScannerSlice"; -import { useAppDispatch, useAppSelector } from "../../redux/hooks"; +import { documentScannerAction } from "../../redux/documentScannerSlice"; +import { useAppDispatch } from "../../redux/hooks"; import { Camera } from "../Camera"; import { InvoicePhotoPreview } from "./InvoicePhotoPreview"; import { SalesRaportPhotoPreview } from "./SalesRaportPhotoPreview"; @@ -17,12 +14,14 @@ export const DocumentScanner = ({ }) => { const cameraRef = useRef(null); - const isPreviewShown = useAppSelector( - documentScannerSelector.selectIsPreviewShown - ); - const isTakingPhoto = useAppSelector( - documentScannerSelector.selectisTakingPhoto - ); + const isPreviewShown = false; + const isTakingPhoto = false; + // const isPreviewShown = useAppSelector( + // documentScannerSelector.selectIsPreviewShown + // ); + // const isTakingPhoto = useAppSelector( + // documentScannerSelector.selectisTakingPhoto + // ); const dispatch = useAppDispatch(); const takePicture = async () => { diff --git a/native/components/IDListCard.tsx b/native/components/IDListCard.tsx index 1ca56292..f37490c2 100644 --- a/native/components/IDListCard.tsx +++ b/native/components/IDListCard.tsx @@ -2,13 +2,13 @@ import { useNavigation } from "@react-navigation/native"; import React, { useMemo } from "react"; import { StyleSheet, View } from "react-native"; -import { useFormContext } from "react-hook-form"; import { useGetRecord } from "../db"; import { useGetPreviousRecordQuantity } from "../db/hooks/useGetPreviousRecordQuantity"; import { createStyles } from "../theme/useStyles"; import { formatAndRoundFloat } from "../utils"; import { Card } from "./Card"; import { QuantityBadge } from "./QuantityBadge"; +import { useStockContext } from "./StockContext/StockContextProvider"; import { Typography } from "./Typography"; type IDListCardProps = { @@ -57,7 +57,7 @@ export const IDListCard = ({ inventoryId, productId ); - const form = useFormContext(); + const stock = useStockContext(); if (!name) { return null; @@ -67,7 +67,7 @@ export const IDListCard = ({ const quantityDelta = useMemo( () => getQuantityDelta( - form.watch(`product_records.${productId}`)?.quantity, + stock.productRecords[productId].quantity, wasQuantityChanged ? originalRecord?.quantity : previousQuantity ), [originalRecord?.quantity, previousQuantity, wasQuantityChanged] diff --git a/native/components/StockContext/StockContextProvider.tsx b/native/components/StockContext/StockContextProvider.tsx new file mode 100644 index 00000000..4ae3d92d --- /dev/null +++ b/native/components/StockContext/StockContextProvider.tsx @@ -0,0 +1,86 @@ +import React, { ReactNode, createContext, useContext, useState } from "react"; +import { useImmer } from "use-immer"; +import { useListProductRecords } from "../../db/hooks/useListProductRecords"; +import { + DocumentScannerState, + ProductRecordsByProductId, + RecipeRecordsByRecipeId, + StockContextType, +} from "./types"; + +const initialDocumentScannerState: DocumentScannerState = { + isPreviewShown: false, + isTakingPhoto: false, + isCameraReady: null, + photo: null, + processedInvoice: null, + processedSalesRaport: null, + inventory_id: null, +}; + +const initialStockId = 0; +const initialProductRecords: ProductRecordsByProductId = {}; +const initialRecipeRecords: RecipeRecordsByRecipeId = {}; + +const StockContext = createContext({ + stockType: "delivery", + stockId: initialStockId, + productRecords: initialProductRecords, + recipeRecords: initialRecipeRecords, + updateProductRecords: () => null, + documentScannerState: initialDocumentScannerState, + setDocumentScannerState: () => null, +}); + +export const StockContextProvider = ({ + children, + stockId, +}: { + children: ReactNode; + stockId: number; +}) => { + const stockType = "delivery"; + + const { data: productRecordsRaw } = useListProductRecords(stockId); + const [productRecords, updateProductRecords] = + useImmer( + productRecordsRaw + ? Object.fromEntries( + productRecordsRaw.map((record) => [ + record.product_id, + { + record_id: record.id, + quantity: record.quantity, + price_per_unit: record.price_per_unit, + }, + ]) + ) + : initialProductRecords + ); + const [recipeRecords, _] = useState(initialRecipeRecords); + + const [documentScannerState, setDocumentScannerState] = + useState(initialDocumentScannerState); + + // const setProductRecord = (product_id: number, value: Partial) => setProductRecords(records => ({...records})) + + return ( + + {children} + + ); +}; + +export const useStockContext = () => { + return useContext(StockContext); +}; diff --git a/native/components/StockContext/types.ts b/native/components/StockContext/types.ts new file mode 100644 index 00000000..24cf85b9 --- /dev/null +++ b/native/components/StockContext/types.ts @@ -0,0 +1,51 @@ +import { CameraCapturedPicture } from "expo-camera"; +import { Dispatch, SetStateAction } from "react"; +import { Updater } from "use-immer"; +import { + ProcessInvoiceResponse, + ProcessSalesRaportResponse, +} from "../../db/types"; + +type ProductRecordByProductId = { + record_id: number | null; + quantity: number; + price_per_unit: number | null; +}; + +export type ProductRecordsByProductId = { + [product_id: string]: ProductRecordByProductId; +}; + +type RecipeRecordByRecipeId = { + record_id: number | null; + quantity: number; +}; + +export type RecipeRecordsByRecipeId = { + [product_id: string]: RecipeRecordByRecipeId; +}; + +export type DocumentScannerState = { + isPreviewShown: boolean; + isTakingPhoto: boolean; + isCameraReady: boolean | null; + photo: CameraCapturedPicture | null; + processedInvoice: ProcessInvoiceResponse | null; + processedSalesRaport: ProcessSalesRaportResponse | null; + inventory_id: number | null; +}; + +export type StockData = { + // stockId: number; + // stockType: "inventory" | "delivery"; + productRecords: ProductRecordsByProductId; + recipeRecords: RecipeRecordsByRecipeId; +}; + +export type StockContextType = StockData & { + stockId: number; + stockType: "inventory" | "delivery"; + updateProductRecords: Updater; + documentScannerState: DocumentScannerState; + setDocumentScannerState: Dispatch>; +}; diff --git a/native/db/hooks/useRecordPanel.tsx b/native/db/hooks/useRecordPanel.tsx index 167e1198..fc49f235 100644 --- a/native/db/hooks/useRecordPanel.tsx +++ b/native/db/hooks/useRecordPanel.tsx @@ -1,10 +1,8 @@ import { useCallback } from "react"; -import { useFormContext } from "react-hook-form"; -import { StockForm } from "../../components/StockFormContext/types"; +import { useStockContext } from "../../components/StockContext/StockContextProvider"; import { roundFloat } from "../../utils"; import { useGetProduct } from "./useGetProduct"; -type Form = StockForm; /** * This hook simplifies the process of populating the form with the backend data. * Registers the records as needed, returns values needed to manipulate the form in a safe way. @@ -17,45 +15,34 @@ export const useRecordPanel = ({ inventoryId: number; productId: number; }) => { - const form = useFormContext(); - if (!form) throw new Error("Missing form context"); + const { productRecords, updateProductRecords } = useStockContext(); + const { quantity, price_per_unit } = productRecords[productId]; const productResult = useGetProduct(productId); const { data: product, isSuccess } = productResult; - const quantity = form.watch(`product_records.${productId}.quantity`) ?? 0; - const price = form.watch(`product_records.${productId}.price_per_unit`) ?? 0; - const setQuantity = useCallback( (quantity: number) => { if (quantity < 0) return; const roundedQuantity = roundFloat(quantity); - // dot notation is more performant - form.setValue(`product_records.${productId}.quantity`, roundedQuantity, { - shouldDirty: true, - shouldTouch: true, + updateProductRecords((d) => { + d[productId].quantity = roundedQuantity; }); return; }, - [form, productId, quantity] + [updateProductRecords, productId, quantity] ); const setPrice = useCallback( (price: number) => { if (price < 0) return; const roundedPrice = roundFloat(price); - // dot notation is more performant - form.setValue( - `product_records.${productId}.price_per_unit`, - roundedPrice, - { - shouldDirty: true, - shouldTouch: true, - } - ); + updateProductRecords((d) => { + d[productId].price_per_unit = roundedPrice; + }); return; }, - [form, productId, price] + [updateProductRecords, productId, price_per_unit] ); const stepperFunction = useCallback( @@ -63,32 +50,20 @@ export const useRecordPanel = ({ ({ click: () => { if (quantity + step < 0) { - form.setValue( - // dot notation is more performant - `product_records.${productId}.quantity`, - 0, - { - shouldDirty: true, - shouldTouch: true, - } - ); + updateProductRecords((d) => { + d[productId].quantity = 0; + }); return; } const roundedQuantityStep = roundFloat(quantity + step); - form.setValue( - // dot notation is more performant - `product_records.${productId}.quantity`, - roundedQuantityStep, - { - shouldDirty: true, - shouldTouch: true, - } - ); + updateProductRecords((d) => { + d[productId].quantity = roundedQuantityStep; + }); return; }, step, } as const), - [quantity, productId, form] + [quantity, productId, updateProductRecords] ); if (!isSuccess || !product || !product.steps) @@ -97,7 +72,7 @@ export const useRecordPanel = ({ setQuantity, quantity, setPrice, - price, + price: price_per_unit, productResult, } as const; @@ -109,7 +84,7 @@ export const useRecordPanel = ({ setQuantity, quantity, setPrice, - price, + price: price_per_unit, productResult, } as const; }; diff --git a/native/db/hooks/useUpdateRecords.ts b/native/db/hooks/useUpdateRecords.ts index 3408d184..dedb03a7 100644 --- a/native/db/hooks/useUpdateRecords.ts +++ b/native/db/hooks/useUpdateRecords.ts @@ -1,20 +1,20 @@ import { useMutation, useQueryClient } from "@tanstack/react-query"; -import { StockForm } from "../../components/StockFormContext/types"; +import { StockData } from "../../components/StockContext/types"; import { supabase } from "../supabase"; -const updateRecordsForm = async (form: StockForm, inventoryId: number) => { +const updateRecordsForm = async (stock: StockData, inventoryId: number) => { if ( - Object.keys(form.product_records).length && - Object.keys(form.recipe_records).length + Object.keys(stock.productRecords).length && + Object.keys(stock.recipeRecords).length ) return; const data = await Promise.all([ ( await Promise.all( - Object.entries(form.product_records) - .filter(([_, { id }]) => !!id) + Object.entries(stock.productRecords) + .filter(([_, { record_id }]) => !!record_id) .map(([product_id, { quantity, price_per_unit }]) => { return supabase .from("product_record") @@ -28,8 +28,8 @@ const updateRecordsForm = async (form: StockForm, inventoryId: number) => { ).map((it) => it.data), ( await Promise.all( - Object.entries(form.product_records) - .filter(([_, { id }]) => !id) + Object.entries(stock.productRecords) + .filter(([_, { record_id }]) => !record_id) .map(([product_id, { quantity, price_per_unit }]) => { return supabase.from("product_record").insert({ product_id: parseInt(product_id), @@ -42,7 +42,7 @@ const updateRecordsForm = async (form: StockForm, inventoryId: number) => { ).map((it) => it.data), ( await Promise.all( - Object.entries(form.recipe_records).map(([record_id, { quantity }]) => { + Object.entries(stock.recipeRecords).map(([record_id, { quantity }]) => { return supabase .from("recipe_record") .update({ quantity }) @@ -60,25 +60,25 @@ export const useUpdateRecords = (inventoryId: number) => { const queryClient = useQueryClient(); return useMutation({ - mutationFn: async (form) => await updateRecordsForm(form, inventoryId), - onMutate: async (form: StockForm) => { - const recordsIterable = Object.entries(form.product_records); + mutationFn: async (stock) => await updateRecordsForm(stock, inventoryId), + onMutate: async (stock: StockData) => { + const recordsIterable = Object.entries(stock.productRecords); await Promise.all( recordsIterable.map(([productId, _record]) => { queryClient.cancelQueries(["product_record", inventoryId, productId]); queryClient.setQueryData( ["product_record", inventoryId, productId], - (old: any) => ({ ...old, ...form.product_records[productId] }) + (old: any) => ({ ...old, ...stock.productRecords[productId] }) ); }) ); - const recipesIterable = Object.entries(form.recipe_records); + const recipesIterable = Object.entries(stock.recipeRecords); await Promise.all( recipesIterable.map(([recordId, _record]) => { queryClient.cancelQueries(["recipeRecord", recordId]); queryClient.setQueryData(["recipeRecord", recordId], (old: any) => ({ ...old, - ...form.recipe_records[recordId], + ...stock.recipeRecords[recordId], })); }) ); diff --git a/native/navigation/BottomTabNavigation.tsx b/native/navigation/BottomTabNavigation.tsx index 6f890007..ac472ca0 100644 --- a/native/navigation/BottomTabNavigation.tsx +++ b/native/navigation/BottomTabNavigation.tsx @@ -4,7 +4,6 @@ import { createNativeStackNavigator } from "@react-navigation/native-stack"; import { View } from "react-native"; import { DeliveryIcon, InventoryIcon, ListIcon } from "../components/Icon"; -import { DeliveryFormContextProvider } from "../components/StockFormContext/DeliveryFormContextProvider"; import { InventoryFormContextProvider } from "../components/StockFormContext/InventoryFormContextProvider"; import { isEmpty } from "lodash"; @@ -12,6 +11,7 @@ import { EmptyScreenTemplate } from "../components/EmptyScreenTemplate"; import { TabBar } from "../components/TabBar"; import { useListInventories } from "../db"; +import { StockContextProvider } from "../components/StockContext/StockContextProvider"; import { AddRecordScreen } from "../screens/AddRecordScreen"; import DeliveryTabScreen from "../screens/DeliveryTabScreen"; import InventoryTabScreen from "../screens/InventoryTabScreen"; @@ -58,7 +58,8 @@ const DeliveryStackNavigator = ({ route }: DeliveryTabProps) => { ); return ( - + + {/* */} { }} /> - + {/* */} + ); }; diff --git a/native/package-lock.json b/native/package-lock.json index aa565be8..e0491626 100644 --- a/native/package-lock.json +++ b/native/package-lock.json @@ -33,6 +33,7 @@ "expo-system-ui": "~3.0.4", "expo-updates": "~0.25.14", "expo-web-browser": "~13.0.3", + "immer": "^10.1.1", "lodash": "^4.17.21", "prettier-plugin-organize-imports": "^3.2.2", "react": "18.2.0", @@ -44,7 +45,8 @@ "react-native-safe-area-context": "4.10.1", "react-native-screens": "3.31.1", "react-native-url-polyfill": "^1.3.0", - "react-redux": "9.1.1" + "react-redux": "9.1.1", + "use-immer": "^0.10.0" }, "devDependencies": { "@babel/core": "^7.24.0", @@ -12548,9 +12550,9 @@ } }, "node_modules/immer": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.4.tgz", - "integrity": "sha512-cuBuGK40P/sk5IzWa9QPUaAdvPHjkk1c+xYsd9oZw+YQQEV+10G0P5uMpGctZZKnyQ+ibRO08bD25nWLmYi2pw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", + "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", "funding": { "type": "opencollective", "url": "https://opencollective.com/immer" @@ -21131,6 +21133,15 @@ "requires-port": "^1.0.0" } }, + "node_modules/use-immer": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/use-immer/-/use-immer-0.10.0.tgz", + "integrity": "sha512-/eVwNR4TG9Tm/dd+aHYLLaI0FLfYKlkTqKMkn78Ah/EYVzWd/zJIgpkdoFEKbhQJOGo8XN7/mWrTx0exp1c+Ug==", + "peerDependencies": { + "immer": ">=8.0.0", + "react": "^16.8.0 || ^17.0.1 || ^18.0.0" + } + }, "node_modules/use-latest-callback": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.1.5.tgz", diff --git a/native/package.json b/native/package.json index 7ff3b269..f4248580 100644 --- a/native/package.json +++ b/native/package.json @@ -46,6 +46,7 @@ "expo-system-ui": "~3.0.4", "expo-updates": "~0.25.14", "expo-web-browser": "~13.0.3", + "immer": "^10.1.1", "lodash": "^4.17.21", "prettier-plugin-organize-imports": "^3.2.2", "react": "18.2.0", @@ -57,7 +58,8 @@ "react-native-safe-area-context": "4.10.1", "react-native-screens": "3.31.1", "react-native-url-polyfill": "^1.3.0", - "react-redux": "9.1.1" + "react-redux": "9.1.1", + "use-immer": "^0.10.0" }, "devDependencies": { "@babel/core": "^7.24.0", diff --git a/native/screens/DeliveryTabScreen.tsx b/native/screens/DeliveryTabScreen.tsx index 7a69b5d7..9733654c 100644 --- a/native/screens/DeliveryTabScreen.tsx +++ b/native/screens/DeliveryTabScreen.tsx @@ -2,8 +2,6 @@ import React, { useEffect } from "react"; import { ScrollView, StyleSheet, View } from "react-native"; import { useNetInfo } from "@react-native-community/netinfo"; -import isEmpty from "lodash/isEmpty"; -import { useFormContext } from "react-hook-form"; import { SafeAreaView } from "react-native-safe-area-context"; import { Button } from "../components/Button"; import { Collapsible } from "../components/Collapsible/Collapsible"; @@ -13,7 +11,7 @@ import { IDListCardAddRecord } from "../components/IDListCardAddRecord"; import { DocumentScannerIcon, ScanBarcodeIcon } from "../components/Icon"; import { Skeleton } from "../components/Skeleton"; import { useSnackbar } from "../components/Snackbar/hooks"; -import { StockForm } from "../components/StockFormContext/types"; +import { useStockContext } from "../components/StockContext/StockContextProvider"; import { useGetInventoryName } from "../db/hooks/useGetInventoryName"; import { useListExistingProducts } from "../db/hooks/useListProducts"; import { useListProductsCategorized } from "../db/hooks/useListProductsCategorized"; @@ -32,26 +30,25 @@ export default function DeliveryTabScreen({ const { isConnected } = useNetInfo(); const inventoryId = route.params?.id; - const { showError, showInfo, showSuccess } = useSnackbar(); + // const { showError, showInfo, showSuccess } = useSnackbar(); + const { showError, showSuccess } = useSnackbar(); const dispatch = useAppDispatch(); const { data: inventoryName } = useGetInventoryName(+inventoryId); - const deliveryForm = useFormContext(); - const deliveryFormValues = deliveryForm.watch(); + const { productRecords } = useStockContext(); + + // console.log({ productRecords }); const productsResponse = useListExistingProducts(); const { data: products, isSuccess: productsIsSuccess } = productsResponse; const uncategorizedProducts = products - ?.filter( - (p) => - p.category_id === null && deliveryFormValues.product_records[p.id] - ) + ?.filter((p) => p.category_id === null && productRecords[p.id]) .map((p) => ({ - ...deliveryFormValues.product_records[p.id], + ...productRecords[p.id], ...p, - record_id: deliveryFormValues.product_records[p.id].id, + record_id: productRecords[p.id].record_id, })) || []; const { data: categories, isSuccess: categorizedIsSuccess } = @@ -60,11 +57,11 @@ export default function DeliveryTabScreen({ name: c.name, display_order: c.display_order, products: c.existing_products - .filter((p) => p.id in deliveryFormValues.product_records) + .filter((p) => p.id in productRecords) .map((p) => ({ - ...deliveryFormValues.product_records[p.id], + ...productRecords[p.id], ...p, - record_id: deliveryFormValues.product_records[p.id].id, + record_id: productRecords[p.id].record_id, })), })); @@ -95,25 +92,26 @@ export default function DeliveryTabScreen({ } }, [isUpdateSuccess, isUpdateError]); - const handlePress = () => { - deliveryForm.handleSubmit( - (data) => { - if (isEmpty(data)) { - showInfo("Brak zmian do zapisania"); - return; - } - if (!isConnected) { - showError("Brak połączenia z internetem"); - return; - } - mutate({ product_records: data.product_records, recipe_records: {} }); - }, - (_errors) => { - // TODO show a snackbar? handle error better - console.log("error", _errors); - } - )(); - }; + // const handlePress = () => { + // // WIP + // // deliveryForm.handleSubmit( + // // (data) => { + // // if (isEmpty(data)) { + // // showInfo("Brak zmian do zapisania"); + // // return; + // // } + // // if (!isConnected) { + // // showError("Brak połączenia z internetem"); + // // return; + // // } + // // mutate({ product_records: data.product_records, recipe_records: {} }); + // // }, + // // (_errors) => { + // // // TODO show a snackbar? handle error better + // // console.log("error", _errors); + // // } + // // )(); + // }; if (!productsIsSuccess || !categorizedIsSuccess || !inventoryId) return ( @@ -155,7 +153,10 @@ export default function DeliveryTabScreen({ type="primary" fullWidth labelStyle={styles.saveButtonLabel} - onPress={handlePress} + // onPress={handlePress} + onPress={() => { + mutate({ productRecords, recipeRecords: {} }); + }} disabled={!isConnected} > Zapisz zmiany diff --git a/native/screens/InventoryTabScreen.tsx b/native/screens/InventoryTabScreen.tsx index d6e4f4b1..068564bc 100644 --- a/native/screens/InventoryTabScreen.tsx +++ b/native/screens/InventoryTabScreen.tsx @@ -77,7 +77,7 @@ export default function InventoryTabScreen({ showError("Brak połączenia z internetem"); return; } - mutate(data); + mutate({ productRecords: {}, recipeRecords: {} }); }, (_errors) => { // TODO show a snackbar? handle error better diff --git a/native/screens/RecordScreen/RecordScreenForm.tsx b/native/screens/RecordScreen/RecordScreenForm.tsx index 1e9c31b9..f8b06237 100644 --- a/native/screens/RecordScreen/RecordScreenForm.tsx +++ b/native/screens/RecordScreen/RecordScreenForm.tsx @@ -21,10 +21,10 @@ export const useRecordScreenForm = ( watch, } = useForm({ defaultValues: { - price_per_unit: price.toString(), + price_per_unit: price?.toString(), }, values: { - price_per_unit: price.toString(), + price_per_unit: price?.toString(), }, mode: "onChange", }); diff --git a/native/screens/RecordScreen/index.tsx b/native/screens/RecordScreen/index.tsx index 1161d4bf..c23ad8f3 100644 --- a/native/screens/RecordScreen/index.tsx +++ b/native/screens/RecordScreen/index.tsx @@ -135,7 +135,7 @@ export function RecordScreen({ route, navigation }: RecordScreenProps) { const { openBottomSheet, closeBottomSheet } = useBottomSheet(); const { control, handleSubmit, onSubmit } = useRecordScreenForm( - recordPanel.price, + recordPanel.price || 0, recordPanel.setPrice ); From 65e52a0b483d02037acf4ab76d4566815d6b2dbe Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Thu, 18 Jul 2024 15:51:54 +0200 Subject: [PATCH 11/23] wip: merge into stock screen --- native/components/BarcodeScanner/index.tsx | 4 +- .../BottomSheet/contents/DatePicker.tsx | 4 +- .../components/BottomSheet/contents/Input.tsx | 6 +- .../BottomSheet/contents/ProductList.tsx | 6 +- .../BottomSheet/contents/RecipeList.tsx | 4 +- native/components/Camera.tsx | 2 +- native/components/Collapsible/Collapsible.tsx | 4 +- .../Collapsible/SingularCollapsible.tsx | 4 +- native/components/DateInputController.tsx | 2 +- native/components/DevInfo.tsx | 2 +- .../DocumentScanner/InvoicePhotoPreview.tsx | 4 +- .../SalesRaportPhotoPreview.tsx | 4 +- native/components/DropdownButton.tsx | 4 +- native/components/IndexBadge.tsx | 2 +- native/components/NewBarcodeListItem.tsx | 4 +- native/components/PrivacyPolicy.tsx | 2 +- native/components/QuantityBadge.tsx | 2 +- native/components/Snackbar/index.tsx | 2 +- .../DeliveryFormContextProvider.tsx | 120 -------- .../InventoryFormContextProvider.tsx | 48 ---- native/components/StockFormContext/types.ts | 16 -- native/components/Tooltip.tsx | 2 +- native/components/{ => common}/Badge.tsx | 4 +- native/components/{ => common}/Button.tsx | 2 +- native/components/{ => common}/Card.tsx | 4 +- native/components/{ => common}/Divider.tsx | 2 +- .../{ => common}/EmptyScreenTemplate.tsx | 2 +- .../{ => common}/LoadingSpinner.tsx | 0 .../{ => common}/NumberInputController.tsx | 0 native/components/{ => common}/SafeLayout.tsx | 6 +- native/components/{ => common}/TextInput.tsx | 4 +- .../{ => common}/TextInputController.tsx | 0 native/components/{ => common}/Typography.tsx | 4 +- native/db/hooks/useRecordPanel.tsx | 2 +- native/db/hooks/useUpdateRecords.ts | 2 +- native/navigation/BottomTabNavigation.tsx | 173 ++---------- native/navigation/types.ts | 28 +- native/screens/AddRecordScreen.tsx | 4 +- native/screens/BarcodeModalScreen.tsx | 8 +- native/screens/DocumentScannerModalScreen.tsx | 10 +- .../screens/IdentifyAliasesScreen/Invoice.tsx | 10 +- .../IdentifyAliasesScreen/SalesRaport.tsx | 8 +- .../screens/IdentifyAliasesScreen/index.tsx | 2 +- native/screens/InventoryTabScreen.tsx | 256 ------------------ .../ListTabScreen}/ListCard/ListCardAdd.tsx | 6 +- .../ListTabScreen}/ListCard/ListCardLink.tsx | 18 +- .../{ => ListTabScreen}/ListTabScreen.tsx | 18 +- native/screens/LoginScreen.tsx | 8 +- native/screens/NewBarcodeScreen.tsx | 2 +- native/screens/NewProductScreen.tsx | 8 +- native/screens/NewStockScreen.tsx | 10 +- .../screens/RecordScreen/RecordScreenForm.tsx | 2 +- native/screens/RecordScreen/index.tsx | 8 +- native/screens/SettingsScreen.tsx | 6 +- native/screens/StartScreen.tsx | 6 +- .../StockTabScreen/IDListCard}/IDListCard.tsx | 18 +- .../IDListCard}/IDListCardAddProduct.tsx | 4 +- .../IDListCard}/IDListCardAddRecord.tsx | 4 +- .../StockTabScreen}/RecipeCard.tsx | 122 +++++---- .../StockContext/StockContextProvider.tsx | 27 +- .../StockTabScreen}/StockContext/types.ts | 16 +- .../StockTabScreen.tsx} | 162 ++++------- native/screens/StockTabScreen/styles.ts | 44 +++ .../StockTabScreen/useProductRecords.ts | 39 +++ native/screens/UpdateRequiredScreen/index.tsx | 6 +- 65 files changed, 404 insertions(+), 909 deletions(-) delete mode 100644 native/components/StockFormContext/DeliveryFormContextProvider.tsx delete mode 100644 native/components/StockFormContext/InventoryFormContextProvider.tsx delete mode 100644 native/components/StockFormContext/types.ts rename native/components/{ => common}/Badge.tsx (88%) rename native/components/{ => common}/Button.tsx (98%) rename native/components/{ => common}/Card.tsx (96%) rename native/components/{ => common}/Divider.tsx (87%) rename native/components/{ => common}/EmptyScreenTemplate.tsx (96%) rename native/components/{ => common}/LoadingSpinner.tsx (100%) rename native/components/{ => common}/NumberInputController.tsx (100%) rename native/components/{ => common}/SafeLayout.tsx (92%) rename native/components/{ => common}/TextInput.tsx (97%) rename native/components/{ => common}/TextInputController.tsx (100%) rename native/components/{ => common}/Typography.tsx (94%) delete mode 100644 native/screens/InventoryTabScreen.tsx rename native/{components => screens/ListTabScreen}/ListCard/ListCardAdd.tsx (83%) rename native/{components => screens/ListTabScreen}/ListCard/ListCardLink.tsx (78%) rename native/screens/{ => ListTabScreen}/ListTabScreen.tsx (90%) rename native/{components => screens/StockTabScreen/IDListCard}/IDListCard.tsx (88%) rename native/{components => screens/StockTabScreen/IDListCard}/IDListCardAddProduct.tsx (88%) rename native/{components => screens/StockTabScreen/IDListCard}/IDListCardAddRecord.tsx (87%) rename native/{components => screens/StockTabScreen}/RecipeCard.tsx (75%) rename native/{components => screens/StockTabScreen}/StockContext/StockContextProvider.tsx (73%) rename native/{components => screens/StockTabScreen}/StockContext/types.ts (66%) rename native/screens/{DeliveryTabScreen.tsx => StockTabScreen/StockTabScreen.tsx} (55%) create mode 100644 native/screens/StockTabScreen/styles.ts create mode 100644 native/screens/StockTabScreen/useProductRecords.ts diff --git a/native/components/BarcodeScanner/index.tsx b/native/components/BarcodeScanner/index.tsx index 2765f574..95950b00 100644 --- a/native/components/BarcodeScanner/index.tsx +++ b/native/components/BarcodeScanner/index.tsx @@ -7,14 +7,14 @@ import { Camera } from "../Camera"; import { BarcodeModalScreenProps } from "../../screens/BarcodeModalScreen"; import { createStyles } from "../../theme/useStyles"; -import { LoadingSpinner } from "../LoadingSpinner"; +import { LoadingSpinner } from "../common/LoadingSpinner"; export const BarcodeScanner = ({ inventoryId, navigateTo: _navigateTo, }: { inventoryId: number; - navigateTo: "DeliveryTab" | "InventoryTab"; + navigateTo: "StockTab"; }) => { const styles = useStyles(); const navigation = useNavigation(); diff --git a/native/components/BottomSheet/contents/DatePicker.tsx b/native/components/BottomSheet/contents/DatePicker.tsx index bd907e08..9b1f8291 100644 --- a/native/components/BottomSheet/contents/DatePicker.tsx +++ b/native/components/BottomSheet/contents/DatePicker.tsx @@ -3,8 +3,8 @@ import formatISO from "date-fns/formatISO"; import { StyleSheet, View } from "react-native"; import { useSafeAreaInsets } from "react-native-safe-area-context"; import { createStyles } from "../../../theme/useStyles"; -import { Button } from "../../Button"; -import { Typography } from "../../Typography"; +import { Button } from "../../common/Button"; +import { Typography } from "../../common/Typography"; export const DatePickerBottomSheetContent = ({ dateValue, diff --git a/native/components/BottomSheet/contents/Input.tsx b/native/components/BottomSheet/contents/Input.tsx index 35a6c010..8de12ea1 100644 --- a/native/components/BottomSheet/contents/Input.tsx +++ b/native/components/BottomSheet/contents/Input.tsx @@ -7,9 +7,9 @@ import { isAndroid } from "../../../constants"; import { createStyles } from "../../../theme/useStyles"; import { formatFloatString } from "../../../utils"; import { useKeyboard } from "../../../utils/useKeyboard"; -import { Button } from "../../Button"; -import TextInputController from "../../TextInputController"; -import { Typography } from "../../Typography"; +import { Button } from "../../common/Button"; +import TextInputController from "../../common/TextInputController"; +import { Typography } from "../../common/Typography"; type InputBottomSheetForm = { quantity: string; diff --git a/native/components/BottomSheet/contents/ProductList.tsx b/native/components/BottomSheet/contents/ProductList.tsx index 10a5d2e1..5c650056 100644 --- a/native/components/BottomSheet/contents/ProductList.tsx +++ b/native/components/BottomSheet/contents/ProductList.tsx @@ -5,9 +5,9 @@ import * as React from "react"; import { useForm } from "react-hook-form"; import { createStyles } from "../../../theme/useStyles"; import { useKeyboard } from "../../../utils/useKeyboard"; -import { Button } from "../../Button"; -import TextInputController from "../../TextInputController"; -import { Typography } from "../../Typography"; +import { Button } from "../../common/Button"; +import TextInputController from "../../common/TextInputController"; +import { Typography } from "../../common/Typography"; type ProductListBottomSheetForm = { searchText: string }; export const ProductListBottomSheetContent = ({ diff --git a/native/components/BottomSheet/contents/RecipeList.tsx b/native/components/BottomSheet/contents/RecipeList.tsx index 71cc4f0a..9eeaa606 100644 --- a/native/components/BottomSheet/contents/RecipeList.tsx +++ b/native/components/BottomSheet/contents/RecipeList.tsx @@ -3,8 +3,8 @@ import { useSafeAreaInsets } from "react-native-safe-area-context"; import { useListRecipes } from "../../../db/hooks/useListRecipes"; import { createStyles } from "../../../theme/useStyles"; -import { Button } from "../../Button"; -import { Typography } from "../../Typography"; +import { Button } from "../../common/Button"; +import { Typography } from "../../common/Typography"; export const RecipesListBottomSheetContent = ({ closeBottomSheet, diff --git a/native/components/Camera.tsx b/native/components/Camera.tsx index f35cd4f1..49b180d1 100644 --- a/native/components/Camera.tsx +++ b/native/components/Camera.tsx @@ -16,7 +16,7 @@ import { appAction, appSelector } from "../redux/appSlice"; import { useAppDispatch, useAppSelector } from "../redux/hooks"; import { createStyles } from "../theme/useStyles"; import { CameraSwitchIcon, InfoIcon } from "./Icon"; -import { LoadingSpinner } from "./LoadingSpinner"; +import { LoadingSpinner } from "./common/LoadingSpinner"; type CameraProps = { onBarcodeScanned?: ComponentProps["onBarcodeScanned"]; diff --git a/native/components/Collapsible/Collapsible.tsx b/native/components/Collapsible/Collapsible.tsx index 7776819b..cde1c15f 100644 --- a/native/components/Collapsible/Collapsible.tsx +++ b/native/components/Collapsible/Collapsible.tsx @@ -2,9 +2,9 @@ import React, { ReactElement, useState } from "react"; import { SectionList, StyleSheet } from "react-native"; import { createStyles } from "../../theme/useStyles"; -import { Card } from "../Card"; import { ExpandMoreIcon } from "../Icon"; -import { Typography } from "../Typography"; +import { Card } from "../common/Card"; +import { Typography } from "../common/Typography"; type CollapsibleSection = { id: number; diff --git a/native/components/Collapsible/SingularCollapsible.tsx b/native/components/Collapsible/SingularCollapsible.tsx index 2e9dc228..fbca3c4c 100644 --- a/native/components/Collapsible/SingularCollapsible.tsx +++ b/native/components/Collapsible/SingularCollapsible.tsx @@ -2,9 +2,9 @@ import React, { ReactNode, useState } from "react"; import { StyleSheet } from "react-native"; import { createStyles } from "../../theme/useStyles"; -import { Card } from "../Card"; import { ExpandMoreIcon } from "../Icon"; -import { Typography } from "../Typography"; +import { Card } from "../common/Card"; +import { Typography } from "../common/Typography"; export const SingularCollapsible = ({ children, diff --git a/native/components/DateInputController.tsx b/native/components/DateInputController.tsx index cdaf8316..28846eba 100644 --- a/native/components/DateInputController.tsx +++ b/native/components/DateInputController.tsx @@ -6,7 +6,7 @@ import { isAndroid } from "../constants"; import { createStyles } from "../theme/useStyles"; import { useBottomSheet } from "./BottomSheet"; import { DatePickerBottomSheetContent } from "./BottomSheet/contents/DatePicker"; -import TextInputController from "./TextInputController"; +import TextInputController from "./common/TextInputController"; type DateInputControllerProps = UseControllerProps & { dateValue: Date; diff --git a/native/components/DevInfo.tsx b/native/components/DevInfo.tsx index d03b18a1..966b06b9 100644 --- a/native/components/DevInfo.tsx +++ b/native/components/DevInfo.tsx @@ -1,7 +1,7 @@ import { useSafeAreaInsets } from "react-native-safe-area-context"; import { EnvConfig } from "../config/env"; -import { Typography } from "./Typography"; +import { Typography } from "./common/Typography"; export const DevInfo = () => { const { bottom: safeAreaBottomInset } = useSafeAreaInsets(); diff --git a/native/components/DocumentScanner/InvoicePhotoPreview.tsx b/native/components/DocumentScanner/InvoicePhotoPreview.tsx index 51531720..7b65fc48 100644 --- a/native/components/DocumentScanner/InvoicePhotoPreview.tsx +++ b/native/components/DocumentScanner/InvoicePhotoPreview.tsx @@ -6,8 +6,8 @@ import { documentScannerSelector, } from "../../redux/documentScannerSlice"; import { useAppDispatch, useAppSelector } from "../../redux/hooks"; -import { Button } from "../Button"; -import { LoadingSpinner } from "../LoadingSpinner"; +import { Button } from "../common/Button"; +import { LoadingSpinner } from "../common/LoadingSpinner"; export const InvoicePhotoPreview = () => { const { isConnected } = useNetInfo(); diff --git a/native/components/DocumentScanner/SalesRaportPhotoPreview.tsx b/native/components/DocumentScanner/SalesRaportPhotoPreview.tsx index f57e3511..f349ad99 100644 --- a/native/components/DocumentScanner/SalesRaportPhotoPreview.tsx +++ b/native/components/DocumentScanner/SalesRaportPhotoPreview.tsx @@ -6,8 +6,8 @@ import { documentScannerSelector, } from "../../redux/documentScannerSlice"; import { useAppDispatch, useAppSelector } from "../../redux/hooks"; -import { Button } from "../Button"; -import { LoadingSpinner } from "../LoadingSpinner"; +import { Button } from "../common/Button"; +import { LoadingSpinner } from "../common/LoadingSpinner"; export const SalesRaportPhotoPreview = () => { const { isConnected } = useNetInfo(); diff --git a/native/components/DropdownButton.tsx b/native/components/DropdownButton.tsx index 7191c76d..38a4c3aa 100644 --- a/native/components/DropdownButton.tsx +++ b/native/components/DropdownButton.tsx @@ -11,8 +11,8 @@ import { import { createStyles } from "../theme/useStyles"; import { ExpandMoreIcon } from "./Icon"; -import { LoadingSpinner } from "./LoadingSpinner"; -import { Typography, TypographyProps } from "./Typography"; +import { LoadingSpinner } from "./common/LoadingSpinner"; +import { Typography, TypographyProps } from "./common/Typography"; export type ButtonOnPress = (event: GestureResponderEvent) => void; type ButtonProps = { diff --git a/native/components/IndexBadge.tsx b/native/components/IndexBadge.tsx index 61167221..b1d3481b 100644 --- a/native/components/IndexBadge.tsx +++ b/native/components/IndexBadge.tsx @@ -1,6 +1,6 @@ import { StyleSheet, View, ViewStyle } from "react-native"; import { createStyles } from "../theme/useStyles"; -import { Typography } from "./Typography"; +import { Typography } from "./common/Typography"; export const IndexBadge = ({ index, diff --git a/native/components/NewBarcodeListItem.tsx b/native/components/NewBarcodeListItem.tsx index d5cb1652..e57f581c 100644 --- a/native/components/NewBarcodeListItem.tsx +++ b/native/components/NewBarcodeListItem.tsx @@ -1,8 +1,8 @@ import React from "react"; import { StyleSheet } from "react-native"; import { createStyles } from "../theme/useStyles"; -import { Card } from "./Card"; -import { Typography } from "./Typography"; +import { Card } from "./common/Card"; +import { Typography } from "./common/Typography"; type NewBarcodeListItemProps = { name: string; diff --git a/native/components/PrivacyPolicy.tsx b/native/components/PrivacyPolicy.tsx index 6ff4fc51..4834015d 100644 --- a/native/components/PrivacyPolicy.tsx +++ b/native/components/PrivacyPolicy.tsx @@ -1,5 +1,5 @@ import { Linking, TouchableOpacity } from "react-native"; -import { Typography } from "./Typography"; +import { Typography } from "./common/Typography"; export const PrivacyPolicy = () => { return ( diff --git a/native/components/QuantityBadge.tsx b/native/components/QuantityBadge.tsx index edbf1f0b..96796783 100644 --- a/native/components/QuantityBadge.tsx +++ b/native/components/QuantityBadge.tsx @@ -1,6 +1,6 @@ import { StyleSheet, View, ViewStyle } from "react-native"; import { createStyles } from "../theme/useStyles"; -import { Typography } from "./Typography"; +import { Typography } from "./common/Typography"; export const QuantityBadge = ({ delta, diff --git a/native/components/Snackbar/index.tsx b/native/components/Snackbar/index.tsx index a7957ad8..d441b543 100644 --- a/native/components/Snackbar/index.tsx +++ b/native/components/Snackbar/index.tsx @@ -12,7 +12,7 @@ import { useSafeAreaInsets } from "react-native-safe-area-context"; import { createStyles } from "../../theme/useStyles"; import { snackbarAction } from "../../redux/snackbarSlice"; -import { Typography } from "../Typography"; +import { Typography } from "../common/Typography"; import { useSnackbar } from "./hooks"; import { SnackbarItem } from "./types"; diff --git a/native/components/StockFormContext/DeliveryFormContextProvider.tsx b/native/components/StockFormContext/DeliveryFormContextProvider.tsx deleted file mode 100644 index 4dde7e86..00000000 --- a/native/components/StockFormContext/DeliveryFormContextProvider.tsx +++ /dev/null @@ -1,120 +0,0 @@ -import { useEffect } from "react"; -import { FormProvider, useForm } from "react-hook-form"; -// import { useCreateProductRecords } from "../../db/hooks/useCreateProductRecords"; -import { useListProductRecords } from "../../db"; -import { useListRecipeRecords } from "../../db/hooks/useListRecipeRecords"; -import { documentScannerSelector } from "../../redux/documentScannerSlice"; -import { useAppSelector } from "../../redux/hooks"; -import { StockForm } from "./types"; - -export const DeliveryFormContextProvider = ({ - inventoryId, - children, -}: { - inventoryId: number; - children: React.ReactNode; -}) => { - const processedInvoice = useAppSelector( - documentScannerSelector.selectProcessedInvoice - ); - const { data: productRecordsRaw } = useListProductRecords(inventoryId); - - const { data: recipeRecordsRaw } = useListRecipeRecords(inventoryId); - - const methods = useForm({ - defaultValues: { product_records: {}, recipe_records: {} }, - }); - - useEffect(() => { - const product_records: StockForm["product_records"] = productRecordsRaw - ? Object.fromEntries( - productRecordsRaw.map((record) => [ - record.product_id, - { - id: record.id, - quantity: record.quantity, - price_per_unit: record.price_per_unit, - }, - ]) - ) - : {}; - const recipe_records: StockForm["recipe_records"] = recipeRecordsRaw - ? Object.fromEntries( - recipeRecordsRaw.map((record) => [ - record.id, - { quantity: record.quantity, recipe_id: record.recipe_id }, - ]) - ) - : {}; - methods.reset({ product_records, recipe_records }); - }, [productRecordsRaw]); - - const newMatched = useAppSelector(documentScannerSelector.selectNewMatched); - - const dirtyFields = methods.formState.dirtyFields; - - // const { mutate: createProductRecords } = useCreateProductRecords( - // +inventoryId - // ); - - useEffect(() => { - if (!processedInvoice) return; - const matchedProductRecords = processedInvoice.matchedProductRecords; - - for (const record_id in matchedProductRecords) { - const product_id = matchedProductRecords[record_id].product_id; - if (record_id in dirtyFields) continue; - methods.setValue( - `product_records.${product_id}.quantity`, - matchedProductRecords[record_id].quantity, - { shouldDirty: true } - ); - methods.setValue( - `product_records.${product_id}.price_per_unit`, - matchedProductRecords[record_id].price_per_unit, - { shouldDirty: true } - ); - } - - const matchedProductsNotInInventory = - processedInvoice.matchedProductsNotInInventory; - - for (const product_id in matchedProductsNotInInventory) { - // if (record_id in dirtyFields) continue; - methods.setValue( - `product_records.${product_id}.quantity`, - matchedProductsNotInInventory[product_id].quantity, - { shouldDirty: true } - ); - methods.setValue( - `product_records.${product_id}.price_per_unit`, - matchedProductsNotInInventory[product_id].price_per_unit, - { shouldDirty: true } - ); - } - // console.log(methods.getValues()); - }, [processedInvoice]); - - useEffect(() => { - for (const record_id in newMatched) { - const product_id = newMatched[record_id].product_id; - if (record_id in dirtyFields) continue; - methods.setValue( - `product_records.${product_id}.quantity`, - newMatched[record_id].quantity, - { - shouldDirty: true, - } - ); - methods.setValue( - `product_records.${product_id}.price_per_unit`, - newMatched[record_id].price_per_unit, - { - shouldDirty: true, - } - ); - } - }, [newMatched]); - - return {children}; -}; diff --git a/native/components/StockFormContext/InventoryFormContextProvider.tsx b/native/components/StockFormContext/InventoryFormContextProvider.tsx deleted file mode 100644 index 118f1869..00000000 --- a/native/components/StockFormContext/InventoryFormContextProvider.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { useEffect } from "react"; -import { FormProvider, useForm } from "react-hook-form"; -import { ProcessSalesRaportResponse } from "../../db/types"; -import { documentScannerSelector } from "../../redux/documentScannerSlice"; -import { useAppSelector } from "../../redux/hooks"; -import { StockForm } from "./types"; - -const getValuesForForm = ( - processInvoiceResponse: ProcessSalesRaportResponse -) => { - if (processInvoiceResponse == null) { - return undefined; - } - return processInvoiceResponse.form; -}; - -export const InventoryFormContextProvider = ({ - children, -}: { - children: React.ReactNode; -}) => { - const processedSalesRaport = useAppSelector( - documentScannerSelector.selectProcessedSalesRaport - ); - const methods = useForm({ - defaultValues: { product_records: {}, recipe_records: {} }, - }); - - const dirtyFields = methods.formState.dirtyFields; - - useEffect(() => { - const valuesForForm = getValuesForForm(processedSalesRaport); - if (!valuesForForm) return; - - for (const record_id in valuesForForm) { - if (record_id in dirtyFields) continue; - methods.setValue( - `recipe_records.${record_id}.quantity`, - valuesForForm[record_id].quantity, - { - shouldDirty: true, - } - ); - } - }, [processedSalesRaport]); - - return {children}; -}; diff --git a/native/components/StockFormContext/types.ts b/native/components/StockFormContext/types.ts deleted file mode 100644 index b52e0f02..00000000 --- a/native/components/StockFormContext/types.ts +++ /dev/null @@ -1,16 +0,0 @@ -export type StockForm = { - product_records: { - [product_id: string]: { - id: number | null; - // product_id: number; - quantity: number; - price_per_unit: number | null; - }; - }; - recipe_records: { - [record_id: string]: { - quantity: number; - recipe_id: number; - }; - }; -}; diff --git a/native/components/Tooltip.tsx b/native/components/Tooltip.tsx index 2ff57479..03d8aac3 100644 --- a/native/components/Tooltip.tsx +++ b/native/components/Tooltip.tsx @@ -3,7 +3,7 @@ import { useSafeAreaInsets } from "react-native-safe-area-context"; import { createStyles } from "../theme/useStyles"; import { useBottomSheet } from "./BottomSheet"; import { InfoIcon } from "./Icon"; -import { Typography } from "./Typography"; +import { Typography } from "./common/Typography"; export const Tooltip = ({ title, diff --git a/native/components/Badge.tsx b/native/components/common/Badge.tsx similarity index 88% rename from native/components/Badge.tsx rename to native/components/common/Badge.tsx index 422b401e..3892f6dd 100644 --- a/native/components/Badge.tsx +++ b/native/components/common/Badge.tsx @@ -1,6 +1,6 @@ import { StyleSheet, View, ViewStyle } from "react-native"; -import { createStyles } from "../theme/useStyles"; -import { CheckmarkIcon } from "./Icon"; +import { createStyles } from "../../theme/useStyles"; +import { CheckmarkIcon } from "../Icon"; export const Badge = ({ isShown, diff --git a/native/components/Button.tsx b/native/components/common/Button.tsx similarity index 98% rename from native/components/Button.tsx rename to native/components/common/Button.tsx index 1a5fc176..ccb351c9 100644 --- a/native/components/Button.tsx +++ b/native/components/common/Button.tsx @@ -7,7 +7,7 @@ import { ViewStyle, } from "react-native"; -import { createStyles } from "../theme/useStyles"; +import { createStyles } from "../../theme/useStyles"; import { LoadingSpinner } from "./LoadingSpinner"; import { Typography, TypographyProps } from "./Typography"; diff --git a/native/components/Card.tsx b/native/components/common/Card.tsx similarity index 96% rename from native/components/Card.tsx rename to native/components/common/Card.tsx index ab80f946..ec1b5b1a 100644 --- a/native/components/Card.tsx +++ b/native/components/common/Card.tsx @@ -8,8 +8,8 @@ import { } from "react-native"; import { useTheme } from "@react-navigation/native"; -import { ThemeColors } from "../theme"; -import { createStyles } from "../theme/useStyles"; +import { ThemeColors } from "../../theme"; +import { createStyles } from "../../theme/useStyles"; type CardPaddings = "none" | "dense" | "normal"; diff --git a/native/components/Divider.tsx b/native/components/common/Divider.tsx similarity index 87% rename from native/components/Divider.tsx rename to native/components/common/Divider.tsx index 8ec6c11e..e11bdedd 100644 --- a/native/components/Divider.tsx +++ b/native/components/common/Divider.tsx @@ -1,5 +1,5 @@ import { StyleSheet, View } from "react-native"; -import { createStyles } from "../theme/useStyles"; +import { createStyles } from "../../theme/useStyles"; export const Divider = () => { const styles = useStyles(); diff --git a/native/components/EmptyScreenTemplate.tsx b/native/components/common/EmptyScreenTemplate.tsx similarity index 96% rename from native/components/EmptyScreenTemplate.tsx rename to native/components/common/EmptyScreenTemplate.tsx index 82027bf6..bbdb003f 100644 --- a/native/components/EmptyScreenTemplate.tsx +++ b/native/components/common/EmptyScreenTemplate.tsx @@ -4,7 +4,7 @@ import { SafeAreaView, useSafeAreaInsets, } from "react-native-safe-area-context"; -import { createStyles } from "../theme/useStyles"; +import { createStyles } from "../../theme/useStyles"; import { Typography } from "./Typography"; export const EmptyScreenTemplate = ({ diff --git a/native/components/LoadingSpinner.tsx b/native/components/common/LoadingSpinner.tsx similarity index 100% rename from native/components/LoadingSpinner.tsx rename to native/components/common/LoadingSpinner.tsx diff --git a/native/components/NumberInputController.tsx b/native/components/common/NumberInputController.tsx similarity index 100% rename from native/components/NumberInputController.tsx rename to native/components/common/NumberInputController.tsx diff --git a/native/components/SafeLayout.tsx b/native/components/common/SafeLayout.tsx similarity index 92% rename from native/components/SafeLayout.tsx rename to native/components/common/SafeLayout.tsx index dcea3e03..ac01a645 100644 --- a/native/components/SafeLayout.tsx +++ b/native/components/common/SafeLayout.tsx @@ -9,9 +9,9 @@ import { } from "react-native"; import { ScrollView } from "react-native-gesture-handler"; import { SafeAreaView } from "react-native-safe-area-context"; -import { isIos } from "../constants"; -import { createStyles } from "../theme/useStyles"; -import { getKeyboardVerticalOffset } from "../utils"; +import { isIos } from "../../constants"; +import { createStyles } from "../../theme/useStyles"; +import { getKeyboardVerticalOffset } from "../../utils"; interface SafeLayoutProps { scrollable?: boolean; diff --git a/native/components/TextInput.tsx b/native/components/common/TextInput.tsx similarity index 97% rename from native/components/TextInput.tsx rename to native/components/common/TextInput.tsx index 5c3f6143..33503726 100644 --- a/native/components/TextInput.tsx +++ b/native/components/common/TextInput.tsx @@ -12,8 +12,8 @@ import { ViewStyle, } from "react-native"; -import { isAndroid } from "../constants"; -import { createStyles } from "../theme/useStyles"; +import { isAndroid } from "../../constants"; +import { createStyles } from "../../theme/useStyles"; import { Typography } from "./Typography"; const BORDER_WIDTH = 2; diff --git a/native/components/TextInputController.tsx b/native/components/common/TextInputController.tsx similarity index 100% rename from native/components/TextInputController.tsx rename to native/components/common/TextInputController.tsx diff --git a/native/components/Typography.tsx b/native/components/common/Typography.tsx similarity index 94% rename from native/components/Typography.tsx rename to native/components/common/Typography.tsx index 454e4499..f6af65ca 100644 --- a/native/components/Typography.tsx +++ b/native/components/common/Typography.tsx @@ -8,8 +8,8 @@ import { TextStyle, } from "react-native"; -import { MainTheme, ThemeColors } from "../theme"; -import { createStyles } from "../theme/useStyles"; +import { MainTheme, ThemeColors } from "../../theme"; +import { createStyles } from "../../theme/useStyles"; export type TypographyProps = { children: React.ReactNode; diff --git a/native/db/hooks/useRecordPanel.tsx b/native/db/hooks/useRecordPanel.tsx index fc49f235..3eb979ca 100644 --- a/native/db/hooks/useRecordPanel.tsx +++ b/native/db/hooks/useRecordPanel.tsx @@ -1,5 +1,5 @@ import { useCallback } from "react"; -import { useStockContext } from "../../components/StockContext/StockContextProvider"; +import { useStockContext } from "../../screens/StockTabScreen/StockContext/StockContextProvider"; import { roundFloat } from "../../utils"; import { useGetProduct } from "./useGetProduct"; diff --git a/native/db/hooks/useUpdateRecords.ts b/native/db/hooks/useUpdateRecords.ts index dedb03a7..a6e0c2e2 100644 --- a/native/db/hooks/useUpdateRecords.ts +++ b/native/db/hooks/useUpdateRecords.ts @@ -1,6 +1,6 @@ import { useMutation, useQueryClient } from "@tanstack/react-query"; -import { StockData } from "../../components/StockContext/types"; +import { StockData } from "../../screens/StockTabScreen/StockContext/types"; import { supabase } from "../supabase"; const updateRecordsForm = async (stock: StockData, inventoryId: number) => { diff --git a/native/navigation/BottomTabNavigation.tsx b/native/navigation/BottomTabNavigation.tsx index ac472ca0..69da5362 100644 --- a/native/navigation/BottomTabNavigation.tsx +++ b/native/navigation/BottomTabNavigation.tsx @@ -4,34 +4,29 @@ import { createNativeStackNavigator } from "@react-navigation/native-stack"; import { View } from "react-native"; import { DeliveryIcon, InventoryIcon, ListIcon } from "../components/Icon"; -import { InventoryFormContextProvider } from "../components/StockFormContext/InventoryFormContextProvider"; import { isEmpty } from "lodash"; -import { EmptyScreenTemplate } from "../components/EmptyScreenTemplate"; import { TabBar } from "../components/TabBar"; +import { EmptyScreenTemplate } from "../components/common/EmptyScreenTemplate"; import { useListInventories } from "../db"; -import { StockContextProvider } from "../components/StockContext/StockContextProvider"; import { AddRecordScreen } from "../screens/AddRecordScreen"; -import DeliveryTabScreen from "../screens/DeliveryTabScreen"; -import InventoryTabScreen from "../screens/InventoryTabScreen"; -import { ListTab } from "../screens/ListTabScreen"; +import { ListTab } from "../screens/ListTabScreen/ListTabScreen"; import { RecordScreen } from "../screens/RecordScreen"; +import { StockContextProvider } from "../screens/StockTabScreen/StockContext/StockContextProvider"; +import StockTabScreen from "../screens/StockTabScreen/StockTabScreen"; import { BottomTabParamList, BottomTabProps, - DeliveryStackParamList, - DeliveryTabProps, - InventoryStackParamList, - InventoryTabProps, + StockStackParamList, + StockTabProps, } from "./types"; const Tab = createBottomTabNavigator(); -const DeliveryStack = createNativeStackNavigator(); -const InventoryStack = createNativeStackNavigator(); +const StockStack = createNativeStackNavigator(); -const DeliveryStackNavigator = ({ route }: DeliveryTabProps) => { +const StockStackNavigator = ({ route }: StockTabProps) => { const theme = useTheme(); const routeDeliveryId = route.params?.id; @@ -59,11 +54,10 @@ const DeliveryStackNavigator = ({ route }: DeliveryTabProps) => { return ( - {/* */} - - + ( @@ -86,7 +80,7 @@ const DeliveryStackNavigator = ({ route }: DeliveryTabProps) => { headerBackVisible: false, }} /> - { headerBackVisible: false, }} /> - { headerBackVisible: false, }} /> - - {/* */} + ); }; -const InventoryStackNavigator = ({ route }: InventoryTabProps) => { - const theme = useTheme(); - const { data } = useListInventories(); - - const routeInventoryId = route.params?.id; - const lastestInventoryId = data?.find((item) => !item.is_delivery)?.id; - - const inventoryId = (routeInventoryId ?? lastestInventoryId) as number; - - const noInventories = !lastestInventoryId && !isEmpty(data); - if (noInventories) - return ( - - Brak inwentaryzacji. Dodaj nową inwentaryzację z ekranu listy! - - ); - if (!inventoryId) - return ( - - Błąd - brak identyfikatora inwentaryzacji. Zrestartuj aplikację i - spróbuj ponownie. - - ); - - return ( - - - ( - - ), - headerTitleStyle: { - color: theme.colors.highlight, - fontSize: theme.text.xs.fontSize, - fontFamily: theme.text.xs.fontFamily, - }, - headerTitleAlign: "center", - headerBackVisible: false, - }} - /> - ( - - ), - headerTitleStyle: { - color: theme.colors.highlight, - fontSize: theme.text.xs.fontSize, - fontFamily: theme.text.xs.fontFamily, - }, - headerTitleAlign: "center", - headerBackVisible: false, - }} - /> - ( - - ), - headerTitleStyle: { - color: theme.colors.highlight, - fontSize: theme.text.xs.fontSize, - fontFamily: theme.text.xs.fontFamily, - }, - headerTitleAlign: "center", - headerBackVisible: false, - }} - /> - - - ); -}; - export const BottomTabNavigation = ({}: BottomTabProps) => { const theme = useTheme(); return ( @@ -270,25 +154,20 @@ export const BottomTabNavigation = ({}: BottomTabProps) => { }} /> , - headerShown: false, - lazy: false, - }} - /> - , + // WIP + tabBarIcon: () => + true ? ( + + ) : ( + + ), headerShown: false, lazy: false, }} diff --git a/native/navigation/types.ts b/native/navigation/types.ts index a228dddc..069a4218 100644 --- a/native/navigation/types.ts +++ b/native/navigation/types.ts @@ -27,7 +27,7 @@ export type HomeStackParamList = { Tabs: NavigatorScreenParams; BarcodeModal: { inventoryId: number; - navigateTo: "InventoryTab" | "DeliveryTab"; + navigateTo: "StockTab"; }; DocumentScannerModal: { isScanningSalesRaport: boolean }; SettingsScreen: undefined; @@ -47,6 +47,7 @@ export type BottomTabParamList = { ListTab: undefined; DeliveryTab: { id?: number }; InventoryTab: { id?: number }; + StockTab: { id?: number }; }; export type BottomTabProps = CompositeScreenProps< NativeStackScreenProps, @@ -114,6 +115,31 @@ export type DeliveryTabScreenProps = NativeStackScreenProps< export type DeliveryTabScreenNavigationProp = DeliveryTabScreenProps["navigation"]; +/** + * Delivery Tab/Stack + */ +export type StockStackParamList = { + StockTabScreen: { id: number }; + RecordScreen: { + id: number; + recordId: number; + productId: number; + isDelivery?: boolean; + }; + AddRecordScreen: { inventoryId: number }; +}; +export type StockTabProps = CompositeScreenProps< + BottomTabScreenProps, + NativeStackScreenProps +>; +export type StockTabNavigationProp = StockTabProps["navigation"]; + +export type StockTabScreenProps = NativeStackScreenProps< + StockStackParamList, + "StockTabScreen" +>; +export type StockTabScreenNavigationProp = StockTabScreenProps["navigation"]; + /** * Record Screen */ diff --git a/native/screens/AddRecordScreen.tsx b/native/screens/AddRecordScreen.tsx index e01ccf8f..f07fa73f 100644 --- a/native/screens/AddRecordScreen.tsx +++ b/native/screens/AddRecordScreen.tsx @@ -2,15 +2,15 @@ import React, { useEffect, useState } from "react"; import { ScrollView, StyleSheet, View } from "react-native"; import { SafeAreaView } from "react-native-safe-area-context"; -import { Button } from "../components/Button"; import { Skeleton } from "../components/Skeleton"; +import { Button } from "../components/common/Button"; import { useNetInfo } from "@react-native-community/netinfo"; import { NativeStackScreenProps } from "@react-navigation/native-stack"; import { isEmpty } from "lodash"; -import { EmptyScreenTemplate } from "../components/EmptyScreenTemplate"; import { NewBarcodeListItem } from "../components/NewBarcodeListItem"; import { useSnackbar } from "../components/Snackbar/hooks"; +import { EmptyScreenTemplate } from "../components/common/EmptyScreenTemplate"; import { useCreateProductRecords } from "../db/hooks/useCreateProductRecords"; import { useGetInventoryName } from "../db/hooks/useGetInventoryName"; import { useListMissingProducts } from "../db/hooks/useListMissingProducts"; diff --git a/native/screens/BarcodeModalScreen.tsx b/native/screens/BarcodeModalScreen.tsx index 1f60850f..fe240f89 100644 --- a/native/screens/BarcodeModalScreen.tsx +++ b/native/screens/BarcodeModalScreen.tsx @@ -4,13 +4,13 @@ import { Linking, StyleSheet } from "react-native"; import { SafeAreaView } from "react-native-safe-area-context"; import { BarcodeScanner } from "../components/BarcodeScanner"; -import { Button } from "../components/Button"; +import { Button } from "../components/common/Button"; -import { Typography } from "../components/Typography"; +import { Typography } from "../components/common/Typography"; import { NativeStackScreenProps } from "@react-navigation/native-stack"; -import { EmptyScreenTemplate } from "../components/EmptyScreenTemplate"; -import { LoadingSpinner } from "../components/LoadingSpinner"; +import { EmptyScreenTemplate } from "../components/common/EmptyScreenTemplate"; +import { LoadingSpinner } from "../components/common/LoadingSpinner"; import { HomeStackParamList } from "../navigation/types"; import { createStyles } from "../theme/useStyles"; diff --git a/native/screens/DocumentScannerModalScreen.tsx b/native/screens/DocumentScannerModalScreen.tsx index 03653c0f..64fa0e92 100644 --- a/native/screens/DocumentScannerModalScreen.tsx +++ b/native/screens/DocumentScannerModalScreen.tsx @@ -2,16 +2,16 @@ import { useCameraPermissions } from "expo-camera"; import React, { useEffect } from "react"; import { Linking, StyleSheet } from "react-native"; -import { Button } from "../components/Button"; +import { Button } from "../components/common/Button"; -import { Typography } from "../components/Typography"; +import { Typography } from "../components/common/Typography"; import { NativeStackScreenProps } from "@react-navigation/native-stack"; import isEmpty from "lodash/isEmpty"; import { DocumentScanner } from "../components/DocumentScanner"; -import { EmptyScreenTemplate } from "../components/EmptyScreenTemplate"; -import { LoadingSpinner } from "../components/LoadingSpinner"; -import SafeLayout from "../components/SafeLayout"; +import { EmptyScreenTemplate } from "../components/common/EmptyScreenTemplate"; +import { LoadingSpinner } from "../components/common/LoadingSpinner"; +import SafeLayout from "../components/common/SafeLayout"; import { HomeStackParamList } from "../navigation/types"; import { documentScannerAction, diff --git a/native/screens/IdentifyAliasesScreen/Invoice.tsx b/native/screens/IdentifyAliasesScreen/Invoice.tsx index 4e1a00a1..f9d6d032 100644 --- a/native/screens/IdentifyAliasesScreen/Invoice.tsx +++ b/native/screens/IdentifyAliasesScreen/Invoice.tsx @@ -4,16 +4,15 @@ import isEmpty from "lodash/isEmpty"; import { useEffect } from "react"; import { UseFormGetValues, UseFormSetValue, useForm } from "react-hook-form"; import { StyleSheet, View } from "react-native"; -import { Badge } from "../../components/Badge"; import { useBottomSheet } from "../../components/BottomSheet"; import { ProductListBottomSheetContent } from "../../components/BottomSheet/contents/ProductList"; -import { Button } from "../../components/Button"; import { DropdownButton } from "../../components/DropdownButton"; -import { EmptyScreenTemplate } from "../../components/EmptyScreenTemplate"; -import { IDListCardAddProduct } from "../../components/IDListCardAddProduct"; import { IndexBadge } from "../../components/IndexBadge"; import { useSnackbar } from "../../components/Snackbar/hooks"; -import { Typography } from "../../components/Typography"; +import { Badge } from "../../components/common/Badge"; +import { Button } from "../../components/common/Button"; +import { EmptyScreenTemplate } from "../../components/common/EmptyScreenTemplate"; +import { Typography } from "../../components/common/Typography"; import { useListProductRecords } from "../../db"; import { useCreateProductNameAlias } from "../../db/hooks/useCreateProductNameAlias"; import { useListExistingProducts } from "../../db/hooks/useListProducts"; @@ -24,6 +23,7 @@ import { } from "../../redux/documentScannerSlice"; import { useAppDispatch, useAppSelector } from "../../redux/hooks"; import { createStyles } from "../../theme/useStyles"; +import { IDListCardAddProduct } from "../StockTabScreen/IDListCard/IDListCardAddProduct"; import { AliasForm } from "./types"; const BADGE_SIDE_SIZE = 20; diff --git a/native/screens/IdentifyAliasesScreen/SalesRaport.tsx b/native/screens/IdentifyAliasesScreen/SalesRaport.tsx index 51a93527..ca1ad459 100644 --- a/native/screens/IdentifyAliasesScreen/SalesRaport.tsx +++ b/native/screens/IdentifyAliasesScreen/SalesRaport.tsx @@ -4,15 +4,15 @@ import isEmpty from "lodash/isEmpty"; import { useEffect } from "react"; import { UseFormGetValues, UseFormSetValue, useForm } from "react-hook-form"; import { StyleSheet, View } from "react-native"; -import { Badge } from "../../components/Badge"; import { useBottomSheet } from "../../components/BottomSheet"; import { RecipesListBottomSheetContent } from "../../components/BottomSheet/contents/RecipeList"; -import { Button } from "../../components/Button"; import { DropdownButton } from "../../components/DropdownButton"; -import { EmptyScreenTemplate } from "../../components/EmptyScreenTemplate"; import { IndexBadge } from "../../components/IndexBadge"; import { useSnackbar } from "../../components/Snackbar/hooks"; -import { Typography } from "../../components/Typography"; +import { Badge } from "../../components/common/Badge"; +import { Button } from "../../components/common/Button"; +import { EmptyScreenTemplate } from "../../components/common/EmptyScreenTemplate"; +import { Typography } from "../../components/common/Typography"; import { useCreateRecipeNameAlias } from "../../db/hooks/useCreateRecipeNameAlias"; import { useListRecipes } from "../../db/hooks/useListRecipes"; import { IdentifyAliasesScreenNavigationProp } from "../../navigation/types"; diff --git a/native/screens/IdentifyAliasesScreen/index.tsx b/native/screens/IdentifyAliasesScreen/index.tsx index b0ddb657..e64e5199 100644 --- a/native/screens/IdentifyAliasesScreen/index.tsx +++ b/native/screens/IdentifyAliasesScreen/index.tsx @@ -1,5 +1,5 @@ import { StyleSheet } from "react-native"; -import SafeLayout from "../../components/SafeLayout"; +import SafeLayout from "../../components/common/SafeLayout"; import { IdentifyAliasesScreenProps } from "../../navigation/types"; import { createStyles } from "../../theme/useStyles"; import { IdentifyAliasesScreenInvoice } from "./Invoice"; diff --git a/native/screens/InventoryTabScreen.tsx b/native/screens/InventoryTabScreen.tsx deleted file mode 100644 index 068564bc..00000000 --- a/native/screens/InventoryTabScreen.tsx +++ /dev/null @@ -1,256 +0,0 @@ -import React, { useEffect } from "react"; -import { ScrollView, StyleSheet, View } from "react-native"; - -import { useFormContext } from "react-hook-form"; -import { SafeAreaView } from "react-native-safe-area-context"; -import { Button } from "../components/Button"; -import { IDListCard } from "../components/IDListCard"; -import { DocumentScannerIcon, ScanBarcodeIcon } from "../components/Icon"; -import { Skeleton } from "../components/Skeleton"; - -import { useNetInfo } from "@react-native-community/netinfo"; -import isEmpty from "lodash/isEmpty"; -import { Collapsible } from "../components/Collapsible/Collapsible"; -import { IDListCardAddProduct } from "../components/IDListCardAddProduct"; -import { IDListCardAddRecord } from "../components/IDListCardAddRecord"; -import { RecipeCard } from "../components/RecipeCard"; -import { useSnackbar } from "../components/Snackbar/hooks"; -import { StockForm } from "../components/StockFormContext/types"; -import { useGetInventoryName } from "../db/hooks/useGetInventoryName"; -import { useListCategorizedProductRecords } from "../db/hooks/useListCategorizedProductRecords"; -import { useListRecipes } from "../db/hooks/useListRecipes"; -import { useListUncategorizedProductRecords } from "../db/hooks/useListUncategorizedProductRecords"; -import { useUpdateRecords } from "../db/hooks/useUpdateRecords"; -import { InventoryTabScreenProps } from "../navigation/types"; -import { createStyles } from "../theme/useStyles"; - -export default function InventoryTabScreen({ - route, - navigation, -}: InventoryTabScreenProps) { - const styles = useStyles(); - - const inventoryId = route.params?.id; - const { isConnected } = useNetInfo(); - - const { data: inventoryName } = useGetInventoryName(+inventoryId); - const { data: uncategorizedRecordList, isSuccess: uncategorizedIsSuccess } = - useListUncategorizedProductRecords(+inventoryId); - const { data: categorizedRecordList, isSuccess: categorizedIsSuccess } = - useListCategorizedProductRecords(+inventoryId); - const { data: recipeList, isSuccess: recipesIsSuccess } = - useListRecipes(inventoryId); - - const inventoryForm = useFormContext(); - const inventoryFormValues = inventoryForm.watch(); - - const { - mutate, - isSuccess: isUpdateSuccess, - isError: isUpdateError, - } = useUpdateRecords(+inventoryId); - const { showError, showInfo, showSuccess } = useSnackbar(); - - useEffect(() => { - navigation.setOptions({ headerTitle: inventoryName }); - }, [inventoryId, inventoryName, navigation]); - - useEffect(() => { - if (isUpdateSuccess) { - showSuccess("Zmiany zostały zapisane"); - return; - } - if (isUpdateError) { - showError("Nie udało się zapisać zmian"); - return; - } - }, [isUpdateSuccess, isUpdateError]); - - const handlePress = () => { - inventoryForm.handleSubmit( - (data) => { - if (isEmpty(data)) { - showInfo("Brak zmian do zapisania"); - return; - } - if (!isConnected) { - showError("Brak połączenia z internetem"); - return; - } - mutate({ productRecords: {}, recipeRecords: {} }); - }, - (_errors) => { - // TODO show a snackbar? handle error better - console.log("error", _errors); - } - )(); - }; - - if (!uncategorizedIsSuccess || !categorizedIsSuccess || !recipesIsSuccess) - return ( - - - - - - - - - - - - ); - return ( - - - - - - - - - - {recipeList?.map((recipe) => ( - - ))} - {uncategorizedRecordList?.map((record) => - record && record.product_id ? ( - - ) : ( - <> - ) - )} - - } - sections={categorizedRecordList?.map(({ title, data }, i) => ({ - id: i + 1, - title: title, - data: data.map((record) => - record && record.product_id ? ( - - ) : ( - <> - ) - ), - }))} - /> - - ); -} - -const useStyles = createStyles((theme) => - StyleSheet.create({ - container: { - backgroundColor: theme.colors.darkBlue, - }, - scroll: { - backgroundColor: theme.colors.darkBlue, - }, - saveButtonContainer: { - flexShrink: 1, - }, - saveButtonLabel: { - ...theme.text.l, - }, - barcodeIconContainer: { - flexGrow: 1, - }, - doubleButtonContainer: { - flexDirection: "row", - justifyContent: "space-between", - marginBottom: theme.spacing, - marginTop: theme.spacing * 2, - gap: theme.spacing, - }, - skeletonDate: { - paddingTop: theme.spacing, - paddingBottom: theme.spacing, - }, - skeletonFullWidthButton: { width: "100%", height: 58 }, - skeletonButton: { width: 58, height: 58 }, - skeletonListItem: { - flexDirection: "row", - alignItems: "center", - justifyContent: "space-between", - paddingLeft: theme.spacing * 6, - paddingRight: theme.spacing * 4, - marginBottom: theme.spacing * 2, - height: 45, - }, - }) -); diff --git a/native/components/ListCard/ListCardAdd.tsx b/native/screens/ListTabScreen/ListCard/ListCardAdd.tsx similarity index 83% rename from native/components/ListCard/ListCardAdd.tsx rename to native/screens/ListTabScreen/ListCard/ListCardAdd.tsx index bb78c898..627f376b 100644 --- a/native/components/ListCard/ListCardAdd.tsx +++ b/native/screens/ListTabScreen/ListCard/ListCardAdd.tsx @@ -2,9 +2,9 @@ import { useNavigation } from "@react-navigation/native"; import React from "react"; import { StyleSheet } from "react-native"; -import { createStyles } from "../../theme/useStyles"; -import { Button } from "../Button"; -import { PlusIcon } from "../Icon"; +import { PlusIcon } from "../../../components/Icon"; +import { Button } from "../../../components/common/Button"; +import { createStyles } from "../../../theme/useStyles"; export const ListCardAdd = () => { const styles = useStyles(); diff --git a/native/components/ListCard/ListCardLink.tsx b/native/screens/ListTabScreen/ListCard/ListCardLink.tsx similarity index 78% rename from native/components/ListCard/ListCardLink.tsx rename to native/screens/ListTabScreen/ListCard/ListCardLink.tsx index 77428db1..bc518d95 100644 --- a/native/components/ListCard/ListCardLink.tsx +++ b/native/screens/ListTabScreen/ListCard/ListCardLink.tsx @@ -1,14 +1,11 @@ import { useNavigation } from "@react-navigation/native"; import React from "react"; import { StyleSheet } from "react-native"; -import { - DeliveryTabNavigationProp, - InventoryTabNavigationProp, -} from "../../navigation/types"; -import { createStyles } from "../../theme/useStyles"; -import { Card } from "../Card"; -import { SmallerArrowRightIcon } from "../Icon"; -import { Typography } from "../Typography"; +import { SmallerArrowRightIcon } from "../../../components/Icon"; +import { Card } from "../../../components/common/Card"; +import { Typography } from "../../../components/common/Typography"; +import { StockTabNavigationProp } from "../../../navigation/types"; +import { createStyles } from "../../../theme/useStyles"; type ListCardAddProps = { title: string | undefined; @@ -18,13 +15,14 @@ type ListCardAddProps = { const navigateToTabScreen = (navigation: any, id: number, isDelivery: boolean) => () => { + // WIP if (isDelivery) { - (navigation as DeliveryTabNavigationProp).navigate("DeliveryTabScreen", { + (navigation as StockTabNavigationProp).navigate("StockTabScreen", { id, }); return; } - (navigation as InventoryTabNavigationProp).navigate("InventoryTabScreen", { + (navigation as StockTabNavigationProp).navigate("StockTabScreen", { id, }); return; diff --git a/native/screens/ListTabScreen.tsx b/native/screens/ListTabScreen/ListTabScreen.tsx similarity index 90% rename from native/screens/ListTabScreen.tsx rename to native/screens/ListTabScreen/ListTabScreen.tsx index 2f9c5cd6..afbc78de 100644 --- a/native/screens/ListTabScreen.tsx +++ b/native/screens/ListTabScreen/ListTabScreen.tsx @@ -2,17 +2,17 @@ import capitalize from "lodash/capitalize"; import React, { useMemo } from "react"; import { ScrollView, StyleSheet, View } from "react-native"; import { SafeAreaView } from "react-native-safe-area-context"; -import { ListCardAdd } from "../components/ListCard/ListCardAdd"; import isEmpty from "lodash/isEmpty"; -import { Button } from "../components/Button"; -import { EmptyScreenTemplate } from "../components/EmptyScreenTemplate"; -import { ListCardLink } from "../components/ListCard/ListCardLink"; -import { Skeleton } from "../components/Skeleton"; -import { Typography } from "../components/Typography"; -import { useListInventories } from "../db"; -import { ListTabScreenProps } from "../navigation/types"; -import { createStyles } from "../theme/useStyles"; +import { Skeleton } from "../../components/Skeleton"; +import { Button } from "../../components/common/Button"; +import { EmptyScreenTemplate } from "../../components/common/EmptyScreenTemplate"; +import { Typography } from "../../components/common/Typography"; +import { useListInventories } from "../../db"; +import { ListTabScreenProps } from "../../navigation/types"; +import { createStyles } from "../../theme/useStyles"; +import { ListCardAdd } from "./ListCard/ListCardAdd"; +import { ListCardLink } from "./ListCard/ListCardLink"; const MonthTitle = ({ title }: { title: string }) => { const styles = useStyles(); diff --git a/native/screens/LoginScreen.tsx b/native/screens/LoginScreen.tsx index 6fb9dfdc..7a95a61a 100644 --- a/native/screens/LoginScreen.tsx +++ b/native/screens/LoginScreen.tsx @@ -4,10 +4,10 @@ import { StyleSheet } from "react-native"; import { NativeStackScreenProps } from "@react-navigation/native-stack"; import { SafeAreaView } from "react-native-safe-area-context"; -import { Button } from "../components/Button"; -import { LoadingSpinner } from "../components/LoadingSpinner"; -import TextInputController from "../components/TextInputController"; -import { Typography } from "../components/Typography"; +import { Button } from "../components/common/Button"; +import { LoadingSpinner } from "../components/common/LoadingSpinner"; +import TextInputController from "../components/common/TextInputController"; +import { Typography } from "../components/common/Typography"; import { supabase } from "../db"; import { LoginStackParamList } from "../navigation/types"; import { createStyles } from "../theme/useStyles"; diff --git a/native/screens/NewBarcodeScreen.tsx b/native/screens/NewBarcodeScreen.tsx index 82161c58..5a19d417 100644 --- a/native/screens/NewBarcodeScreen.tsx +++ b/native/screens/NewBarcodeScreen.tsx @@ -2,9 +2,9 @@ import React, { useEffect, useState } from "react"; import { Pressable, ScrollView, StyleSheet, View } from "react-native"; import { SafeAreaView } from "react-native-safe-area-context"; -import { Button } from "../components/Button"; import { NewBarcodeListItem } from "../components/NewBarcodeListItem"; import { Skeleton } from "../components/Skeleton"; +import { Button } from "../components/common/Button"; import { useListProductRecords } from "../db"; import { useNetInfo } from "@react-native-community/netinfo"; diff --git a/native/screens/NewProductScreen.tsx b/native/screens/NewProductScreen.tsx index 51d142eb..e1eb1f70 100644 --- a/native/screens/NewProductScreen.tsx +++ b/native/screens/NewProductScreen.tsx @@ -3,15 +3,15 @@ import { StyleSheet, View } from "react-native"; import { useForm } from "react-hook-form"; import { SafeAreaView } from "react-native-safe-area-context"; -import { Button } from "../components/Button"; -import TextInputController from "../components/TextInputController"; +import { Button } from "../components/common/Button"; +import TextInputController from "../components/common/TextInputController"; import { useNetInfo } from "@react-native-community/netinfo"; import { NativeStackScreenProps } from "@react-navigation/native-stack"; -import NumberInputController from "../components/NumberInputController"; import { useSnackbar } from "../components/Snackbar/hooks"; import { Tooltip } from "../components/Tooltip"; -import { Typography } from "../components/Typography"; +import NumberInputController from "../components/common/NumberInputController"; +import { Typography } from "../components/common/Typography"; import { useCreateProduct } from "../db/hooks/useCreateProduct"; import { HomeStackParamList } from "../navigation/types"; import { createStyles } from "../theme/useStyles"; diff --git a/native/screens/NewStockScreen.tsx b/native/screens/NewStockScreen.tsx index e4efe477..965e8c38 100644 --- a/native/screens/NewStockScreen.tsx +++ b/native/screens/NewStockScreen.tsx @@ -4,15 +4,15 @@ import { StyleSheet, View } from "react-native"; import { formatISO } from "date-fns"; import { useForm } from "react-hook-form"; import { SafeAreaView } from "react-native-safe-area-context"; -import { Button } from "../components/Button"; import { DateInputController } from "../components/DateInputController"; -import TextInputController from "../components/TextInputController"; +import { Button } from "../components/common/Button"; +import TextInputController from "../components/common/TextInputController"; import { useNetInfo } from "@react-native-community/netinfo"; import { NativeStackScreenProps } from "@react-navigation/native-stack"; import { useSnackbar } from "../components/Snackbar/hooks"; import { ToggleController } from "../components/ToggleController"; -import { Typography } from "../components/Typography"; +import { Typography } from "../components/common/Typography"; import { isAndroid } from "../constants"; import { useCreateInventory } from "../db"; import { HomeStackParamList } from "../navigation/types"; @@ -62,7 +62,7 @@ export function NewStockScreen({ navigation }: NewStockScreenProps) { if (isSuccess && inventory) { if (is_delivery) { navigation.navigate("Tabs", { - screen: "DeliveryTab", + screen: "StockTab", params: { id: inventory.id, }, @@ -70,7 +70,7 @@ export function NewStockScreen({ navigation }: NewStockScreenProps) { return; } navigation.navigate("Tabs", { - screen: "InventoryTab", + screen: "StockTab", params: { id: inventory.id, }, diff --git a/native/screens/RecordScreen/RecordScreenForm.tsx b/native/screens/RecordScreen/RecordScreenForm.tsx index f8b06237..8405650c 100644 --- a/native/screens/RecordScreen/RecordScreenForm.tsx +++ b/native/screens/RecordScreen/RecordScreenForm.tsx @@ -2,7 +2,7 @@ import { useEffect } from "react"; import { useForm } from "react-hook-form"; import { CollapsibleItem } from "../../components/Collapsible/CollapsibleItem"; import { SingularCollapsible } from "../../components/Collapsible/SingularCollapsible"; -import TextInputController from "../../components/TextInputController"; +import TextInputController from "../../components/common/TextInputController"; import { formatFloatString } from "../../utils"; type RecordScreenForm = { diff --git a/native/screens/RecordScreen/index.tsx b/native/screens/RecordScreen/index.tsx index c23ad8f3..48f0d885 100644 --- a/native/screens/RecordScreen/index.tsx +++ b/native/screens/RecordScreen/index.tsx @@ -3,21 +3,21 @@ import { StyleProp, StyleSheet, View, ViewStyle } from "react-native"; import { useBottomSheet } from "../../components/BottomSheet"; import { InputBottomSheetContent } from "../../components/BottomSheet/contents"; -import { Button } from "../../components/Button"; import { ArrowLeftIcon, ArrowRightIcon, PencilIcon, } from "../../components/Icon"; -import { Typography } from "../../components/Typography"; +import { Button } from "../../components/common/Button"; +import { Typography } from "../../components/common/Typography"; import { useRecordPanel } from "../../db"; import { useListProductRecordIds } from "../../db/hooks/useListProductRecordIds"; import { createStyles } from "../../theme/useStyles"; import { NativeStackScreenProps } from "@react-navigation/native-stack"; -import { Divider } from "../../components/Divider"; -import SafeLayout from "../../components/SafeLayout"; import { Skeleton } from "../../components/Skeleton"; +import { Divider } from "../../components/common/Divider"; +import SafeLayout from "../../components/common/SafeLayout"; import { useGetInventoryName } from "../../db/hooks/useGetInventoryName"; import { useGetPreviousRecordQuantity } from "../../db/hooks/useGetPreviousRecordQuantity"; import { diff --git a/native/screens/SettingsScreen.tsx b/native/screens/SettingsScreen.tsx index 7788daed..1d010240 100644 --- a/native/screens/SettingsScreen.tsx +++ b/native/screens/SettingsScreen.tsx @@ -2,8 +2,8 @@ import React from "react"; import { useForm } from "react-hook-form"; import { SafeAreaView } from "react-native-safe-area-context"; -import { Button } from "../components/Button"; -import TextInputController from "../components/TextInputController"; +import { Button } from "../components/common/Button"; +import TextInputController from "../components/common/TextInputController"; import { ScrollView, StyleSheet } from "react-native"; @@ -11,7 +11,7 @@ import { NativeStackScreenProps } from "@react-navigation/native-stack"; import { useQueryClient } from "@tanstack/react-query"; import { DevInfo } from "../components/DevInfo"; import { PrivacyPolicy } from "../components/PrivacyPolicy"; -import { Typography } from "../components/Typography"; +import { Typography } from "../components/common/Typography"; import { supabase, useSession } from "../db"; import { HomeStackParamList } from "../navigation/types"; import { createStyles } from "../theme/useStyles"; diff --git a/native/screens/StartScreen.tsx b/native/screens/StartScreen.tsx index b4768d7b..d2d3e2fd 100644 --- a/native/screens/StartScreen.tsx +++ b/native/screens/StartScreen.tsx @@ -6,13 +6,13 @@ import { useSafeAreaInsets, } from "react-native-safe-area-context"; // import { Button } from "../components/Button"; -import { Card } from "../components/Card"; +import { Card } from "../components/common/Card"; import { NativeStackScreenProps } from "@react-navigation/native-stack"; -import { Button } from "../components/Button"; import { DevInfo } from "../components/DevInfo"; import { PrivacyPolicy } from "../components/PrivacyPolicy"; -import { Typography } from "../components/Typography"; +import { Button } from "../components/common/Button"; +import { Typography } from "../components/common/Typography"; import { LoginStackParamList } from "../navigation/types"; import { createStyles } from "../theme/useStyles"; diff --git a/native/components/IDListCard.tsx b/native/screens/StockTabScreen/IDListCard/IDListCard.tsx similarity index 88% rename from native/components/IDListCard.tsx rename to native/screens/StockTabScreen/IDListCard/IDListCard.tsx index f37490c2..b99c550d 100644 --- a/native/components/IDListCard.tsx +++ b/native/screens/StockTabScreen/IDListCard/IDListCard.tsx @@ -2,14 +2,14 @@ import { useNavigation } from "@react-navigation/native"; import React, { useMemo } from "react"; import { StyleSheet, View } from "react-native"; -import { useGetRecord } from "../db"; -import { useGetPreviousRecordQuantity } from "../db/hooks/useGetPreviousRecordQuantity"; -import { createStyles } from "../theme/useStyles"; -import { formatAndRoundFloat } from "../utils"; -import { Card } from "./Card"; -import { QuantityBadge } from "./QuantityBadge"; -import { useStockContext } from "./StockContext/StockContextProvider"; -import { Typography } from "./Typography"; +import { QuantityBadge } from "../../../components/QuantityBadge"; +import { Card } from "../../../components/common/Card"; +import { Typography } from "../../../components/common/Typography"; +import { useGetRecord } from "../../../db"; +import { useGetPreviousRecordQuantity } from "../../../db/hooks/useGetPreviousRecordQuantity"; +import { createStyles } from "../../../theme/useStyles"; +import { formatAndRoundFloat } from "../../../utils"; +import { useStockContext } from "../StockContext/StockContextProvider"; type IDListCardProps = { name: string | null | undefined; @@ -67,7 +67,7 @@ export const IDListCard = ({ const quantityDelta = useMemo( () => getQuantityDelta( - stock.productRecords[productId].quantity, + stock.productRecords[productId]?.quantity, wasQuantityChanged ? originalRecord?.quantity : previousQuantity ), [originalRecord?.quantity, previousQuantity, wasQuantityChanged] diff --git a/native/components/IDListCardAddProduct.tsx b/native/screens/StockTabScreen/IDListCard/IDListCardAddProduct.tsx similarity index 88% rename from native/components/IDListCardAddProduct.tsx rename to native/screens/StockTabScreen/IDListCard/IDListCardAddProduct.tsx index e8c2431f..96f207d0 100644 --- a/native/components/IDListCardAddProduct.tsx +++ b/native/screens/StockTabScreen/IDListCard/IDListCardAddProduct.tsx @@ -1,8 +1,8 @@ import { useNavigation } from "@react-navigation/native"; import React from "react"; import { StyleSheet } from "react-native"; -import { createStyles } from "../theme/useStyles"; -import { Button } from "./Button"; +import { Button } from "../../../components/common/Button"; +import { createStyles } from "../../../theme/useStyles"; export const IDListCardAddProduct = ({ inventoryId, diff --git a/native/components/IDListCardAddRecord.tsx b/native/screens/StockTabScreen/IDListCard/IDListCardAddRecord.tsx similarity index 87% rename from native/components/IDListCardAddRecord.tsx rename to native/screens/StockTabScreen/IDListCard/IDListCardAddRecord.tsx index aee214ae..bf02064b 100644 --- a/native/components/IDListCardAddRecord.tsx +++ b/native/screens/StockTabScreen/IDListCard/IDListCardAddRecord.tsx @@ -1,8 +1,8 @@ import { useNavigation } from "@react-navigation/native"; import React from "react"; import { StyleSheet } from "react-native"; -import { createStyles } from "../theme/useStyles"; -import { Button } from "./Button"; +import { Button } from "../../../components/common/Button"; +import { createStyles } from "../../../theme/useStyles"; export const IDListCardAddRecord = ({ inventoryId, diff --git a/native/components/RecipeCard.tsx b/native/screens/StockTabScreen/RecipeCard.tsx similarity index 75% rename from native/components/RecipeCard.tsx rename to native/screens/StockTabScreen/RecipeCard.tsx index b4b443af..2056251c 100644 --- a/native/components/RecipeCard.tsx +++ b/native/screens/StockTabScreen/RecipeCard.tsx @@ -1,20 +1,18 @@ import React, { useMemo } from "react"; import { StyleSheet, View } from "react-native"; -import { useFormContext } from "react-hook-form"; -import { useGetRecipeRecord } from "../db/hooks/useGetRecipeRecord"; -import { useListRecipes } from "../db/hooks/useListRecipes"; -import { useListRecords } from "../db/hooks/useListRecords"; -import { createStyles } from "../theme/useStyles"; -import { roundFloat } from "../utils"; -import { useBottomSheet } from "./BottomSheet"; -import { InputBottomSheetContent } from "./BottomSheet/contents"; -import { Button } from "./Button"; -import { Card } from "./Card"; -import { PencilIcon } from "./Icon"; -import { useSnackbar } from "./Snackbar/hooks"; -import { StockForm } from "./StockFormContext/types"; -import { Typography } from "./Typography"; +import { useBottomSheet } from "../../components/BottomSheet"; +import { InputBottomSheetContent } from "../../components/BottomSheet/contents"; +import { PencilIcon } from "../../components/Icon"; +import { useSnackbar } from "../../components/Snackbar/hooks"; +import { Button } from "../../components/common/Button"; +import { Card } from "../../components/common/Card"; +import { Typography } from "../../components/common/Typography"; +import { useListRecipes } from "../../db/hooks/useListRecipes"; +import { useListRecords } from "../../db/hooks/useListRecords"; +import { createStyles } from "../../theme/useStyles"; +import { roundFloat } from "../../utils"; +import { useStockContext } from "./StockContext/StockContextProvider"; type RecipeCardProps = { name: string | null | undefined; @@ -25,6 +23,7 @@ type RecipeCardProps = { >[number]["recipe_part"]; inventoryId: number; recipeRecordId: number | null | undefined; + recipeId: number; borderLeft?: boolean; borderRight?: boolean; borderBottom?: boolean; @@ -89,7 +88,7 @@ const getRecordAndMultiplier = ( export const RecipeCard = ({ name, recipePart, - recipeRecordId, + recipeId, inventoryId, borderLeft = false, borderRight = false, @@ -98,12 +97,21 @@ export const RecipeCard = ({ const styles = useStyles(); const { closeBottomSheet, openBottomSheet } = useBottomSheet(); const { showInfo } = useSnackbar(); - const { watch, setValue } = useFormContext(); + const { + recipeRecords, + updateRecipeRecords, + productRecords, + updateProductRecords, + } = useStockContext(); + // WIP + // const recordId = recipeRecordId || 0; + const recipeRecord = recipeRecords[recipeId]; + // const { watch, setValue } = useFormContext(); const { data: recordsList } = useListRecords(inventoryId); - const { data: recipeRecord } = useGetRecipeRecord( - inventoryId, - recipeRecordId - ); + // const { data: recipeRecord } = useGetRecipeRecord( + // inventoryId, + // recipeRecordId + // ); const recordAndMultiplier = useMemo( () => getRecordAndMultiplier(recipePart, recordsList), @@ -114,13 +122,16 @@ export const RecipeCard = ({ return null; } - const recipeQuantity = - watch(`recipe_records.${recipeRecordId}.quantity`) ?? - recipeRecord?.quantity ?? - 0; + const recipeQuantity = recipeRecord?.quantity || 0; + const setRecipeQuantity = (v: number) => - setValue(`recipe_records.${recipeRecordId}.quantity`, v, { - shouldDirty: true, + updateRecipeRecords((d) => { + console.log(d[recipeId], recipeId); + if (!d[recipeId]) { + d[recipeId] = { quantity: v }; + } else { + d[recipeId].quantity = v; + } }); // value is an integer, see InputBottomSheetContent props @@ -136,15 +147,24 @@ export const RecipeCard = ({ if (Array.isArray(recipePart)) { recordAndMultiplier.forEach((ram) => { - if (ram.record_id == null || ram.multiplier == null) return; + if ( + ram.record_id === null || + ram.multiplier === null || + ram.product_id === null + ) + return; + + const productId = ram.product_id; // the object may not exist, if the user did not navigate to the given RecordScreen // may change during the form refactor - const oldRecordValues = watch(`product_records.${ram.product_id}`) || { - price_per_unit: null, - id: ram.record_id, - quantity: ram.record_quantity_backup, - }; + // WIP + const oldRecordValues = productRecords[productId]; + // const oldRecordValues = watch(`product_records.${ram.product_id}`) || { + // price_per_unit: null, + // id: ram.record_id, + // quantity: ram.record_quantity_backup, + // }; const dMultiplied = roundFloat(delta * ram.multiplier); const newRecordQuantity = roundFloat( @@ -158,14 +178,9 @@ export const RecipeCard = ({ return; } - setValue( - `product_records.${ram.product_id}.quantity`, - newRecordQuantity, - { - shouldDirty: true, - shouldTouch: true, - } - ); + updateProductRecords((d) => { + d[productId].quantity = newRecordQuantity; + }); }); setRecipeQuantity(value); @@ -177,19 +192,21 @@ export const RecipeCard = ({ if ( recordAndMultiplier[0]?.record_id == null || + recordAndMultiplier[0]?.product_id == null || recordAndMultiplier[0]?.multiplier == null ) return; // the object may not exist, if the user did not navigate to the given RecordScreen // may change during the form refactor - const oldRecordValues = watch( - `product_records.${recordAndMultiplier[0].product_id}` - ) || { - price_per_unit: null, - id: recordAndMultiplier[0].record_id, - quantity: recordAndMultiplier[0].record_quantity_backup, - }; + const oldRecordValues = productRecords[recordAndMultiplier[0].product_id]; + // const oldRecordValues = watch( + // `product_records.${recordAndMultiplier[0].product_id}` + // ) || { + // price_per_unit: null, + // id: recordAndMultiplier[0].record_id, + // quantity: recordAndMultiplier[0].record_quantity_backup, + // }; const dMultiplied = roundFloat(delta * recordAndMultiplier[0].multiplier); const newRecordQuantity = roundFloat( @@ -201,14 +218,9 @@ export const RecipeCard = ({ return; } - setValue( - `product_records.${recordAndMultiplier[0].product_id}.quantity`, - newRecordQuantity, - { - shouldDirty: true, - shouldTouch: true, - } - ); + updateRecipeRecords((d) => { + d[recipeId].quantity = newRecordQuantity; + }); setRecipeQuantity(value); return; diff --git a/native/components/StockContext/StockContextProvider.tsx b/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx similarity index 73% rename from native/components/StockContext/StockContextProvider.tsx rename to native/screens/StockTabScreen/StockContext/StockContextProvider.tsx index 4ae3d92d..6de32a56 100644 --- a/native/components/StockContext/StockContextProvider.tsx +++ b/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx @@ -1,11 +1,11 @@ -import React, { ReactNode, createContext, useContext, useState } from "react"; -import { useImmer } from "use-immer"; -import { useListProductRecords } from "../../db/hooks/useListProductRecords"; +import React, { ReactNode, createContext, useContext } from "react"; +import { Updater, useImmer } from "use-immer"; +import { useListProductRecords } from "../../../db/hooks/useListProductRecords"; import { DocumentScannerState, ProductRecordsByProductId, RecipeRecordsByRecipeId, - StockContextType, + StockData, } from "./types"; const initialDocumentScannerState: DocumentScannerState = { @@ -22,12 +22,22 @@ const initialStockId = 0; const initialProductRecords: ProductRecordsByProductId = {}; const initialRecipeRecords: RecipeRecordsByRecipeId = {}; +type StockContextType = StockData & { + stockId: number; + stockType: "inventory" | "delivery"; + updateProductRecords: Updater; + updateRecipeRecords: Updater; + documentScannerState: DocumentScannerState; + setDocumentScannerState: Updater; +}; + const StockContext = createContext({ stockType: "delivery", stockId: initialStockId, productRecords: initialProductRecords, - recipeRecords: initialRecipeRecords, updateProductRecords: () => null, + recipeRecords: initialRecipeRecords, + updateRecipeRecords: () => null, documentScannerState: initialDocumentScannerState, setDocumentScannerState: () => null, }); @@ -57,10 +67,10 @@ export const StockContextProvider = ({ ) : initialProductRecords ); - const [recipeRecords, _] = useState(initialRecipeRecords); + const [recipeRecords, updateRecipeRecords] = useImmer(initialRecipeRecords); const [documentScannerState, setDocumentScannerState] = - useState(initialDocumentScannerState); + useImmer(initialDocumentScannerState); // const setProductRecord = (product_id: number, value: Partial) => setProductRecords(records => ({...records})) @@ -70,8 +80,9 @@ export const StockContextProvider = ({ stockId, stockType, productRecords, - recipeRecords, updateProductRecords, + recipeRecords, + updateRecipeRecords, documentScannerState, setDocumentScannerState, }} diff --git a/native/components/StockContext/types.ts b/native/screens/StockTabScreen/StockContext/types.ts similarity index 66% rename from native/components/StockContext/types.ts rename to native/screens/StockTabScreen/StockContext/types.ts index 24cf85b9..74829c3d 100644 --- a/native/components/StockContext/types.ts +++ b/native/screens/StockTabScreen/StockContext/types.ts @@ -1,10 +1,8 @@ import { CameraCapturedPicture } from "expo-camera"; -import { Dispatch, SetStateAction } from "react"; -import { Updater } from "use-immer"; import { ProcessInvoiceResponse, ProcessSalesRaportResponse, -} from "../../db/types"; +} from "../../../db/types"; type ProductRecordByProductId = { record_id: number | null; @@ -17,12 +15,12 @@ export type ProductRecordsByProductId = { }; type RecipeRecordByRecipeId = { - record_id: number | null; + // record_id: number | null; quantity: number; }; export type RecipeRecordsByRecipeId = { - [product_id: string]: RecipeRecordByRecipeId; + [recipe_id: string]: RecipeRecordByRecipeId; }; export type DocumentScannerState = { @@ -41,11 +39,3 @@ export type StockData = { productRecords: ProductRecordsByProductId; recipeRecords: RecipeRecordsByRecipeId; }; - -export type StockContextType = StockData & { - stockId: number; - stockType: "inventory" | "delivery"; - updateProductRecords: Updater; - documentScannerState: DocumentScannerState; - setDocumentScannerState: Dispatch>; -}; diff --git a/native/screens/DeliveryTabScreen.tsx b/native/screens/StockTabScreen/StockTabScreen.tsx similarity index 55% rename from native/screens/DeliveryTabScreen.tsx rename to native/screens/StockTabScreen/StockTabScreen.tsx index 9733654c..c626e2b0 100644 --- a/native/screens/DeliveryTabScreen.tsx +++ b/native/screens/StockTabScreen/StockTabScreen.tsx @@ -1,31 +1,32 @@ import React, { useEffect } from "react"; -import { ScrollView, StyleSheet, View } from "react-native"; +import { ScrollView, View } from "react-native"; import { useNetInfo } from "@react-native-community/netinfo"; import { SafeAreaView } from "react-native-safe-area-context"; -import { Button } from "../components/Button"; -import { Collapsible } from "../components/Collapsible/Collapsible"; -import { IDListCard } from "../components/IDListCard"; -import { IDListCardAddProduct } from "../components/IDListCardAddProduct"; -import { IDListCardAddRecord } from "../components/IDListCardAddRecord"; -import { DocumentScannerIcon, ScanBarcodeIcon } from "../components/Icon"; -import { Skeleton } from "../components/Skeleton"; -import { useSnackbar } from "../components/Snackbar/hooks"; -import { useStockContext } from "../components/StockContext/StockContextProvider"; -import { useGetInventoryName } from "../db/hooks/useGetInventoryName"; -import { useListExistingProducts } from "../db/hooks/useListProducts"; -import { useListProductsCategorized } from "../db/hooks/useListProductsCategorized"; -import { useUpdateRecords } from "../db/hooks/useUpdateRecords"; -import { DeliveryTabScreenProps } from "../navigation/types"; -import { documentScannerAction } from "../redux/documentScannerSlice"; -import { useAppDispatch } from "../redux/hooks"; -import { createStyles } from "../theme/useStyles"; - -export default function DeliveryTabScreen({ +import { Collapsible } from "../../components/Collapsible/Collapsible"; +import { DocumentScannerIcon, ScanBarcodeIcon } from "../../components/Icon"; +import { Skeleton } from "../../components/Skeleton"; +import { useSnackbar } from "../../components/Snackbar/hooks"; +import { Button } from "../../components/common/Button"; +import { useGetInventoryName } from "../../db/hooks/useGetInventoryName"; +import { useListRecipes } from "../../db/hooks/useListRecipes"; +import { useUpdateRecords } from "../../db/hooks/useUpdateRecords"; +import { StockTabScreenProps } from "../../navigation/types"; +import { documentScannerAction } from "../../redux/documentScannerSlice"; +import { useAppDispatch } from "../../redux/hooks"; +import { IDListCard } from "./IDListCard/IDListCard"; +import { IDListCardAddProduct } from "./IDListCard/IDListCardAddProduct"; +import { IDListCardAddRecord } from "./IDListCard/IDListCardAddRecord"; +import { RecipeCard } from "./RecipeCard"; +import { useStockContext } from "./StockContext/StockContextProvider"; +import { useStockTabStyles } from "./styles"; +import { useProductRecords } from "./useProductRecords"; + +export default function StockTabScreen({ route, navigation, -}: DeliveryTabScreenProps) { - const styles = useStyles(); +}: StockTabScreenProps) { + const styles = useStockTabStyles(); const { isConnected } = useNetInfo(); const inventoryId = route.params?.id; @@ -38,32 +39,15 @@ export default function DeliveryTabScreen({ const { productRecords } = useStockContext(); - // console.log({ productRecords }); - - const productsResponse = useListExistingProducts(); - const { data: products, isSuccess: productsIsSuccess } = productsResponse; - const uncategorizedProducts = - products - ?.filter((p) => p.category_id === null && productRecords[p.id]) - .map((p) => ({ - ...productRecords[p.id], - ...p, - record_id: productRecords[p.id].record_id, - })) || []; + const { + productsIsSuccess, + categorizedIsSuccess, + categorizedProducts, + uncategorizedProducts, + } = useProductRecords(); - const { data: categories, isSuccess: categorizedIsSuccess } = - useListProductsCategorized(); - const categorizedProducts = categories.map((c) => ({ - name: c.name, - display_order: c.display_order, - products: c.existing_products - .filter((p) => p.id in productRecords) - .map((p) => ({ - ...productRecords[p.id], - ...p, - record_id: productRecords[p.id].record_id, - })), - })); + const { data: recipeList, isSuccess: recipesIsSuccess } = + useListRecipes(inventoryId); const { mutate, @@ -92,28 +76,12 @@ export default function DeliveryTabScreen({ } }, [isUpdateSuccess, isUpdateError]); - // const handlePress = () => { - // // WIP - // // deliveryForm.handleSubmit( - // // (data) => { - // // if (isEmpty(data)) { - // // showInfo("Brak zmian do zapisania"); - // // return; - // // } - // // if (!isConnected) { - // // showError("Brak połączenia z internetem"); - // // return; - // // } - // // mutate({ product_records: data.product_records, recipe_records: {} }); - // // }, - // // (_errors) => { - // // // TODO show a snackbar? handle error better - // // console.log("error", _errors); - // // } - // // )(); - // }; - - if (!productsIsSuccess || !categorizedIsSuccess || !inventoryId) + if ( + !productsIsSuccess || + !categorizedIsSuccess || + !inventoryId || + !recipesIsSuccess + ) return ( @@ -141,6 +109,7 @@ export default function DeliveryTabScreen({ onPress={() => { // necessary hack, handled by parent navigator - be cautious navigation.navigate("DocumentScannerModal" as any, { + // WIP isScanningSalesRaport: false, }); }} @@ -153,7 +122,6 @@ export default function DeliveryTabScreen({ type="primary" fullWidth labelStyle={styles.saveButtonLabel} - // onPress={handlePress} onPress={() => { mutate({ productRecords, recipeRecords: {} }); }} @@ -170,7 +138,7 @@ export default function DeliveryTabScreen({ // necessary hack, handled by parent navigator - be cautious navigation.navigate("BarcodeModal" as any, { inventoryId, - navigateTo: "DeliveryTab", + navigateTo: "StockTab", }); }} > @@ -179,6 +147,16 @@ export default function DeliveryTabScreen({ + {recipeList?.map((recipe) => ( + + ))} {uncategorizedProducts?.map((product) => product && product.id ? ( ); } - -const useStyles = createStyles((theme) => - StyleSheet.create({ - container: { - backgroundColor: theme.colors.darkBlue, - }, - scroll: { - backgroundColor: theme.colors.darkBlue, - }, - saveButtonContainer: { - flexShrink: 1, - }, - barcodeIconContainer: { - flexGrow: 1, - }, - doubleButtonContainer: { - flexDirection: "row", - justifyContent: "space-between", - marginBottom: theme.spacing, - marginTop: theme.spacing * 2, - gap: theme.spacing, - }, - saveButtonLabel: { - ...theme.text.l, - }, - skeletonDate: { - paddingTop: theme.spacing, - paddingBottom: theme.spacing, - }, - skeletonFullWidthButton: { width: "100%", height: 58 }, - skeletonButton: { width: 58, height: 58 }, - skeletonListItem: { - flexDirection: "row", - alignItems: "center", - justifyContent: "space-between", - paddingLeft: theme.spacing * 6, - paddingRight: theme.spacing * 4, - marginBottom: theme.spacing * 2, - height: 45, - }, - }) -); diff --git a/native/screens/StockTabScreen/styles.ts b/native/screens/StockTabScreen/styles.ts new file mode 100644 index 00000000..f99f4631 --- /dev/null +++ b/native/screens/StockTabScreen/styles.ts @@ -0,0 +1,44 @@ +import { StyleSheet } from "react-native"; +import { createStyles } from "../../theme/useStyles"; + +export const useStockTabStyles = createStyles((theme) => + StyleSheet.create({ + container: { + backgroundColor: theme.colors.darkBlue, + }, + scroll: { + backgroundColor: theme.colors.darkBlue, + }, + saveButtonContainer: { + flexShrink: 1, + }, + barcodeIconContainer: { + flexGrow: 1, + }, + doubleButtonContainer: { + flexDirection: "row", + justifyContent: "space-between", + marginBottom: theme.spacing, + marginTop: theme.spacing * 2, + gap: theme.spacing, + }, + saveButtonLabel: { + ...theme.text.l, + }, + skeletonDate: { + paddingTop: theme.spacing, + paddingBottom: theme.spacing, + }, + skeletonFullWidthButton: { width: "100%", height: 58 }, + skeletonButton: { width: 58, height: 58 }, + skeletonListItem: { + flexDirection: "row", + alignItems: "center", + justifyContent: "space-between", + paddingLeft: theme.spacing * 6, + paddingRight: theme.spacing * 4, + marginBottom: theme.spacing * 2, + height: 45, + }, + }) +); diff --git a/native/screens/StockTabScreen/useProductRecords.ts b/native/screens/StockTabScreen/useProductRecords.ts new file mode 100644 index 00000000..737c8118 --- /dev/null +++ b/native/screens/StockTabScreen/useProductRecords.ts @@ -0,0 +1,39 @@ +import { useListExistingProducts } from "../../db/hooks/useListProducts"; +import { useListProductsCategorized } from "../../db/hooks/useListProductsCategorized"; +import { useStockContext } from "./StockContext/StockContextProvider"; + +export const useProductRecords = () => { + const { productRecords } = useStockContext(); + + const productsResponse = useListExistingProducts(); + const { data: products, isSuccess: productsIsSuccess } = productsResponse; + const uncategorizedProducts = + products + ?.filter((p) => p.category_id === null && productRecords[p.id]) + .map((p) => ({ + ...productRecords[p.id], + ...p, + record_id: productRecords[p.id].record_id, + })) || []; + + const { data: categories, isSuccess: categorizedIsSuccess } = + useListProductsCategorized(); + const categorizedProducts = categories.map((c) => ({ + name: c.name, + display_order: c.display_order, + products: c.existing_products + .filter((p) => p.id in productRecords) + .map((p) => ({ + ...productRecords[p.id], + ...p, + record_id: productRecords[p.id].record_id, + })), + })); + + return { + uncategorizedProducts, + categorizedProducts, + productsIsSuccess, + categorizedIsSuccess, + }; +}; diff --git a/native/screens/UpdateRequiredScreen/index.tsx b/native/screens/UpdateRequiredScreen/index.tsx index c375c666..0d4ae0c3 100644 --- a/native/screens/UpdateRequiredScreen/index.tsx +++ b/native/screens/UpdateRequiredScreen/index.tsx @@ -1,10 +1,10 @@ import { useQueryClient } from "@tanstack/react-query"; import * as Updates from "expo-updates"; import { Linking, StyleSheet, View } from "react-native"; -import { Button } from "../../components/Button"; import { AppIcon } from "../../components/Icon"; -import SafeLayout from "../../components/SafeLayout"; -import { Typography } from "../../components/Typography"; +import { Button } from "../../components/common/Button"; +import SafeLayout from "../../components/common/SafeLayout"; +import { Typography } from "../../components/common/Typography"; import { isIos } from "../../constants"; import { useCheckIfNativeUpdateNeeded } from "../../db/hooks/useCheckIfNativeUpdateNeeded"; import { createStyles } from "../../theme/useStyles"; From 0cc1a053ec1ca68b5fc0efce8b33d47bba37f870 Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Thu, 18 Jul 2024 19:17:26 +0200 Subject: [PATCH 12/23] wip: remove documentScanner state from redux --- native/db/hooks/useProcessInvoice.ts | 61 --------- native/navigation/BottomTabNavigation.tsx | 2 +- native/navigation/HomeStackNavigation.tsx | 4 +- native/navigation/types.ts | 72 ++-------- native/redux/documentScannerSlice.ts | 128 ------------------ native/redux/store.ts | 2 - native/screens/AddRecordScreen.tsx | 14 +- .../BarcodeModalScreen.tsx | 14 +- .../BarcodeModalScreen/BarcodeScanner.tsx} | 6 +- .../DocumentScanner.tsx} | 38 +++--- .../DocumentScannerContext.tsx | 65 +++++++++ .../DocumentScannerModalScreen.tsx | 83 ++++++------ .../InvoicePhotoPreview.tsx | 36 ++--- .../SalesRaportPhotoPreview.tsx | 30 ++-- .../useProcesSalesRaport.ts | 20 ++- .../useProcessInvoice.ts | 45 ++++++ .../screens/IdentifyAliasesScreen/Invoice.tsx | 50 ++++--- .../IdentifyAliasesScreen/SalesRaport.tsx | 42 +++--- .../screens/IdentifyAliasesScreen/index.tsx | 17 ++- .../ListTabScreen/ListCard/ListCardLink.tsx | 16 +-- native/screens/RecordScreen/index.tsx | 21 ++- native/screens/StockTabScreen/RecipeCard.tsx | 1 - .../StockContext/StockContextProvider.tsx | 22 --- .../StockTabScreen/StockContext/types.ts | 16 --- .../screens/StockTabScreen/StockTabScreen.tsx | 11 +- 25 files changed, 329 insertions(+), 487 deletions(-) delete mode 100644 native/db/hooks/useProcessInvoice.ts delete mode 100644 native/redux/documentScannerSlice.ts rename native/screens/{ => BarcodeModalScreen}/BarcodeModalScreen.tsx (87%) rename native/{components/BarcodeScanner/index.tsx => screens/BarcodeModalScreen/BarcodeScanner.tsx} (92%) rename native/{components/DocumentScanner/index.tsx => screens/DocumentScannerModalScreen/DocumentScanner.tsx} (52%) create mode 100644 native/screens/DocumentScannerModalScreen/DocumentScannerContext.tsx rename native/screens/{ => DocumentScannerModalScreen}/DocumentScannerModalScreen.tsx (63%) rename native/{components/DocumentScanner => screens/DocumentScannerModalScreen}/InvoicePhotoPreview.tsx (61%) rename native/{components/DocumentScanner => screens/DocumentScannerModalScreen}/SalesRaportPhotoPreview.tsx (68%) rename native/{db/hooks => screens/DocumentScannerModalScreen}/useProcesSalesRaport.ts (73%) create mode 100644 native/screens/DocumentScannerModalScreen/useProcessInvoice.ts diff --git a/native/db/hooks/useProcessInvoice.ts b/native/db/hooks/useProcessInvoice.ts deleted file mode 100644 index a1bdcb11..00000000 --- a/native/db/hooks/useProcessInvoice.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { useMutation } from "@tanstack/react-query"; -import { useSnackbar } from "../../components/Snackbar/hooks"; -import { - documentScannerAction, - documentScannerSelector, -} from "../../redux/documentScannerSlice"; -import { useAppDispatch, useAppSelector } from "../../redux/hooks"; -import { supabase } from "../supabase"; -import { ProcessInvoiceResponse } from "../types"; - -export const useProcessInvoice = () => { - const { showError } = useSnackbar(); - - const inventory_id = useAppSelector( - documentScannerSelector.selectInventoryId - ); - const dispatch = useAppDispatch(); - - return useMutation( - async ({ - base64Photo, - }: { - base64Photo: string; - inventory_id: number | null; - }): Promise => { - if (inventory_id == null) { - showError("Nie udało się przetworzyć zdjęcia"); - console.log( - "useProcessInvoice - no inventory_id, this should not happen" - ); - return null; - } - const reqBody = { - inventory_id, - image: { - data: base64Photo, - }, - }; - - const { data, error } = await supabase.functions.invoke( - "process-invoice", - { - body: reqBody, - } - ); - if (error) { - showError("Nie udało się przetworzyć zdjęcia"); - console.log(error); - return null; - } - - dispatch( - documentScannerAction.SET_PROCESSED_INVOICE({ - processedInvoice: data, - }) - ); - - return data as ProcessInvoiceResponse; - } - ); -}; diff --git a/native/navigation/BottomTabNavigation.tsx b/native/navigation/BottomTabNavigation.tsx index 69da5362..148f20cc 100644 --- a/native/navigation/BottomTabNavigation.tsx +++ b/native/navigation/BottomTabNavigation.tsx @@ -83,7 +83,7 @@ const StockStackNavigator = ({ route }: StockTabProps) => { ( , - NativeStackScreenProps ->; -export type InventoryTabNavigationProp = InventoryTabProps["navigation"]; - -export type InventoryTabScreenProps = NativeStackScreenProps< - InventoryStackParamList, - "InventoryTabScreen" ->; -export type InventoryTabScreenNavigationProp = - InventoryTabScreenProps["navigation"]; -/** - * Delivery Tab/Stack + * Stock Tab/Stack */ -export type DeliveryStackParamList = { - DeliveryTabScreen: { id: number }; - RecordScreen: { +export type StockStackParamList = { + StockTabScreen: { id: number; - recordId: number; - productId: number; - isDelivery?: boolean; + stockType: "delivery" | "inventory"; }; - AddRecordScreen: { inventoryId: number }; -}; -export type DeliveryTabProps = CompositeScreenProps< - BottomTabScreenProps, - NativeStackScreenProps ->; -export type DeliveryTabNavigationProp = DeliveryTabProps["navigation"]; - -export type DeliveryTabScreenProps = NativeStackScreenProps< - DeliveryStackParamList, - "DeliveryTabScreen" ->; -export type DeliveryTabScreenNavigationProp = - DeliveryTabScreenProps["navigation"]; - -/** - * Delivery Tab/Stack - */ -export type StockStackParamList = { - StockTabScreen: { id: number }; RecordScreen: { id: number; recordId: number; productId: number; - isDelivery?: boolean; + stockType: "delivery" | "inventory"; }; - AddRecordScreen: { inventoryId: number }; + AddRecordScreen: { stockId: number }; }; export type StockTabProps = CompositeScreenProps< BottomTabScreenProps, @@ -144,7 +102,7 @@ export type StockTabScreenNavigationProp = StockTabScreenProps["navigation"]; * Record Screen */ export type RecordScreenNavigationProp = NativeStackScreenProps< - InventoryStackParamList | DeliveryStackParamList, + StockStackParamList, "RecordScreen" >["navigation"]; diff --git a/native/redux/documentScannerSlice.ts b/native/redux/documentScannerSlice.ts deleted file mode 100644 index 20c27997..00000000 --- a/native/redux/documentScannerSlice.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { createSlice, PayloadAction } from "@reduxjs/toolkit"; -import { CameraCapturedPicture } from "expo-camera"; -import { - ProcessInvoiceResponse, - ProcessSalesRaportResponse, -} from "../db/types"; -import { RootState } from "./store"; - -interface DocumentScannerSlice { - isPreviewShown: boolean; - isTakingPhoto: boolean; - isCameraReady: boolean | null; - photo: CameraCapturedPicture | undefined | null; - processedInvoice: ProcessInvoiceResponse; - newMatched: { - [recordId: number]: { - product_id: number; - price_per_unit: number; - quantity: number; - }; - }; - processedSalesRaport: ProcessSalesRaportResponse; - inventory_id: number | null; -} - -const initialState: DocumentScannerSlice = { - isTakingPhoto: false, - isPreviewShown: false, - isCameraReady: null, - photo: null, - processedInvoice: null, - newMatched: {}, - processedSalesRaport: null, - inventory_id: null, -} as DocumentScannerSlice; - -export const documentScannerSlice = createSlice({ - name: "documentScanner", - initialState, - reducers: { - SWITCH_PREVIEW: (state) => ({ - ...state, - isPreviewShown: !state.isPreviewShown, - }), - PHOTO_TAKE: ( - state, - { payload }: PayloadAction<{ photo: DocumentScannerSlice["photo"] }> - ) => ({ - ...state, - photo: payload.photo || null, - }), - PHOTO_RETAKE: (state) => ({ - ...state, - photo: null, - isPreviewShown: false, - }), - PHOTO_START: (state) => ({ ...state, isTakingPhoto: true }), - PHOTO_END: (state) => ({ ...state, isTakingPhoto: false }), - PHOTO_RESET_DATA: (state) => ({ - ...state, - photo: null, - isPreviewShown: false, - isTakingPhoto: false, - }), - SET_PROCESSED_INVOICE: ( - state, - { - payload, - }: PayloadAction<{ - processedInvoice: DocumentScannerSlice["processedInvoice"]; - }> - ) => ({ ...state, processedInvoice: payload.processedInvoice }), - SET_NEW_MATCHED: ( - state, - { - payload, - }: PayloadAction<{ - newMatched: DocumentScannerSlice["newMatched"]; - }> - ) => ({ ...state, newMatched: payload.newMatched }), - SET_PROCESSED_SALES_RAPORT: ( - state, - { - payload, - }: PayloadAction<{ - processedSalesRaport: DocumentScannerSlice["processedSalesRaport"]; - }> - ) => ({ ...state, processedSalesRaport: payload.processedSalesRaport }), - RESET_PROCESSED_INVOICE: (state) => ({ - ...state, - processedInvoice: null, - }), - RESET_PROCESSED_SALES_RAPORT: (state) => ({ - ...state, - processedSalesRaport: null, - }), - SET_INVENTORY_ID: ( - state, - { - payload, - }: PayloadAction<{ inventory_id: DocumentScannerSlice["inventory_id"] }> - ) => ({ ...state, inventory_id: payload.inventory_id }), - RESET_INVENTORY_ID: (state) => ({ ...state, inventory_id: null }), - }, - selectors: { - selectIsPreviewShown: (state) => state.isPreviewShown, - selectisTakingPhoto: (state) => state.isTakingPhoto, - selectPhoto: (state) => state.photo, - selectInventoryId: (state) => state.inventory_id, - selectNewMatched: (state) => state.newMatched, - selectProcessedInvoice: (state) => state.processedInvoice, - selectProcessedSalesRaport: (state) => state.processedSalesRaport, - selectInvoiceUnmatchedRows: (state) => - state.processedInvoice?.unmatchedRows, - selectSalesRaportUnmatchedAliases: (state) => - state.processedSalesRaport?.unmatchedAliases, - }, -}); - -export const documentScannerAction = { ...documentScannerSlice.actions }; -export const documentScannerSelector = { ...documentScannerSlice.selectors }; -// The function below is called a selector and allows us to select a value from -// the state. Selectors can also be defined inline where they're used instead of -// in the slice file. For example: `useSelector((state: RootState) => state.counter.value)` -export const selectdocumentScannerSlice = (state: RootState) => - state.documentScanner; - -export const documentScannerSliceReducer = documentScannerSlice.reducer; diff --git a/native/redux/store.ts b/native/redux/store.ts index 992aeb79..5ba5fd84 100644 --- a/native/redux/store.ts +++ b/native/redux/store.ts @@ -1,7 +1,6 @@ import { Action, ThunkAction, Tuple, configureStore } from "@reduxjs/toolkit"; import { appSliceReducer } from "./appSlice"; import { counterSliceReducer } from "./counterSlice"; -import { documentScannerSliceReducer } from "./documentScannerSlice"; import { snackbarSliceReducer } from "./snackbarSlice"; // @ts-expect-error @@ -26,7 +25,6 @@ export const store = configureStore({ reducer: { app: appSliceReducer, counter: counterSliceReducer, - documentScanner: documentScannerSliceReducer, snackbar: snackbarSliceReducer, }, middleware: (getDefaultMiddleware) => diff --git a/native/screens/AddRecordScreen.tsx b/native/screens/AddRecordScreen.tsx index f07fa73f..8d90e66d 100644 --- a/native/screens/AddRecordScreen.tsx +++ b/native/screens/AddRecordScreen.tsx @@ -14,11 +14,11 @@ import { EmptyScreenTemplate } from "../components/common/EmptyScreenTemplate"; import { useCreateProductRecords } from "../db/hooks/useCreateProductRecords"; import { useGetInventoryName } from "../db/hooks/useGetInventoryName"; import { useListMissingProducts } from "../db/hooks/useListMissingProducts"; -import { InventoryStackParamList } from "../navigation/types"; +import { StockStackParamList } from "../navigation/types"; import { createStyles } from "../theme/useStyles"; type AddRecordScreenProps = NativeStackScreenProps< - InventoryStackParamList, + StockStackParamList, "AddRecordScreen" >; @@ -30,20 +30,20 @@ export function AddRecordScreen({ route, navigation }: AddRecordScreenProps) { NonNullable["data"]> >([]); - const { inventoryId } = route.params; + const { stockId } = route.params; - const { data: inventoryName } = useGetInventoryName(+inventoryId); - const { data: productList, isSuccess } = useListMissingProducts(+inventoryId); + const { data: inventoryName } = useGetInventoryName(+stockId); + const { data: productList, isSuccess } = useListMissingProducts(+stockId); const { mutate, isSuccess: isInsertSuccess, isError: isInsertError, - } = useCreateProductRecords(+inventoryId); + } = useCreateProductRecords(+stockId); const { showError, showSuccess } = useSnackbar(); useEffect(() => { navigation.setOptions({ headerTitle: inventoryName }); - }, [inventoryId, inventoryName, navigation]); + }, [stockId, inventoryName, navigation]); useEffect(() => { if (isInsertSuccess) { diff --git a/native/screens/BarcodeModalScreen.tsx b/native/screens/BarcodeModalScreen/BarcodeModalScreen.tsx similarity index 87% rename from native/screens/BarcodeModalScreen.tsx rename to native/screens/BarcodeModalScreen/BarcodeModalScreen.tsx index fe240f89..d0dc07c2 100644 --- a/native/screens/BarcodeModalScreen.tsx +++ b/native/screens/BarcodeModalScreen/BarcodeModalScreen.tsx @@ -3,16 +3,16 @@ import React from "react"; import { Linking, StyleSheet } from "react-native"; import { SafeAreaView } from "react-native-safe-area-context"; -import { BarcodeScanner } from "../components/BarcodeScanner"; -import { Button } from "../components/common/Button"; +import { Button } from "../../components/common/Button"; +import { BarcodeScanner } from "./BarcodeScanner"; -import { Typography } from "../components/common/Typography"; +import { Typography } from "../../components/common/Typography"; import { NativeStackScreenProps } from "@react-navigation/native-stack"; -import { EmptyScreenTemplate } from "../components/common/EmptyScreenTemplate"; -import { LoadingSpinner } from "../components/common/LoadingSpinner"; -import { HomeStackParamList } from "../navigation/types"; -import { createStyles } from "../theme/useStyles"; +import { EmptyScreenTemplate } from "../../components/common/EmptyScreenTemplate"; +import { LoadingSpinner } from "../../components/common/LoadingSpinner"; +import { HomeStackParamList } from "../../navigation/types"; +import { createStyles } from "../../theme/useStyles"; export type BarcodeModalScreenProps = NativeStackScreenProps< HomeStackParamList, diff --git a/native/components/BarcodeScanner/index.tsx b/native/screens/BarcodeModalScreen/BarcodeScanner.tsx similarity index 92% rename from native/components/BarcodeScanner/index.tsx rename to native/screens/BarcodeModalScreen/BarcodeScanner.tsx index 95950b00..12a22efe 100644 --- a/native/components/BarcodeScanner/index.tsx +++ b/native/screens/BarcodeModalScreen/BarcodeScanner.tsx @@ -2,12 +2,12 @@ import { useNavigation } from "@react-navigation/native"; import { BarcodeScanningResult, CameraView as ExpoCamera } from "expo-camera"; import React, { useRef, useState } from "react"; import { Alert, StyleSheet, View } from "react-native"; +import { Camera } from "../../components/Camera"; import { useListBarcodes } from "../../db/hooks/useListBarcodes"; -import { Camera } from "../Camera"; -import { BarcodeModalScreenProps } from "../../screens/BarcodeModalScreen"; +import { LoadingSpinner } from "../../components/common/LoadingSpinner"; import { createStyles } from "../../theme/useStyles"; -import { LoadingSpinner } from "../common/LoadingSpinner"; +import { BarcodeModalScreenProps } from "./BarcodeModalScreen"; export const BarcodeScanner = ({ inventoryId, diff --git a/native/components/DocumentScanner/index.tsx b/native/screens/DocumentScannerModalScreen/DocumentScanner.tsx similarity index 52% rename from native/components/DocumentScanner/index.tsx rename to native/screens/DocumentScannerModalScreen/DocumentScanner.tsx index bc8a2e68..58e5c1fa 100644 --- a/native/components/DocumentScanner/index.tsx +++ b/native/screens/DocumentScannerModalScreen/DocumentScanner.tsx @@ -1,50 +1,52 @@ import { CameraView as ExpoCamera } from "expo-camera"; import React, { useRef } from "react"; -import { documentScannerAction } from "../../redux/documentScannerSlice"; -import { useAppDispatch } from "../../redux/hooks"; -import { Camera } from "../Camera"; +import { Camera } from "../../components/Camera"; +import { useDocumentScannerContext } from "./DocumentScannerContext"; import { InvoicePhotoPreview } from "./InvoicePhotoPreview"; import { SalesRaportPhotoPreview } from "./SalesRaportPhotoPreview"; export const DocumentScanner = ({ isScanningSalesRaport, + stockId, }: { isScanningSalesRaport: boolean; + stockId: number; }) => { const cameraRef = useRef(null); - const isPreviewShown = false; - const isTakingPhoto = false; - // const isPreviewShown = useAppSelector( - // documentScannerSelector.selectIsPreviewShown - // ); - // const isTakingPhoto = useAppSelector( - // documentScannerSelector.selectisTakingPhoto - // ); + const { documentScannerState, updateDocumentScannerState } = + useDocumentScannerContext(); + const { isPreviewShown, isTakingPhoto } = documentScannerState; - const dispatch = useAppDispatch(); const takePicture = async () => { if (!cameraRef.current || isTakingPhoto) return; - dispatch(documentScannerAction.PHOTO_START()); + updateDocumentScannerState((d) => { + d.isTakingPhoto = true; + }); const photo = await cameraRef.current.takePictureAsync({ exif: false, base64: true, quality: 0.6, imageType: "jpg", }); - dispatch(documentScannerAction.PHOTO_TAKE({ photo })); - dispatch(documentScannerAction.SWITCH_PREVIEW()); - dispatch(documentScannerAction.PHOTO_END()); + updateDocumentScannerState((d) => { + d.photo = photo || null; + d.isPreviewShown = !d.isPreviewShown; + d.isTakingPhoto = false; + }); + // dispatch(documentScannerAction.PHOTO_TAKE({ photo })); + // dispatch(documentScannerAction.SWITCH_PREVIEW()); + // dispatch(documentScannerAction.PHOTO_END()); return; }; if (isPreviewShown && isScanningSalesRaport) { - return ; + return ; } if (isPreviewShown && !isScanningSalesRaport) { - return ; + return ; } return ( diff --git a/native/screens/DocumentScannerModalScreen/DocumentScannerContext.tsx b/native/screens/DocumentScannerModalScreen/DocumentScannerContext.tsx new file mode 100644 index 00000000..43397935 --- /dev/null +++ b/native/screens/DocumentScannerModalScreen/DocumentScannerContext.tsx @@ -0,0 +1,65 @@ +import { CameraCapturedPicture } from "expo-camera"; +import { createContext, useContext } from "react"; +import { Updater } from "use-immer"; +import { + ProcessInvoiceResponse, + ProcessSalesRaportResponse, +} from "../../db/types"; + +export type DocumentScannerState = { + isPreviewShown: boolean; + isTakingPhoto: boolean; + photo: CameraCapturedPicture | null; + processedInvoice: ProcessInvoiceResponse | null; + processedSalesReport: ProcessSalesRaportResponse | null; +}; + +export const initialDocumentScannerState: DocumentScannerState = { + isPreviewShown: false, + isTakingPhoto: false, + photo: null, + processedInvoice: null, + processedSalesReport: null, +}; + +type DocumentScannerContextType = { + documentScannerState: DocumentScannerState; + updateDocumentScannerState: Updater; + resetDocumentScanner: () => void; +}; + +export const DocumentScannerContext = createContext( + { + documentScannerState: initialDocumentScannerState, + updateDocumentScannerState: () => null, + resetDocumentScanner: () => null, + } +); + +// export const DocumentScannerContextProvider = ({ +// children, +// }: { +// children: ReactNode; +// }) => { +// const [documentScannerState, updateDocumentScannerState] = +// useImmer(initialDocumentScannerState); + +// const resetDocumentScanner = () => +// updateDocumentScannerState(initialDocumentScannerState); + +// return ( +// +// {children} +// +// ); +// }; + +export const useDocumentScannerContext = () => { + return useContext(DocumentScannerContext); +}; diff --git a/native/screens/DocumentScannerModalScreen.tsx b/native/screens/DocumentScannerModalScreen/DocumentScannerModalScreen.tsx similarity index 63% rename from native/screens/DocumentScannerModalScreen.tsx rename to native/screens/DocumentScannerModalScreen/DocumentScannerModalScreen.tsx index 64fa0e92..c1575f26 100644 --- a/native/screens/DocumentScannerModalScreen.tsx +++ b/native/screens/DocumentScannerModalScreen/DocumentScannerModalScreen.tsx @@ -2,23 +2,24 @@ import { useCameraPermissions } from "expo-camera"; import React, { useEffect } from "react"; import { Linking, StyleSheet } from "react-native"; -import { Button } from "../components/common/Button"; +import { Button } from "../../components/common/Button"; -import { Typography } from "../components/common/Typography"; +import { Typography } from "../../components/common/Typography"; import { NativeStackScreenProps } from "@react-navigation/native-stack"; import isEmpty from "lodash/isEmpty"; -import { DocumentScanner } from "../components/DocumentScanner"; -import { EmptyScreenTemplate } from "../components/common/EmptyScreenTemplate"; -import { LoadingSpinner } from "../components/common/LoadingSpinner"; -import SafeLayout from "../components/common/SafeLayout"; -import { HomeStackParamList } from "../navigation/types"; +import { useImmer } from "use-immer"; +import { EmptyScreenTemplate } from "../../components/common/EmptyScreenTemplate"; +import { LoadingSpinner } from "../../components/common/LoadingSpinner"; +import SafeLayout from "../../components/common/SafeLayout"; +import { HomeStackParamList } from "../../navigation/types"; +import { createStyles } from "../../theme/useStyles"; +import { DocumentScanner } from "./DocumentScanner"; import { - documentScannerAction, - documentScannerSelector, -} from "../redux/documentScannerSlice"; -import { useAppDispatch, useAppSelector } from "../redux/hooks"; -import { createStyles } from "../theme/useStyles"; + DocumentScannerContext, + DocumentScannerState, + initialDocumentScannerState, +} from "./DocumentScannerContext"; export type DocumentScannerModalScreen = NativeStackScreenProps< HomeStackParamList, @@ -29,52 +30,47 @@ export const DocumentScannerModalScreen = ({ navigation, route, }: DocumentScannerModalScreen) => { + const [documentScannerState, updateDocumentScannerState] = + useImmer(initialDocumentScannerState); + + const resetDocumentScanner = () => + updateDocumentScannerState(initialDocumentScannerState); + const styles = useStyles(); - const isScanningSalesRaport = route.params.isScanningSalesRaport; + const { isScanningSalesRaport, stockId } = route.params; const [permission, requestPermission] = useCameraPermissions(); - const inventory_id = useAppSelector( - documentScannerSelector.selectInventoryId - ); - const processedInvoice = useAppSelector( - documentScannerSelector.selectProcessedInvoice - ); - const processedSalesRaport = useAppSelector( - documentScannerSelector.selectProcessedSalesRaport - ); - - const dispatch = useAppDispatch(); + const { processedInvoice, processedSalesReport } = documentScannerState; useEffect(() => { - if (isScanningSalesRaport && processedSalesRaport != null) { - if (inventory_id && !isEmpty(processedSalesRaport?.unmatchedAliases)) { + if (isScanningSalesRaport && processedSalesReport != null) { + if (stockId && !isEmpty(processedSalesReport?.unmatchedAliases)) { navigation.replace("IdentifyAliasesScreen", { - inventoryId: inventory_id, + stockId, isScanningSalesRaport, + processedInvoice: null, + processedSalesReport, }); } else { navigation.goBack(); } - dispatch(documentScannerAction.PHOTO_RESET_DATA()); + resetDocumentScanner(); return; } if (processedInvoice != null) - if (inventory_id && !isEmpty(processedInvoice?.unmatchedRows)) { + if (stockId && !isEmpty(processedInvoice?.unmatchedRows)) { navigation.replace("IdentifyAliasesScreen", { - inventoryId: inventory_id, + stockId, isScanningSalesRaport, + processedInvoice, + processedSalesReport: null, }); } else { navigation.goBack(); } - dispatch(documentScannerAction.PHOTO_RESET_DATA()); + resetDocumentScanner(); return; - }, [ - isScanningSalesRaport, - inventory_id, - processedInvoice, - processedSalesRaport, - ]); + }, [isScanningSalesRaport, stockId, processedInvoice, processedSalesReport]); const awaitingPermission = !permission; const permissionDeniedCanAskAgain = @@ -151,7 +147,18 @@ export const DocumentScannerModalScreen = ({ return ( - + + + ); }; diff --git a/native/components/DocumentScanner/InvoicePhotoPreview.tsx b/native/screens/DocumentScannerModalScreen/InvoicePhotoPreview.tsx similarity index 61% rename from native/components/DocumentScanner/InvoicePhotoPreview.tsx rename to native/screens/DocumentScannerModalScreen/InvoicePhotoPreview.tsx index 7b65fc48..e40c6239 100644 --- a/native/components/DocumentScanner/InvoicePhotoPreview.tsx +++ b/native/screens/DocumentScannerModalScreen/InvoicePhotoPreview.tsx @@ -1,25 +1,19 @@ import { useNetInfo } from "@react-native-community/netinfo"; import { ImageBackground } from "react-native"; -import { useProcessInvoice } from "../../db/hooks/useProcessInvoice"; -import { - documentScannerAction, - documentScannerSelector, -} from "../../redux/documentScannerSlice"; -import { useAppDispatch, useAppSelector } from "../../redux/hooks"; -import { Button } from "../common/Button"; -import { LoadingSpinner } from "../common/LoadingSpinner"; +import { Button } from "../../components/common/Button"; +import { LoadingSpinner } from "../../components/common/LoadingSpinner"; +import { useDocumentScannerContext } from "./DocumentScannerContext"; +import { useProcessInvoice } from "./useProcessInvoice"; -export const InvoicePhotoPreview = () => { +export const InvoicePhotoPreview = ({ stockId }: { stockId: number }) => { const { isConnected } = useNetInfo(); - const photo = useAppSelector(documentScannerSelector.selectPhoto); - const inventory_id = useAppSelector( - documentScannerSelector.selectInventoryId - ); + const { documentScannerState, updateDocumentScannerState } = + useDocumentScannerContext(); - const dispatch = useAppDispatch(); + const photo = documentScannerState.photo; - const { mutate, isLoading, data: _data } = useProcessInvoice(); + const { mutate, isLoading, data: _data } = useProcessInvoice(stockId); return ( { onPress={ isLoading ? () => null - : () => dispatch(documentScannerAction.PHOTO_RETAKE()) + : () => + updateDocumentScannerState((d) => { + d.photo = null; + d.isPreviewShown = false; + }) + // () => dispatch(documentScannerAction.PHOTO_RETAKE()) } size="s" type="primary" @@ -64,7 +63,10 @@ export const InvoicePhotoPreview = () => { isLoading ? () => null : () => { - mutate({ inventory_id, base64Photo: photo?.base64! }); + mutate({ + inventory_id: stockId, + base64Photo: photo?.base64!, + }); } } size="s" diff --git a/native/components/DocumentScanner/SalesRaportPhotoPreview.tsx b/native/screens/DocumentScannerModalScreen/SalesRaportPhotoPreview.tsx similarity index 68% rename from native/components/DocumentScanner/SalesRaportPhotoPreview.tsx rename to native/screens/DocumentScannerModalScreen/SalesRaportPhotoPreview.tsx index f349ad99..fcb830e0 100644 --- a/native/components/DocumentScanner/SalesRaportPhotoPreview.tsx +++ b/native/screens/DocumentScannerModalScreen/SalesRaportPhotoPreview.tsx @@ -1,25 +1,19 @@ import { useNetInfo } from "@react-native-community/netinfo"; import { ImageBackground } from "react-native"; -import { useProcessSalesRaport } from "../../db/hooks/useProcesSalesRaport"; -import { - documentScannerAction, - documentScannerSelector, -} from "../../redux/documentScannerSlice"; -import { useAppDispatch, useAppSelector } from "../../redux/hooks"; -import { Button } from "../common/Button"; -import { LoadingSpinner } from "../common/LoadingSpinner"; +import { Button } from "../../components/common/Button"; +import { LoadingSpinner } from "../../components/common/LoadingSpinner"; +import { useDocumentScannerContext } from "./DocumentScannerContext"; +import { useProcessSalesRaport } from "./useProcesSalesRaport"; -export const SalesRaportPhotoPreview = () => { +export const SalesRaportPhotoPreview = ({ stockId }: { stockId: number }) => { const { isConnected } = useNetInfo(); - const photo = useAppSelector(documentScannerSelector.selectPhoto); - const inventory_id = useAppSelector( - documentScannerSelector.selectInventoryId - ); + const { documentScannerState, updateDocumentScannerState } = + useDocumentScannerContext(); - const dispatch = useAppDispatch(); + const photo = documentScannerState.photo; - const { mutate, isLoading } = useProcessSalesRaport(inventory_id); + const { mutate, isLoading } = useProcessSalesRaport(stockId); return ( { onPress={ isLoading ? () => null - : () => dispatch(documentScannerAction.PHOTO_RETAKE()) + : () => + updateDocumentScannerState((d) => { + d.photo = null; + d.isPreviewShown = false; + }) } size="s" type="primary" diff --git a/native/db/hooks/useProcesSalesRaport.ts b/native/screens/DocumentScannerModalScreen/useProcesSalesRaport.ts similarity index 73% rename from native/db/hooks/useProcesSalesRaport.ts rename to native/screens/DocumentScannerModalScreen/useProcesSalesRaport.ts index fbc82524..2abc7b1c 100644 --- a/native/db/hooks/useProcesSalesRaport.ts +++ b/native/screens/DocumentScannerModalScreen/useProcesSalesRaport.ts @@ -1,14 +1,14 @@ import { useMutation } from "@tanstack/react-query"; import { useSnackbar } from "../../components/Snackbar/hooks"; -import { documentScannerAction } from "../../redux/documentScannerSlice"; -import { useAppDispatch } from "../../redux/hooks"; -import { supabase } from "../supabase"; -import { ProcessSalesRaportResponse } from "../types"; -import { queryKeys } from "./queryKeys"; +import { queryKeys } from "../../db/hooks/queryKeys"; +import { supabase } from "../../db/supabase"; +import { ProcessSalesRaportResponse } from "../../db/types"; +import { useDocumentScannerContext } from "./DocumentScannerContext"; export const useProcessSalesRaport = (inventory_id: number | null) => { const { showError } = useSnackbar(); - const dispatch = useAppDispatch(); + + const { updateDocumentScannerState } = useDocumentScannerContext(); return useMutation( async ({ @@ -42,11 +42,9 @@ export const useProcessSalesRaport = (inventory_id: number | null) => { return null; } - dispatch( - documentScannerAction.SET_PROCESSED_SALES_RAPORT({ - processedSalesRaport: data, - }) - ); + updateDocumentScannerState((d) => { + d.processedSalesReport = data; + }); return data as ProcessSalesRaportResponse; }, diff --git a/native/screens/DocumentScannerModalScreen/useProcessInvoice.ts b/native/screens/DocumentScannerModalScreen/useProcessInvoice.ts new file mode 100644 index 00000000..0729a68d --- /dev/null +++ b/native/screens/DocumentScannerModalScreen/useProcessInvoice.ts @@ -0,0 +1,45 @@ +import { useMutation } from "@tanstack/react-query"; +import { useSnackbar } from "../../components/Snackbar/hooks"; +import { supabase } from "../../db/supabase"; +import { ProcessInvoiceResponse } from "../../db/types"; +import { useDocumentScannerContext } from "./DocumentScannerContext"; + +export const useProcessInvoice = (stockId: number) => { + const { showError } = useSnackbar(); + + const { updateDocumentScannerState } = useDocumentScannerContext(); + + return useMutation( + async ({ + base64Photo, + }: { + base64Photo: string; + inventory_id: number | null; + }): Promise => { + const reqBody = { + inventory_id: stockId, + image: { + data: base64Photo, + }, + }; + + const { data, error } = await supabase.functions.invoke( + "process-invoice", + { + body: reqBody, + } + ); + if (error) { + showError("Nie udało się przetworzyć zdjęcia"); + console.log(error); + return null; + } + + updateDocumentScannerState((d) => { + d.processedInvoice = data; + }); + + return data as ProcessInvoiceResponse; + } + ); +}; diff --git a/native/screens/IdentifyAliasesScreen/Invoice.tsx b/native/screens/IdentifyAliasesScreen/Invoice.tsx index f9d6d032..b14568cf 100644 --- a/native/screens/IdentifyAliasesScreen/Invoice.tsx +++ b/native/screens/IdentifyAliasesScreen/Invoice.tsx @@ -16,12 +16,8 @@ import { Typography } from "../../components/common/Typography"; import { useListProductRecords } from "../../db"; import { useCreateProductNameAlias } from "../../db/hooks/useCreateProductNameAlias"; import { useListExistingProducts } from "../../db/hooks/useListProducts"; +import { ProcessInvoiceResponse } from "../../db/types"; import { IdentifyAliasesScreenNavigationProp } from "../../navigation/types"; -import { - documentScannerAction, - documentScannerSelector, -} from "../../redux/documentScannerSlice"; -import { useAppDispatch, useAppSelector } from "../../redux/hooks"; import { createStyles } from "../../theme/useStyles"; import { IDListCardAddProduct } from "../StockTabScreen/IDListCard/IDListCardAddProduct"; import { AliasForm } from "./types"; @@ -62,7 +58,13 @@ const setAlias = setValue("usedAliases", [...aliasSet]); }; -export const IdentifyAliasesScreenInvoice = () => { +export const IdentifyAliasesScreenInvoice = ({ + processedInvoice, + stockId, +}: { + processedInvoice: ProcessInvoiceResponse; + stockId: number; +}) => { const navigation = useNavigation(); const { isConnected } = useNetInfo(); const styles = useStyles(); @@ -75,17 +77,10 @@ export const IdentifyAliasesScreenInvoice = () => { data: resolvedAliases, } = useCreateProductNameAlias(); - const dispatch = useAppDispatch(); - const inventoryId = useAppSelector(documentScannerSelector.selectInventoryId); - const unmatchedRows = useAppSelector( - documentScannerSelector.selectInvoiceUnmatchedRows - ); - - const processedInvoice = useAppSelector( - documentScannerSelector.selectProcessedInvoice - ); + // const dispatch = useAppDispatch(); + const unmatchedRows = processedInvoice?.unmatchedRows; - const { data: productRecords } = useListProductRecords(inventoryId as number); + const { data: productRecords } = useListProductRecords(stockId); const { setValue, handleSubmit, watch, getValues } = useForm({ defaultValues: async () => @@ -122,9 +117,9 @@ export const IdentifyAliasesScreenInvoice = () => { } console.log({ newMatched, resolvedAliases }); - dispatch(documentScannerAction.SET_NEW_MATCHED({ newMatched })); + // dispatch(documentScannerAction.SET_NEW_MATCHED({ newMatched })); } - dispatch(documentScannerAction.RESET_PROCESSED_INVOICE()); + // dispatch(documentScannerAction.RESET_PROCESSED_INVOICE()); navigation.goBack(); } }, [isSuccess]); @@ -134,9 +129,9 @@ export const IdentifyAliasesScreenInvoice = () => { (data) => { // New alisases are inserted into the db here mutate(data); - dispatch(documentScannerAction.PHOTO_RESET_DATA()); + // dispatch(documentScannerAction.PHOTO_RESET_DATA()); // dispatch(documentScannerAction.RESET_PROCESSED_INVOICE()); - dispatch(documentScannerAction.PHOTO_RETAKE()); + // dispatch(documentScannerAction.PHOTO_RETAKE()); }, (_errors) => { // TODO show a snackbar? handle error better @@ -145,11 +140,12 @@ export const IdentifyAliasesScreenInvoice = () => { )(); }; const handleGoBackPress = () => { - dispatch(documentScannerAction.PHOTO_RESET_DATA()); - dispatch(documentScannerAction.RESET_PROCESSED_INVOICE()); - dispatch(documentScannerAction.PHOTO_RETAKE()); + // dispatch(documentScannerAction.PHOTO_RESET_DATA()); + // dispatch(documentScannerAction.RESET_PROCESSED_INVOICE()); + // dispatch(documentScannerAction.PHOTO_RETAKE()); navigation.replace("DocumentScannerModal", { isScanningSalesRaport: false, + stockId, }); }; @@ -165,9 +161,9 @@ export const IdentifyAliasesScreenInvoice = () => { type="primary" fullWidth onPress={() => { - dispatch(documentScannerAction.PHOTO_RESET_DATA()); - dispatch(documentScannerAction.RESET_PROCESSED_SALES_RAPORT()); - dispatch(documentScannerAction.RESET_PROCESSED_INVOICE()); + // dispatch(documentScannerAction.PHOTO_RESET_DATA()); + // dispatch(documentScannerAction.RESET_PROCESSED_SALES_RAPORT()); + // dispatch(documentScannerAction.RESET_PROCESSED_INVOICE()); navigation.goBack(); }} containerStyle={{ marginTop: 16 }} @@ -200,7 +196,7 @@ export const IdentifyAliasesScreenInvoice = () => { Zapisz zmiany - + {unmatchedRows.map((row, i) => ( { +export const IdentifyAliasesScreenSalesRaport = ({ + processedSalesReport, + stockId, +}: { + processedSalesReport: ProcessSalesRaportResponse; + stockId: number; +}) => { const navigation = useNavigation(); const { isConnected } = useNetInfo(); const styles = useStyles(); const { openBottomSheet, closeBottomSheet } = useBottomSheet(); const { showInfo } = useSnackbar(); - const dispatch = useAppDispatch(); - const inventoryId = useAppSelector(documentScannerSelector.selectInventoryId); - const aliases = useAppSelector( - documentScannerSelector.selectSalesRaportUnmatchedAliases - ); + // const dispatch = useAppDispatch(); + const aliases = processedSalesReport?.unmatchedAliases; - const { data: recipes } = useListRecipes(inventoryId); + const { data: recipes } = useListRecipes(stockId); const { mutate, isSuccess } = useCreateRecipeNameAlias(); const { setValue, handleSubmit, watch, getValues } = useForm({ @@ -100,9 +99,9 @@ export const IdentifyAliasesScreenSalesRaport = () => { handleSubmit( (data) => { mutate(data); - dispatch(documentScannerAction.PHOTO_RESET_DATA()); - dispatch(documentScannerAction.RESET_PROCESSED_SALES_RAPORT()); - dispatch(documentScannerAction.PHOTO_RETAKE()); + // dispatch(documentScannerAction.PHOTO_RESET_DATA()); + // dispatch(documentScannerAction.RESET_PROCESSED_SALES_RAPORT()); + // dispatch(documentScannerAction.PHOTO_RETAKE()); }, (_errors) => { // TODO show a snackbar? handle error better @@ -111,11 +110,12 @@ export const IdentifyAliasesScreenSalesRaport = () => { )(); }; const handleGoBackPress = () => { - dispatch(documentScannerAction.PHOTO_RESET_DATA()); - dispatch(documentScannerAction.RESET_PROCESSED_SALES_RAPORT()); - dispatch(documentScannerAction.PHOTO_RETAKE()); + // dispatch(documentScannerAction.PHOTO_RESET_DATA()); + // dispatch(documentScannerAction.RESET_PROCESSED_SALES_RAPORT()); + // dispatch(documentScannerAction.PHOTO_RETAKE()); navigation.replace("DocumentScannerModal", { isScanningSalesRaport: true, + stockId, }); }; @@ -131,9 +131,9 @@ export const IdentifyAliasesScreenSalesRaport = () => { type="primary" fullWidth onPress={() => { - dispatch(documentScannerAction.PHOTO_RESET_DATA()); - dispatch(documentScannerAction.RESET_PROCESSED_SALES_RAPORT()); - dispatch(documentScannerAction.RESET_PROCESSED_INVOICE()); + // dispatch(documentScannerAction.PHOTO_RESET_DATA()); + // dispatch(documentScannerAction.RESET_PROCESSED_SALES_RAPORT()); + // dispatch(documentScannerAction.RESET_PROCESSED_INVOICE()); navigation.goBack(); }} containerStyle={{ marginTop: 16 }} diff --git a/native/screens/IdentifyAliasesScreen/index.tsx b/native/screens/IdentifyAliasesScreen/index.tsx index e64e5199..747303a4 100644 --- a/native/screens/IdentifyAliasesScreen/index.tsx +++ b/native/screens/IdentifyAliasesScreen/index.tsx @@ -8,7 +8,12 @@ import { IdentifyAliasesScreenSalesRaport } from "./SalesRaport"; export const IdentifyAliasesScreen = ({ route, }: IdentifyAliasesScreenProps) => { - const { isScanningSalesRaport } = route.params; + const { + isScanningSalesRaport, + processedInvoice, + processedSalesReport, + stockId, + } = route.params; const styles = useStyles(); return ( @@ -19,9 +24,15 @@ export const IdentifyAliasesScreen = ({ scrollable > {isScanningSalesRaport ? ( - + ) : ( - + )} ); diff --git a/native/screens/ListTabScreen/ListCard/ListCardLink.tsx b/native/screens/ListTabScreen/ListCard/ListCardLink.tsx index bc518d95..257c4239 100644 --- a/native/screens/ListTabScreen/ListCard/ListCardLink.tsx +++ b/native/screens/ListTabScreen/ListCard/ListCardLink.tsx @@ -14,16 +14,10 @@ type ListCardAddProps = { }; const navigateToTabScreen = - (navigation: any, id: number, isDelivery: boolean) => () => { - // WIP - if (isDelivery) { - (navigation as StockTabNavigationProp).navigate("StockTabScreen", { - id, - }); - return; - } + (navigation: any, id: number, stockType: "delivery" | "inventory") => () => { (navigation as StockTabNavigationProp).navigate("StockTabScreen", { id, + stockType, }); return; }; @@ -37,7 +31,11 @@ export const ListCardLink = ({ title, id, isDelivery }: ListCardAddProps) => { style={styles.card} padding="none" badge={isDelivery ? "green" : "red"} - onPress={navigateToTabScreen(navigation, id, isDelivery)} + onPress={navigateToTabScreen( + navigation, + id, + isDelivery ? "delivery" : "inventory" + )} > ; @@ -69,7 +68,7 @@ const RecordButton = ({ const navigateToPreviousRecord = ( navigate: RecordScreenNavigationProp["navigate"], - isDelivery: RecordScreenProps["route"]["params"]["isDelivery"], + stockType: "delivery" | "inventory", id: number, prevProductId: number | undefined, prevRecordId: number | undefined, @@ -82,14 +81,14 @@ const navigateToPreviousRecord = ( navigate("RecordScreen", { id, recordId: prevRecordId, - isDelivery, + stockType, productId: prevProductId, }); }; const navigateToNextRecord = ( navigate: RecordScreenNavigationProp["navigate"], - isDelivery: RecordScreenProps["route"]["params"]["isDelivery"], + stockType: "delivery" | "inventory", id: number, nextProductId: number | undefined, nextRecordId: number | undefined, @@ -102,14 +101,14 @@ const navigateToNextRecord = ( navigate("RecordScreen", { id, recordId: nextRecordId, - isDelivery, + stockType, productId: nextProductId, }); }; export function RecordScreen({ route, navigation }: RecordScreenProps) { const styles = useStyles(); - const { id: inventoryId, recordId, isDelivery, productId } = route.params; + const { id: inventoryId, recordId, stockType, productId } = route.params; const recordPanel = useRecordPanel({ inventoryId, productId }); const { productResult } = recordPanel; @@ -236,7 +235,7 @@ export function RecordScreen({ route, navigation }: RecordScreenProps) { containerStyle={isFirst && styles.firstRecord} onPress={navigateToPreviousRecord( navigation.navigate, - isDelivery, + stockType, inventoryId, prevRecord?.product_id, prevRecord?.id, @@ -281,7 +280,7 @@ export function RecordScreen({ route, navigation }: RecordScreenProps) { containerStyle={isLast && styles.lastRecord} onPress={navigateToNextRecord( navigation.navigate, - isDelivery, + stockType, inventoryId, nextRecord?.product_id, nextRecord?.id, @@ -293,7 +292,7 @@ export function RecordScreen({ route, navigation }: RecordScreenProps) { - {isDelivery && ( + {stockType === "delivery" && ( <> updateRecipeRecords((d) => { - console.log(d[recipeId], recipeId); if (!d[recipeId]) { d[recipeId] = { quantity: v }; } else { diff --git a/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx b/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx index 6de32a56..320a7040 100644 --- a/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx +++ b/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx @@ -2,22 +2,11 @@ import React, { ReactNode, createContext, useContext } from "react"; import { Updater, useImmer } from "use-immer"; import { useListProductRecords } from "../../../db/hooks/useListProductRecords"; import { - DocumentScannerState, ProductRecordsByProductId, RecipeRecordsByRecipeId, StockData, } from "./types"; -const initialDocumentScannerState: DocumentScannerState = { - isPreviewShown: false, - isTakingPhoto: false, - isCameraReady: null, - photo: null, - processedInvoice: null, - processedSalesRaport: null, - inventory_id: null, -}; - const initialStockId = 0; const initialProductRecords: ProductRecordsByProductId = {}; const initialRecipeRecords: RecipeRecordsByRecipeId = {}; @@ -27,8 +16,6 @@ type StockContextType = StockData & { stockType: "inventory" | "delivery"; updateProductRecords: Updater; updateRecipeRecords: Updater; - documentScannerState: DocumentScannerState; - setDocumentScannerState: Updater; }; const StockContext = createContext({ @@ -38,8 +25,6 @@ const StockContext = createContext({ updateProductRecords: () => null, recipeRecords: initialRecipeRecords, updateRecipeRecords: () => null, - documentScannerState: initialDocumentScannerState, - setDocumentScannerState: () => null, }); export const StockContextProvider = ({ @@ -69,11 +54,6 @@ export const StockContextProvider = ({ ); const [recipeRecords, updateRecipeRecords] = useImmer(initialRecipeRecords); - const [documentScannerState, setDocumentScannerState] = - useImmer(initialDocumentScannerState); - - // const setProductRecord = (product_id: number, value: Partial) => setProductRecords(records => ({...records})) - return ( {children} diff --git a/native/screens/StockTabScreen/StockContext/types.ts b/native/screens/StockTabScreen/StockContext/types.ts index 74829c3d..bb1ab531 100644 --- a/native/screens/StockTabScreen/StockContext/types.ts +++ b/native/screens/StockTabScreen/StockContext/types.ts @@ -1,9 +1,3 @@ -import { CameraCapturedPicture } from "expo-camera"; -import { - ProcessInvoiceResponse, - ProcessSalesRaportResponse, -} from "../../../db/types"; - type ProductRecordByProductId = { record_id: number | null; quantity: number; @@ -23,16 +17,6 @@ export type RecipeRecordsByRecipeId = { [recipe_id: string]: RecipeRecordByRecipeId; }; -export type DocumentScannerState = { - isPreviewShown: boolean; - isTakingPhoto: boolean; - isCameraReady: boolean | null; - photo: CameraCapturedPicture | null; - processedInvoice: ProcessInvoiceResponse | null; - processedSalesRaport: ProcessSalesRaportResponse | null; - inventory_id: number | null; -}; - export type StockData = { // stockId: number; // stockType: "inventory" | "delivery"; diff --git a/native/screens/StockTabScreen/StockTabScreen.tsx b/native/screens/StockTabScreen/StockTabScreen.tsx index c626e2b0..d1052a4a 100644 --- a/native/screens/StockTabScreen/StockTabScreen.tsx +++ b/native/screens/StockTabScreen/StockTabScreen.tsx @@ -12,8 +12,6 @@ import { useGetInventoryName } from "../../db/hooks/useGetInventoryName"; import { useListRecipes } from "../../db/hooks/useListRecipes"; import { useUpdateRecords } from "../../db/hooks/useUpdateRecords"; import { StockTabScreenProps } from "../../navigation/types"; -import { documentScannerAction } from "../../redux/documentScannerSlice"; -import { useAppDispatch } from "../../redux/hooks"; import { IDListCard } from "./IDListCard/IDListCard"; import { IDListCardAddProduct } from "./IDListCard/IDListCardAddProduct"; import { IDListCardAddRecord } from "./IDListCard/IDListCardAddRecord"; @@ -30,10 +28,10 @@ export default function StockTabScreen({ const { isConnected } = useNetInfo(); const inventoryId = route.params?.id; + // const stockType = route.params?.stockType; // const { showError, showInfo, showSuccess } = useSnackbar(); const { showError, showSuccess } = useSnackbar(); - const dispatch = useAppDispatch(); const { data: inventoryName } = useGetInventoryName(+inventoryId); @@ -59,12 +57,6 @@ export default function StockTabScreen({ navigation.setOptions({ headerTitle: inventoryName }); }, [inventoryId, inventoryName, navigation]); - useEffect(() => { - dispatch( - documentScannerAction.SET_INVENTORY_ID({ inventory_id: +inventoryId }) - ); - }, [inventoryId]); - useEffect(() => { if (isUpdateSuccess) { showSuccess("Zmiany zostały zapisane"); @@ -111,6 +103,7 @@ export default function StockTabScreen({ navigation.navigate("DocumentScannerModal" as any, { // WIP isScanningSalesRaport: false, + stockId: inventoryId, }); }} > From b57d4f106fa575c74383a75a7a5263676176ad57 Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Tue, 23 Jul 2024 11:39:08 +0200 Subject: [PATCH 13/23] wip: merge document scanner components --- native/navigation/types.ts | 7 +- .../DocumentScanner.tsx | 13 ++- .../DocumentScannerModalScreen.tsx | 5 +- ...voicePhotoPreview.tsx => PhotoPreview.tsx} | 17 +++- .../SalesRaportPhotoPreview.tsx | 83 ------------------- ...esSalesRaport.ts => useProcessDocument.ts} | 40 +++++---- .../useProcessInvoice.ts | 45 ---------- .../screens/IdentifyAliasesScreen/Invoice.tsx | 4 +- .../IdentifyAliasesScreen/SalesRaport.tsx | 3 + .../screens/IdentifyAliasesScreen/index.tsx | 3 + .../screens/StockTabScreen/StockTabScreen.tsx | 2 + 11 files changed, 63 insertions(+), 159 deletions(-) rename native/screens/DocumentScannerModalScreen/{InvoicePhotoPreview.tsx => PhotoPreview.tsx} (88%) delete mode 100644 native/screens/DocumentScannerModalScreen/SalesRaportPhotoPreview.tsx rename native/screens/DocumentScannerModalScreen/{useProcesSalesRaport.ts => useProcessDocument.ts} (56%) delete mode 100644 native/screens/DocumentScannerModalScreen/useProcessInvoice.ts diff --git a/native/navigation/types.ts b/native/navigation/types.ts index 26a20667..2251a0d1 100644 --- a/native/navigation/types.ts +++ b/native/navigation/types.ts @@ -33,7 +33,11 @@ export type HomeStackParamList = { inventoryId: number; navigateTo: "StockTab"; }; - DocumentScannerModal: { stockId: number; isScanningSalesRaport: boolean }; + DocumentScannerModal: { + stockId: number; + stockType: "delivery" | "inventory"; + isScanningSalesRaport: boolean; + }; SettingsScreen: undefined; NewBarcodeScreen: { inventoryId: number; new_barcode: string }; NewStockScreen: undefined; @@ -41,6 +45,7 @@ export type HomeStackParamList = { IdentifyAliasesScreen: { stockId: number; isScanningSalesRaport: boolean; + stockType: "delivery" | "inventory"; processedInvoice: ProcessInvoiceResponse; processedSalesReport: ProcessSalesRaportResponse; }; diff --git a/native/screens/DocumentScannerModalScreen/DocumentScanner.tsx b/native/screens/DocumentScannerModalScreen/DocumentScanner.tsx index 58e5c1fa..2adbba0e 100644 --- a/native/screens/DocumentScannerModalScreen/DocumentScanner.tsx +++ b/native/screens/DocumentScannerModalScreen/DocumentScanner.tsx @@ -3,15 +3,15 @@ import { CameraView as ExpoCamera } from "expo-camera"; import React, { useRef } from "react"; import { Camera } from "../../components/Camera"; import { useDocumentScannerContext } from "./DocumentScannerContext"; -import { InvoicePhotoPreview } from "./InvoicePhotoPreview"; -import { SalesRaportPhotoPreview } from "./SalesRaportPhotoPreview"; +import { PhotoPreview } from "./PhotoPreview"; export const DocumentScanner = ({ - isScanningSalesRaport, stockId, + stockType, }: { isScanningSalesRaport: boolean; stockId: number; + stockType: "delivery" | "inventory"; }) => { const cameraRef = useRef(null); @@ -42,11 +42,8 @@ export const DocumentScanner = ({ return; }; - if (isPreviewShown && isScanningSalesRaport) { - return ; - } - if (isPreviewShown && !isScanningSalesRaport) { - return ; + if (isPreviewShown) { + return ; } return ( diff --git a/native/screens/DocumentScannerModalScreen/DocumentScannerModalScreen.tsx b/native/screens/DocumentScannerModalScreen/DocumentScannerModalScreen.tsx index c1575f26..b7401d46 100644 --- a/native/screens/DocumentScannerModalScreen/DocumentScannerModalScreen.tsx +++ b/native/screens/DocumentScannerModalScreen/DocumentScannerModalScreen.tsx @@ -37,7 +37,7 @@ export const DocumentScannerModalScreen = ({ updateDocumentScannerState(initialDocumentScannerState); const styles = useStyles(); - const { isScanningSalesRaport, stockId } = route.params; + const { isScanningSalesRaport, stockId, stockType } = route.params; const [permission, requestPermission] = useCameraPermissions(); const { processedInvoice, processedSalesReport } = documentScannerState; @@ -50,6 +50,7 @@ export const DocumentScannerModalScreen = ({ isScanningSalesRaport, processedInvoice: null, processedSalesReport, + stockType, }); } else { navigation.goBack(); @@ -64,6 +65,7 @@ export const DocumentScannerModalScreen = ({ isScanningSalesRaport, processedInvoice, processedSalesReport: null, + stockType, }); } else { navigation.goBack(); @@ -157,6 +159,7 @@ export const DocumentScannerModalScreen = ({ diff --git a/native/screens/DocumentScannerModalScreen/InvoicePhotoPreview.tsx b/native/screens/DocumentScannerModalScreen/PhotoPreview.tsx similarity index 88% rename from native/screens/DocumentScannerModalScreen/InvoicePhotoPreview.tsx rename to native/screens/DocumentScannerModalScreen/PhotoPreview.tsx index e40c6239..ae9ba23b 100644 --- a/native/screens/DocumentScannerModalScreen/InvoicePhotoPreview.tsx +++ b/native/screens/DocumentScannerModalScreen/PhotoPreview.tsx @@ -3,9 +3,15 @@ import { ImageBackground } from "react-native"; import { Button } from "../../components/common/Button"; import { LoadingSpinner } from "../../components/common/LoadingSpinner"; import { useDocumentScannerContext } from "./DocumentScannerContext"; -import { useProcessInvoice } from "./useProcessInvoice"; +import { useProcessDocument } from "./useProcessDocument"; -export const InvoicePhotoPreview = ({ stockId }: { stockId: number }) => { +export const PhotoPreview = ({ + stockId, + stockType, +}: { + stockId: number; + stockType: "delivery" | "inventory"; +}) => { const { isConnected } = useNetInfo(); const { documentScannerState, updateDocumentScannerState } = @@ -13,7 +19,11 @@ export const InvoicePhotoPreview = ({ stockId }: { stockId: number }) => { const photo = documentScannerState.photo; - const { mutate, isLoading, data: _data } = useProcessInvoice(stockId); + const { + mutate, + isLoading, + data: _data, + } = useProcessDocument(stockId, stockType); return ( { ? () => null : () => { mutate({ - inventory_id: stockId, base64Photo: photo?.base64!, }); } diff --git a/native/screens/DocumentScannerModalScreen/SalesRaportPhotoPreview.tsx b/native/screens/DocumentScannerModalScreen/SalesRaportPhotoPreview.tsx deleted file mode 100644 index fcb830e0..00000000 --- a/native/screens/DocumentScannerModalScreen/SalesRaportPhotoPreview.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import { useNetInfo } from "@react-native-community/netinfo"; -import { ImageBackground } from "react-native"; -import { Button } from "../../components/common/Button"; -import { LoadingSpinner } from "../../components/common/LoadingSpinner"; -import { useDocumentScannerContext } from "./DocumentScannerContext"; -import { useProcessSalesRaport } from "./useProcesSalesRaport"; - -export const SalesRaportPhotoPreview = ({ stockId }: { stockId: number }) => { - const { isConnected } = useNetInfo(); - - const { documentScannerState, updateDocumentScannerState } = - useDocumentScannerContext(); - - const photo = documentScannerState.photo; - - const { mutate, isLoading } = useProcessSalesRaport(stockId); - - return ( - - {isLoading ? ( - - ) : ( - <> - - - - )} - - ); -}; diff --git a/native/screens/DocumentScannerModalScreen/useProcesSalesRaport.ts b/native/screens/DocumentScannerModalScreen/useProcessDocument.ts similarity index 56% rename from native/screens/DocumentScannerModalScreen/useProcesSalesRaport.ts rename to native/screens/DocumentScannerModalScreen/useProcessDocument.ts index 2abc7b1c..e472a2cc 100644 --- a/native/screens/DocumentScannerModalScreen/useProcesSalesRaport.ts +++ b/native/screens/DocumentScannerModalScreen/useProcessDocument.ts @@ -1,11 +1,14 @@ import { useMutation } from "@tanstack/react-query"; import { useSnackbar } from "../../components/Snackbar/hooks"; -import { queryKeys } from "../../db/hooks/queryKeys"; +// import { queryKeys } from "../../db/hooks/queryKeys"; import { supabase } from "../../db/supabase"; import { ProcessSalesRaportResponse } from "../../db/types"; import { useDocumentScannerContext } from "./DocumentScannerContext"; -export const useProcessSalesRaport = (inventory_id: number | null) => { +export const useProcessDocument = ( + stockId: number | null, + stockType: "delivery" | "inventory" +) => { const { showError } = useSnackbar(); const { updateDocumentScannerState } = useDocumentScannerContext(); @@ -16,40 +19,45 @@ export const useProcessSalesRaport = (inventory_id: number | null) => { }: { base64Photo: string; }): Promise => { - if (inventory_id == null) { + if (stockId == null) { console.error( - "useProcessSalesRaport - no inventory_id, this should not happen" + "useProcessDocument - no stockId, this should not happen" ); showError("Nie udało się przetworzyć zdjęcia - zrestartuj aplikację"); return null; } const reqBody = { - inventory_id, + inventory_id: stockId, image: { data: base64Photo, }, }; - const { data, error } = await supabase.functions.invoke( - "process-sales-raport", - { - body: reqBody, - } - ); + const functionName = + stockType === "delivery" ? "process-invoice" : "process-sales-raport"; + + const { data, error } = await supabase.functions.invoke(functionName, { + body: reqBody, + }); if (error) { showError("Nie udało się przetworzyć zdjęcia"); - console.log("useProcessSalesRaport", error); + console.log("useProcessDocument", error); return null; } updateDocumentScannerState((d) => { - d.processedSalesReport = data; + if (stockType === "delivery") { + d.processedInvoice = data; + } else { + d.processedSalesReport = data; + } }); return data as ProcessSalesRaportResponse; - }, - { - mutationKey: queryKeys.processSalesRaport(inventory_id), } + // WIP + // { + // mutationKey: queryKeys.processSalesRaport(stockId), + // } ); }; diff --git a/native/screens/DocumentScannerModalScreen/useProcessInvoice.ts b/native/screens/DocumentScannerModalScreen/useProcessInvoice.ts deleted file mode 100644 index 0729a68d..00000000 --- a/native/screens/DocumentScannerModalScreen/useProcessInvoice.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { useMutation } from "@tanstack/react-query"; -import { useSnackbar } from "../../components/Snackbar/hooks"; -import { supabase } from "../../db/supabase"; -import { ProcessInvoiceResponse } from "../../db/types"; -import { useDocumentScannerContext } from "./DocumentScannerContext"; - -export const useProcessInvoice = (stockId: number) => { - const { showError } = useSnackbar(); - - const { updateDocumentScannerState } = useDocumentScannerContext(); - - return useMutation( - async ({ - base64Photo, - }: { - base64Photo: string; - inventory_id: number | null; - }): Promise => { - const reqBody = { - inventory_id: stockId, - image: { - data: base64Photo, - }, - }; - - const { data, error } = await supabase.functions.invoke( - "process-invoice", - { - body: reqBody, - } - ); - if (error) { - showError("Nie udało się przetworzyć zdjęcia"); - console.log(error); - return null; - } - - updateDocumentScannerState((d) => { - d.processedInvoice = data; - }); - - return data as ProcessInvoiceResponse; - } - ); -}; diff --git a/native/screens/IdentifyAliasesScreen/Invoice.tsx b/native/screens/IdentifyAliasesScreen/Invoice.tsx index b14568cf..dd0da8fa 100644 --- a/native/screens/IdentifyAliasesScreen/Invoice.tsx +++ b/native/screens/IdentifyAliasesScreen/Invoice.tsx @@ -61,9 +61,11 @@ const setAlias = export const IdentifyAliasesScreenInvoice = ({ processedInvoice, stockId, + stockType, }: { processedInvoice: ProcessInvoiceResponse; stockId: number; + stockType: "delivery" | "inventory"; }) => { const navigation = useNavigation(); const { isConnected } = useNetInfo(); @@ -77,7 +79,6 @@ export const IdentifyAliasesScreenInvoice = ({ data: resolvedAliases, } = useCreateProductNameAlias(); - // const dispatch = useAppDispatch(); const unmatchedRows = processedInvoice?.unmatchedRows; const { data: productRecords } = useListProductRecords(stockId); @@ -146,6 +147,7 @@ export const IdentifyAliasesScreenInvoice = ({ navigation.replace("DocumentScannerModal", { isScanningSalesRaport: false, stockId, + stockType, }); }; diff --git a/native/screens/IdentifyAliasesScreen/SalesRaport.tsx b/native/screens/IdentifyAliasesScreen/SalesRaport.tsx index cecf8bb4..f376c814 100644 --- a/native/screens/IdentifyAliasesScreen/SalesRaport.tsx +++ b/native/screens/IdentifyAliasesScreen/SalesRaport.tsx @@ -59,9 +59,11 @@ const setAlias = export const IdentifyAliasesScreenSalesRaport = ({ processedSalesReport, stockId, + stockType, }: { processedSalesReport: ProcessSalesRaportResponse; stockId: number; + stockType: "delivery" | "inventory"; }) => { const navigation = useNavigation(); const { isConnected } = useNetInfo(); @@ -116,6 +118,7 @@ export const IdentifyAliasesScreenSalesRaport = ({ navigation.replace("DocumentScannerModal", { isScanningSalesRaport: true, stockId, + stockType, }); }; diff --git a/native/screens/IdentifyAliasesScreen/index.tsx b/native/screens/IdentifyAliasesScreen/index.tsx index 747303a4..b752fae0 100644 --- a/native/screens/IdentifyAliasesScreen/index.tsx +++ b/native/screens/IdentifyAliasesScreen/index.tsx @@ -13,6 +13,7 @@ export const IdentifyAliasesScreen = ({ processedInvoice, processedSalesReport, stockId, + stockType, } = route.params; const styles = useStyles(); @@ -27,11 +28,13 @@ export const IdentifyAliasesScreen = ({ ) : ( )} diff --git a/native/screens/StockTabScreen/StockTabScreen.tsx b/native/screens/StockTabScreen/StockTabScreen.tsx index d1052a4a..2f4d5478 100644 --- a/native/screens/StockTabScreen/StockTabScreen.tsx +++ b/native/screens/StockTabScreen/StockTabScreen.tsx @@ -28,6 +28,7 @@ export default function StockTabScreen({ const { isConnected } = useNetInfo(); const inventoryId = route.params?.id; + const stockType = route.params?.stockType; // const stockType = route.params?.stockType; // const { showError, showInfo, showSuccess } = useSnackbar(); @@ -104,6 +105,7 @@ export default function StockTabScreen({ // WIP isScanningSalesRaport: false, stockId: inventoryId, + stockType, }); }} > From 9475af33f86987699676c7f58cad07f983198dd2 Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Sun, 28 Jul 2024 16:07:04 +0200 Subject: [PATCH 14/23] wip: records from invoice appear in stock --- native/db/hooks/useCreateProductNameAlias.ts | 9 +- native/db/hooks/useCreateRecipeNameAlias.ts | 12 +- native/db/hooks/useListRecipes.ts | 29 ++- native/db/types/index.ts | 6 +- native/navigation/types.ts | 2 + .../{Invoice.tsx => Aliases.tsx} | 233 +++++++++-------- .../IdentifyAliasesScreen/SalesRaport.tsx | 239 ------------------ .../screens/IdentifyAliasesScreen/index.tsx | 22 +- .../screens/IdentifyAliasesScreen/styles.tsx | 37 +++ native/screens/IdentifyAliasesScreen/types.ts | 15 +- .../StockContext/StockContextProvider.tsx | 80 ++++-- .../StockTabScreen/StockContext/types.ts | 12 +- .../screens/StockTabScreen/StockTabScreen.tsx | 25 +- .../StockTabScreen/useProductRecords.ts | 1 + supabase/functions/process-invoice/index.ts | 28 +- 15 files changed, 319 insertions(+), 431 deletions(-) rename native/screens/IdentifyAliasesScreen/{Invoice.tsx => Aliases.tsx} (56%) delete mode 100644 native/screens/IdentifyAliasesScreen/SalesRaport.tsx create mode 100644 native/screens/IdentifyAliasesScreen/styles.tsx diff --git a/native/db/hooks/useCreateProductNameAlias.ts b/native/db/hooks/useCreateProductNameAlias.ts index 814f28b0..7128eb7f 100644 --- a/native/db/hooks/useCreateProductNameAlias.ts +++ b/native/db/hooks/useCreateProductNameAlias.ts @@ -10,8 +10,8 @@ export const useCreateProductNameAlias = () => { const { showError, showSuccess } = useSnackbar(); const { data: currentCompanyId } = useGetCurrentCompanyId(); return useMutation( - async (productNameAliases: AliasForm): Promise => { - if (isEmpty(productNameAliases)) { + async (aliasForm: AliasForm): Promise => { + if (isEmpty(aliasForm.productAliases)) { return []; } if (currentCompanyId?.id == null) { @@ -20,11 +20,8 @@ export const useCreateProductNameAlias = () => { } const company_id = currentCompanyId?.id; - const mapped = Object.entries(productNameAliases).reduce( + const mapped = Object.entries(aliasForm.productAliases).reduce( (acc, [product_id, aliases]) => { - if (product_id === "usedAliases") { - return acc; - } return [ ...acc, ...(aliases?.map((alias) => ({ diff --git a/native/db/hooks/useCreateRecipeNameAlias.ts b/native/db/hooks/useCreateRecipeNameAlias.ts index f5d404dd..e31304ba 100644 --- a/native/db/hooks/useCreateRecipeNameAlias.ts +++ b/native/db/hooks/useCreateRecipeNameAlias.ts @@ -10,8 +10,8 @@ export const useCreateRecipeNameAlias = () => { const { showError, showSuccess } = useSnackbar(); const { data: currentCompanyId } = useGetCurrentCompanyId(); return useMutation( - async (recipeNameAliases: AliasForm): Promise => { - if (isEmpty(recipeNameAliases)) { + async (aliasForm: AliasForm): Promise => { + if (isEmpty(aliasForm.recipeAliases)) { return []; } if (currentCompanyId?.id == null) { @@ -20,11 +20,11 @@ export const useCreateRecipeNameAlias = () => { } const company_id = currentCompanyId?.id; - const mapped = Object.entries(recipeNameAliases).reduce( + const mapped = Object.entries(aliasForm.recipeAliases).reduce( (acc, [recipe_id, aliases]) => { - if (recipe_id === "usedAliases") { - return acc; - } + // if (recipe_id === "usedAliases") { + // return acc; + // } return [ ...acc, ...(aliases?.map((alias) => ({ diff --git a/native/db/hooks/useListRecipes.ts b/native/db/hooks/useListRecipes.ts index 070260e8..4ab4a229 100644 --- a/native/db/hooks/useListRecipes.ts +++ b/native/db/hooks/useListRecipes.ts @@ -2,8 +2,8 @@ import { useQuery } from "@tanstack/react-query"; import { supabase } from "../supabase"; -const listRecipes = async (inventoryId: number | null) => { - if (inventoryId == null) +const listRecipesOfStock = async (stockId: number) => { + if (stockId == null) throw new Error("useListRecipes - inventoryId is null, should be defined"); const { data, error } = await supabase .from("recipe") @@ -11,13 +11,26 @@ const listRecipes = async (inventoryId: number | null) => { "id, name, recipe_part(quantity, product_id), recipe_record(id, quantity)" ) .order("name", { ascending: true }) - .eq("recipe_record.inventory_id", inventoryId); + .eq("recipe_record.inventory_id", stockId); + if (error) throw new Error(error.message); + return data; +}; + +const listAllRecipes = async (inventoryId?: number) => { + if (inventoryId == null) + throw new Error("useListRecipes - inventoryId is null, should be defined"); + const { data, error } = await supabase + .from("recipe") + .select("id, name, recipe_part(quantity, product_id)") + .order("name", { ascending: true }); if (error) throw new Error(error.message); return data; }; -export const useListRecipes = (inventoryId: number | null) => { - return useQuery( - ["recipeList", inventoryId], - () => listRecipes(inventoryId) ?? null - ); + +export const useListRecipes = () => { + return useQuery(["recipeList"], () => listAllRecipes()); +}; + +export const useListRecipesWithRecords = (stockId: number) => { + return useQuery(["recipeList", stockId], () => listRecipesOfStock(stockId)); }; diff --git a/native/db/types/index.ts b/native/db/types/index.ts index f1da4b69..ce97b2fc 100644 --- a/native/db/types/index.ts +++ b/native/db/types/index.ts @@ -67,14 +67,14 @@ export type PatchedDatabase = { export type ProcessInvoiceResponse = { matchedProductRecords: { - [id: number]: { - product_id: number; + [product_id: number]: { + record_id: number; price_per_unit: number; quantity: number; }; }; matchedProductsNotInInventory: { - [id: number]: { + [product_id: number]: { price_per_unit: number; quantity: number; }; diff --git a/native/navigation/types.ts b/native/navigation/types.ts index 2251a0d1..ef395c7d 100644 --- a/native/navigation/types.ts +++ b/native/navigation/types.ts @@ -8,6 +8,7 @@ import { ProcessInvoiceResponse, ProcessSalesRaportResponse, } from "../db/types"; +import { ProductRecordsByProductId } from "../screens/StockTabScreen/StockContext/types"; /** * Update Required Stack @@ -82,6 +83,7 @@ export type StockStackParamList = { StockTabScreen: { id: number; stockType: "delivery" | "inventory"; + recordsFromInvoice?: ProductRecordsByProductId; }; RecordScreen: { id: number; diff --git a/native/screens/IdentifyAliasesScreen/Invoice.tsx b/native/screens/IdentifyAliasesScreen/Aliases.tsx similarity index 56% rename from native/screens/IdentifyAliasesScreen/Invoice.tsx rename to native/screens/IdentifyAliasesScreen/Aliases.tsx index dd0da8fa..df0a2eb4 100644 --- a/native/screens/IdentifyAliasesScreen/Invoice.tsx +++ b/native/screens/IdentifyAliasesScreen/Aliases.tsx @@ -1,9 +1,8 @@ import { useNetInfo } from "@react-native-community/netinfo"; import { useNavigation } from "@react-navigation/native"; import isEmpty from "lodash/isEmpty"; -import { useEffect } from "react"; import { UseFormGetValues, UseFormSetValue, useForm } from "react-hook-form"; -import { StyleSheet, View } from "react-native"; +import { View } from "react-native"; import { useBottomSheet } from "../../components/BottomSheet"; import { ProductListBottomSheetContent } from "../../components/BottomSheet/contents/ProductList"; import { DropdownButton } from "../../components/DropdownButton"; @@ -13,18 +12,18 @@ import { Badge } from "../../components/common/Badge"; import { Button } from "../../components/common/Button"; import { EmptyScreenTemplate } from "../../components/common/EmptyScreenTemplate"; import { Typography } from "../../components/common/Typography"; -import { useListProductRecords } from "../../db"; -import { useCreateProductNameAlias } from "../../db/hooks/useCreateProductNameAlias"; import { useListExistingProducts } from "../../db/hooks/useListProducts"; -import { ProcessInvoiceResponse } from "../../db/types"; +import { useListRecipes } from "../../db/hooks/useListRecipes"; +import { + ProcessInvoiceResponse, + ProcessSalesRaportResponse, +} from "../../db/types"; import { IdentifyAliasesScreenNavigationProp } from "../../navigation/types"; -import { createStyles } from "../../theme/useStyles"; import { IDListCardAddProduct } from "../StockTabScreen/IDListCard/IDListCardAddProduct"; +import { ProductRecordsByProductId } from "../StockTabScreen/StockContext/types"; +import { useAliasesStyles } from "./styles"; import { AliasForm } from "./types"; -const BADGE_SIDE_SIZE = 20; -const PADDING = 4; - // unique const aliasSet = new Set([]); const setAlias = @@ -34,16 +33,17 @@ const setAlias = showInfo: ReturnType["showInfo"] ) => (product_id: string, alias: string) => { - const productAliases = getValues(product_id); + const productAliases = getValues(`productAliases.${product_id}`); if (aliasSet.has(alias)) { const entireFormValues = getValues(); for (const product_id in entireFormValues) { - if (product_id === "usedAliases") continue; if ( - entireFormValues[product_id]?.some((usedAlias) => usedAlias === alias) + entireFormValues.productAliases[product_id]?.some( + (usedAlias) => usedAlias === alias + ) ) { - setValue(product_id, [ + setValue(`productAliases.${product_id}`, [ ...(productAliases?.filter((ua) => ua === alias) || []), alias, ]); @@ -53,86 +53,136 @@ const setAlias = } return void this; } - setValue(product_id, [...(productAliases || []), alias]); + setValue(`productAliases.${product_id}`, [ + ...(productAliases || []), + alias, + ]); aliasSet.add(alias); setValue("usedAliases", [...aliasSet]); }; -export const IdentifyAliasesScreenInvoice = ({ - processedInvoice, +const getNewMatched = ( + documentResponse: ProcessInvoiceResponse, + productAliases: AliasForm["productAliases"], + products: { id: number }[] +) => { + if (!documentResponse) return null; + let newMatched: ProductRecordsByProductId = {}; + // const productAliases = getValues(`productAliases`); + + for (const row of documentResponse.unmatchedRows) { + const { price_per_unit, quantity, name } = row; + + const product_id = Object.entries(productAliases).find( + ([_, aliases]) => !!aliases?.find((alias) => alias === name) + )?.[0]; + + if (!product_id) continue; + + const product = products?.find((p) => p.id === parseInt(product_id)); + if (!product || !product.id) continue; + + newMatched[product.id] = { + price_per_unit, + quantity, + record_id: null, + }; + } + return newMatched; + // navigation.goBack(); +}; + +export const IdentifyAliasesComponent = ({ + documentResponse, stockId, stockType, -}: { - processedInvoice: ProcessInvoiceResponse; - stockId: number; - stockType: "delivery" | "inventory"; -}) => { +}: + | { + documentResponse: ProcessInvoiceResponse; + stockId: number; + stockType: "delivery"; + } + | { + documentResponse: ProcessSalesRaportResponse; + stockId: number; + stockType: "inventory"; + }) => { const navigation = useNavigation(); + // const navigation = useNavigation(); const { isConnected } = useNetInfo(); - const styles = useStyles(); + const styles = useAliasesStyles(); const { openBottomSheet, closeBottomSheet } = useBottomSheet(); const { showInfo } = useSnackbar(); + // const { + // mutate, + // isSuccess, + // data: resolvedAliases, + // } = useCreateProductNameAlias(); + + const unmatchedRows = + stockType === "delivery" + ? documentResponse?.unmatchedRows + : documentResponse?.unmatchedAliases.map((a) => ({ name: a })); + + // const { data: productRecords } = useListProductRecords(stockId); const { data: products } = useListExistingProducts(); - const { - mutate, - isSuccess, - data: resolvedAliases, - } = useCreateProductNameAlias(); - const unmatchedRows = processedInvoice?.unmatchedRows; + const { data: recipes } = useListRecipes(); - const { data: productRecords } = useListProductRecords(stockId); + // const [newMatched, setNewMatched] = useState< typeof documentResponse.matchedProductRecords>({}); const { setValue, handleSubmit, watch, getValues } = useForm({ - defaultValues: async () => - !!products + defaultValues: async () => ({ + productAliases: !!products ? products.reduce( (acc, { id: product_id }) => ({ ...acc, [String(product_id)]: null, }), - { usedAliases: [] } as AliasForm + {} + ) + : {}, + recipeAliases: !!recipes + ? recipes.reduce( + (acc, { id: recipe_id }) => ({ + ...acc, + [String(recipe_id)]: null, + }), + {} ) - : { usedAliases: [] }, + : {}, + usedAliases: [], + }), }); const usedAliases = watch("usedAliases"); - useEffect(() => { - if (isSuccess) { - if (processedInvoice) { - let newMatched: typeof processedInvoice.matchedProductRecords = {}; - - for (const row of processedInvoice.unmatchedRows) { - const { price_per_unit, quantity, name } = row; - - const alias = resolvedAliases?.find((alias) => alias.alias === name); - if (!alias || !alias.product_id) continue; - const { product_id } = alias; - - const record = productRecords?.find( - (r) => r.product_id === product_id - ); - if (!record || !record.id) continue; - - newMatched[record.id] = { price_per_unit, quantity, product_id }; - } - - console.log({ newMatched, resolvedAliases }); - // dispatch(documentScannerAction.SET_NEW_MATCHED({ newMatched })); - } - // dispatch(documentScannerAction.RESET_PROCESSED_INVOICE()); - navigation.goBack(); - } - }, [isSuccess]); const handleSavePress = () => { handleSubmit( (data) => { - // New alisases are inserted into the db here - mutate(data); - // dispatch(documentScannerAction.PHOTO_RESET_DATA()); - // dispatch(documentScannerAction.RESET_PROCESSED_INVOICE()); - // dispatch(documentScannerAction.PHOTO_RETAKE()); + // WIP + if (stockType === "delivery" && products && documentResponse) { + const newMatchedProducts = getNewMatched( + documentResponse, + data.productAliases, + products + ); + + const merged: ProductRecordsByProductId = { + ...documentResponse.matchedProductsNotInInventory, + ...documentResponse.matchedProductRecords, + // order is important, newMatchedProducts should be last, because it is the result of the user selection + // or is it? + ...newMatchedProducts, + }; + + // WIP "necessery hack"? idk how navigation works + navigation.navigate("StockTabScreen" as any, { + id: stockId, + stockType, + recordsFromInvoice: merged, + }); + } }, (_errors) => { // TODO show a snackbar? handle error better @@ -140,16 +190,6 @@ export const IdentifyAliasesScreenInvoice = ({ } )(); }; - const handleGoBackPress = () => { - // dispatch(documentScannerAction.PHOTO_RESET_DATA()); - // dispatch(documentScannerAction.RESET_PROCESSED_INVOICE()); - // dispatch(documentScannerAction.PHOTO_RETAKE()); - navigation.replace("DocumentScannerModal", { - isScanningSalesRaport: false, - stockId, - stockType, - }); - }; if (isEmpty(unmatchedRows) || !unmatchedRows) { // error @@ -163,9 +203,6 @@ export const IdentifyAliasesScreenInvoice = ({ type="primary" fullWidth onPress={() => { - // dispatch(documentScannerAction.PHOTO_RESET_DATA()); - // dispatch(documentScannerAction.RESET_PROCESSED_SALES_RAPORT()); - // dispatch(documentScannerAction.RESET_PROCESSED_INVOICE()); navigation.goBack(); }} containerStyle={{ marginTop: 16 }} @@ -183,7 +220,13 @@ export const IdentifyAliasesScreenInvoice = ({ size="l" type="primary" fullWidth - onPress={handleGoBackPress} + onPress={() => + navigation.replace("DocumentScannerModal", { + isScanningSalesRaport: false, + stockId, + stockType, + }) + } > Wróć do skanera @@ -235,35 +278,3 @@ export const IdentifyAliasesScreenInvoice = ({ ); }; - -const useStyles = createStyles((theme) => - StyleSheet.create({ - bg: { - backgroundColor: theme.colors.darkBlue, - }, - container: { - flex: 1, - justifyContent: "center", - backgroundColor: theme.colors.darkBlue, - height: "100%", - paddingHorizontal: theme.spacing * 2, - }, - dropdown: { marginTop: -theme.spacing * 3 }, - saveButtonContainer: { - marginTop: theme.spacing * 2, - flexShrink: 1, - }, - checkmarkBadgePosition: { - position: "relative", - top: BADGE_SIDE_SIZE - 10, - left: BADGE_SIDE_SIZE + PADDING + 5, - zIndex: 10, - }, - indexBadgePosition: { - position: "relative", - top: -10, - left: 5, - zIndex: 10, - }, - }) -); diff --git a/native/screens/IdentifyAliasesScreen/SalesRaport.tsx b/native/screens/IdentifyAliasesScreen/SalesRaport.tsx deleted file mode 100644 index f376c814..00000000 --- a/native/screens/IdentifyAliasesScreen/SalesRaport.tsx +++ /dev/null @@ -1,239 +0,0 @@ -import { useNetInfo } from "@react-native-community/netinfo"; -import { useNavigation } from "@react-navigation/native"; -import isEmpty from "lodash/isEmpty"; -import { useEffect } from "react"; -import { UseFormGetValues, UseFormSetValue, useForm } from "react-hook-form"; -import { StyleSheet, View } from "react-native"; -import { useBottomSheet } from "../../components/BottomSheet"; -import { RecipesListBottomSheetContent } from "../../components/BottomSheet/contents/RecipeList"; -import { DropdownButton } from "../../components/DropdownButton"; -import { IndexBadge } from "../../components/IndexBadge"; -import { useSnackbar } from "../../components/Snackbar/hooks"; -import { Badge } from "../../components/common/Badge"; -import { Button } from "../../components/common/Button"; -import { EmptyScreenTemplate } from "../../components/common/EmptyScreenTemplate"; -import { Typography } from "../../components/common/Typography"; -import { useCreateRecipeNameAlias } from "../../db/hooks/useCreateRecipeNameAlias"; -import { useListRecipes } from "../../db/hooks/useListRecipes"; -import { ProcessSalesRaportResponse } from "../../db/types"; -import { IdentifyAliasesScreenNavigationProp } from "../../navigation/types"; -import { createStyles } from "../../theme/useStyles"; -import { AliasForm } from "./types"; - -const BADGE_SIDE_SIZE = 20; -const PADDING = 4; - -// unique -const aliasSet = new Set([]); -const setAlias = - ( - setValue: UseFormSetValue, - getValues: UseFormGetValues, - showInfo: ReturnType["showInfo"] - ) => - (recipe_id: string, alias: string) => { - const recipeAliases = getValues(recipe_id); - - if (aliasSet.has(alias)) { - const entireFormValues = getValues(); - for (const recipe_id in entireFormValues) { - if (recipe_id === "usedAliases") continue; - if ( - entireFormValues[recipe_id]?.some((usedAlias) => usedAlias === alias) - ) { - setValue(recipe_id, [ - ...(recipeAliases?.filter((ua) => ua === alias) || []), - alias, - ]); - showInfo("Alias został już ustalony dla innego produktu, nadpisano."); - return void this; - } - } - return void this; - } - setValue(recipe_id, [...(recipeAliases || []), alias]); - aliasSet.add(alias); - setValue("usedAliases", [...aliasSet]); - }; - -export const IdentifyAliasesScreenSalesRaport = ({ - processedSalesReport, - stockId, - stockType, -}: { - processedSalesReport: ProcessSalesRaportResponse; - stockId: number; - stockType: "delivery" | "inventory"; -}) => { - const navigation = useNavigation(); - const { isConnected } = useNetInfo(); - const styles = useStyles(); - const { openBottomSheet, closeBottomSheet } = useBottomSheet(); - const { showInfo } = useSnackbar(); - - // const dispatch = useAppDispatch(); - const aliases = processedSalesReport?.unmatchedAliases; - - const { data: recipes } = useListRecipes(stockId); - const { mutate, isSuccess } = useCreateRecipeNameAlias(); - - const { setValue, handleSubmit, watch, getValues } = useForm({ - defaultValues: async () => - !!recipes - ? recipes.reduce( - (acc, { id: recipe_id }) => ({ - ...acc, - [String(recipe_id)]: null, - }), - { usedAliases: [] } as AliasForm - ) - : { usedAliases: [] }, - }); - - const usedAliases = watch("usedAliases"); - useEffect(() => { - if (isSuccess) { - navigation.goBack(); - } - }, [isSuccess]); - - const handleSavePress = () => { - handleSubmit( - (data) => { - mutate(data); - // dispatch(documentScannerAction.PHOTO_RESET_DATA()); - // dispatch(documentScannerAction.RESET_PROCESSED_SALES_RAPORT()); - // dispatch(documentScannerAction.PHOTO_RETAKE()); - }, - (_errors) => { - // TODO show a snackbar? handle error better - console.log("error", _errors); - } - )(); - }; - const handleGoBackPress = () => { - // dispatch(documentScannerAction.PHOTO_RESET_DATA()); - // dispatch(documentScannerAction.RESET_PROCESSED_SALES_RAPORT()); - // dispatch(documentScannerAction.PHOTO_RETAKE()); - navigation.replace("DocumentScannerModal", { - isScanningSalesRaport: true, - stockId, - stockType, - }); - }; - - if (isEmpty(aliases) || !aliases) { - // error - return ( - - - Błąd - brak aliasów do wyświetlenia. - - - - ); - } - return ( - <> - - - - - {aliases.map((alias, i) => ( - - - - - openBottomSheet(() => ( - - )) - } - > - 50 ? "xs" : "s"} - > - {alias} - - - - ))} - - ); -}; - -const useStyles = createStyles((theme) => - StyleSheet.create({ - bg: { - backgroundColor: theme.colors.darkBlue, - }, - container: { - flex: 1, - justifyContent: "center", - backgroundColor: theme.colors.darkBlue, - height: "100%", - paddingHorizontal: theme.spacing * 2, - }, - dropdown: { marginTop: -theme.spacing * 3 }, - saveButtonContainer: { - marginTop: theme.spacing * 2, - flexShrink: 1, - }, - checkmarkBadgePosition: { - position: "relative", - top: BADGE_SIDE_SIZE - 10, - left: BADGE_SIDE_SIZE + PADDING + 5, - zIndex: 10, - }, - indexBadgePosition: { - position: "relative", - top: -10, - left: 5, - zIndex: 10, - }, - }) -); diff --git a/native/screens/IdentifyAliasesScreen/index.tsx b/native/screens/IdentifyAliasesScreen/index.tsx index b752fae0..a2f98b26 100644 --- a/native/screens/IdentifyAliasesScreen/index.tsx +++ b/native/screens/IdentifyAliasesScreen/index.tsx @@ -2,19 +2,13 @@ import { StyleSheet } from "react-native"; import SafeLayout from "../../components/common/SafeLayout"; import { IdentifyAliasesScreenProps } from "../../navigation/types"; import { createStyles } from "../../theme/useStyles"; -import { IdentifyAliasesScreenInvoice } from "./Invoice"; -import { IdentifyAliasesScreenSalesRaport } from "./SalesRaport"; +import { IdentifyAliasesComponent } from "./Aliases"; export const IdentifyAliasesScreen = ({ route, }: IdentifyAliasesScreenProps) => { - const { - isScanningSalesRaport, - processedInvoice, - processedSalesReport, - stockId, - stockType, - } = route.params; + const { processedInvoice, processedSalesReport, stockId, stockType } = + route.params; const styles = useStyles(); return ( @@ -24,17 +18,17 @@ export const IdentifyAliasesScreen = ({ contentContainerStyle={styles.bg} scrollable > - {isScanningSalesRaport ? ( - ) : ( - )} diff --git a/native/screens/IdentifyAliasesScreen/styles.tsx b/native/screens/IdentifyAliasesScreen/styles.tsx new file mode 100644 index 00000000..2c5f8cb0 --- /dev/null +++ b/native/screens/IdentifyAliasesScreen/styles.tsx @@ -0,0 +1,37 @@ +import { StyleSheet } from "react-native"; +import { createStyles } from "../../theme/useStyles"; + +const BADGE_SIDE_SIZE = 20; +const PADDING = 4; + +export const useAliasesStyles = createStyles((theme) => + StyleSheet.create({ + bg: { + backgroundColor: theme.colors.darkBlue, + }, + container: { + flex: 1, + justifyContent: "center", + backgroundColor: theme.colors.darkBlue, + height: "100%", + paddingHorizontal: theme.spacing * 2, + }, + dropdown: { marginTop: -theme.spacing * 3 }, + saveButtonContainer: { + marginTop: theme.spacing * 2, + flexShrink: 1, + }, + checkmarkBadgePosition: { + position: "relative", + top: BADGE_SIDE_SIZE - 10, + left: BADGE_SIDE_SIZE + PADDING + 5, + zIndex: 10, + }, + indexBadgePosition: { + position: "relative", + top: -10, + left: 5, + zIndex: 10, + }, + }) +); diff --git a/native/screens/IdentifyAliasesScreen/types.ts b/native/screens/IdentifyAliasesScreen/types.ts index 5d84cd18..14426d0f 100644 --- a/native/screens/IdentifyAliasesScreen/types.ts +++ b/native/screens/IdentifyAliasesScreen/types.ts @@ -1,4 +1,13 @@ export type AliasForm = { - // stringified product_id - [product_id: string]: string[] | null; //alias -} & { usedAliases: string[] }; + productAliases: { + // key is stringified product_id + // value is a list of alias strings + [product_id: string]: string[] | null; //alias + }; + recipeAliases: { + // key is stringified recipe_id + // value is a list of alias strings + [recipe_id: string]: string[] | null; //alias + }; + usedAliases: string[]; +}; diff --git a/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx b/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx index 320a7040..988cf64c 100644 --- a/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx +++ b/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx @@ -1,4 +1,10 @@ -import React, { ReactNode, createContext, useContext } from "react"; +import React, { + ReactNode, + createContext, + useContext, + useMemo, + useState, +} from "react"; import { Updater, useImmer } from "use-immer"; import { useListProductRecords } from "../../../db/hooks/useListProductRecords"; import { @@ -16,6 +22,10 @@ type StockContextType = StockData & { stockType: "inventory" | "delivery"; updateProductRecords: Updater; updateRecipeRecords: Updater; + recordsFromInvoice: ProductRecordsByProductId; + setRecordsFromInvoice: React.Dispatch< + React.SetStateAction + >; }; const StockContext = createContext({ @@ -25,6 +35,8 @@ const StockContext = createContext({ updateProductRecords: () => null, recipeRecords: initialRecipeRecords, updateRecipeRecords: () => null, + recordsFromInvoice: initialProductRecords, + setRecordsFromInvoice: () => null, }); export const StockContextProvider = ({ @@ -34,24 +46,28 @@ export const StockContextProvider = ({ children: ReactNode; stockId: number; }) => { + // WIP const stockType = "delivery"; const { data: productRecordsRaw } = useListProductRecords(stockId); + const defaultProductRecords = productRecordsRaw + ? Object.fromEntries( + productRecordsRaw.map((record) => [ + record.product_id, + { + record_id: record.id, + quantity: record.quantity, + price_per_unit: record.price_per_unit, + }, + ]) + ) + : {}; + const [productRecords, updateProductRecords] = - useImmer( - productRecordsRaw - ? Object.fromEntries( - productRecordsRaw.map((record) => [ - record.product_id, - { - record_id: record.id, - quantity: record.quantity, - price_per_unit: record.price_per_unit, - }, - ]) - ) - : initialProductRecords - ); + useImmer(defaultProductRecords); + const [recordsFromInvoice, setRecordsFromInvoice] = + useState(defaultProductRecords); + const [recipeRecords, updateRecipeRecords] = useImmer(initialRecipeRecords); return ( @@ -63,6 +79,8 @@ export const StockContextProvider = ({ updateProductRecords, recipeRecords, updateRecipeRecords, + recordsFromInvoice, + setRecordsFromInvoice, }} > {children} @@ -70,6 +88,36 @@ export const StockContextProvider = ({ ); }; +const mergeRawAndInvoiceProductRecords = ( + raw: ProductRecordsByProductId, + invoice: ProductRecordsByProductId +) => { + const ret: ProductRecordsByProductId = JSON.parse(JSON.stringify(raw)); + + for (const product_id in invoice) { + const { quantity, price_per_unit } = invoice[product_id]; + if (product_id in ret) { + ret[product_id].quantity = ret[product_id].quantity + quantity; + ret[product_id].price_per_unit = price_per_unit; + } else { + ret[product_id] = { quantity, price_per_unit }; + } + } + + return ret; +}; + export const useStockContext = () => { - return useContext(StockContext); + const context = useContext(StockContext); + + const productRecords = useMemo( + () => + mergeRawAndInvoiceProductRecords( + context.productRecords, + context.recordsFromInvoice + ), + [context.productRecords, context.recordsFromInvoice] + ); + + return { ...context, productRecords }; }; diff --git a/native/screens/StockTabScreen/StockContext/types.ts b/native/screens/StockTabScreen/StockContext/types.ts index bb1ab531..ab79dc15 100644 --- a/native/screens/StockTabScreen/StockContext/types.ts +++ b/native/screens/StockTabScreen/StockContext/types.ts @@ -1,11 +1,9 @@ -type ProductRecordByProductId = { - record_id: number | null; - quantity: number; - price_per_unit: number | null; -}; - export type ProductRecordsByProductId = { - [product_id: string]: ProductRecordByProductId; + [product_id: string]: { + record_id?: number | null; + quantity: number; + price_per_unit: number | null; + }; }; type RecipeRecordByRecipeId = { diff --git a/native/screens/StockTabScreen/StockTabScreen.tsx b/native/screens/StockTabScreen/StockTabScreen.tsx index 2f4d5478..92bc9304 100644 --- a/native/screens/StockTabScreen/StockTabScreen.tsx +++ b/native/screens/StockTabScreen/StockTabScreen.tsx @@ -9,7 +9,7 @@ import { Skeleton } from "../../components/Skeleton"; import { useSnackbar } from "../../components/Snackbar/hooks"; import { Button } from "../../components/common/Button"; import { useGetInventoryName } from "../../db/hooks/useGetInventoryName"; -import { useListRecipes } from "../../db/hooks/useListRecipes"; +import { useListRecipesWithRecords } from "../../db/hooks/useListRecipes"; import { useUpdateRecords } from "../../db/hooks/useUpdateRecords"; import { StockTabScreenProps } from "../../navigation/types"; import { IDListCard } from "./IDListCard/IDListCard"; @@ -29,14 +29,21 @@ export default function StockTabScreen({ const { isConnected } = useNetInfo(); const inventoryId = route.params?.id; const stockType = route.params?.stockType; - // const stockType = route.params?.stockType; + + const recordsFromInvoice = route.params.recordsFromInvoice; + // console.log({ recordsFromInvoice }); // const { showError, showInfo, showSuccess } = useSnackbar(); const { showError, showSuccess } = useSnackbar(); const { data: inventoryName } = useGetInventoryName(+inventoryId); - const { productRecords } = useStockContext(); + useEffect(() => { + if (!!recordsFromInvoice) setRecordsFromInvoice(recordsFromInvoice); + }, [recordsFromInvoice]); + + const { productRecords, setRecordsFromInvoice } = useStockContext(); + // console.log({ productRecords }); const { productsIsSuccess, @@ -45,8 +52,13 @@ export default function StockTabScreen({ uncategorizedProducts, } = useProductRecords(); + // console.log({ + // x: categorizedProducts.map((c) => c.products), + // uncategorizedProducts, + // }); + const { data: recipeList, isSuccess: recipesIsSuccess } = - useListRecipes(inventoryId); + useListRecipesWithRecords(inventoryId); const { mutate, @@ -142,6 +154,11 @@ export default function StockTabScreen({ + {/* */} {recipeList?.map((recipe) => ( { const { productRecords } = useStockContext(); + // console.log({ productRecords }); const productsResponse = useListExistingProducts(); const { data: products, isSuccess: productsIsSuccess } = productsResponse; diff --git a/supabase/functions/process-invoice/index.ts b/supabase/functions/process-invoice/index.ts index a463691f..dcede429 100644 --- a/supabase/functions/process-invoice/index.ts +++ b/supabase/functions/process-invoice/index.ts @@ -305,17 +305,17 @@ Deno.serve(async (req) => { } const matchedProductRecords: { - [id: number]: { - product_id: number; - price_per_unit: number; - quantity: number; - } + [product_id: number]: { + record_id: number; + price_per_unit: number; + quantity: number; + }; } = {}; const matchedProductsNotInInventory: { - [id: number]: { - price_per_unit: number; - quantity: number; - } + [product_id: number]: { + price_per_unit: number; + quantity: number; + }; } = {}; const unmatchedRows: { name: string; @@ -349,18 +349,18 @@ Deno.serve(async (req) => { if (!alias.product_id) continue; if (!productRecord) { - matchedProductsNotInInventory[alias.product_id] = ({ + matchedProductsNotInInventory[alias.product_id] = { price_per_unit, quantity, - }); + }; continue; } - matchedProductRecords[productRecord.id] = ({ - product_id: alias.product_id, + matchedProductRecords[alias.product_id] = { + record_id: productRecord.id, price_per_unit, quantity, - }); + }; } return new Response( From 297113c9e2856f32c0cd561e871f339a8571cd21 Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Thu, 1 Aug 2024 15:11:02 +0200 Subject: [PATCH 15/23] wip: remove immer; write aliases to db --- native/db/hooks/useRecordPanel.tsx | 25 ++++------ native/navigation/types.ts | 2 + native/package-lock.json | 13 +---- native/package.json | 4 +- .../DocumentScanner.tsx | 20 ++++---- .../DocumentScannerContext.tsx | 31 ++---------- .../DocumentScannerModalScreen.tsx | 11 ++--- .../PhotoPreview.tsx | 11 +++-- .../useProcessDocument.ts | 14 +++--- .../screens/IdentifyAliasesScreen/Aliases.tsx | 1 + native/screens/StockTabScreen/RecipeCard.tsx | 24 ++-------- .../StockContext/StockContextProvider.tsx | 47 ++++++++++++++----- .../StockTabScreen/StockContext/types.ts | 16 ++++--- .../screens/StockTabScreen/StockTabScreen.tsx | 17 +++---- 14 files changed, 105 insertions(+), 131 deletions(-) diff --git a/native/db/hooks/useRecordPanel.tsx b/native/db/hooks/useRecordPanel.tsx index 3eb979ca..4763f877 100644 --- a/native/db/hooks/useRecordPanel.tsx +++ b/native/db/hooks/useRecordPanel.tsx @@ -15,7 +15,8 @@ export const useRecordPanel = ({ inventoryId: number; productId: number; }) => { - const { productRecords, updateProductRecords } = useStockContext(); + const { productRecords, setProductRecords, setProductRecord } = + useStockContext(); const { quantity, price_per_unit } = productRecords[productId]; const productResult = useGetProduct(productId); @@ -25,24 +26,20 @@ export const useRecordPanel = ({ (quantity: number) => { if (quantity < 0) return; const roundedQuantity = roundFloat(quantity); - updateProductRecords((d) => { - d[productId].quantity = roundedQuantity; - }); + setProductRecord(productId, { quantity: roundedQuantity }); return; }, - [updateProductRecords, productId, quantity] + [setProductRecords, productId, quantity] ); const setPrice = useCallback( (price: number) => { if (price < 0) return; const roundedPrice = roundFloat(price); - updateProductRecords((d) => { - d[productId].price_per_unit = roundedPrice; - }); + setProductRecord(productId, { price_per_unit: roundedPrice }); return; }, - [updateProductRecords, productId, price_per_unit] + [setProductRecords, productId, price_per_unit] ); const stepperFunction = useCallback( @@ -50,20 +47,16 @@ export const useRecordPanel = ({ ({ click: () => { if (quantity + step < 0) { - updateProductRecords((d) => { - d[productId].quantity = 0; - }); + setProductRecord(productId, { quantity: 0 }); return; } const roundedQuantityStep = roundFloat(quantity + step); - updateProductRecords((d) => { - d[productId].quantity = roundedQuantityStep; - }); + setProductRecord(productId, { quantity: roundedQuantityStep }); return; }, step, } as const), - [quantity, productId, updateProductRecords] + [quantity, productId, setProductRecords] ); if (!isSuccess || !product || !product.steps) diff --git a/native/navigation/types.ts b/native/navigation/types.ts index ef395c7d..b045d879 100644 --- a/native/navigation/types.ts +++ b/native/navigation/types.ts @@ -8,6 +8,7 @@ import { ProcessInvoiceResponse, ProcessSalesRaportResponse, } from "../db/types"; +import { AliasForm } from "../screens/IdentifyAliasesScreen/types"; import { ProductRecordsByProductId } from "../screens/StockTabScreen/StockContext/types"; /** @@ -84,6 +85,7 @@ export type StockStackParamList = { id: number; stockType: "delivery" | "inventory"; recordsFromInvoice?: ProductRecordsByProductId; + aliasForm?: AliasForm; }; RecordScreen: { id: number; diff --git a/native/package-lock.json b/native/package-lock.json index e0491626..e1668f09 100644 --- a/native/package-lock.json +++ b/native/package-lock.json @@ -33,7 +33,6 @@ "expo-system-ui": "~3.0.4", "expo-updates": "~0.25.14", "expo-web-browser": "~13.0.3", - "immer": "^10.1.1", "lodash": "^4.17.21", "prettier-plugin-organize-imports": "^3.2.2", "react": "18.2.0", @@ -45,8 +44,7 @@ "react-native-safe-area-context": "4.10.1", "react-native-screens": "3.31.1", "react-native-url-polyfill": "^1.3.0", - "react-redux": "9.1.1", - "use-immer": "^0.10.0" + "react-redux": "9.1.1" }, "devDependencies": { "@babel/core": "^7.24.0", @@ -21133,15 +21131,6 @@ "requires-port": "^1.0.0" } }, - "node_modules/use-immer": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/use-immer/-/use-immer-0.10.0.tgz", - "integrity": "sha512-/eVwNR4TG9Tm/dd+aHYLLaI0FLfYKlkTqKMkn78Ah/EYVzWd/zJIgpkdoFEKbhQJOGo8XN7/mWrTx0exp1c+Ug==", - "peerDependencies": { - "immer": ">=8.0.0", - "react": "^16.8.0 || ^17.0.1 || ^18.0.0" - } - }, "node_modules/use-latest-callback": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.1.5.tgz", diff --git a/native/package.json b/native/package.json index f4248580..7ff3b269 100644 --- a/native/package.json +++ b/native/package.json @@ -46,7 +46,6 @@ "expo-system-ui": "~3.0.4", "expo-updates": "~0.25.14", "expo-web-browser": "~13.0.3", - "immer": "^10.1.1", "lodash": "^4.17.21", "prettier-plugin-organize-imports": "^3.2.2", "react": "18.2.0", @@ -58,8 +57,7 @@ "react-native-safe-area-context": "4.10.1", "react-native-screens": "3.31.1", "react-native-url-polyfill": "^1.3.0", - "react-redux": "9.1.1", - "use-immer": "^0.10.0" + "react-redux": "9.1.1" }, "devDependencies": { "@babel/core": "^7.24.0", diff --git a/native/screens/DocumentScannerModalScreen/DocumentScanner.tsx b/native/screens/DocumentScannerModalScreen/DocumentScanner.tsx index 2adbba0e..727f579b 100644 --- a/native/screens/DocumentScannerModalScreen/DocumentScanner.tsx +++ b/native/screens/DocumentScannerModalScreen/DocumentScanner.tsx @@ -15,27 +15,29 @@ export const DocumentScanner = ({ }) => { const cameraRef = useRef(null); - const { documentScannerState, updateDocumentScannerState } = + const { documentScannerState, setDocumentScannerState } = useDocumentScannerContext(); const { isPreviewShown, isTakingPhoto } = documentScannerState; const takePicture = async () => { if (!cameraRef.current || isTakingPhoto) return; - updateDocumentScannerState((d) => { - d.isTakingPhoto = true; - }); + setDocumentScannerState((s) => ({ + ...s, + isTakingPhoto: true, + })); const photo = await cameraRef.current.takePictureAsync({ exif: false, base64: true, quality: 0.6, imageType: "jpg", }); - updateDocumentScannerState((d) => { - d.photo = photo || null; - d.isPreviewShown = !d.isPreviewShown; - d.isTakingPhoto = false; - }); + setDocumentScannerState((s) => ({ + ...s, + photo: photo || null, + isPreviewShown: !s.isPreviewShown, + isTakingPhoto: false, + })); // dispatch(documentScannerAction.PHOTO_TAKE({ photo })); // dispatch(documentScannerAction.SWITCH_PREVIEW()); // dispatch(documentScannerAction.PHOTO_END()); diff --git a/native/screens/DocumentScannerModalScreen/DocumentScannerContext.tsx b/native/screens/DocumentScannerModalScreen/DocumentScannerContext.tsx index 43397935..cb4e73a9 100644 --- a/native/screens/DocumentScannerModalScreen/DocumentScannerContext.tsx +++ b/native/screens/DocumentScannerModalScreen/DocumentScannerContext.tsx @@ -1,6 +1,5 @@ import { CameraCapturedPicture } from "expo-camera"; import { createContext, useContext } from "react"; -import { Updater } from "use-immer"; import { ProcessInvoiceResponse, ProcessSalesRaportResponse, @@ -24,42 +23,20 @@ export const initialDocumentScannerState: DocumentScannerState = { type DocumentScannerContextType = { documentScannerState: DocumentScannerState; - updateDocumentScannerState: Updater; + setDocumentScannerState: React.Dispatch< + React.SetStateAction + >; resetDocumentScanner: () => void; }; export const DocumentScannerContext = createContext( { documentScannerState: initialDocumentScannerState, - updateDocumentScannerState: () => null, + setDocumentScannerState: () => null, resetDocumentScanner: () => null, } ); -// export const DocumentScannerContextProvider = ({ -// children, -// }: { -// children: ReactNode; -// }) => { -// const [documentScannerState, updateDocumentScannerState] = -// useImmer(initialDocumentScannerState); - -// const resetDocumentScanner = () => -// updateDocumentScannerState(initialDocumentScannerState); - -// return ( -// -// {children} -// -// ); -// }; - export const useDocumentScannerContext = () => { return useContext(DocumentScannerContext); }; diff --git a/native/screens/DocumentScannerModalScreen/DocumentScannerModalScreen.tsx b/native/screens/DocumentScannerModalScreen/DocumentScannerModalScreen.tsx index b7401d46..ddd7000d 100644 --- a/native/screens/DocumentScannerModalScreen/DocumentScannerModalScreen.tsx +++ b/native/screens/DocumentScannerModalScreen/DocumentScannerModalScreen.tsx @@ -1,5 +1,5 @@ import { useCameraPermissions } from "expo-camera"; -import React, { useEffect } from "react"; +import React, { useEffect, useState } from "react"; import { Linking, StyleSheet } from "react-native"; import { Button } from "../../components/common/Button"; @@ -8,7 +8,6 @@ import { Typography } from "../../components/common/Typography"; import { NativeStackScreenProps } from "@react-navigation/native-stack"; import isEmpty from "lodash/isEmpty"; -import { useImmer } from "use-immer"; import { EmptyScreenTemplate } from "../../components/common/EmptyScreenTemplate"; import { LoadingSpinner } from "../../components/common/LoadingSpinner"; import SafeLayout from "../../components/common/SafeLayout"; @@ -30,11 +29,11 @@ export const DocumentScannerModalScreen = ({ navigation, route, }: DocumentScannerModalScreen) => { - const [documentScannerState, updateDocumentScannerState] = - useImmer(initialDocumentScannerState); + const [documentScannerState, setDocumentScannerState] = + useState(initialDocumentScannerState); const resetDocumentScanner = () => - updateDocumentScannerState(initialDocumentScannerState); + setDocumentScannerState(initialDocumentScannerState); const styles = useStyles(); const { isScanningSalesRaport, stockId, stockType } = route.params; @@ -152,7 +151,7 @@ export const DocumentScannerModalScreen = ({ diff --git a/native/screens/DocumentScannerModalScreen/PhotoPreview.tsx b/native/screens/DocumentScannerModalScreen/PhotoPreview.tsx index ae9ba23b..98e949e5 100644 --- a/native/screens/DocumentScannerModalScreen/PhotoPreview.tsx +++ b/native/screens/DocumentScannerModalScreen/PhotoPreview.tsx @@ -14,7 +14,7 @@ export const PhotoPreview = ({ }) => { const { isConnected } = useNetInfo(); - const { documentScannerState, updateDocumentScannerState } = + const { documentScannerState, setDocumentScannerState } = useDocumentScannerContext(); const photo = documentScannerState.photo; @@ -49,10 +49,11 @@ export const PhotoPreview = ({ isLoading ? () => null : () => - updateDocumentScannerState((d) => { - d.photo = null; - d.isPreviewShown = false; - }) + setDocumentScannerState((s) => ({ + ...s, + photo: null, + isPreviewShown: false, + })) // () => dispatch(documentScannerAction.PHOTO_RETAKE()) } size="s" diff --git a/native/screens/DocumentScannerModalScreen/useProcessDocument.ts b/native/screens/DocumentScannerModalScreen/useProcessDocument.ts index e472a2cc..5a1a3822 100644 --- a/native/screens/DocumentScannerModalScreen/useProcessDocument.ts +++ b/native/screens/DocumentScannerModalScreen/useProcessDocument.ts @@ -11,7 +11,7 @@ export const useProcessDocument = ( ) => { const { showError } = useSnackbar(); - const { updateDocumentScannerState } = useDocumentScannerContext(); + const { setDocumentScannerState } = useDocumentScannerContext(); return useMutation( async ({ @@ -45,13 +45,11 @@ export const useProcessDocument = ( return null; } - updateDocumentScannerState((d) => { - if (stockType === "delivery") { - d.processedInvoice = data; - } else { - d.processedSalesReport = data; - } - }); + setDocumentScannerState((s) => + stockType === "delivery" + ? { ...s, processedInvoice: data } + : { ...s, processedSalesReport: data } + ); return data as ProcessSalesRaportResponse; } diff --git a/native/screens/IdentifyAliasesScreen/Aliases.tsx b/native/screens/IdentifyAliasesScreen/Aliases.tsx index df0a2eb4..129a12aa 100644 --- a/native/screens/IdentifyAliasesScreen/Aliases.tsx +++ b/native/screens/IdentifyAliasesScreen/Aliases.tsx @@ -181,6 +181,7 @@ export const IdentifyAliasesComponent = ({ id: stockId, stockType, recordsFromInvoice: merged, + aliasForm: getValues(), }); } }, diff --git a/native/screens/StockTabScreen/RecipeCard.tsx b/native/screens/StockTabScreen/RecipeCard.tsx index 134d940f..ba8a3585 100644 --- a/native/screens/StockTabScreen/RecipeCard.tsx +++ b/native/screens/StockTabScreen/RecipeCard.tsx @@ -97,12 +97,8 @@ export const RecipeCard = ({ const styles = useStyles(); const { closeBottomSheet, openBottomSheet } = useBottomSheet(); const { showInfo } = useSnackbar(); - const { - recipeRecords, - updateRecipeRecords, - productRecords, - updateProductRecords, - } = useStockContext(); + const { recipeRecords, productRecords, setProductRecord, setRecipeRecord } = + useStockContext(); // WIP // const recordId = recipeRecordId || 0; const recipeRecord = recipeRecords[recipeId]; @@ -125,13 +121,7 @@ export const RecipeCard = ({ const recipeQuantity = recipeRecord?.quantity || 0; const setRecipeQuantity = (v: number) => - updateRecipeRecords((d) => { - if (!d[recipeId]) { - d[recipeId] = { quantity: v }; - } else { - d[recipeId].quantity = v; - } - }); + setRecipeRecord(recipeId, { quantity: v }); // value is an integer, see InputBottomSheetContent props // in need of desparate refactoring hehe @@ -177,9 +167,7 @@ export const RecipeCard = ({ return; } - updateProductRecords((d) => { - d[productId].quantity = newRecordQuantity; - }); + setProductRecord(productId, { quantity: newRecordQuantity }); }); setRecipeQuantity(value); @@ -217,9 +205,7 @@ export const RecipeCard = ({ return; } - updateRecipeRecords((d) => { - d[recipeId].quantity = newRecordQuantity; - }); + setRecipeRecord(recipeId, { quantity: newRecordQuantity }); setRecipeQuantity(value); return; diff --git a/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx b/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx index 988cf64c..fb2fea97 100644 --- a/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx +++ b/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx @@ -5,10 +5,11 @@ import React, { useMemo, useState, } from "react"; -import { Updater, useImmer } from "use-immer"; import { useListProductRecords } from "../../../db/hooks/useListProductRecords"; import { + ProductRecordByProductIdValue, ProductRecordsByProductId, + RecipeRecordByRecipeIdValue, RecipeRecordsByRecipeId, StockData, } from "./types"; @@ -20,8 +21,12 @@ const initialRecipeRecords: RecipeRecordsByRecipeId = {}; type StockContextType = StockData & { stockId: number; stockType: "inventory" | "delivery"; - updateProductRecords: Updater; - updateRecipeRecords: Updater; + setProductRecords: React.Dispatch< + React.SetStateAction + >; + setRecipeRecords: React.Dispatch< + React.SetStateAction + >; recordsFromInvoice: ProductRecordsByProductId; setRecordsFromInvoice: React.Dispatch< React.SetStateAction @@ -32,9 +37,9 @@ const StockContext = createContext({ stockType: "delivery", stockId: initialStockId, productRecords: initialProductRecords, - updateProductRecords: () => null, + setProductRecords: () => null, recipeRecords: initialRecipeRecords, - updateRecipeRecords: () => null, + setRecipeRecords: () => null, recordsFromInvoice: initialProductRecords, setRecordsFromInvoice: () => null, }); @@ -63,12 +68,12 @@ export const StockContextProvider = ({ ) : {}; - const [productRecords, updateProductRecords] = - useImmer(defaultProductRecords); + const [productRecords, setProductRecords] = + useState(defaultProductRecords); const [recordsFromInvoice, setRecordsFromInvoice] = useState(defaultProductRecords); - const [recipeRecords, updateRecipeRecords] = useImmer(initialRecipeRecords); + const [recipeRecords, setRecipeRecords] = useState(initialRecipeRecords); return ( { const context = useContext(StockContext); + const setProductRecord = ( + productId: number, + value: Partial + ) => { + context.setProductRecords((r) => ({ + ...r, + [productId]: { ...r[productId], ...value }, + })); + }; + + const setRecipeRecord = ( + recipeId: number, + value: Partial + ) => { + context.setRecipeRecords((r) => ({ + ...r, + [recipeId]: { ...r[recipeId], ...value }, + })); + }; + const productRecords = useMemo( () => mergeRawAndInvoiceProductRecords( @@ -119,5 +144,5 @@ export const useStockContext = () => { [context.productRecords, context.recordsFromInvoice] ); - return { ...context, productRecords }; + return { ...context, productRecords, setProductRecord, setRecipeRecord }; }; diff --git a/native/screens/StockTabScreen/StockContext/types.ts b/native/screens/StockTabScreen/StockContext/types.ts index ab79dc15..8bee753b 100644 --- a/native/screens/StockTabScreen/StockContext/types.ts +++ b/native/screens/StockTabScreen/StockContext/types.ts @@ -1,18 +1,20 @@ +export type ProductRecordByProductIdValue = { + record_id?: number | null; + quantity: number; + price_per_unit: number | null; +}; + export type ProductRecordsByProductId = { - [product_id: string]: { - record_id?: number | null; - quantity: number; - price_per_unit: number | null; - }; + [product_id: string]: ProductRecordByProductIdValue; }; -type RecipeRecordByRecipeId = { +export type RecipeRecordByRecipeIdValue = { // record_id: number | null; quantity: number; }; export type RecipeRecordsByRecipeId = { - [recipe_id: string]: RecipeRecordByRecipeId; + [recipe_id: string]: RecipeRecordByRecipeIdValue; }; export type StockData = { diff --git a/native/screens/StockTabScreen/StockTabScreen.tsx b/native/screens/StockTabScreen/StockTabScreen.tsx index 92bc9304..b206a6dc 100644 --- a/native/screens/StockTabScreen/StockTabScreen.tsx +++ b/native/screens/StockTabScreen/StockTabScreen.tsx @@ -8,6 +8,8 @@ import { DocumentScannerIcon, ScanBarcodeIcon } from "../../components/Icon"; import { Skeleton } from "../../components/Skeleton"; import { useSnackbar } from "../../components/Snackbar/hooks"; import { Button } from "../../components/common/Button"; +import { useCreateProductNameAlias } from "../../db/hooks/useCreateProductNameAlias"; +import { useCreateRecipeNameAlias } from "../../db/hooks/useCreateRecipeNameAlias"; import { useGetInventoryName } from "../../db/hooks/useGetInventoryName"; import { useListRecipesWithRecords } from "../../db/hooks/useListRecipes"; import { useUpdateRecords } from "../../db/hooks/useUpdateRecords"; @@ -30,8 +32,7 @@ export default function StockTabScreen({ const inventoryId = route.params?.id; const stockType = route.params?.stockType; - const recordsFromInvoice = route.params.recordsFromInvoice; - // console.log({ recordsFromInvoice }); + const { recordsFromInvoice, aliasForm } = route.params; // const { showError, showInfo, showSuccess } = useSnackbar(); const { showError, showSuccess } = useSnackbar(); @@ -43,7 +44,6 @@ export default function StockTabScreen({ }, [recordsFromInvoice]); const { productRecords, setRecordsFromInvoice } = useStockContext(); - // console.log({ productRecords }); const { productsIsSuccess, @@ -52,11 +52,6 @@ export default function StockTabScreen({ uncategorizedProducts, } = useProductRecords(); - // console.log({ - // x: categorizedProducts.map((c) => c.products), - // uncategorizedProducts, - // }); - const { data: recipeList, isSuccess: recipesIsSuccess } = useListRecipesWithRecords(inventoryId); @@ -65,6 +60,8 @@ export default function StockTabScreen({ isSuccess: isUpdateSuccess, isError: isUpdateError, } = useUpdateRecords(+inventoryId); + const { mutate: createProductNameAliases } = useCreateProductNameAlias(); + const { mutate: createRecipeNameAliases } = useCreateRecipeNameAlias(); useEffect(() => { navigation.setOptions({ headerTitle: inventoryName }); @@ -131,6 +128,10 @@ export default function StockTabScreen({ labelStyle={styles.saveButtonLabel} onPress={() => { mutate({ productRecords, recipeRecords: {} }); + if (aliasForm) { + createProductNameAliases(aliasForm); + createRecipeNameAliases(aliasForm); + } }} disabled={!isConnected} > From 9d35ec8f0c81cdcd00a659c3b47a56200f1d4660 Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Thu, 1 Aug 2024 15:30:31 +0200 Subject: [PATCH 16/23] fix: remove some wips --- native/db/auth/SessionContext.tsx | 1 - native/navigation/BottomTabNavigation.tsx | 6 +++--- native/navigation/types.ts | 4 ---- .../DocumentScanner.tsx | 1 - .../DocumentScannerModalScreen.tsx | 14 ++++---------- .../useProcessDocument.ts | 5 ----- native/screens/IdentifyAliasesScreen/Aliases.tsx | 3 +-- native/screens/StockTabScreen/RecipeCard.tsx | 15 --------------- .../StockContext/StockContextProvider.tsx | 9 ++++----- native/screens/StockTabScreen/StockTabScreen.tsx | 2 -- .../screens/StockTabScreen/useProductRecords.ts | 1 - 11 files changed, 12 insertions(+), 49 deletions(-) diff --git a/native/db/auth/SessionContext.tsx b/native/db/auth/SessionContext.tsx index abb30a93..823376c6 100644 --- a/native/db/auth/SessionContext.tsx +++ b/native/db/auth/SessionContext.tsx @@ -28,7 +28,6 @@ export const useMakeSessionState = () => { useEffect(() => { const { data } = supabase.auth.onAuthStateChange( async (_event, _session) => { - // console.log("auth changed", session?.user.id); setSession(_session); } ); diff --git a/native/navigation/BottomTabNavigation.tsx b/native/navigation/BottomTabNavigation.tsx index 148f20cc..9e6db4d6 100644 --- a/native/navigation/BottomTabNavigation.tsx +++ b/native/navigation/BottomTabNavigation.tsx @@ -157,13 +157,13 @@ export const BottomTabNavigation = ({}: BottomTabProps) => { name="StockTab" component={StockStackNavigator} options={{ - // WIP + // VISUAL title: "Stock", tabBarShowLabel: false, tabBarActiveTintColor: theme.colors.highlight, - // WIP + // VISUAL tabBarIcon: () => - true ? ( + false ? ( ) : ( diff --git a/native/navigation/types.ts b/native/navigation/types.ts index b045d879..3766a676 100644 --- a/native/navigation/types.ts +++ b/native/navigation/types.ts @@ -38,7 +38,6 @@ export type HomeStackParamList = { DocumentScannerModal: { stockId: number; stockType: "delivery" | "inventory"; - isScanningSalesRaport: boolean; }; SettingsScreen: undefined; NewBarcodeScreen: { inventoryId: number; new_barcode: string }; @@ -46,7 +45,6 @@ export type HomeStackParamList = { NewProductScreen: { inventoryId: number }; IdentifyAliasesScreen: { stockId: number; - isScanningSalesRaport: boolean; stockType: "delivery" | "inventory"; processedInvoice: ProcessInvoiceResponse; processedSalesReport: ProcessSalesRaportResponse; @@ -58,8 +56,6 @@ export type HomeStackParamList = { */ export type BottomTabParamList = { ListTab: undefined; - DeliveryTab: { id?: number }; - InventoryTab: { id?: number }; StockTab: { id?: number }; }; export type BottomTabProps = CompositeScreenProps< diff --git a/native/screens/DocumentScannerModalScreen/DocumentScanner.tsx b/native/screens/DocumentScannerModalScreen/DocumentScanner.tsx index 727f579b..ff754c98 100644 --- a/native/screens/DocumentScannerModalScreen/DocumentScanner.tsx +++ b/native/screens/DocumentScannerModalScreen/DocumentScanner.tsx @@ -9,7 +9,6 @@ export const DocumentScanner = ({ stockId, stockType, }: { - isScanningSalesRaport: boolean; stockId: number; stockType: "delivery" | "inventory"; }) => { diff --git a/native/screens/DocumentScannerModalScreen/DocumentScannerModalScreen.tsx b/native/screens/DocumentScannerModalScreen/DocumentScannerModalScreen.tsx index ddd7000d..ea977d4e 100644 --- a/native/screens/DocumentScannerModalScreen/DocumentScannerModalScreen.tsx +++ b/native/screens/DocumentScannerModalScreen/DocumentScannerModalScreen.tsx @@ -36,17 +36,16 @@ export const DocumentScannerModalScreen = ({ setDocumentScannerState(initialDocumentScannerState); const styles = useStyles(); - const { isScanningSalesRaport, stockId, stockType } = route.params; + const { stockId, stockType } = route.params; const [permission, requestPermission] = useCameraPermissions(); const { processedInvoice, processedSalesReport } = documentScannerState; useEffect(() => { - if (isScanningSalesRaport && processedSalesReport != null) { + if (stockType === "inventory" && processedSalesReport != null) { if (stockId && !isEmpty(processedSalesReport?.unmatchedAliases)) { navigation.replace("IdentifyAliasesScreen", { stockId, - isScanningSalesRaport, processedInvoice: null, processedSalesReport, stockType, @@ -61,7 +60,6 @@ export const DocumentScannerModalScreen = ({ if (stockId && !isEmpty(processedInvoice?.unmatchedRows)) { navigation.replace("IdentifyAliasesScreen", { stockId, - isScanningSalesRaport, processedInvoice, processedSalesReport: null, stockType, @@ -71,7 +69,7 @@ export const DocumentScannerModalScreen = ({ } resetDocumentScanner(); return; - }, [isScanningSalesRaport, stockId, processedInvoice, processedSalesReport]); + }, [stockId, processedInvoice, processedSalesReport]); const awaitingPermission = !permission; const permissionDeniedCanAskAgain = @@ -155,11 +153,7 @@ export const DocumentScannerModalScreen = ({ resetDocumentScanner, }} > - + ); diff --git a/native/screens/DocumentScannerModalScreen/useProcessDocument.ts b/native/screens/DocumentScannerModalScreen/useProcessDocument.ts index 5a1a3822..c45eb175 100644 --- a/native/screens/DocumentScannerModalScreen/useProcessDocument.ts +++ b/native/screens/DocumentScannerModalScreen/useProcessDocument.ts @@ -1,6 +1,5 @@ import { useMutation } from "@tanstack/react-query"; import { useSnackbar } from "../../components/Snackbar/hooks"; -// import { queryKeys } from "../../db/hooks/queryKeys"; import { supabase } from "../../db/supabase"; import { ProcessSalesRaportResponse } from "../../db/types"; import { useDocumentScannerContext } from "./DocumentScannerContext"; @@ -53,9 +52,5 @@ export const useProcessDocument = ( return data as ProcessSalesRaportResponse; } - // WIP - // { - // mutationKey: queryKeys.processSalesRaport(stockId), - // } ); }; diff --git a/native/screens/IdentifyAliasesScreen/Aliases.tsx b/native/screens/IdentifyAliasesScreen/Aliases.tsx index 129a12aa..484a2ad2 100644 --- a/native/screens/IdentifyAliasesScreen/Aliases.tsx +++ b/native/screens/IdentifyAliasesScreen/Aliases.tsx @@ -176,7 +176,7 @@ export const IdentifyAliasesComponent = ({ ...newMatchedProducts, }; - // WIP "necessery hack"? idk how navigation works + // "necessery hack"? idk how navigation works navigation.navigate("StockTabScreen" as any, { id: stockId, stockType, @@ -223,7 +223,6 @@ export const IdentifyAliasesComponent = ({ fullWidth onPress={() => navigation.replace("DocumentScannerModal", { - isScanningSalesRaport: false, stockId, stockType, }) diff --git a/native/screens/StockTabScreen/RecipeCard.tsx b/native/screens/StockTabScreen/RecipeCard.tsx index ba8a3585..223c09f3 100644 --- a/native/screens/StockTabScreen/RecipeCard.tsx +++ b/native/screens/StockTabScreen/RecipeCard.tsx @@ -99,15 +99,8 @@ export const RecipeCard = ({ const { showInfo } = useSnackbar(); const { recipeRecords, productRecords, setProductRecord, setRecipeRecord } = useStockContext(); - // WIP - // const recordId = recipeRecordId || 0; const recipeRecord = recipeRecords[recipeId]; - // const { watch, setValue } = useFormContext(); const { data: recordsList } = useListRecords(inventoryId); - // const { data: recipeRecord } = useGetRecipeRecord( - // inventoryId, - // recipeRecordId - // ); const recordAndMultiplier = useMemo( () => getRecordAndMultiplier(recipePart, recordsList), @@ -145,15 +138,7 @@ export const RecipeCard = ({ const productId = ram.product_id; - // the object may not exist, if the user did not navigate to the given RecordScreen - // may change during the form refactor - // WIP const oldRecordValues = productRecords[productId]; - // const oldRecordValues = watch(`product_records.${ram.product_id}`) || { - // price_per_unit: null, - // id: ram.record_id, - // quantity: ram.record_quantity_backup, - // }; const dMultiplied = roundFloat(delta * ram.multiplier); const newRecordQuantity = roundFloat( diff --git a/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx b/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx index fb2fea97..326218da 100644 --- a/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx +++ b/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx @@ -20,7 +20,7 @@ const initialRecipeRecords: RecipeRecordsByRecipeId = {}; type StockContextType = StockData & { stockId: number; - stockType: "inventory" | "delivery"; + // stockType: "inventory" | "delivery"; setProductRecords: React.Dispatch< React.SetStateAction >; @@ -34,7 +34,7 @@ type StockContextType = StockData & { }; const StockContext = createContext({ - stockType: "delivery", + // stockType: "delivery", stockId: initialStockId, productRecords: initialProductRecords, setProductRecords: () => null, @@ -51,8 +51,7 @@ export const StockContextProvider = ({ children: ReactNode; stockId: number; }) => { - // WIP - const stockType = "delivery"; + // const stockType = "delivery"; const { data: productRecordsRaw } = useListProductRecords(stockId); const defaultProductRecords = productRecordsRaw @@ -79,7 +78,7 @@ export const StockContextProvider = ({ { // necessary hack, handled by parent navigator - be cautious navigation.navigate("DocumentScannerModal" as any, { - // WIP - isScanningSalesRaport: false, stockId: inventoryId, stockType, }); diff --git a/native/screens/StockTabScreen/useProductRecords.ts b/native/screens/StockTabScreen/useProductRecords.ts index 179e9450..737c8118 100644 --- a/native/screens/StockTabScreen/useProductRecords.ts +++ b/native/screens/StockTabScreen/useProductRecords.ts @@ -4,7 +4,6 @@ import { useStockContext } from "./StockContext/StockContextProvider"; export const useProductRecords = () => { const { productRecords } = useStockContext(); - // console.log({ productRecords }); const productsResponse = useListExistingProducts(); const { data: products, isSuccess: productsIsSuccess } = productsResponse; From 7cbba455f62dc4d8b606829efbc84c91a0bf2c30 Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Tue, 27 Aug 2024 10:54:10 +0200 Subject: [PATCH 17/23] wip: fix recipies --- native/db/hooks/useListRecipes.ts | 4 +- native/db/hooks/useUpdateRecords.ts | 56 ++- native/db/types/index.ts | 15 +- native/navigation/BottomTabNavigation.tsx | 47 +-- native/navigation/types.ts | 6 +- .../DocumentScannerModalScreen.tsx | 2 +- .../screens/IdentifyAliasesScreen/Aliases.tsx | 33 +- native/screens/StockTabScreen/RecipeCard.tsx | 8 +- .../StockContext/StockContextProvider.tsx | 121 +++++-- .../StockTabScreen/StockContext/types.ts | 2 +- .../screens/StockTabScreen/StockTabScreen.tsx | 22 +- .../documentAnalysisResult.mock.json | 13 + .../functions/process-sales-raport/index.ts | 326 +++++++++--------- supabase/seed.sql | 50 ++- 14 files changed, 441 insertions(+), 264 deletions(-) create mode 100644 supabase/functions/process-sales-raport/documentAnalysisResult.mock.json diff --git a/native/db/hooks/useListRecipes.ts b/native/db/hooks/useListRecipes.ts index 4ab4a229..11a6c0d2 100644 --- a/native/db/hooks/useListRecipes.ts +++ b/native/db/hooks/useListRecipes.ts @@ -16,9 +16,7 @@ const listRecipesOfStock = async (stockId: number) => { return data; }; -const listAllRecipes = async (inventoryId?: number) => { - if (inventoryId == null) - throw new Error("useListRecipes - inventoryId is null, should be defined"); +const listAllRecipes = async () => { const { data, error } = await supabase .from("recipe") .select("id, name, recipe_part(quantity, product_id)") diff --git a/native/db/hooks/useUpdateRecords.ts b/native/db/hooks/useUpdateRecords.ts index a6e0c2e2..5cabd297 100644 --- a/native/db/hooks/useUpdateRecords.ts +++ b/native/db/hooks/useUpdateRecords.ts @@ -2,13 +2,19 @@ import { useMutation, useQueryClient } from "@tanstack/react-query"; import { StockData } from "../../screens/StockTabScreen/StockContext/types"; import { supabase } from "../supabase"; +import { useGetCurrentCompanyId } from "./useGetCurrentCompanyId"; -const updateRecordsForm = async (stock: StockData, inventoryId: number) => { - if ( - Object.keys(stock.productRecords).length && - Object.keys(stock.recipeRecords).length - ) - return; +const updateRecordsForm = async ( + stock: StockData, + inventoryId: number, + companyId: number | undefined | null +) => { + // if ( + // Object.keys(stock.productRecords).length && + // Object.keys(stock.recipeRecords).length + // ) + // return; + if (!companyId) return; const data = await Promise.all([ ( @@ -42,14 +48,32 @@ const updateRecordsForm = async (stock: StockData, inventoryId: number) => { ).map((it) => it.data), ( await Promise.all( - Object.entries(stock.recipeRecords).map(([record_id, { quantity }]) => { - return supabase - .from("recipe_record") - .update({ quantity }) - .eq("id", Number(record_id)) - .select() - .single(); - }) + Object.entries(stock.recipeRecords) + .filter(([_, { record_id }]) => !!record_id) + .map(([recipe_id, { quantity }]) => { + return supabase + .from("recipe_record") + .update({ quantity }) + .eq("inventory_id", inventoryId) + .eq("product_id", recipe_id) + .select() + .single(); + }) + ) + ).map((it) => it.data), + ( + await Promise.all( + Object.entries(stock.recipeRecords) + .filter(([_, { record_id }]) => !record_id) + .map(([recipe_id, { quantity }]) => { + return supabase.from("recipe_record").insert({ + quantity, + recipe_id: parseInt(recipe_id), + // TODO remove company_id from recripe_record table and from this function (updateRecordsForm) + company_id: companyId, + inventory_id: inventoryId, + }); + }) ) ).map((it) => it.data), ]); @@ -57,10 +81,12 @@ const updateRecordsForm = async (stock: StockData, inventoryId: number) => { }; export const useUpdateRecords = (inventoryId: number) => { + const { data: companyId } = useGetCurrentCompanyId(); const queryClient = useQueryClient(); return useMutation({ - mutationFn: async (stock) => await updateRecordsForm(stock, inventoryId), + mutationFn: async (stock) => + await updateRecordsForm(stock, inventoryId, companyId?.id), onMutate: async (stock: StockData) => { const recordsIterable = Object.entries(stock.productRecords); await Promise.all( diff --git a/native/db/types/index.ts b/native/db/types/index.ts index ce97b2fc..01e65bc2 100644 --- a/native/db/types/index.ts +++ b/native/db/types/index.ts @@ -87,10 +87,19 @@ export type ProcessInvoiceResponse = { } | null; export type ProcessSalesRaportResponse = { - form: { - [recipe_id: string]: { + matchedRecipieRecords: { + [recipe_id: number]: { + record_id: number; + quantity: number; + }; + }; + matchedRecipiesNotInInventory: { + [recipe_id: number]: { quantity: number; }; }; - unmatchedAliases: string[]; + unmatchedRows: { + name: string; + quantity: number; + }[]; } | null; diff --git a/native/navigation/BottomTabNavigation.tsx b/native/navigation/BottomTabNavigation.tsx index 9e6db4d6..60d5c8ca 100644 --- a/native/navigation/BottomTabNavigation.tsx +++ b/native/navigation/BottomTabNavigation.tsx @@ -5,10 +5,10 @@ import { createNativeStackNavigator } from "@react-navigation/native-stack"; import { View } from "react-native"; import { DeliveryIcon, InventoryIcon, ListIcon } from "../components/Icon"; -import { isEmpty } from "lodash"; import { TabBar } from "../components/TabBar"; -import { EmptyScreenTemplate } from "../components/common/EmptyScreenTemplate"; -import { useListInventories } from "../db"; +// import { isEmpty } from "lodash"; +// import { EmptyScreenTemplate } from "../components/common/EmptyScreenTemplate"; +// import { useListInventories } from "../db"; import { AddRecordScreen } from "../screens/AddRecordScreen"; import { ListTab } from "../screens/ListTabScreen/ListTabScreen"; @@ -28,37 +28,38 @@ const StockStack = createNativeStackNavigator(); const StockStackNavigator = ({ route }: StockTabProps) => { const theme = useTheme(); - const routeDeliveryId = route.params?.id; + const stockId = route.params?.id; + // const routeDeliveryId = route.params?.id; - const { data } = useListInventories(); - const latestDeliveryId = data?.find((item) => item.is_delivery)?.id; + // const { data } = useListInventories(); + // const latestDeliveryId = data?.find((item) => item.is_delivery)?.id; - const deliveryId = routeDeliveryId ?? latestDeliveryId; + // const deliveryId = routeDeliveryId ?? latestDeliveryId; - const noDeliveries = !latestDeliveryId && !isEmpty(data); + // const noDeliveries = !latestDeliveryId && !isEmpty(data); - if (noDeliveries) - return ( - - Brak dostaw. Dodaj nową dostawę z ekranu listy! - - ); + // if (noDeliveries) + // return ( + // + // Brak dostaw. Dodaj nową dostawę z ekranu listy! + // + // ); - if (!deliveryId) - return ( - - Błąd - brak identyfikatora dostawy. Zrestartuj aplikację i spróbuj - ponownie. - - ); + // if (!deliveryId) + // return ( + // + // Błąd - brak identyfikatora dostawy. Zrestartuj aplikację i spróbuj + // ponownie. + // + // ); return ( - + ( { if (stockType === "inventory" && processedSalesReport != null) { - if (stockId && !isEmpty(processedSalesReport?.unmatchedAliases)) { + if (stockId && !isEmpty(processedSalesReport?.unmatchedRows)) { navigation.replace("IdentifyAliasesScreen", { stockId, processedInvoice: null, diff --git a/native/screens/IdentifyAliasesScreen/Aliases.tsx b/native/screens/IdentifyAliasesScreen/Aliases.tsx index 484a2ad2..dae9d54b 100644 --- a/native/screens/IdentifyAliasesScreen/Aliases.tsx +++ b/native/screens/IdentifyAliasesScreen/Aliases.tsx @@ -20,7 +20,10 @@ import { } from "../../db/types"; import { IdentifyAliasesScreenNavigationProp } from "../../navigation/types"; import { IDListCardAddProduct } from "../StockTabScreen/IDListCard/IDListCardAddProduct"; -import { ProductRecordsByProductId } from "../StockTabScreen/StockContext/types"; +import { + ProductRecordsByProductId, + RecipeRecordsByRecipeId, +} from "../StockTabScreen/StockContext/types"; import { useAliasesStyles } from "./styles"; import { AliasForm } from "./types"; @@ -119,10 +122,7 @@ export const IdentifyAliasesComponent = ({ // data: resolvedAliases, // } = useCreateProductNameAlias(); - const unmatchedRows = - stockType === "delivery" - ? documentResponse?.unmatchedRows - : documentResponse?.unmatchedAliases.map((a) => ({ name: a })); + const unmatchedRows = documentResponse?.unmatchedRows; // const { data: productRecords } = useListProductRecords(stockId); const { data: products } = useListExistingProducts(); @@ -184,6 +184,29 @@ export const IdentifyAliasesComponent = ({ aliasForm: getValues(), }); } + if (stockType === "inventory" && products && documentResponse) { + // const newMatchedProducts = getNewMatched( + // documentResponse, + // data.productAliases, + // products + // ); + + const merged: RecipeRecordsByRecipeId = { + ...documentResponse.matchedRecipieRecords, + ...documentResponse.matchedRecipiesNotInInventory, + // order is important, newMatchedProducts should be last, because it is the result of the user selection + // or is it? + // ...newMatchedProducts, + }; + + // "necessery hack"? idk how navigation works + navigation.navigate("StockTabScreen" as any, { + id: stockId, + stockType, + recordsFromSalesRaport: merged, + aliasForm: getValues(), + }); + } }, (_errors) => { // TODO show a snackbar? handle error better diff --git a/native/screens/StockTabScreen/RecipeCard.tsx b/native/screens/StockTabScreen/RecipeCard.tsx index 223c09f3..79f9fa7c 100644 --- a/native/screens/StockTabScreen/RecipeCard.tsx +++ b/native/screens/StockTabScreen/RecipeCard.tsx @@ -138,14 +138,12 @@ export const RecipeCard = ({ const productId = ram.product_id; - const oldRecordValues = productRecords[productId]; + const oldQuantity = productRecords[productId]?.quantity || 0; const dMultiplied = roundFloat(delta * ram.multiplier); - const newRecordQuantity = roundFloat( - oldRecordValues.quantity - dMultiplied - ); + const newRecordQuantity = roundFloat(oldQuantity + dMultiplied); - if (newRecordQuantity < 0) { + if (ram.multiplier < 0) { showInfo( "Niektóre składniki receptury mają ilość równą 0, zostały pominięte" ); diff --git a/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx b/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx index 326218da..3306a531 100644 --- a/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx +++ b/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx @@ -2,10 +2,12 @@ import React, { ReactNode, createContext, useContext, + useEffect, useMemo, useState, } from "react"; import { useListProductRecords } from "../../../db/hooks/useListProductRecords"; +import { useListRecipeRecords } from "../../../db/hooks/useListRecipeRecords"; import { ProductRecordByProductIdValue, ProductRecordsByProductId, @@ -20,6 +22,7 @@ const initialRecipeRecords: RecipeRecordsByRecipeId = {}; type StockContextType = StockData & { stockId: number; + setStockId: React.Dispatch>; // stockType: "inventory" | "delivery"; setProductRecords: React.Dispatch< React.SetStateAction @@ -31,53 +34,94 @@ type StockContextType = StockData & { setRecordsFromInvoice: React.Dispatch< React.SetStateAction >; + recordsFromSalesRaport: RecipeRecordsByRecipeId; + setRecordsFromSalesRaport: React.Dispatch< + React.SetStateAction + >; }; const StockContext = createContext({ // stockType: "delivery", stockId: initialStockId, + setStockId: () => null, productRecords: initialProductRecords, setProductRecords: () => null, recipeRecords: initialRecipeRecords, setRecipeRecords: () => null, recordsFromInvoice: initialProductRecords, setRecordsFromInvoice: () => null, + recordsFromSalesRaport: initialRecipeRecords, + setRecordsFromSalesRaport: () => null, }); export const StockContextProvider = ({ children, - stockId, + // TODO delete + stockId: inStockId, }: { children: ReactNode; - stockId: number; + stockId: number | undefined; }) => { - // const stockType = "delivery"; + const [stockId, setStockId] = useState(inStockId || 0); - const { data: productRecordsRaw } = useListProductRecords(stockId); - const defaultProductRecords = productRecordsRaw - ? Object.fromEntries( - productRecordsRaw.map((record) => [ - record.product_id, - { - record_id: record.id, - quantity: record.quantity, - price_per_unit: record.price_per_unit, - }, - ]) - ) - : {}; + const [recordsFromSalesRaport, setRecordsFromSalesRaport] = + useState({}); + const [recordsFromInvoice, setRecordsFromInvoice] = + useState({}); + const [recipeRecords, setRecipeRecords] = useState( + {} + ); const [productRecords, setProductRecords] = - useState(defaultProductRecords); - const [recordsFromInvoice, setRecordsFromInvoice] = - useState(defaultProductRecords); + useState({}); + + // console.log(stockId); + + //@ts-ignore + const { data: recipeRecordsRaw } = useListRecipeRecords(stockId); + //@ts-ignore + const { data: productRecordsRaw } = useListProductRecords(stockId); - const [recipeRecords, setRecipeRecords] = useState(initialRecipeRecords); + // Whenever stockId or fetched data changes, update the records + useEffect(() => { + const defaultRecipeRecords = recipeRecordsRaw + ? Object.fromEntries( + recipeRecordsRaw.map((record) => [ + record.recipe_id, + { + record_id: record.id, + quantity: record.quantity, + }, + ]) + ) + : {}; + + setRecipeRecords(defaultRecipeRecords); + + const defaultProductRecords = productRecordsRaw + ? Object.fromEntries( + productRecordsRaw.map((record) => [ + record.product_id, + { + record_id: record.id, + quantity: record.quantity, + price_per_unit: record.price_per_unit, + }, + ]) + ) + : {}; + + setProductRecords(defaultProductRecords); + }, [stockId]); + + // console.log({ stockId, recipeRecords, productRecords }); return ( {children} @@ -111,6 +157,24 @@ const mergeRawAndInvoiceProductRecords = ( return ret; }; +const mergeRawAndSalesRaportRecipeRecords = ( + raw: RecipeRecordsByRecipeId, + invoice: RecipeRecordsByRecipeId +) => { + const ret: RecipeRecordsByRecipeId = JSON.parse(JSON.stringify(raw)); + + for (const recipe_id in invoice) { + const { quantity } = invoice[recipe_id]; + if (recipe_id in ret) { + ret[recipe_id].quantity = ret[recipe_id].quantity + quantity; + } else { + ret[recipe_id] = { quantity, record_id: null }; + } + } + + return ret; +}; + export const useStockContext = () => { const context = useContext(StockContext); @@ -143,5 +207,20 @@ export const useStockContext = () => { [context.productRecords, context.recordsFromInvoice] ); - return { ...context, productRecords, setProductRecord, setRecipeRecord }; + const recipeRecords = useMemo( + () => + mergeRawAndSalesRaportRecipeRecords( + context.recipeRecords, + context.recordsFromSalesRaport + ), + [context.recipeRecords, context.recordsFromSalesRaport] + ); + + return { + ...context, + productRecords, + recipeRecords, + setProductRecord, + setRecipeRecord, + }; }; diff --git a/native/screens/StockTabScreen/StockContext/types.ts b/native/screens/StockTabScreen/StockContext/types.ts index 8bee753b..5821a403 100644 --- a/native/screens/StockTabScreen/StockContext/types.ts +++ b/native/screens/StockTabScreen/StockContext/types.ts @@ -9,7 +9,7 @@ export type ProductRecordsByProductId = { }; export type RecipeRecordByRecipeIdValue = { - // record_id: number | null; + record_id?: number | null; quantity: number; }; diff --git a/native/screens/StockTabScreen/StockTabScreen.tsx b/native/screens/StockTabScreen/StockTabScreen.tsx index f55aacba..22832525 100644 --- a/native/screens/StockTabScreen/StockTabScreen.tsx +++ b/native/screens/StockTabScreen/StockTabScreen.tsx @@ -32,18 +32,34 @@ export default function StockTabScreen({ const inventoryId = route.params?.id; const stockType = route.params?.stockType; - const { recordsFromInvoice, aliasForm } = route.params; + const { recordsFromInvoice, recordsFromSalesRaport, aliasForm } = + route.params; // const { showError, showInfo, showSuccess } = useSnackbar(); const { showError, showSuccess } = useSnackbar(); const { data: inventoryName } = useGetInventoryName(+inventoryId); + const { + productRecords, + recipeRecords, + setRecordsFromInvoice, + setRecordsFromSalesRaport, + setStockId, + } = useStockContext(); + useEffect(() => { if (!!recordsFromInvoice) setRecordsFromInvoice(recordsFromInvoice); }, [recordsFromInvoice]); - const { productRecords, setRecordsFromInvoice } = useStockContext(); + useEffect(() => { + if (!!recordsFromSalesRaport) + setRecordsFromSalesRaport(recordsFromSalesRaport); + }, [recordsFromSalesRaport]); + + useEffect(() => { + setStockId(inventoryId); + }, [inventoryId]); const { productsIsSuccess, @@ -125,7 +141,7 @@ export default function StockTabScreen({ fullWidth labelStyle={styles.saveButtonLabel} onPress={() => { - mutate({ productRecords, recipeRecords: {} }); + mutate({ productRecords, recipeRecords }); if (aliasForm) { createProductNameAliases(aliasForm); createRecipeNameAliases(aliasForm); diff --git a/supabase/functions/process-sales-raport/documentAnalysisResult.mock.json b/supabase/functions/process-sales-raport/documentAnalysisResult.mock.json new file mode 100644 index 00000000..cb3b9275 --- /dev/null +++ b/supabase/functions/process-sales-raport/documentAnalysisResult.mock.json @@ -0,0 +1,13 @@ +[ + { "sanitizedName": "GOFER ŚMIETANOWY", "quantity": 4 }, + { "sanitizedName": "GOFER CZEKOLADA", "quantity": 3 }, + { "sanitizedName": "FILET z DORSZA", "quantity": 3.28 }, + { "sanitizedName": "FILET Z KURCZAKA", "quantity": 2 }, + { "sanitizedName": "ŁOSOŚ Z MASŁEM CZOSNKOWYM", "quantity": 0.61 }, + { "sanitizedName": "PIECZEŃ ZKARKÓWKI", "quantity": 7 }, + { "sanitizedName": ".7up 0,2l", "quantity": 1 }, + { "sanitizedName": "APA PALE ALE", "quantity": 1 }, + { "sanitizedName": ".DESPERADOS 0% VIRGIN", "quantity": 2 }, + { "sanitizedName": "HEINEKEN 0% .HERBATA", "quantity": 4 }, + { "sanitizedName": null, "quantity": null } +] diff --git a/supabase/functions/process-sales-raport/index.ts b/supabase/functions/process-sales-raport/index.ts index 74e8f43f..0ea11654 100644 --- a/supabase/functions/process-sales-raport/index.ts +++ b/supabase/functions/process-sales-raport/index.ts @@ -11,6 +11,10 @@ import isEmpty from "lodash/isEmpty"; import { isNil } from "../_shared/isNil.ts"; import { createClient } from "@supabase/supabase-js@2"; import { Database } from "../_shared/database.types.ts"; +import mockDocumentAnalysisResult from "./documentAnalysisResult.mock.json" with {type: "json"}; +// import mockDocumentAnalysisResult from "./documentAnalysisResult.mock.json"; + +const test = false; const DocumentIntelligenceEndpoint = Deno.env.get( "DOCUMENT_INTELLIGENCE_ENDPOINT" @@ -127,32 +131,27 @@ Deno.serve(async (req) => { { global: { headers: { Authorization: authHeader } } } ); - const { data: productRecordDataRaw, error: productRecordError } = - await supabase - .from("product_record") - .select("product_id") - .eq("inventory_id", requestBody.inventory_id); + const { data: recipeAliasData, error: recipeAliasError } = await supabase + .from("name_alias") + .select("alias, recipe_id") + .is("product_id", null); - if (productRecordError) { - console.error("Error fetching table data - productRecordError"); + if (recipeAliasError) { + console.error("Error fetching name_alias table data"); return new Response("Error fetching table data", { status: 500 }); } - // fetches possibly incomplete recipes, we don't need products that do not occurr in the current inventory - const { data: recipeDataRaw, error: recipeError } = await supabase - .from("recipe") - .select("id, name, recipe_part(quantity, product_id), name_alias(alias)") - .in( - "recipe_part.product_id", - productRecordDataRaw.map((pr) => pr.product_id) - ) - .order("name", { ascending: true }); - - if (recipeError) { - console.error("Error fetching table data - recipeError"); + const recipeIds = recipeAliasData?.map((item) => item.recipe_id); + const { data: recipeRecordData, error: recipeRecordError } = await supabase + .from("recipe_record") + .select("id, recipe_id, quantity") + .eq("inventory_id", requestBody.inventory_id) + .in("recipe_id", recipeIds); + + if (recipeRecordError) { + console.error("Error fetching recipe_record table data"); return new Response("Error fetching table data", { status: 500 }); } - const recipeData = recipeDataRaw.filter((r) => r.recipe_part.length !== 0); let documentAnalysisResult: | ({ @@ -161,169 +160,166 @@ Deno.serve(async (req) => { } | null)[] | null = null; - if (!DocumentIntelligenceEndpoint || !DocumentIntelligenceApiKey) { - console.error("Environment variables are not set up correctly"); - return new Response("Environment variables are not set up correctly.", { - status: 500, - }); - } + if (test) { + documentAnalysisResult = mockDocumentAnalysisResult; + } else { + if (!DocumentIntelligenceEndpoint || !DocumentIntelligenceApiKey) { + console.error("Environment variables are not set up correctly"); + return new Response("Environment variables are not set up correctly.", { + status: 500, + }); + } - const client = DocumentIntelligence(DocumentIntelligenceEndpoint, { - key: DocumentIntelligenceApiKey, - }); - const initialResponse = await client - .path("/documentModels/{modelId}:analyze", "prebuilt-invoice") - .post({ - contentType: "application/json", - body: { - base64Source: requestBody.image.data, - }, + const client = DocumentIntelligence(DocumentIntelligenceEndpoint, { + key: DocumentIntelligenceApiKey, }); + const initialResponse = await client + .path("/documentModels/{modelId}:analyze", "prebuilt-invoice") + .post({ + contentType: "application/json", + body: { + base64Source: requestBody.image.data, + }, + }); - const poller = await getLongRunningPoller(client, initialResponse); - const result = (await poller.pollUntilDone()) - .body as AnalyzeResultOperationOutput; + const poller = await getLongRunningPoller(client, initialResponse); + const result = (await poller.pollUntilDone()) + .body as AnalyzeResultOperationOutput; - // to mock, copy a json from examples - // const result = mockResponse; + // to mock, copy a json from examples + // const result = mockResponse; - // analyzeResult?.documents?.[0].fields contents are defined here - // https://learn.microsoft.com/en-gb/azure/ai-services/document-intelligence/concept-invoice?view=doc-intel-4.0.0#line-items - if ( - !result.analyzeResult || - isEmpty(result.analyzeResult?.documents) || - !result.analyzeResult?.documents - ) { - console.error( - `No useful data found during processing, status ${ - result.status - }, ${JSON.stringify(result.error, null, 2)}` - ); - return new Response(`No useful data found during processing`, { - status: 400, - headers: { ...corsHeaders }, - }); - } + // analyzeResult?.documents?.[0].fields contents are defined here + // https://learn.microsoft.com/en-gb/azure/ai-services/document-intelligence/concept-invoice?view=doc-intel-4.0.0#line-items + if ( + !result.analyzeResult || + isEmpty(result.analyzeResult?.documents) || + !result.analyzeResult?.documents + ) { + console.error( + `No useful data found during processing, status ${ + result.status + }, ${JSON.stringify(result.error, null, 2)}` + ); + return new Response(`No useful data found during processing`, { + status: 400, + headers: { ...corsHeaders }, + }); + } - if (result.analyzeResult.documents.length > 1) { - console.error("More than one page in document"); - return new Response("More than one page in document", { - status: 400, - headers: { ...corsHeaders }, - }); + if (result.analyzeResult.documents.length > 1) { + console.error("More than one page in document"); + return new Response("More than one page in document", { + status: 400, + headers: { ...corsHeaders }, + }); + } + + if ( + isEmpty(result.analyzeResult?.documents[0].fields) || + !result.analyzeResult.documents[0].fields + ) { + console.error("No data extracted from document"); + return new Response("No data extracted from document", { + status: 400, + headers: { ...corsHeaders }, + }); + } + + if (result.analyzeResult.documents[0].fields.Items?.type === "object") { + const itemValue = + result.analyzeResult.documents[0].fields.Items.valueObject; + const sanitizedName = parseStringForResponse( + getName(itemValue?.Description) + ); + const quantity = parseFloatForResponse(getQuantity(itemValue?.Quantity)); + documentAnalysisResult = [ + { + sanitizedName, + quantity, + }, + ]; + } + if (result.analyzeResult.documents[0].fields.Items?.type === "array") { + documentAnalysisResult = + result.analyzeResult.documents[0].fields.Items.valueArray?.map( + (item) => { + if (item.type !== "object") { + return null; + } + const itemValue = item.valueObject; + const sanitizedName = parseStringForResponse( + getName(itemValue?.Description) + ); + const quantity = parseFloatForResponse( + getQuantity(itemValue?.Quantity) + ); + return { + sanitizedName, + quantity, + }; + } + ) ?? null; + } } + const matchedRecipieRecords: { + [recipe_id: number]: { + record_id: number; + quantity: number; + }; + } = {}; + const matchedRecipiesNotInInventory: { + [recipe_id: number]: { + quantity: number; + }; + } = {}; + const unmatchedRows: { + name: string; + quantity: number; + }[] = []; - if ( - isEmpty(result.analyzeResult?.documents[0].fields) || - !result.analyzeResult.documents[0].fields - ) { - console.error("No data extracted from document"); - return new Response("No data extracted from document", { - status: 400, - headers: { ...corsHeaders }, - }); + if (!documentAnalysisResult) { + console.error("No analysis result"); + return new Response("No analysis result", { status: 500 }); } - if (result.analyzeResult.documents[0].fields.Items?.type === "object") { - const itemValue = - result.analyzeResult.documents[0].fields.Items.valueObject; - const sanitizedName = parseStringForResponse( - getName(itemValue?.Description) + for (const row of documentAnalysisResult) { + if (!row || !row.sanitizedName || !row.quantity) + continue; + const quantity = row.quantity; + + const alias = recipeAliasData.find((a) => a.alias === row?.sanitizedName); + + if (!alias) { + unmatchedRows.push({ name: row.sanitizedName, quantity }); + continue; + } + + const recipeRecord = recipeRecordData.find( + (r) => r.recipe_id === alias.recipe_id ); - const quantity = parseFloatForResponse(getQuantity(itemValue?.Quantity)); - documentAnalysisResult = [ - { - sanitizedName, + + // TODO: add functionality for products + if (!alias.recipe_id) continue; + + if (!recipeRecord) { + matchedRecipiesNotInInventory[alias.recipe_id] = { quantity, - }, - ]; - } - if (result.analyzeResult.documents[0].fields.Items?.type === "array") { - documentAnalysisResult = - result.analyzeResult.documents[0].fields.Items.valueArray?.map((item) => { - if (item.type !== "object") { - return null; - } - const itemValue = item.valueObject; - const sanitizedName = parseStringForResponse( - getName(itemValue?.Description) - ); - const quantity = parseFloatForResponse( - getQuantity(itemValue?.Quantity) - ); - return { - sanitizedName, - quantity, - }; - }) ?? null; - } - const recipeResponsePart = recipeData.reduce( - (acc, recipe) => { - const recognizedDataMatchedToRecipeAliases = - documentAnalysisResult?.filter( - (dar) => - dar != null && - dar.sanitizedName != null && - dar.quantity != null && - recipe.name_alias.includes({ - alias: dar.sanitizedName, - }) - ) as { sanitizedName: string; quantity: number }[]; - - const quantity = - recognizedDataMatchedToRecipeAliases?.reduce( - (sum, it) => sum + (it.quantity ?? 0), - 0 - ) ?? 0; - - return { - ...acc, - recognized: { - ...acc.recognized, - [String(recipe.id)]: { - quantity: parseFloatForResponse(quantity), - }, - }, - recognizedAliases: [ - ...acc.recognizedAliases, - ...recognizedDataMatchedToRecipeAliases?.map( - (it) => it?.sanitizedName - ), - ], }; - }, - { - recognized: {}, - recognizedAliases: [], - } as { - recognized: Record< - string, - { - quantity: number | null; - } - >; - recognizedAliases: string[]; + continue; } - ); - // we want them unique - const unmatchedAliases = [ - ...new Set( - documentAnalysisResult - ?.filter( - (analysis) => - !recipeResponsePart.recognizedAliases.some( - (recognizedAlias) => recognizedAlias === analysis?.sanitizedName - ) - ) - .map((item) => item?.sanitizedName) ?? [] - ), - ]; + matchedRecipieRecords[alias.recipe_id] = { + record_id: recipeRecord.id, + quantity, + }; + } return new Response( JSON.stringify({ - form: recipeResponsePart.recognized, - unmatchedAliases, + matchedRecipieRecords, + matchedRecipiesNotInInventory, + unmatchedRows, }), { headers: { ...corsHeaders, "Content-Type": "application/json" }, diff --git a/supabase/seed.sql b/supabase/seed.sql index 496e1336..d9be337d 100644 --- a/supabase/seed.sql +++ b/supabase/seed.sql @@ -13,28 +13,42 @@ INSERT INTO "public"."product_category" ("id", "name", "company_id", "display_or (2, 'Owoce', 2, 3); INSERT INTO "public"."product" ("id", "name", "unit", "company_id", "notification_threshold", "category_id", "display_order", "deleted_at") VALUES - (1, 'Gofry Emix', 'Szt.', 2, 0, 1, 0, NULL), - (2, 'Śmietana', 'szt.', 2, 0, 1, 0, NULL), - (3, 'Ananas', 'szt.', 2, 0, 2, 0, NULL), - (4, 'Nutella', 'szt.', 2, 0, 1, 0, NULL), - (5, 'Sos Czekoladowy', 'szt.', 2, 0, 1, 0, NULL), - (6, 'Maliny w żelu', 'szt.', 2, 0, 2, 0, NULL), - (7, 'Olej rzepakowy', 'szt.', 2, 0, NULL, 0, NULL); + (11, 'Gofry Emix', 'Szt.', 2, 0, 1, 0, NULL), + (12, 'Śmietana', 'szt.', 2, 0, 1, 0, NULL), + (13, 'Ananas', 'szt.', 2, 0, 2, 0, NULL), + (14, 'Nutella', 'szt.', 2, 0, 1, 0, NULL), + (15, 'Sos Czekoladowy', 'szt.', 2, 0, 1, 0, NULL), + (16, 'Maliny w żelu', 'szt.', 2, 0, 2, 0, NULL), + (17, 'Olej rzepakowy', 'szt.', 2, 0, NULL, 0, NULL); INSERT INTO "public"."inventory" ("id", "name", "date", "company_id", "last_product_record_updated_at", "low_quantity_notification_sent", "is_delivery") VALUES - (1, '3 lipiec', '2024-07-03 14:35:47+00', 2, '2024-07-10 10:20:11.885395+00', false, true); - -DELETE FROM "public"."product_record" WHERE product_id = 3; -DELETE FROM "public"."product_record" WHERE product_id = 4; - -INSERT INTO "public"."recipe" ("id", "created_at", "name", "company_id") VALUES - (1, '2024-04-18 15:12:53.215491+00', 'Pizza Salami Pikante', 2); + (1, '3 lipiec', '2024-07-03 14:35:47+00', 2, '2024-07-10 10:20:11.885395+00', false, true), + (2, '4 lipiec', '2024-07-04 14:35:47+00', 2, '2024-07-10 10:20:11.885395+00', false, false); + +DELETE FROM "public"."product_record" WHERE product_id = 13; +DELETE FROM "public"."product_record" WHERE product_id = 14; + +INSERT INTO "public"."recipe" ("id", "name", "company_id") VALUES + (21, 'Gofry ze śmietaną', 2), + (22, 'Gofry z malinami', 2), + (23, 'Gofry z nutellą i czekoladą', 2); + +INSERT INTO "public"."recipe_part" ("quantity", "product_id", "recipe_id") VALUES + (1, 11, 21), + (2, 12, 21), + (1, 11, 22), + (2, 16, 22), + (1, 11, 23), + (1, 14, 23), + (1, 15, 23); INSERT INTO "public"."name_alias" ("alias", "recipe_id", "product_id", "company_id") VALUES - ('Gofry Emix 5kg', NULL, 1, 2), - ('Deserowa UHT Bieruńska 33% 5 lit.', NULL, 2, 2), - ('Ananas Kostka Sandra 565g', NULL, 3, 2), - ('Nutella 825 g', NULL, 4, 2); + ('Gofry Emix 5kg', NULL, 11, 2), + ('Deserowa UHT Bieruńska 33% 5 lit.', NULL, 12, 2), + ('Ananas Kostka Sandra 565g', NULL, 13, 2), + ('Nutella 825 g', NULL, 14, 2), + ('GOFER ŚMIETANOWY', 21, NULL, 2), + ('GOFER CZEKOLADA', 22, NULL, 2); RESET ALL; From e627fdbf98aeedef4daf4c39a4ffe78fca1d5d44 Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Tue, 27 Aug 2024 12:06:21 +0200 Subject: [PATCH 18/23] fix: can add stock when none exist --- native/screens/NewStockScreen.tsx | 23 +++------- .../screens/StockTabScreen/StockTabScreen.tsx | 42 +++++++++++-------- 2 files changed, 31 insertions(+), 34 deletions(-) diff --git a/native/screens/NewStockScreen.tsx b/native/screens/NewStockScreen.tsx index 965e8c38..22433564 100644 --- a/native/screens/NewStockScreen.tsx +++ b/native/screens/NewStockScreen.tsx @@ -50,7 +50,7 @@ export function NewStockScreen({ navigation }: NewStockScreenProps) { }); const { mutate, - data: inventory, + data: stock, isSuccess, isLoading, isError, @@ -59,24 +59,13 @@ export function NewStockScreen({ navigation }: NewStockScreenProps) { const is_delivery = watch("is_delivery"); useEffect(() => { - if (isSuccess && inventory) { - if (is_delivery) { - navigation.navigate("Tabs", { - screen: "StockTab", - params: { - id: inventory.id, - }, - }); - return; - } - navigation.navigate("Tabs", { - screen: "StockTab", - params: { - id: inventory.id, - }, + if (isSuccess && stock && !!stock.id) { + navigation.navigate("StockTabScreen" as any, { + id: stock.id, + stockType: is_delivery ? "delivery" : "inventory", }); } - }, [navigation, isSuccess, inventory, is_delivery]); + }, [navigation, isSuccess, stock]); useEffect(() => { if (isError) { diff --git a/native/screens/StockTabScreen/StockTabScreen.tsx b/native/screens/StockTabScreen/StockTabScreen.tsx index 22832525..08bcc6d7 100644 --- a/native/screens/StockTabScreen/StockTabScreen.tsx +++ b/native/screens/StockTabScreen/StockTabScreen.tsx @@ -29,7 +29,7 @@ export default function StockTabScreen({ const styles = useStockTabStyles(); const { isConnected } = useNetInfo(); - const inventoryId = route.params?.id; + const stockId = route.params?.id; const stockType = route.params?.stockType; const { recordsFromInvoice, recordsFromSalesRaport, aliasForm } = @@ -38,7 +38,7 @@ export default function StockTabScreen({ // const { showError, showInfo, showSuccess } = useSnackbar(); const { showError, showSuccess } = useSnackbar(); - const { data: inventoryName } = useGetInventoryName(+inventoryId); + const { data: inventoryName } = useGetInventoryName(+stockId); const { productRecords, @@ -58,8 +58,8 @@ export default function StockTabScreen({ }, [recordsFromSalesRaport]); useEffect(() => { - setStockId(inventoryId); - }, [inventoryId]); + setStockId(stockId); + }, [stockId]); const { productsIsSuccess, @@ -69,19 +69,19 @@ export default function StockTabScreen({ } = useProductRecords(); const { data: recipeList, isSuccess: recipesIsSuccess } = - useListRecipesWithRecords(inventoryId); + useListRecipesWithRecords(stockId); const { mutate, isSuccess: isUpdateSuccess, isError: isUpdateError, - } = useUpdateRecords(+inventoryId); + } = useUpdateRecords(+stockId); const { mutate: createProductNameAliases } = useCreateProductNameAlias(); const { mutate: createRecipeNameAliases } = useCreateRecipeNameAlias(); useEffect(() => { navigation.setOptions({ headerTitle: inventoryName }); - }, [inventoryId, inventoryName, navigation]); + }, [stockId, inventoryName, navigation]); useEffect(() => { if (isUpdateSuccess) { @@ -94,10 +94,18 @@ export default function StockTabScreen({ } }, [isUpdateSuccess, isUpdateError]); + console.log({ + p: route.params, + // stockId, + // productsIsSuccess, + // categorizedIsSuccess, + // recipesIsSuccess, + }); + if ( !productsIsSuccess || !categorizedIsSuccess || - !inventoryId || + !stockId || !recipesIsSuccess ) return ( @@ -127,7 +135,7 @@ export default function StockTabScreen({ onPress={() => { // necessary hack, handled by parent navigator - be cautious navigation.navigate("DocumentScannerModal" as any, { - stockId: inventoryId, + stockId: stockId, stockType, }); }} @@ -159,7 +167,7 @@ export default function StockTabScreen({ onPress={() => { // necessary hack, handled by parent navigator - be cautious navigation.navigate("BarcodeModal" as any, { - inventoryId, + inventoryId: stockId, navigateTo: "StockTab", }); }} @@ -167,8 +175,8 @@ export default function StockTabScreen({ - - + + {/* @@ -228,7 +82,9 @@ export const RecipeCard = ({ type="secondary" labelStyle={styles.minusButtonLabel} containerStyle={styles.buttonContainer} - onPress={() => setQuantity(recipeQuantity - 1)} + onPress={() => + setRecipeQuantityWithProductQuantities(recipeId)(recipeQuantity - 1) + } > - @@ -242,7 +98,7 @@ export const RecipeCard = ({ )) diff --git a/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx b/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx index 3306a531..c8df14e2 100644 --- a/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx +++ b/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx @@ -6,8 +6,12 @@ import React, { useMemo, useState, } from "react"; +import { useListInventories } from "../../../db/hooks/useListInventories"; import { useListProductRecords } from "../../../db/hooks/useListProductRecords"; import { useListRecipeRecords } from "../../../db/hooks/useListRecipeRecords"; +import { useListRecipesWithRecords } from "../../../db/hooks/useListRecipes"; +import { roundFloat } from "../../../utils"; +import { mergeRawAndScannedRecords } from "./mergeRawAndScanned"; import { ProductRecordByProductIdValue, ProductRecordsByProductId, @@ -56,13 +60,15 @@ const StockContext = createContext({ export const StockContextProvider = ({ children, - // TODO delete - stockId: inStockId, + stockId: routeStockId, }: { children: ReactNode; stockId: number | undefined; }) => { - const [stockId, setStockId] = useState(inStockId || 0); + const { data: stocks } = useListInventories(); + const latestStockId = stocks?.[0]?.id || -1; + + const [stockId, setStockId] = useState(routeStockId ?? latestStockId); const [recordsFromSalesRaport, setRecordsFromSalesRaport] = useState({}); @@ -75,11 +81,7 @@ export const StockContextProvider = ({ const [productRecords, setProductRecords] = useState({}); - // console.log(stockId); - - //@ts-ignore const { data: recipeRecordsRaw } = useListRecipeRecords(stockId); - //@ts-ignore const { data: productRecordsRaw } = useListProductRecords(stockId); // Whenever stockId or fetched data changes, update the records @@ -112,14 +114,15 @@ export const StockContextProvider = ({ : {}; setProductRecords(defaultProductRecords); - }, [stockId]); - // console.log({ stockId, recipeRecords, productRecords }); + // Reset scanner state on navigation to another stock + setRecordsFromSalesRaport({}); + setRecordsFromInvoice({}); + }, [stockId, productRecordsRaw, recipeRecordsRaw]); return ( { - const ret: ProductRecordsByProductId = JSON.parse(JSON.stringify(raw)); - - for (const product_id in invoice) { - const { quantity, price_per_unit } = invoice[product_id]; - if (product_id in ret) { - ret[product_id].quantity = ret[product_id].quantity + quantity; - ret[product_id].price_per_unit = price_per_unit; - } else { - ret[product_id] = { quantity, price_per_unit }; - } - } - - return ret; -}; - -const mergeRawAndSalesRaportRecipeRecords = ( - raw: RecipeRecordsByRecipeId, - invoice: RecipeRecordsByRecipeId -) => { - const ret: RecipeRecordsByRecipeId = JSON.parse(JSON.stringify(raw)); - - for (const recipe_id in invoice) { - const { quantity } = invoice[recipe_id]; - if (recipe_id in ret) { - ret[recipe_id].quantity = ret[recipe_id].quantity + quantity; - } else { - ret[recipe_id] = { quantity, record_id: null }; - } - } - - return ret; -}; - export const useStockContext = () => { const context = useContext(StockContext); + const { data: recipeList } = useListRecipesWithRecords(context.stockId); + const setProductRecord = ( productId: number, value: Partial @@ -198,29 +166,54 @@ export const useStockContext = () => { })); }; - const productRecords = useMemo( + // TODO: Consider doing this non destructively, similarely to scanning + const setRecipeQuantityWithProductQuantities = + (recipeId: number) => (value: number) => { + const recipe = context.recipeRecords[recipeId]; + const oldQuantity = recipe?.quantity || 0; + const delta = value - oldQuantity; + const recipeParts = recipeList?.find( + (r) => r.id === recipeId + )?.recipe_part; + if (!recipeParts || delta === 0 || value < 0) return; + + recipeParts.forEach((part) => { + const oldQuantity = + context.productRecords[part.product_id]?.quantity || 0; + const dMultiplied = roundFloat(delta * part.quantity); + const newRecordQuantity = roundFloat(oldQuantity + dMultiplied); + + setProductRecord(part.product_id, { quantity: newRecordQuantity }); + }); + + setRecipeRecord(recipeId, { quantity: value }); + return; + }; + + const { mergedProductRecords, mergedRecipeRecords } = useMemo( () => - mergeRawAndInvoiceProductRecords( - context.productRecords, - context.recordsFromInvoice - ), - [context.productRecords, context.recordsFromInvoice] - ); - - const recipeRecords = useMemo( - () => - mergeRawAndSalesRaportRecipeRecords( + mergeRawAndScannedRecords( context.recipeRecords, - context.recordsFromSalesRaport + context.recordsFromSalesRaport, + context.productRecords, + context.recordsFromInvoice, + recipeList ), - [context.recipeRecords, context.recordsFromSalesRaport] + [ + context.recipeRecords, + context.recordsFromSalesRaport, + context.productRecords, + context.recordsFromInvoice, + recipeList, + ] ); return { ...context, - productRecords, - recipeRecords, + productRecords: mergedProductRecords, + recipeRecords: mergedRecipeRecords, setProductRecord, setRecipeRecord, + setRecipeQuantityWithProductQuantities, }; }; diff --git a/native/screens/StockTabScreen/StockContext/mergeRawAndScanned.ts b/native/screens/StockTabScreen/StockContext/mergeRawAndScanned.ts new file mode 100644 index 00000000..d5cbe0fe --- /dev/null +++ b/native/screens/StockTabScreen/StockContext/mergeRawAndScanned.ts @@ -0,0 +1,71 @@ +import { roundFloat } from "../../../utils"; +import { ProductRecordsByProductId, RecipeRecordsByRecipeId } from "./types"; + +// Non-destructive merging of scanner results and raw stock data. +export const mergeRawAndScannedRecords = ( + rawRecipeRecords: RecipeRecordsByRecipeId, + scannedRecipeRecords: RecipeRecordsByRecipeId, + rawProductRecords: ProductRecordsByProductId, + scannedProductRecords: ProductRecordsByProductId, + recipeList?: { + id: number; + recipe_part: { quantity: number; product_id: number }[]; + }[] +) => { + // Deep copy raw stock data + const mergedRecipeRecords: RecipeRecordsByRecipeId = JSON.parse( + JSON.stringify(rawRecipeRecords) + ); + const mergedProductRecords: ProductRecordsByProductId = JSON.parse( + JSON.stringify(rawProductRecords) + ); + + // Merge scanned product records + for (const product_id in scannedProductRecords) { + const { quantity, price_per_unit } = scannedProductRecords[product_id]; + if (product_id in mergedProductRecords) { + mergedProductRecords[product_id].quantity = + mergedProductRecords[product_id].quantity + quantity; + mergedProductRecords[product_id].price_per_unit = price_per_unit; + } else { + mergedProductRecords[product_id] = { quantity, price_per_unit }; + } + } + + // Merge scanned recipe records + for (const recipe_id in scannedRecipeRecords) { + const { quantity } = scannedRecipeRecords[recipe_id]; + if (recipe_id in mergedRecipeRecords) { + mergedRecipeRecords[recipe_id].quantity = + mergedRecipeRecords[recipe_id].quantity + quantity; + } else { + mergedRecipeRecords[recipe_id] = { quantity, record_id: null }; + } + + // Adjust merged product records according to scanned recipe records + // + // WIP: Differentiate the behaviour based on wether in delivery or inventory mode. + // (subtract product records when in inventory mode) + const recipeParts = recipeList?.find( + (r) => r.id.toString() === recipe_id + )?.recipe_part; + if (!recipeParts || quantity === 0) break; + + recipeParts.forEach((part) => { + const product_id = part.product_id; + const dMultiplied = roundFloat(quantity * part.quantity); + if (product_id in mergedProductRecords) { + const oldQuantity = mergedProductRecords[product_id].quantity; + const newRecordQuantity = roundFloat(oldQuantity + dMultiplied); + mergedProductRecords[product_id].quantity = newRecordQuantity; + } else { + mergedProductRecords[product_id] = { + quantity: dMultiplied, + price_per_unit: null, + }; + } + }); + } + + return { mergedProductRecords, mergedRecipeRecords }; +}; diff --git a/native/screens/StockTabScreen/StockTabScreen.tsx b/native/screens/StockTabScreen/StockTabScreen.tsx index 08bcc6d7..b6793c3e 100644 --- a/native/screens/StockTabScreen/StockTabScreen.tsx +++ b/native/screens/StockTabScreen/StockTabScreen.tsx @@ -94,14 +94,6 @@ export default function StockTabScreen({ } }, [isUpdateSuccess, isUpdateError]); - console.log({ - p: route.params, - // stockId, - // productsIsSuccess, - // categorizedIsSuccess, - // recipesIsSuccess, - }); - if ( !productsIsSuccess || !categorizedIsSuccess || From 3f12c0523fcb463df839da2be6f6c84a289c5fb2 Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Thu, 29 Aug 2024 18:13:08 +0200 Subject: [PATCH 20/23] test: set up e2e tests via Maestro --- admin/src/lib/database.types.ts | 6 +- database.types.ts | 6 +- native/components/Header.tsx | 1 + native/components/Icon.tsx | 3 + native/components/Toggle.tsx | 3 +- native/components/ToggleController.tsx | 1 + native/components/common/Button.tsx | 3 + native/db/types/generated.ts | 6 +- native/maestro/README.md | 12 ++ native/maestro/add_stock1_inventory.yaml | 67 +++++++++ native/maestro/add_stock2_delivery.yaml | 27 ++++ native/maestro/add_stock3_inventory.yaml | 14 ++ native/maestro/clean_login.yaml | 16 ++ native/maestro/main.yaml | 6 + native/package.json | 1 + .../screens/IdentifyAliasesScreen/Aliases.tsx | 138 +++++++++++++----- .../ListTabScreen/ListCard/ListCardAdd.tsx | 1 + .../screens/ListTabScreen/ListTabScreen.tsx | 1 + native/screens/NewStockScreen.tsx | 6 +- .../StockContext/StockContextProvider.tsx | 2 +- .../StockContext/mergeRawAndScanned.ts | 2 +- .../screens/StockTabScreen/StockTabScreen.tsx | 40 +++-- native/screens/StockTabScreen/styles.ts | 1 + supabase/functions/_shared/database.types.ts | 6 +- .../documentAnalysisResult.mock.json | 132 ++--------------- .../documentAnalysisResult.mock.json | 15 +- supabase/seed.sql | 67 +++++---- 27 files changed, 360 insertions(+), 223 deletions(-) create mode 100644 native/maestro/README.md create mode 100644 native/maestro/add_stock1_inventory.yaml create mode 100644 native/maestro/add_stock2_delivery.yaml create mode 100644 native/maestro/add_stock3_inventory.yaml create mode 100644 native/maestro/clean_login.yaml create mode 100644 native/maestro/main.yaml diff --git a/admin/src/lib/database.types.ts b/admin/src/lib/database.types.ts index fa77f5d5..3a08cb40 100644 --- a/admin/src/lib/database.types.ts +++ b/admin/src/lib/database.types.ts @@ -354,19 +354,19 @@ export type Database = { company_id: number | null created_at: string id: number - name: string | null + name: string } Insert: { company_id?: number | null created_at?: string id?: number - name?: string | null + name: string } Update: { company_id?: number | null created_at?: string id?: number - name?: string | null + name?: string } Relationships: [ { diff --git a/database.types.ts b/database.types.ts index fa77f5d5..3a08cb40 100644 --- a/database.types.ts +++ b/database.types.ts @@ -354,19 +354,19 @@ export type Database = { company_id: number | null created_at: string id: number - name: string | null + name: string } Insert: { company_id?: number | null created_at?: string id?: number - name?: string | null + name: string } Update: { company_id?: number | null created_at?: string id?: number - name?: string | null + name?: string } Relationships: [ { diff --git a/native/components/Header.tsx b/native/components/Header.tsx index 6ff95b8c..3c39487a 100644 --- a/native/components/Header.tsx +++ b/native/components/Header.tsx @@ -73,6 +73,7 @@ export const Header = ({ route }: NativeStackHeaderProps) => { size={32} onPress={navigation.goBack} color="darkGrey" + testID="goBack" /> ) : ( diff --git a/native/components/Icon.tsx b/native/components/Icon.tsx index 5611cd1b..984bff47 100644 --- a/native/components/Icon.tsx +++ b/native/components/Icon.tsx @@ -22,6 +22,7 @@ export interface InternalIconProps { containerStyle?: StyleProp; size?: number; disabled?: boolean; + testID?: string; } export type IconProps = Omit; @@ -34,6 +35,7 @@ const Icon = ({ containerStyle, size = 16, disabled, + testID, }: InternalIconProps) => { const theme = useTheme(); return onPress ? ( @@ -42,6 +44,7 @@ const Icon = ({ style={containerStyle} disabled={disabled} activeOpacity={0.4} + testID={testID} > & { export const Toggle = forwardRef( ( - { value = true, onChange, disabled, style }: ToggleProps, + { value = true, onChange, disabled, style, testID }: ToggleProps, ref: React.Ref ) => { const theme = useTheme(); @@ -38,6 +38,7 @@ export const Toggle = forwardRef( value={value} disabled={disabled} style={style} + testID={testID} /> ); } diff --git a/native/components/ToggleController.tsx b/native/components/ToggleController.tsx index f0f85470..b3a75562 100644 --- a/native/components/ToggleController.tsx +++ b/native/components/ToggleController.tsx @@ -28,6 +28,7 @@ export const ToggleController = ({ ref={ref} onChange={onChange} value={toggleProps?.value || value} + testID={toggleProps?.testID} /> ); }; diff --git a/native/components/common/Button.tsx b/native/components/common/Button.tsx index ccb351c9..7ac6a73f 100644 --- a/native/components/common/Button.tsx +++ b/native/components/common/Button.tsx @@ -31,6 +31,7 @@ type ButtonProps = { fullWidth?: boolean; children?: React.ReactNode; isLoading?: boolean; + testID?: string; }; const BORDER_WIDTH = 2; @@ -55,6 +56,7 @@ export const Button = ({ fullWidth = false, children, isLoading = false, + testID, }: ButtonProps) => { const styles = useStyles(); const isStringChildren = typeof children === "string"; @@ -72,6 +74,7 @@ export const Button = ({ ]} disabled={disabled} activeOpacity={0.8} + testID={testID} > {isLoading ? ( diff --git a/native/db/types/generated.ts b/native/db/types/generated.ts index 20b4eea9..ba68a61a 100644 --- a/native/db/types/generated.ts +++ b/native/db/types/generated.ts @@ -354,19 +354,19 @@ export type Database = { company_id: number | null; created_at: string; id: number; - name: string | null; + name: string; }; Insert: { company_id?: number | null; created_at?: string; id?: number; - name?: string | null; + name: string; }; Update: { company_id?: number | null; created_at?: string; id?: number; - name?: string | null; + name?: string; }; Relationships: [ { diff --git a/native/maestro/README.md b/native/maestro/README.md new file mode 100644 index 00000000..88b1dcd3 --- /dev/null +++ b/native/maestro/README.md @@ -0,0 +1,12 @@ +### Prerequisites for running e2e tests +Install the `maestro` e2e tool on your system. +Clean the db with `npm run reset-db` in project root. + +For Android, have the Android Studio set up and start the app in an emulator in `./native` with `ANDROID_HOME=PATH_TO_ANDROID_SDK npm run expo -- start -a`. + +Of course, if testing edge functions, start them too. + +### Running the tests +Run with `maestro test flow_name.yaml` + +The interactive `maestro studio` can be very helpful. \ No newline at end of file diff --git a/native/maestro/add_stock1_inventory.yaml b/native/maestro/add_stock1_inventory.yaml new file mode 100644 index 00000000..43e6660c --- /dev/null +++ b/native/maestro/add_stock1_inventory.yaml @@ -0,0 +1,67 @@ +appId: app.invtrack.invtrack +--- +# Dodaj inwentaryzację +- tapOn: + id: "addNewStock" +- tapOn: + id: "toggleIsDelivery" +- assertVisible: "Inwentaryzacja" +- tapOn: "Nazwa" +- inputText: "Inw 1" +- tapOn: "Dodaj" + +# Dodaj produkty +- scrollUntilVisible: + element: + text: "Podstawowe" +- tapOn: "Podstawowe" +- scrollUntilVisible: + element: + text: "Dodatki" +- tapOn: "Dodatki" + +- tapOn: "Serwetki" +- tapOn: "+10" +- tapOn: + id: "goBack" + +- tapOn: "Mąka" +- tapOn: "+10" +- tapOn: "+10" +- tapOn: + id: "goBack" + +- tapOn: "Jajka" +- tapOn: "+10" +- tapOn: + id: "goBack" + +- tapOn: "Mleko" +- tapOn: "+10" +- tapOn: + id: "goBack" + +- scrollUntilVisible: + element: + text: "Truskawki" + +- tapOn: "Nutella" +- tapOn: "+5" +- tapOn: + id: "goBack" + +- tapOn: "Truskawki" +- tapOn: "+5" +- tapOn: + id: "goBack" + +- scrollUntilVisible: + direction: UP + element: + text: "Zapisz zmiany" +- tapOn: "Zapisz zmiany" +- assertVisible: "Zmiany zostały zapisane" +- assertNotVisible: "Zmiany zostały zapisane" +- tapOn: + id: "goBack" +- assertVisible: "Inw 1" diff --git a/native/maestro/add_stock2_delivery.yaml b/native/maestro/add_stock2_delivery.yaml new file mode 100644 index 00000000..ffe963d0 --- /dev/null +++ b/native/maestro/add_stock2_delivery.yaml @@ -0,0 +1,27 @@ +appId: app.invtrack.invtrack +--- +# Dodaj dostawę +- tapOn: + id: "addNewStock" +- assertVisible: "Dostawa" +- tapOn: "Nazwa" +- inputText: "Dost 1" +- tapOn: "Dodaj" +- tapOn: + id: "documentScanner" +- tapOn: + point: "50%,90%" +- tapOn: "Wyślij" +- tapOn: "Jajka opakowanie 10szt." +- tapOn: "Jajka" +- tapOn: "Mleko 1l" +- tapOn: "Mleko" +- tapOn: "Truskawki koszyk 565g" +- tapOn: "Truskawki" +- tapOn: "Serwetki opakowanie" +- tapOn: "Serwetki" +- tapOn: "Zapisz Zmiany" +- tapOn: "Zapisz Zmiany" +- tapOn: + id: "goBack" +- assertVisible: "Dost 1" diff --git a/native/maestro/add_stock3_inventory.yaml b/native/maestro/add_stock3_inventory.yaml new file mode 100644 index 00000000..8a2b8e5f --- /dev/null +++ b/native/maestro/add_stock3_inventory.yaml @@ -0,0 +1,14 @@ +appId: app.invtrack.invtrack +--- +# Dodaj dostawę +- tapOn: + id: "addNewStock" +- tapOn: + id: "toggleIsDelivery" +- assertVisible: "Inwentaryzacja" +- tapOn: "Nazwa" +- inputText: "Inw 2" +- tapOn: "Dodaj" +- tapOn: + id: "goBack" +- assertVisible: "Inw 2" diff --git a/native/maestro/clean_login.yaml b/native/maestro/clean_login.yaml new file mode 100644 index 00000000..d33ef07c --- /dev/null +++ b/native/maestro/clean_login.yaml @@ -0,0 +1,16 @@ +appId: app.invtrack.invtrack +--- +- launchApp: + clearState: true +- tapOn: + text: .*^http.* +- tapOn: "Continue" +- tapOn: + point: "50%,15%" +- tapOn: "Zaloguj się" +- tapOn: "E-mail" +- inputText: "adam@example.com" +- tapOn: "Hasło" +- inputText: "aaaaaa" +- tapOn: "Zaloguj się" +- assertNotVisible: "Zaloguj się" diff --git a/native/maestro/main.yaml b/native/maestro/main.yaml new file mode 100644 index 00000000..4111c6b5 --- /dev/null +++ b/native/maestro/main.yaml @@ -0,0 +1,6 @@ +appId: app.invtrack.invtrack +--- +- runFlow: "clean_login.yaml" +- runFlow: "add_stock1_inventory.yaml" +- runFlow: "add_stock2_delivery.yaml" +- runFlow: "add_stock3_inventory.yaml" diff --git a/native/package.json b/native/package.json index 7ff3b269..eda80cd4 100644 --- a/native/package.json +++ b/native/package.json @@ -6,6 +6,7 @@ "android": "expo run:android", "ios": "expo run:ios", "web": "expo start --web", + "expo": "expo", "prepare": "cd .. && husky install", "precommit": "lint-staged", "lint": "eslint --fix --cache", diff --git a/native/screens/IdentifyAliasesScreen/Aliases.tsx b/native/screens/IdentifyAliasesScreen/Aliases.tsx index dae9d54b..7948e92f 100644 --- a/native/screens/IdentifyAliasesScreen/Aliases.tsx +++ b/native/screens/IdentifyAliasesScreen/Aliases.tsx @@ -33,45 +33,74 @@ const setAlias = ( setValue: UseFormSetValue, getValues: UseFormGetValues, - showInfo: ReturnType["showInfo"] + showInfo: ReturnType["showInfo"], + entityType: "product" | "recipe" ) => - (product_id: string, alias: string) => { - const productAliases = getValues(`productAliases.${product_id}`); - - if (aliasSet.has(alias)) { - const entireFormValues = getValues(); - for (const product_id in entireFormValues) { - if ( - entireFormValues.productAliases[product_id]?.some( - (usedAlias) => usedAlias === alias - ) - ) { - setValue(`productAliases.${product_id}`, [ - ...(productAliases?.filter((ua) => ua === alias) || []), - alias, - ]); - showInfo("Alias został już ustalony dla innego produktu, nadpisano."); - return void this; + (entityId: string, alias: string) => { + if (entityType === "product") { + const productAliases = getValues(`productAliases.${entityId}`); + if (aliasSet.has(alias)) { + const entireFormValues = getValues(); + for (const product_id in entireFormValues) { + if ( + entireFormValues.productAliases[product_id]?.some( + (usedAlias) => usedAlias === alias + ) + ) { + setValue(`productAliases.${product_id}`, [ + ...(productAliases?.filter((ua) => ua === alias) || []), + alias, + ]); + showInfo( + "Alias został już ustalony dla innego produktu, nadpisano." + ); + return void this; + } } + return void this; } - return void this; + setValue(`productAliases.${entityId}`, [ + ...(productAliases || []), + alias, + ]); + aliasSet.add(alias); + setValue("usedAliases", [...aliasSet]); + } else if (entityType === "recipe") { + const recipeAliases = getValues(`recipeAliases.${entityId}`); + if (aliasSet.has(alias)) { + const entireFormValues = getValues(); + for (const recipe_id in entireFormValues) { + if ( + entireFormValues.recipeAliases[recipe_id]?.some( + (usedAlias) => usedAlias === alias + ) + ) { + setValue(`recipeAliases.${recipe_id}`, [ + ...(recipeAliases?.filter((ua) => ua === alias) || []), + alias, + ]); + showInfo( + "Alias został już ustalony dla innego produktu, nadpisano." + ); + return void this; + } + } + return void this; + } + setValue(`recipeAliases.${entityId}`, [...(recipeAliases || []), alias]); + aliasSet.add(alias); + setValue("usedAliases", [...aliasSet]); } - setValue(`productAliases.${product_id}`, [ - ...(productAliases || []), - alias, - ]); - aliasSet.add(alias); - setValue("usedAliases", [...aliasSet]); }; -const getNewMatched = ( +// TODO merge these two +const getNewMatchedProducts = ( documentResponse: ProcessInvoiceResponse, productAliases: AliasForm["productAliases"], products: { id: number }[] ) => { if (!documentResponse) return null; let newMatched: ProductRecordsByProductId = {}; - // const productAliases = getValues(`productAliases`); for (const row of documentResponse.unmatchedRows) { const { price_per_unit, quantity, name } = row; @@ -92,7 +121,34 @@ const getNewMatched = ( }; } return newMatched; - // navigation.goBack(); +}; + +const getNewMatchedRecipes = ( + documentResponse: ProcessSalesRaportResponse, + recipeAliases: AliasForm["recipeAliases"], + recipes: { id: number }[] +) => { + if (!documentResponse) return null; + let newMatched: RecipeRecordsByRecipeId = {}; + + for (const row of documentResponse.unmatchedRows) { + const { quantity, name } = row; + + const recipe_id = Object.entries(recipeAliases).find( + ([_, aliases]) => !!aliases?.find((alias) => alias === name) + )?.[0]; + + if (!recipe_id) continue; + + const recipe = recipes?.find((p) => p.id === parseInt(recipe_id)); + if (!recipe || !recipe.id) continue; + + newMatched[recipe.id] = { + quantity, + record_id: null, + }; + } + return newMatched; }; export const IdentifyAliasesComponent = ({ @@ -162,7 +218,7 @@ export const IdentifyAliasesComponent = ({ (data) => { // WIP if (stockType === "delivery" && products && documentResponse) { - const newMatchedProducts = getNewMatched( + const newMatchedProducts = getNewMatchedProducts( documentResponse, data.productAliases, products @@ -184,19 +240,19 @@ export const IdentifyAliasesComponent = ({ aliasForm: getValues(), }); } - if (stockType === "inventory" && products && documentResponse) { - // const newMatchedProducts = getNewMatched( - // documentResponse, - // data.productAliases, - // products - // ); + if (stockType === "inventory" && recipes && documentResponse) { + const newMatchedRecipes = getNewMatchedRecipes( + documentResponse, + data.recipeAliases, + recipes + ); const merged: RecipeRecordsByRecipeId = { ...documentResponse.matchedRecipieRecords, ...documentResponse.matchedRecipiesNotInInventory, // order is important, newMatchedProducts should be last, because it is the result of the user selection // or is it? - // ...newMatchedProducts, + ...newMatchedRecipes, }; // "necessery hack"? idk how navigation works @@ -280,10 +336,16 @@ export const IdentifyAliasesComponent = ({ onPress={() => openBottomSheet(() => ( )) } diff --git a/native/screens/ListTabScreen/ListCard/ListCardAdd.tsx b/native/screens/ListTabScreen/ListCard/ListCardAdd.tsx index 627f376b..3c438772 100644 --- a/native/screens/ListTabScreen/ListCard/ListCardAdd.tsx +++ b/native/screens/ListTabScreen/ListCard/ListCardAdd.tsx @@ -19,6 +19,7 @@ export const ListCardAdd = () => { onPress={() => { navigation.navigate("NewStockScreen"); }} + testID="addNewStock" > diff --git a/native/screens/ListTabScreen/ListTabScreen.tsx b/native/screens/ListTabScreen/ListTabScreen.tsx index afbc78de..24231a80 100644 --- a/native/screens/ListTabScreen/ListTabScreen.tsx +++ b/native/screens/ListTabScreen/ListTabScreen.tsx @@ -113,6 +113,7 @@ export const ListTab = ({ navigation }: ListTabScreenProps) => { onPress={() => { navigation.navigate("NewStockScreen" as any); }} + testID="addNewStock" > Dodaj pierwszy wpis! diff --git a/native/screens/NewStockScreen.tsx b/native/screens/NewStockScreen.tsx index 22433564..1c41b467 100644 --- a/native/screens/NewStockScreen.tsx +++ b/native/screens/NewStockScreen.tsx @@ -102,7 +102,11 @@ export function NewStockScreen({ navigation }: NewStockScreenProps) { marginBottom: isAndroid ? 0 : 16, }} > - + { const oldQuantity = context.productRecords[part.product_id]?.quantity || 0; const dMultiplied = roundFloat(delta * part.quantity); - const newRecordQuantity = roundFloat(oldQuantity + dMultiplied); + const newRecordQuantity = roundFloat(oldQuantity - dMultiplied); setProductRecord(part.product_id, { quantity: newRecordQuantity }); }); diff --git a/native/screens/StockTabScreen/StockContext/mergeRawAndScanned.ts b/native/screens/StockTabScreen/StockContext/mergeRawAndScanned.ts index d5cbe0fe..50f9b69b 100644 --- a/native/screens/StockTabScreen/StockContext/mergeRawAndScanned.ts +++ b/native/screens/StockTabScreen/StockContext/mergeRawAndScanned.ts @@ -56,7 +56,7 @@ export const mergeRawAndScannedRecords = ( const dMultiplied = roundFloat(quantity * part.quantity); if (product_id in mergedProductRecords) { const oldQuantity = mergedProductRecords[product_id].quantity; - const newRecordQuantity = roundFloat(oldQuantity + dMultiplied); + const newRecordQuantity = roundFloat(oldQuantity - dMultiplied); mergedProductRecords[product_id].quantity = newRecordQuantity; } else { mergedProductRecords[product_id] = { diff --git a/native/screens/StockTabScreen/StockTabScreen.tsx b/native/screens/StockTabScreen/StockTabScreen.tsx index b6793c3e..271f4f1e 100644 --- a/native/screens/StockTabScreen/StockTabScreen.tsx +++ b/native/screens/StockTabScreen/StockTabScreen.tsx @@ -8,6 +8,7 @@ import { DocumentScannerIcon, ScanBarcodeIcon } from "../../components/Icon"; import { Skeleton } from "../../components/Skeleton"; import { useSnackbar } from "../../components/Snackbar/hooks"; import { Button } from "../../components/common/Button"; +import { Typography } from "../../components/common/Typography"; import { useCreateProductNameAlias } from "../../db/hooks/useCreateProductNameAlias"; import { useCreateRecipeNameAlias } from "../../db/hooks/useCreateRecipeNameAlias"; import { useGetInventoryName } from "../../db/hooks/useGetInventoryName"; @@ -131,6 +132,7 @@ export default function StockTabScreen({ stockType, }); }} + testID="documentScanner" > @@ -174,16 +176,34 @@ export default function StockTabScreen({ ? Object.keys(recordsFromInvoice).toString() : "No invoice"} */} - {recipeList?.map((recipe) => ( - - ))} + {stockType === "inventory" ? ( + <> + + Ubyło dań: + + {recipeList?.map((recipe) => ( + + ))} + + ) : null} + + Produkty: + {uncategorizedProducts?.map((product) => product && product.id ? ( marginBottom: theme.spacing * 2, height: 45, }, + sectionHeader: {}, }) ); diff --git a/supabase/functions/_shared/database.types.ts b/supabase/functions/_shared/database.types.ts index fa77f5d5..3a08cb40 100644 --- a/supabase/functions/_shared/database.types.ts +++ b/supabase/functions/_shared/database.types.ts @@ -354,19 +354,19 @@ export type Database = { company_id: number | null created_at: string id: number - name: string | null + name: string } Insert: { company_id?: number | null created_at?: string id?: number - name?: string | null + name: string } Update: { company_id?: number | null created_at?: string id?: number - name?: string | null + name?: string } Relationships: [ { diff --git a/supabase/functions/process-invoice/documentAnalysisResult.mock.json b/supabase/functions/process-invoice/documentAnalysisResult.mock.json index b3953aa2..e7a82636 100644 --- a/supabase/functions/process-invoice/documentAnalysisResult.mock.json +++ b/supabase/functions/process-invoice/documentAnalysisResult.mock.json @@ -1,132 +1,32 @@ [ { - "sanitizedName": "Gofry Emix 5kg", - "price_per_unit": 44.44, - "quantity": 17 - }, - { - "sanitizedName": "Deserowa UHT Bieruńska 33% 5 lit.", - "price_per_unit": 58.51, - "quantity": 10 - }, - { - "sanitizedName": "Nutella 825 g", - "price_per_unit": 21.85, - "quantity": 12 - }, - { - "sanitizedName": "Ananas Kostka Sandra 565g", - "price_per_unit": 5.3, - "quantity": 6 - }, - { - "sanitizedName": "Sos Czekoladowy Dijo 1kg", - "price_per_unit": 17.64, - "quantity": 1 - }, - { - "sanitizedName": "Sos Czekolada Biała Dijo 1", - "price_per_unit": 19.38, - "quantity": 1 - }, - { - "sanitizedName": "Sos Adwokatowy Dijo 1kg", - "price_per_unit": 17.24, - "quantity": 1 - }, - { - "sanitizedName": "Sos Truskawkowy Dijo 1kg", - "price_per_unit": 16.8, - "quantity": 1 - }, - { - "sanitizedName": "Sos Toffi Dijo 1kg", - "price_per_unit": 16.44, + "sanitizedName": "Mąka 1kg", + "price_per_unit": 6.44, "quantity": 5 }, { - "sanitizedName": "Sos Mix Jagodowy Dijo 1kg", - "price_per_unit": 18.13, - "quantity": 1 - }, - { - "sanitizedName": "Sos Wiśniowy Dijo 1kg", - "price_per_unit": 16.44, - "quantity": 1 - }, - { - "sanitizedName": "Sos Malinowy Dijo 1kg", - "price_per_unit": 18.13, - "quantity": 1 - }, - { - "sanitizedName": "Maliny w Żelu Prospona 3,2kg", - "price_per_unit": 107.52, - "quantity": 1 - }, - { - "sanitizedName": "Jagody w Żelu Prospona 3,2kg", - "price_per_unit": 91.2, - "quantity": 1 - }, - { - "sanitizedName": "Brzoskwinie Kostka Regularna Sandra 4250g", - "price_per_unit": 35.65, - "quantity": 2 - }, - { - "sanitizedName": "Posypka Kolorowa Dijo 1kg", - "price_per_unit": 16.39, - "quantity": 1 - }, - { - "sanitizedName": "Posypka o Smaku Kakaowym Dijo 1kg Wafle Rożek Włoski Madren(35) 546", - "price_per_unit": 3.77, - "quantity": 3 - }, - { - "sanitizedName": "Wafle Kubek Kanadyjski Duży Madren(05) 450", - "price_per_unit": 63.08, - "quantity": 2 - }, - { - "sanitizedName": "Olej Rzepakowy Uniwersalny 51", - "price_per_unit": 25.45, - "quantity": 9 - }, - { - "sanitizedName": "Brzoskwinie Połówki Sandra 820g", - "price_per_unit": 7.22, - "quantity": 4 - }, - { - "sanitizedName": "Wiśnie w Żelu Prospona 3,2kg", - "price_per_unit": 47, + "sanitizedName": "Jajka opakowanie 10szt.", + "price_per_unit": 10.51, "quantity": 5 }, { - "sanitizedName": "Wafle Kubek Kanadyjski Średni Madren(04) 450", - "price_per_unit": 59.42, - "quantity": 1 - }, - { - "sanitizedName": "Jabłko Zielone w Żelu Prospona 3,1kg", - "price_per_unit": 44.34, - "quantity": 1 + "sanitizedName": "Mleko 1l", + "price_per_unit": 4.29, + "quantity": 5 }, { - "sanitizedName": "Truskawki w Żelu Dijo 3,2kg", - "price_per_unit": 60.35, - "quantity": 1 + "sanitizedName": "Nutella 825 g", + "price_per_unit": 21.85, + "quantity": 5 }, { - "sanitizedName": "Maliny w Żelu Dijo 3,2kg", - "price_per_unit": 60.35, - "quantity": 1 + "sanitizedName": "Truskawki koszyk 565g", + "price_per_unit": 22.3, + "quantity": 5 }, { - "sanitizedName": "Mleko Mlekovita UHT 3,2% 1L", - "price_per_unit": 2.98, - "quantity": 12 + "sanitizedName": "Serwetki opakowanie", + "price_per_unit": 5.3, + "quantity": 5 } ] diff --git a/supabase/functions/process-sales-raport/documentAnalysisResult.mock.json b/supabase/functions/process-sales-raport/documentAnalysisResult.mock.json index cb3b9275..33e28f52 100644 --- a/supabase/functions/process-sales-raport/documentAnalysisResult.mock.json +++ b/supabase/functions/process-sales-raport/documentAnalysisResult.mock.json @@ -1,13 +1,6 @@ [ - { "sanitizedName": "GOFER ŚMIETANOWY", "quantity": 4 }, - { "sanitizedName": "GOFER CZEKOLADA", "quantity": 3 }, - { "sanitizedName": "FILET z DORSZA", "quantity": 3.28 }, - { "sanitizedName": "FILET Z KURCZAKA", "quantity": 2 }, - { "sanitizedName": "ŁOSOŚ Z MASŁEM CZOSNKOWYM", "quantity": 0.61 }, - { "sanitizedName": "PIECZEŃ ZKARKÓWKI", "quantity": 7 }, - { "sanitizedName": ".7up 0,2l", "quantity": 1 }, - { "sanitizedName": "APA PALE ALE", "quantity": 1 }, - { "sanitizedName": ".DESPERADOS 0% VIRGIN", "quantity": 2 }, - { "sanitizedName": "HEINEKEN 0% .HERBATA", "quantity": 4 }, - { "sanitizedName": null, "quantity": null } + { "sanitizedName": "Naleśniki z Nutellą", "quantity": 2 }, + { "sanitizedName": "Naleśniki z Truskawkami", "quantity": 2 }, + { "sanitizedName": "Omlet", "quantity": 1 }, + { "sanitizedName": "Kluski", "quantity": 1 } ] diff --git a/supabase/seed.sql b/supabase/seed.sql index d9be337d..4bac22c2 100644 --- a/supabase/seed.sql +++ b/supabase/seed.sql @@ -9,46 +9,49 @@ INSERT INTO "public"."company" ("id", "name") VALUES (2, 'Testowa lokalna'); INSERT INTO "public"."product_category" ("id", "name", "company_id", "display_order") VALUES - (1, 'Cukiernicze', 2, 0), - (2, 'Owoce', 2, 3); + (1, 'Podstawowe', 2, 0), + (2, 'Dodatki', 2, 3); INSERT INTO "public"."product" ("id", "name", "unit", "company_id", "notification_threshold", "category_id", "display_order", "deleted_at") VALUES - (11, 'Gofry Emix', 'Szt.', 2, 0, 1, 0, NULL), - (12, 'Śmietana', 'szt.', 2, 0, 1, 0, NULL), - (13, 'Ananas', 'szt.', 2, 0, 2, 0, NULL), - (14, 'Nutella', 'szt.', 2, 0, 1, 0, NULL), - (15, 'Sos Czekoladowy', 'szt.', 2, 0, 1, 0, NULL), - (16, 'Maliny w żelu', 'szt.', 2, 0, 2, 0, NULL), - (17, 'Olej rzepakowy', 'szt.', 2, 0, NULL, 0, NULL); + (11, 'Mąka', 'kg.', 2, 0, 1, 0, NULL), + (12, 'Jajka', 'szt.', 2, 0, 1, 0, NULL), + (13, 'Mleko', 'szt.', 2, 0, 1, 0, NULL), + (14, 'Nutella', 'szt.', 2, 0, 2, 0, NULL), + (15, 'Truskawki', 'szt.', 2, 0, 2, 0, NULL), + (16, 'Serwetki', 'szt.', 2, 0, NULL, 0, NULL); -INSERT INTO "public"."inventory" ("id", "name", "date", "company_id", "last_product_record_updated_at", "low_quantity_notification_sent", "is_delivery") VALUES - (1, '3 lipiec', '2024-07-03 14:35:47+00', 2, '2024-07-10 10:20:11.885395+00', false, true), - (2, '4 lipiec', '2024-07-04 14:35:47+00', 2, '2024-07-10 10:20:11.885395+00', false, false); +-- INSERT INTO "public"."inventory" ("id", "name", "date", "company_id", "last_product_record_updated_at", "low_quantity_notification_sent", "is_delivery") VALUES +-- (1, '3 lipiec', '2024-07-03 14:35:47+00', 2, '2024-07-10 10:20:11.885395+00', false, true), +-- (2, '4 lipiec', '2024-07-04 14:35:47+00', 2, '2024-07-10 10:20:11.885395+00', false, false); -DELETE FROM "public"."product_record" WHERE product_id = 13; -DELETE FROM "public"."product_record" WHERE product_id = 14; +-- DELETE FROM "public"."product_record" WHERE product_id = 13; +-- DELETE FROM "public"."product_record" WHERE product_id = 14; INSERT INTO "public"."recipe" ("id", "name", "company_id") VALUES - (21, 'Gofry ze śmietaną', 2), - (22, 'Gofry z malinami', 2), - (23, 'Gofry z nutellą i czekoladą', 2); - -INSERT INTO "public"."recipe_part" ("quantity", "product_id", "recipe_id") VALUES - (1, 11, 21), - (2, 12, 21), - (1, 11, 22), - (2, 16, 22), - (1, 11, 23), - (1, 14, 23), - (1, 15, 23); + (21, 'Naleśniki z Nutellą', 2), + (22, 'Naleśniki z Truskawkami', 2), + (23, 'Omlet', 2), + (24, 'Kluski', 2); + +INSERT INTO "public"."recipe_part" ("recipe_id", "product_id", "quantity") VALUES + (21, 11, 1), + (21, 12, 1), + (21, 13, 1), + (21, 14, 1), + (22, 11, 1), + (22, 12, 1), + (22, 13, 1), + (22, 15, 1), + (23, 12, 1), + (23, 13, 1), + (24, 11, 1), + (24, 12, 1); INSERT INTO "public"."name_alias" ("alias", "recipe_id", "product_id", "company_id") VALUES - ('Gofry Emix 5kg', NULL, 11, 2), - ('Deserowa UHT Bieruńska 33% 5 lit.', NULL, 12, 2), - ('Ananas Kostka Sandra 565g', NULL, 13, 2), - ('Nutella 825 g', NULL, 14, 2), - ('GOFER ŚMIETANOWY', 21, NULL, 2), - ('GOFER CZEKOLADA', 22, NULL, 2); + ('Mąka 1kg', NULL, 11, 2), + ('NUTELLA 825 G', NULL, 14, 2), + ('Naleśniki z Nutellą', 21, NULL, 2), + ('Omlet', 23, NULL, 2); RESET ALL; From 83524e136bb7b9e84c8fcfc576d94e5e8024c202 Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Fri, 30 Aug 2024 10:41:32 +0200 Subject: [PATCH 21/23] fix: remove warnings --- native/db/hooks/useGetInventoryName.tsx | 5 +++-- native/db/hooks/useListProductRecords.ts | 8 +++++--- native/db/hooks/useListRecipeRecords.ts | 7 ++++--- native/db/hooks/useListRecipes.ts | 6 ++++-- native/maestro/README.md | 5 ++++- .../DocumentScannerModalScreen/DocumentScanner.tsx | 3 --- .../screens/DocumentScannerModalScreen/PhotoPreview.tsx | 1 - native/screens/ListTabScreen/ListTabScreen.tsx | 8 ++++++++ .../StockTabScreen/StockContext/StockContextProvider.tsx | 6 +++--- .../StockTabScreen/StockContext/mergeRawAndScanned.ts | 3 --- native/screens/StockTabScreen/StockTabScreen.tsx | 2 +- 11 files changed, 32 insertions(+), 22 deletions(-) diff --git a/native/db/hooks/useGetInventoryName.tsx b/native/db/hooks/useGetInventoryName.tsx index 2509dbc6..842230fd 100644 --- a/native/db/hooks/useGetInventoryName.tsx +++ b/native/db/hooks/useGetInventoryName.tsx @@ -11,8 +11,9 @@ const getInventoryName = async (inventoryId: number) => { return res.data?.name ?? ""; }; -export const useGetInventoryName = (inventoryId: number) => +export const useGetInventoryName = (inventoryId?: number) => useQuery({ queryKey: ["inventoryName", inventoryId], - queryFn: async () => await getInventoryName(inventoryId), + queryFn: async () => await getInventoryName(inventoryId!), + enabled: !!inventoryId, }); diff --git a/native/db/hooks/useListProductRecords.ts b/native/db/hooks/useListProductRecords.ts index ef3c2ed2..ba85f6e4 100644 --- a/native/db/hooks/useListProductRecords.ts +++ b/native/db/hooks/useListProductRecords.ts @@ -11,9 +11,11 @@ const listRecords = async (inventoryId: number) => { if (error) throw new Error(error.message); return data; }; -export const useListProductRecords = (inventoryId: number) => { - const query = useQuery(["recordsList", inventoryId], () => - listRecords(inventoryId) +export const useListProductRecords = (stockId?: number) => { + const query = useQuery( + ["recordsList", stockId], + () => listRecords(stockId!), + { enabled: !!stockId } ); return query; }; diff --git a/native/db/hooks/useListRecipeRecords.ts b/native/db/hooks/useListRecipeRecords.ts index f0bc6827..c1b34081 100644 --- a/native/db/hooks/useListRecipeRecords.ts +++ b/native/db/hooks/useListRecipeRecords.ts @@ -10,15 +10,16 @@ const listRecipeRecords = async (inventoryId: number) => { if (error) throw new Error(error.message); return data; }; -export const useListRecipeRecords = (inventoryId: number) => { +export const useListRecipeRecords = (stockId?: number) => { const queryClient = useQueryClient(); const query = useQuery({ - queryKey: ["recipeRecordsList", inventoryId], - queryFn: () => listRecipeRecords(inventoryId), + queryKey: ["recipeRecordsList", stockId], + queryFn: () => listRecipeRecords(stockId!), onSuccess: () => queryClient.invalidateQueries({ queryKey: ["recipeRecord"], }), + enabled: !!stockId, }); return query; }; diff --git a/native/db/hooks/useListRecipes.ts b/native/db/hooks/useListRecipes.ts index 11a6c0d2..44e4d44d 100644 --- a/native/db/hooks/useListRecipes.ts +++ b/native/db/hooks/useListRecipes.ts @@ -29,6 +29,8 @@ export const useListRecipes = () => { return useQuery(["recipeList"], () => listAllRecipes()); }; -export const useListRecipesWithRecords = (stockId: number) => { - return useQuery(["recipeList", stockId], () => listRecipesOfStock(stockId)); +export const useListRecipesWithRecords = (stockId?: number) => { + return useQuery(["recipeList", stockId], () => listRecipesOfStock(stockId!), { + enabled: !!stockId, + }); }; diff --git a/native/maestro/README.md b/native/maestro/README.md index 88b1dcd3..f5333a31 100644 --- a/native/maestro/README.md +++ b/native/maestro/README.md @@ -1,12 +1,15 @@ ### Prerequisites for running e2e tests + + Install the `maestro` e2e tool on your system. Clean the db with `npm run reset-db` in project root. For Android, have the Android Studio set up and start the app in an emulator in `./native` with `ANDROID_HOME=PATH_TO_ANDROID_SDK npm run expo -- start -a`. -Of course, if testing edge functions, start them too. +Of course, if testing edge functions, start them too. Remember to run then in test mode to avoid api calls. ### Running the tests + Run with `maestro test flow_name.yaml` The interactive `maestro studio` can be very helpful. \ No newline at end of file diff --git a/native/screens/DocumentScannerModalScreen/DocumentScanner.tsx b/native/screens/DocumentScannerModalScreen/DocumentScanner.tsx index ff754c98..1db07e25 100644 --- a/native/screens/DocumentScannerModalScreen/DocumentScanner.tsx +++ b/native/screens/DocumentScannerModalScreen/DocumentScanner.tsx @@ -37,9 +37,6 @@ export const DocumentScanner = ({ isPreviewShown: !s.isPreviewShown, isTakingPhoto: false, })); - // dispatch(documentScannerAction.PHOTO_TAKE({ photo })); - // dispatch(documentScannerAction.SWITCH_PREVIEW()); - // dispatch(documentScannerAction.PHOTO_END()); return; }; diff --git a/native/screens/DocumentScannerModalScreen/PhotoPreview.tsx b/native/screens/DocumentScannerModalScreen/PhotoPreview.tsx index 98e949e5..8c26ed1a 100644 --- a/native/screens/DocumentScannerModalScreen/PhotoPreview.tsx +++ b/native/screens/DocumentScannerModalScreen/PhotoPreview.tsx @@ -54,7 +54,6 @@ export const PhotoPreview = ({ photo: null, isPreviewShown: false, })) - // () => dispatch(documentScannerAction.PHOTO_RETAKE()) } size="s" type="primary" diff --git a/native/screens/ListTabScreen/ListTabScreen.tsx b/native/screens/ListTabScreen/ListTabScreen.tsx index 24231a80..5bcc8a9f 100644 --- a/native/screens/ListTabScreen/ListTabScreen.tsx +++ b/native/screens/ListTabScreen/ListTabScreen.tsx @@ -35,6 +35,7 @@ const groupByDay = (data: ReturnType["data"]) => { if (!data) return null; const days: { [key: string]: typeof data } = {}; data.forEach((item) => { + if (!item || !item.date) return; const day = new Date(item.date).toLocaleString("pl-PL", { day: "numeric", month: "numeric", @@ -121,6 +122,13 @@ export const ListTab = ({ navigation }: ListTabScreenProps) => { ); } + console.log( + months.map(([mn, days]) => + days.map(([dn, invs]) => + invs.map((i) => mn + " " + dn + " " + (i?.id?.toString() || "und")) + ) + ) + ); return ( >; + stockId?: number; + setStockId: React.Dispatch>; // stockType: "inventory" | "delivery"; setProductRecords: React.Dispatch< React.SetStateAction @@ -66,7 +66,7 @@ export const StockContextProvider = ({ stockId: number | undefined; }) => { const { data: stocks } = useListInventories(); - const latestStockId = stocks?.[0]?.id || -1; + const latestStockId = stocks?.[0]?.id; const [stockId, setStockId] = useState(routeStockId ?? latestStockId); diff --git a/native/screens/StockTabScreen/StockContext/mergeRawAndScanned.ts b/native/screens/StockTabScreen/StockContext/mergeRawAndScanned.ts index 50f9b69b..0dec9d5d 100644 --- a/native/screens/StockTabScreen/StockContext/mergeRawAndScanned.ts +++ b/native/screens/StockTabScreen/StockContext/mergeRawAndScanned.ts @@ -43,9 +43,6 @@ export const mergeRawAndScannedRecords = ( } // Adjust merged product records according to scanned recipe records - // - // WIP: Differentiate the behaviour based on wether in delivery or inventory mode. - // (subtract product records when in inventory mode) const recipeParts = recipeList?.find( (r) => r.id.toString() === recipe_id )?.recipe_part; diff --git a/native/screens/StockTabScreen/StockTabScreen.tsx b/native/screens/StockTabScreen/StockTabScreen.tsx index 271f4f1e..69fd6fd4 100644 --- a/native/screens/StockTabScreen/StockTabScreen.tsx +++ b/native/screens/StockTabScreen/StockTabScreen.tsx @@ -39,7 +39,7 @@ export default function StockTabScreen({ // const { showError, showInfo, showSuccess } = useSnackbar(); const { showError, showSuccess } = useSnackbar(); - const { data: inventoryName } = useGetInventoryName(+stockId); + const { data: inventoryName } = useGetInventoryName(stockId); const { productRecords, From 0f66b887b615190a0f5006169e07fd741653f28b Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Fri, 30 Aug 2024 16:42:25 +0200 Subject: [PATCH 22/23] fix: dark background on loading --- native/maestro/README.md | 3 +- native/maestro/add_stock3_inventory.yaml | 15 ++++++-- native/navigation/BottomTabNavigation.tsx | 2 +- .../screens/ListTabScreen/ListTabScreen.tsx | 7 ---- .../screens/StockTabScreen/StockTabScreen.tsx | 2 +- native/screens/StockTabScreen/styles.ts | 4 +++ .../documentAnalysisResult.mock.json | 8 ++--- .../documentAnalysisResult.original.json | 34 +++++++++++++++++++ supabase/seed.sql | 8 ++--- 9 files changed, 62 insertions(+), 21 deletions(-) create mode 100644 supabase/functions/process-sales-raport/documentAnalysisResult.original.json diff --git a/native/maestro/README.md b/native/maestro/README.md index f5333a31..881a1358 100644 --- a/native/maestro/README.md +++ b/native/maestro/README.md @@ -1,6 +1,5 @@ ### Prerequisites for running e2e tests - Install the `maestro` e2e tool on your system. Clean the db with `npm run reset-db` in project root. @@ -12,4 +11,4 @@ Of course, if testing edge functions, start them too. Remember to run then in te Run with `maestro test flow_name.yaml` -The interactive `maestro studio` can be very helpful. \ No newline at end of file +The interactive `maestro studio` can be very helpful. diff --git a/native/maestro/add_stock3_inventory.yaml b/native/maestro/add_stock3_inventory.yaml index 8a2b8e5f..2c876fe4 100644 --- a/native/maestro/add_stock3_inventory.yaml +++ b/native/maestro/add_stock3_inventory.yaml @@ -9,6 +9,17 @@ appId: app.invtrack.invtrack - tapOn: "Nazwa" - inputText: "Inw 2" - tapOn: "Dodaj" + - tapOn: - id: "goBack" -- assertVisible: "Inw 2" + id: "documentScanner" +- tapOn: + point: "50%,90%" +- tapOn: "Wyślij" + +- tapOn: "Naleśniki Truskawkowe" +- tapOn: "Naleśniki z Truskawkami" +- tapOn: "Kluski knedle" +- tapOn: "Kluski" +# - tapOn: +# id: "goBack" +# - assertVisible: "Inw 2" diff --git a/native/navigation/BottomTabNavigation.tsx b/native/navigation/BottomTabNavigation.tsx index 60d5c8ca..488ea4e6 100644 --- a/native/navigation/BottomTabNavigation.tsx +++ b/native/navigation/BottomTabNavigation.tsx @@ -159,7 +159,7 @@ export const BottomTabNavigation = ({}: BottomTabProps) => { component={StockStackNavigator} options={{ // VISUAL - title: "Stock", + title: "Wpis", tabBarShowLabel: false, tabBarActiveTintColor: theme.colors.highlight, // VISUAL diff --git a/native/screens/ListTabScreen/ListTabScreen.tsx b/native/screens/ListTabScreen/ListTabScreen.tsx index 5bcc8a9f..95306efa 100644 --- a/native/screens/ListTabScreen/ListTabScreen.tsx +++ b/native/screens/ListTabScreen/ListTabScreen.tsx @@ -122,13 +122,6 @@ export const ListTab = ({ navigation }: ListTabScreenProps) => { ); } - console.log( - months.map(([mn, days]) => - days.map(([dn, invs]) => - invs.map((i) => mn + " " + dn + " " + (i?.id?.toString() || "und")) - ) - ) - ); return ( + diff --git a/native/screens/StockTabScreen/styles.ts b/native/screens/StockTabScreen/styles.ts index b767d759..4465aa59 100644 --- a/native/screens/StockTabScreen/styles.ts +++ b/native/screens/StockTabScreen/styles.ts @@ -3,6 +3,10 @@ import { createStyles } from "../../theme/useStyles"; export const useStockTabStyles = createStyles((theme) => StyleSheet.create({ + screen: { + backgroundColor: theme.colors.darkBlue, + height: "100%", + }, container: { backgroundColor: theme.colors.darkBlue, }, diff --git a/supabase/functions/process-sales-raport/documentAnalysisResult.mock.json b/supabase/functions/process-sales-raport/documentAnalysisResult.mock.json index 33e28f52..ae3a6021 100644 --- a/supabase/functions/process-sales-raport/documentAnalysisResult.mock.json +++ b/supabase/functions/process-sales-raport/documentAnalysisResult.mock.json @@ -1,6 +1,6 @@ [ - { "sanitizedName": "Naleśniki z Nutellą", "quantity": 2 }, - { "sanitizedName": "Naleśniki z Truskawkami", "quantity": 2 }, - { "sanitizedName": "Omlet", "quantity": 1 }, - { "sanitizedName": "Kluski", "quantity": 1 } + { "sanitizedName": "Naleśniki Czekoladowe", "quantity": 2 }, + { "sanitizedName": "Naleśniki Truskawkowe", "quantity": 2 }, + { "sanitizedName": "Omlet jajeczny", "quantity": 1 }, + { "sanitizedName": "Kluski knedle", "quantity": 1 } ] diff --git a/supabase/functions/process-sales-raport/documentAnalysisResult.original.json b/supabase/functions/process-sales-raport/documentAnalysisResult.original.json new file mode 100644 index 00000000..1481fc17 --- /dev/null +++ b/supabase/functions/process-sales-raport/documentAnalysisResult.original.json @@ -0,0 +1,34 @@ +[ + { "sanitizedName": "DORSZ ZESTAW", "quantity": 19 }, + { "sanitizedName": "FILET z DORSZA", "quantity": 3.28 }, + { "sanitizedName": "FILET Z KURCZAKA", "quantity": 2 }, + { "sanitizedName": "FRYTKI", "quantity": 23 }, + { "sanitizedName": "GOLONKA PO BAWARSKU", "quantity": 2.19 }, + { "sanitizedName": "GULASZ WIEPRZOWY", "quantity": 10 }, + { "sanitizedName": "HALIBUT", "quantity": 0.69 }, + { "sanitizedName": "KOTLET CHŁOP", "quantity": 46 }, + { "sanitizedName": "KOTLET DE VOLAILLE", "quantity": 41 }, + { "sanitizedName": "KAPUSTA ZASMAZANA", "quantity": 5 }, + { "sanitizedName": "MASŁO CZOSNKOWE", "quantity": 2 }, + { "sanitizedName": "PIERŚ Z KURCZAKA", "quantity": 9 }, + { "sanitizedName": "PLACEK PO CYGAŃSKU", "quantity": 25 }, + { "sanitizedName": "SANDACZ Z MASŁEM CZOSNKOWYM", "quantity": 2.04 }, + { "sanitizedName": "SCHAB PANIEROWANY", "quantity": null }, + { "sanitizedName": "SOS CHRZANOWY", "quantity": 1 }, + { "sanitizedName": "SOS CZOSNKOWY", "quantity": 5 }, + { "sanitizedName": "TURBOT Z MASŁEM CZOSNKOWYM", "quantity": 2.63 }, + { "sanitizedName": "ZUPA FLAKI WOŁOWE", "quantity": 10 }, + { "sanitizedName": "ZUPA KAPUŚNIAK", "quantity": 4 }, + { "sanitizedName": "ZUPA ROSÓŁ", "quantity": 19 }, + { "sanitizedName": "ZUPA ŻUREK W MISCE", "quantity": 21 }, + { "sanitizedName": "ZESTAW SURÓWEK", "quantity": 30 }, + { "sanitizedName": "ZIEMNIAKI Z PIECA", "quantity": 6 }, + { "sanitizedName": "ZIEMNIAKI Z WODY", "quantity": 6 }, + { "sanitizedName": "ŁOSOŚ Z MASŁEM CZOSNKOWYM", "quantity": 0.61 }, + { "sanitizedName": "PIECZEŃ ZKARKÓWKI", "quantity": 7 }, + { "sanitizedName": ".7up 0,2l", "quantity": 1 }, + { "sanitizedName": "APA PALE ALE", "quantity": 1 }, + { "sanitizedName": ".DESPERADOS 0% VIRGIN", "quantity": 2 }, + { "sanitizedName": "HEINEKEN 0% .HERBATA", "quantity": 4 }, + { "sanitizedName": null, "quantity": null } +] diff --git a/supabase/seed.sql b/supabase/seed.sql index 4bac22c2..ee43e6cd 100644 --- a/supabase/seed.sql +++ b/supabase/seed.sql @@ -48,10 +48,10 @@ INSERT INTO "public"."recipe_part" ("recipe_id", "product_id", "quantity") VALUE (24, 12, 1); INSERT INTO "public"."name_alias" ("alias", "recipe_id", "product_id", "company_id") VALUES - ('Mąka 1kg', NULL, 11, 2), - ('NUTELLA 825 G', NULL, 14, 2), - ('Naleśniki z Nutellą', 21, NULL, 2), - ('Omlet', 23, NULL, 2); + ('Mąka 1kg', NULL, 11, 2), + ('NUTELLA 825 G', NULL, 14, 2), + ('Naleśniki Czekoladowe', 21, NULL, 2), + ('Omlet jajeczny', 23, NULL, 2); RESET ALL; From 2a9298bae9bfafa0bd68a20f260941ece261e46f Mon Sep 17 00:00:00 2001 From: Felix Lipski Date: Tue, 24 Sep 2024 15:55:21 +0200 Subject: [PATCH 23/23] documents rework wip --- native/components/Collapsible/Collapsible.tsx | 4 +- native/db/hooks/useListProductRecordIds.ts | 30 --- native/db/hooks/useRecordPanel.tsx | 9 +- .../DocumentScannerModalScreen.tsx | 30 ++- native/screens/RecordScreen/index.tsx | 7 +- .../StockTabScreen/IDListCard/IDListCard.tsx | 86 +++++++- native/screens/StockTabScreen/RecipeCard.tsx | 2 +- .../StockContext/StockContextProvider.tsx | 205 +++++++++--------- .../StockContext/mergeRawAndScanned.ts | 34 ++- .../screens/StockTabScreen/StockTabScreen.tsx | 147 ++++++++----- .../StockTabScreen/useProductRecords.ts | 8 + native/utils/useRecordPagination.tsx | 39 +++- 12 files changed, 387 insertions(+), 214 deletions(-) delete mode 100644 native/db/hooks/useListProductRecordIds.ts diff --git a/native/components/Collapsible/Collapsible.tsx b/native/components/Collapsible/Collapsible.tsx index cde1c15f..97e19154 100644 --- a/native/components/Collapsible/Collapsible.tsx +++ b/native/components/Collapsible/Collapsible.tsx @@ -84,8 +84,8 @@ const useStyles = createStyles((theme) => width: "100%", height: "100%", backgroundColor: theme.colors.darkBlue, - padding: theme.spacing * 2, - marginBottom: theme.spacing * 40, + // padding: theme.spacing * 2, + // marginBottom: theme.spacing * 40, }, bottomPadding: { paddingBottom: theme.spacing * 8, diff --git a/native/db/hooks/useListProductRecordIds.ts b/native/db/hooks/useListProductRecordIds.ts deleted file mode 100644 index 8c0997c7..00000000 --- a/native/db/hooks/useListProductRecordIds.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { useMemo } from "react"; -import { useListProductRecords } from "./useListProductRecords"; - -const getIds = ( - uncategorizedRecordList: ReturnType["data"] -) => - [ - ...(uncategorizedRecordList?.map((uncategorizedRecord) => ({ - id: uncategorizedRecord?.id, - product_id: uncategorizedRecord?.product_id, - })) || []), - ] as { - id: number; - product_id: number; - }[]; - -export const useListProductRecordIds = ( - inventoryId: number -): { - data: { - id: number; - product_id: number; - }[]; -} => { - const { data: records } = useListProductRecords(inventoryId); - const ids = useMemo(() => getIds(records), [inventoryId, records]); - return { - data: ids, - }; -}; diff --git a/native/db/hooks/useRecordPanel.tsx b/native/db/hooks/useRecordPanel.tsx index 4763f877..97e772b6 100644 --- a/native/db/hooks/useRecordPanel.tsx +++ b/native/db/hooks/useRecordPanel.tsx @@ -15,8 +15,7 @@ export const useRecordPanel = ({ inventoryId: number; productId: number; }) => { - const { productRecords, setProductRecords, setProductRecord } = - useStockContext(); + const { productRecords, setProductRecord } = useStockContext(); const { quantity, price_per_unit } = productRecords[productId]; const productResult = useGetProduct(productId); @@ -29,7 +28,7 @@ export const useRecordPanel = ({ setProductRecord(productId, { quantity: roundedQuantity }); return; }, - [setProductRecords, productId, quantity] + [setProductRecord, productId, quantity] ); const setPrice = useCallback( @@ -39,7 +38,7 @@ export const useRecordPanel = ({ setProductRecord(productId, { price_per_unit: roundedPrice }); return; }, - [setProductRecords, productId, price_per_unit] + [setProductRecord, productId, price_per_unit] ); const stepperFunction = useCallback( @@ -56,7 +55,7 @@ export const useRecordPanel = ({ }, step, } as const), - [quantity, productId, setProductRecords] + [quantity, productId, setProductRecord] ); if (!isSuccess || !product || !product.steps) diff --git a/native/screens/DocumentScannerModalScreen/DocumentScannerModalScreen.tsx b/native/screens/DocumentScannerModalScreen/DocumentScannerModalScreen.tsx index a701c677..0d1ae230 100644 --- a/native/screens/DocumentScannerModalScreen/DocumentScannerModalScreen.tsx +++ b/native/screens/DocumentScannerModalScreen/DocumentScannerModalScreen.tsx @@ -57,13 +57,29 @@ export const DocumentScannerModalScreen = ({ return; } if (processedInvoice != null) - if (stockId && !isEmpty(processedInvoice?.unmatchedRows)) { - navigation.replace("IdentifyAliasesScreen", { - stockId, - processedInvoice, - processedSalesReport: null, - stockType, - }); + if (stockId) { + if (!isEmpty(processedInvoice?.unmatchedRows)) { + navigation.replace("IdentifyAliasesScreen", { + stockId, + processedInvoice, + processedSalesReport: null, + stockType, + }); + } else { + navigation.navigate("StockTabScreen" as any, { + id: stockId, + stockType, + recordsFromInvoice: processedInvoice.matchedProductRecords, + processedSalesReport: null, + // aliasForm: getValues(), + }); + // navigation.replace("StockTabScreen", { + // stockId, + // processedInvoice, + // processedSalesReport: null, + // stockType, + // }); + } } else { navigation.goBack(); } diff --git a/native/screens/RecordScreen/index.tsx b/native/screens/RecordScreen/index.tsx index 49bb5018..17d87389 100644 --- a/native/screens/RecordScreen/index.tsx +++ b/native/screens/RecordScreen/index.tsx @@ -11,7 +11,6 @@ import { import { Button } from "../../components/common/Button"; import { Typography } from "../../components/common/Typography"; import { useRecordPanel } from "../../db"; -import { useListProductRecordIds } from "../../db/hooks/useListProductRecordIds"; import { createStyles } from "../../theme/useStyles"; import { NativeStackScreenProps } from "@react-navigation/native-stack"; @@ -117,8 +116,6 @@ export function RecordScreen({ route, navigation }: RecordScreenProps) { const product = productResult?.data; const { data: inventoryName } = useGetInventoryName(+inventoryId); - const { data: recordIds } = useListProductRecordIds(inventoryId); - // const { data: productRecords } = useListProductRecords(inventoryId); const { data: previousQuantity } = useGetPreviousRecordQuantity( inventoryId, product?.id @@ -128,8 +125,8 @@ export function RecordScreen({ route, navigation }: RecordScreenProps) { // TODO: after removing recordId here, it can probably be removed from everywhere // else in the form, for example in the IDListCard, etc. const { isFirst, isLast, nextRecord, prevRecord } = useRecordPagination( - recordId, - recordIds + inventoryId, + recordId ); const { openBottomSheet, closeBottomSheet } = useBottomSheet(); diff --git a/native/screens/StockTabScreen/IDListCard/IDListCard.tsx b/native/screens/StockTabScreen/IDListCard/IDListCard.tsx index b99c550d..21018ecd 100644 --- a/native/screens/StockTabScreen/IDListCard/IDListCard.tsx +++ b/native/screens/StockTabScreen/IDListCard/IDListCard.tsx @@ -18,6 +18,7 @@ type IDListCardProps = { productId: number; inventoryId: number; quantity: number | null; + documents: (number | null)[]; unit: string; borderLeft?: boolean; borderRight?: boolean; @@ -45,6 +46,7 @@ export const IDListCard = ({ productId, inventoryId, quantity, + documents, unit, borderLeft = false, borderRight = false, @@ -59,6 +61,8 @@ export const IDListCard = ({ ); const stock = useStockContext(); + const documentsLength = documents.length; + if (!name) { return null; } @@ -87,8 +91,6 @@ export const IDListCard = ({ style={styles.card} padding="none" onPress={() => - // bypass screen type check, handled by either (Inventory || Delivery)TabScreen navigator, - // no need to specify, as they both contain the Record route, with these params navigation.navigate("RecordScreen", { recordId, productId, @@ -105,12 +107,32 @@ export const IDListCard = ({ > {name} + {documentsLength > 0 ? ( + + {quantity === null ? "..." : quantity} + + ) : null} + {documents.map((q) => ( + + {q === null ? "" : q} + + ))} - {(quantity === null ? "..." : quantity) + " " + unit} + {documents.reduce((x, a) => (x || 0) + (a || 0), quantity || 0) + + " " + + unit} {/* TODO - to be refined */} ); }; + +export const IDListCardHeader = ({ documents }: { documents: any[] }) => { + const styles = useStyles(); + + const documentsLength = documents.length; + + return ( + <> + + + + Nazwa + + {documentsLength > 0 ? ( + + Ilość + + ) : null} + {documents.map((_, i) => ( + + Dok. {i + 1} + + ))} + + {documentsLength > 0 ? "Suma" : "Ilość"} + + + + + ); +}; + const useStyles = createStyles((theme) => StyleSheet.create({ borderLeft: { @@ -147,14 +219,16 @@ const useStyles = createStyles((theme) => justifyContent: "space-between", paddingLeft: theme.spacing * 2, paddingRight: theme.spacing * 2, - marginBottom: theme.spacing, - marginTop: theme.spacing, + marginBottom: 2, + marginTop: 2, height: 45, borderRadius: theme.borderRadiusSmall, }, - textLeft: { flex: 1 }, + textLeft: { flex: 2 }, textRight: { + flex: 1, marginLeft: theme.spacing, + textAlign: "center", }, previousQuantityBadge: { position: "absolute", diff --git a/native/screens/StockTabScreen/RecipeCard.tsx b/native/screens/StockTabScreen/RecipeCard.tsx index 5071196d..3172dea3 100644 --- a/native/screens/StockTabScreen/RecipeCard.tsx +++ b/native/screens/StockTabScreen/RecipeCard.tsx @@ -144,7 +144,7 @@ const useStyles = createStyles((theme) => paddingRight: theme.spacing * 2, marginBottom: theme.spacing, marginTop: theme.spacing, - height: 90, + // height: 90, borderRadius: theme.borderRadiusSmall, }, textLeft: { flex: 1 }, diff --git a/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx b/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx index cc3b6668..a24ce0c8 100644 --- a/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx +++ b/native/screens/StockTabScreen/StockContext/StockContextProvider.tsx @@ -3,7 +3,6 @@ import React, { createContext, useContext, useEffect, - useMemo, useState, } from "react"; import { useListInventories } from "../../../db/hooks/useListInventories"; @@ -11,7 +10,6 @@ import { useListProductRecords } from "../../../db/hooks/useListProductRecords"; import { useListRecipeRecords } from "../../../db/hooks/useListRecipeRecords"; import { useListRecipesWithRecords } from "../../../db/hooks/useListRecipes"; import { roundFloat } from "../../../utils"; -import { mergeRawAndScannedRecords } from "./mergeRawAndScanned"; import { ProductRecordByProductIdValue, ProductRecordsByProductId, @@ -28,12 +26,16 @@ type StockContextType = StockData & { stockId?: number; setStockId: React.Dispatch>; // stockType: "inventory" | "delivery"; - setProductRecords: React.Dispatch< - React.SetStateAction - >; - setRecipeRecords: React.Dispatch< - React.SetStateAction - >; + // setProductRecords: React.Dispatch< + // React.SetStateAction + // >; + // setRecipeRecords: React.Dispatch< + // React.SetStateAction + // >; + setProductRecord: ( + productId: number, + value: Partial + ) => void; recordsFromInvoice: ProductRecordsByProductId; setRecordsFromInvoice: React.Dispatch< React.SetStateAction @@ -42,6 +44,10 @@ type StockContextType = StockData & { setRecordsFromSalesRaport: React.Dispatch< React.SetStateAction >; + setRecipeQuantityWithProductQuantities: ( + recipeId: number + ) => (value: number) => void; + unsavedChanges: boolean; }; const StockContext = createContext({ @@ -49,13 +55,16 @@ const StockContext = createContext({ stockId: initialStockId, setStockId: () => null, productRecords: initialProductRecords, - setProductRecords: () => null, + // setProductRecords: () => null, recipeRecords: initialRecipeRecords, - setRecipeRecords: () => null, + setProductRecord: () => {}, + // setRecipeRecords: () => null, recordsFromInvoice: initialProductRecords, setRecordsFromInvoice: () => null, recordsFromSalesRaport: initialRecipeRecords, setRecordsFromSalesRaport: () => null, + setRecipeQuantityWithProductQuantities: () => () => {}, + unsavedChanges: false, }); export const StockContextProvider = ({ @@ -70,6 +79,8 @@ export const StockContextProvider = ({ const [stockId, setStockId] = useState(routeStockId ?? latestStockId); + const [unsavedChanges, setUnsavedChanges] = useState(false); + const [recordsFromSalesRaport, setRecordsFromSalesRaport] = useState({}); const [recordsFromInvoice, setRecordsFromInvoice] = @@ -86,90 +97,69 @@ export const StockContextProvider = ({ // Whenever stockId or fetched data changes, update the records useEffect(() => { - const defaultRecipeRecords = recipeRecordsRaw - ? Object.fromEntries( - recipeRecordsRaw.map((record) => [ - record.recipe_id, - { - record_id: record.id, - quantity: record.quantity, - }, - ]) - ) - : {}; - - setRecipeRecords(defaultRecipeRecords); - - const defaultProductRecords = productRecordsRaw - ? Object.fromEntries( - productRecordsRaw.map((record) => [ - record.product_id, - { - record_id: record.id, - quantity: record.quantity, - price_per_unit: record.price_per_unit, - }, - ]) - ) - : {}; - - setProductRecords(defaultProductRecords); - - // Reset scanner state on navigation to another stock - setRecordsFromSalesRaport({}); - setRecordsFromInvoice({}); + if (!unsavedChanges) { + const defaultRecipeRecords = recipeRecordsRaw + ? Object.fromEntries( + recipeRecordsRaw.map((record) => [ + record.recipe_id, + { + record_id: record.id, + quantity: record.quantity, + }, + ]) + ) + : {}; + + setRecipeRecords(defaultRecipeRecords); + + const defaultProductRecords = productRecordsRaw + ? Object.fromEntries( + productRecordsRaw.map((record) => [ + record.product_id, + { + record_id: record.id, + quantity: record.quantity, + price_per_unit: record.price_per_unit, + }, + ]) + ) + : {}; + + setProductRecords(defaultProductRecords); + + // Reset scanner state on navigation to another stock + setRecordsFromSalesRaport({}); + setRecordsFromInvoice({}); + } }, [stockId, productRecordsRaw, recipeRecordsRaw]); - return ( - - {children} - - ); -}; - -export const useStockContext = () => { - const context = useContext(StockContext); - - const { data: recipeList } = useListRecipesWithRecords(context.stockId); + const { data: recipeList } = useListRecipesWithRecords(stockId); const setProductRecord = ( productId: number, value: Partial ) => { - context.setProductRecords((r) => ({ + setProductRecords((r) => ({ ...r, [productId]: { ...r[productId], ...value }, })); + setUnsavedChanges(true); }; const setRecipeRecord = ( recipeId: number, value: Partial ) => { - context.setRecipeRecords((r) => ({ + setRecipeRecords((r) => ({ ...r, [recipeId]: { ...r[recipeId], ...value }, })); + setUnsavedChanges(true); }; - // TODO: Consider doing this non destructively, similarely to scanning const setRecipeQuantityWithProductQuantities = (recipeId: number) => (value: number) => { - const recipe = context.recipeRecords[recipeId]; + const recipe = recipeRecords[recipeId]; const oldQuantity = recipe?.quantity || 0; const delta = value - oldQuantity; const recipeParts = recipeList?.find( @@ -178,8 +168,7 @@ export const useStockContext = () => { if (!recipeParts || delta === 0 || value < 0) return; recipeParts.forEach((part) => { - const oldQuantity = - context.productRecords[part.product_id]?.quantity || 0; + const oldQuantity = productRecords[part.product_id]?.quantity || 0; const dMultiplied = roundFloat(delta * part.quantity); const newRecordQuantity = roundFloat(oldQuantity - dMultiplied); @@ -190,30 +179,52 @@ export const useStockContext = () => { return; }; - const { mergedProductRecords, mergedRecipeRecords } = useMemo( - () => - mergeRawAndScannedRecords( - context.recipeRecords, - context.recordsFromSalesRaport, - context.productRecords, - context.recordsFromInvoice, - recipeList - ), - [ - context.recipeRecords, - context.recordsFromSalesRaport, - context.productRecords, - context.recordsFromInvoice, - recipeList, - ] + useEffect(() => { + if (!!recordsFromInvoice) { + for (const product_id in recordsFromInvoice) { + setProductRecord(parseInt(product_id), recordsFromInvoice[product_id]); + } + } + }, [recordsFromInvoice]); + + useEffect(() => { + if (!!recordsFromSalesRaport) { + for (const recipe_id in recordsFromSalesRaport) { + setRecipeQuantityWithProductQuantities(parseInt(recipe_id))( + recordsFromSalesRaport[recipe_id].quantity + ); + } + } + }, [recordsFromSalesRaport]); + + // const unsavedChanges = + // Object.keys(productRecords).length > 0 || + // Object.keys(recipeRecords).length > 0; + + return ( + + {children} + ); +}; - return { - ...context, - productRecords: mergedProductRecords, - recipeRecords: mergedRecipeRecords, - setProductRecord, - setRecipeRecord, - setRecipeQuantityWithProductQuantities, - }; +export const useStockContext = () => { + return useContext(StockContext); }; diff --git a/native/screens/StockTabScreen/StockContext/mergeRawAndScanned.ts b/native/screens/StockTabScreen/StockContext/mergeRawAndScanned.ts index 0dec9d5d..dfc0d585 100644 --- a/native/screens/StockTabScreen/StockContext/mergeRawAndScanned.ts +++ b/native/screens/StockTabScreen/StockContext/mergeRawAndScanned.ts @@ -1,5 +1,9 @@ import { roundFloat } from "../../../utils"; -import { ProductRecordsByProductId, RecipeRecordsByRecipeId } from "./types"; +import { + ProductRecordByProductIdValue, + ProductRecordsByProductId, + RecipeRecordsByRecipeId, +} from "./types"; // Non-destructive merging of scanner results and raw stock data. export const mergeRawAndScannedRecords = ( @@ -66,3 +70,31 @@ export const mergeRawAndScannedRecords = ( return { mergedProductRecords, mergedRecipeRecords }; }; + +export const applyScannedRecords = ( + // rawRecipeRecords: RecipeRecordsByRecipeId, + scannedRecipeRecords: RecipeRecordsByRecipeId, + // rawProductRecords: ProductRecordsByProductId, + scannedProductRecords: ProductRecordsByProductId, + setProductRecord: ( + productId: number, + value: Partial + ) => void, + setRecipeQuantityWithProductQuantities: ( + recipeId: number + ) => (value: number) => void + // recipeList?: { + // id: number; + // recipe_part: { quantity: number; product_id: number }[]; + // }[] +) => { + for (const product_id in scannedProductRecords) { + setProductRecord(parseInt(product_id), scannedProductRecords[product_id]); + } + + for (const recipe_id in scannedRecipeRecords) { + setRecipeQuantityWithProductQuantities(parseInt(recipe_id))( + scannedRecipeRecords[recipe_id].quantity + ); + } +}; diff --git a/native/screens/StockTabScreen/StockTabScreen.tsx b/native/screens/StockTabScreen/StockTabScreen.tsx index 8511c01b..62439168 100644 --- a/native/screens/StockTabScreen/StockTabScreen.tsx +++ b/native/screens/StockTabScreen/StockTabScreen.tsx @@ -1,5 +1,5 @@ import React, { useEffect } from "react"; -import { ScrollView, View } from "react-native"; +import { View } from "react-native"; import { useNetInfo } from "@react-native-community/netinfo"; import { SafeAreaView } from "react-native-safe-area-context"; @@ -15,9 +15,7 @@ import { useGetInventoryName } from "../../db/hooks/useGetInventoryName"; import { useListRecipesWithRecords } from "../../db/hooks/useListRecipes"; import { useUpdateRecords } from "../../db/hooks/useUpdateRecords"; import { StockTabScreenProps } from "../../navigation/types"; -import { IDListCard } from "./IDListCard/IDListCard"; -import { IDListCardAddProduct } from "./IDListCard/IDListCardAddProduct"; -import { IDListCardAddRecord } from "./IDListCard/IDListCardAddRecord"; +import { IDListCard, IDListCardHeader } from "./IDListCard/IDListCard"; import { RecipeCard } from "./RecipeCard"; import { useStockContext } from "./StockContext/StockContextProvider"; import { useStockTabStyles } from "./styles"; @@ -33,8 +31,7 @@ export default function StockTabScreen({ const stockId = route.params?.id; const stockType = route.params?.stockType; - const { recordsFromInvoice, recordsFromSalesRaport, aliasForm } = - route.params; + const { recordsFromInvoice, aliasForm } = route.params; // const { showError, showInfo, showSuccess } = useSnackbar(); const { showError, showSuccess } = useSnackbar(); @@ -44,34 +41,69 @@ export default function StockTabScreen({ const { productRecords, recipeRecords, - setRecordsFromInvoice, - setRecordsFromSalesRaport, + // setRecipeQuantityWithProductQuantities, + // setProductRecord, setStockId, + unsavedChanges, } = useStockContext(); - useEffect(() => { - if (!!recordsFromInvoice) setRecordsFromInvoice(recordsFromInvoice); - }, [recordsFromInvoice]); + // useEffect(() => { + // if (!!recordsFromInvoice) { + // for (const product_id in recordsFromInvoice) { + // if (product_id in productRecords) { + // const { quantity, price_per_unit } = recordsFromInvoice[product_id]; + // setProductRecord(parseInt(product_id), { + // quantity: productRecords[product_id].quantity + quantity, + // price_per_unit, + // }); + // } else { + // setProductRecord( + // parseInt(product_id), + // recordsFromInvoice[product_id] + // ); + // } + // } + // } + // }, [recordsFromInvoice]); - useEffect(() => { - if (!!recordsFromSalesRaport) - setRecordsFromSalesRaport(recordsFromSalesRaport); - }, [recordsFromSalesRaport]); + // useEffect(() => { + // if (!!recordsFromSalesRaport) { + // for (const recipe_id in recordsFromSalesRaport) { + // // if (recipe_id in recipeRecords) { + // // const { quantity } = recordsFromSalesRaport[recipe_id]; + // // setProductRecord(parseInt(recipe_id), { + // // quantity: recipeRecords[recipe_id].quantity + quantity, + // // }); + // // } else { + // // setRecipeQuantityWithProductQuantities(parseInt(recipe_id))( + // // recordsFromSalesRaport[recipe_id].quantity + // // ); + // // } + // setRecipeQuantityWithProductQuantities(parseInt(recipe_id))( + // recordsFromSalesRaport[recipe_id].quantity + // ); + // } + // } + // }, [recordsFromSalesRaport]); useEffect(() => { setStockId(stockId); }, [stockId]); const { - productsIsSuccess, + // productsIsSuccess, categorizedIsSuccess, - categorizedProducts, - uncategorizedProducts, + // categorizedProducts, + // uncategorizedProducts, + allProducts, } = useProductRecords(); const { data: recipeList, isSuccess: recipesIsSuccess } = useListRecipesWithRecords(stockId); + // const { data: products, isSuccess: productsIsSuccess } = + // useListExistingProducts(); + const { mutate, isSuccess: isUpdateSuccess, @@ -95,8 +127,17 @@ export default function StockTabScreen({ } }, [isUpdateSuccess, isUpdateError]); + // const documents = [3, -1].map((d) => + // Object.fromEntries( + // allProducts.map((p) => [p.id, false ? null : p.quantity * d]) + // ) + // ); + const documents = [recordsFromInvoice].filter((x) => !!x); + + // console.log(recordsFromInvoice, recordsFromSalesRaport); + if ( - !productsIsSuccess || + // !productsIsSuccess || !categorizedIsSuccess || !stockId || !recipesIsSuccess @@ -119,7 +160,7 @@ export default function StockTabScreen({ + - - + {/* */} + {/* */} {/*