Fix/supp ag fb (#1023)
* fix: prevent credit notes from entering payment flow * fix: persist and display customer personal numbers * feat: configure automatic invoice reminder days * fix: issue credit notes through send flow * chore: add repository agent guidance * feat(mcp): route tools across user companies * fix(articles): delete unused register entries * feat(invoices): improve issued invoice actions * feat(supplier-invoices): retain uploaded source documents * docs: record implementation decisions * feat: enhance customer personal number handling and validation - Updated CustomerForm to allow personal numbers in the format of "********-1234" for individual customers. - Added validation to ensure personal numbers are only accepted for individual customers in CreateCustomerSchema. - Implemented masking and encryption for personal numbers to enhance data protection. - Introduced new utility functions for masking and encrypting personal numbers. - Added database migration to enforce unique constraints on credit note relationships and prevent duplicate entries. - Enhanced error handling and logging for credit note issuance and invoice processing. - Updated tests to cover new credit note creation guards and personal number handling. * test: enhance list companies test with supabase query mocks
This commit is contained in:
+91
-8
@@ -828,15 +828,16 @@
|
||||
"edit_dialog_title": "Redigera kund",
|
||||
"viewer_disabled_tooltip": "Du har endast läsbehörighet i detta företag",
|
||||
"section_contact": "Kontaktuppgifter",
|
||||
"section_business": "Företagsuppgifter",
|
||||
"section_business": "Kunduppgifter",
|
||||
"section_summary": "Översikt",
|
||||
"section_notes": "Anteckningar",
|
||||
"section_invoices": "Fakturor",
|
||||
"no_contact_info": "Inga kontaktuppgifter",
|
||||
"no_business_info": "Inga företagsuppgifter",
|
||||
"no_business_info": "Inga ytterligare kunduppgifter",
|
||||
"no_invoices": "Inga fakturor kopplade till denna kund",
|
||||
"label_customer_number": "Kundnummer:",
|
||||
"label_org_number": "Org.nr:",
|
||||
"label_personal_number": "Persnr:",
|
||||
"label_vat": "VAT:",
|
||||
"label_payment_terms": "Betalningsvillkor:",
|
||||
"payment_terms_value": "{days} dagar",
|
||||
@@ -1531,7 +1532,12 @@
|
||||
"default_days_label": "Betalningsvillkor (dagar)",
|
||||
"default_notes_label": "Standardtext på fakturor",
|
||||
"default_notes_placeholder": "T.ex. betalningsvillkor, leveransinfo...",
|
||||
"default_notes_help": "Föreslås automatiskt vid ny faktura."
|
||||
"default_notes_help": "Föreslås automatiskt vid ny faktura.",
|
||||
"reminder_days_heading": "Automatiska påminnelser",
|
||||
"reminder_days_help": "Ange hur många dagar efter förfallodatum varje påminnelse skickas. Dagarna måste vara i stigande ordning.",
|
||||
"reminder_days_level_1": "Första påminnelsen (dagar)",
|
||||
"reminder_days_level_2": "Andra påminnelsen (dagar)",
|
||||
"reminder_days_level_3": "Slutlig påminnelse (dagar)"
|
||||
},
|
||||
"settings_pdf_print": {
|
||||
"coming_soon": "Kommer snart",
|
||||
@@ -2498,9 +2504,15 @@
|
||||
"title_invoice": "Ny faktura",
|
||||
"title_proforma": "Ny proformafaktura",
|
||||
"title_delivery_note": "Ny följesedel",
|
||||
"title_copy": "Kopiera faktura",
|
||||
"subtitle_invoice": "Skapa en ny faktura",
|
||||
"subtitle_proforma": "Skapa en proformafaktura (ingen bokföring)",
|
||||
"subtitle_delivery_note": "Skapa en följesedel (utan priser)",
|
||||
"subtitle_copy": "Skapa en ny faktura med återanvänt innehåll",
|
||||
"copy_notice": "Innehållet har kopierats från {number}. Ett nytt utkast skapas med nytt datum och nytt fakturanummer. Kontrollera kund, referenser och ROT/RUT-uppgifter innan du fortsätter.",
|
||||
"copy_load_failed_title": "Kunde inte kopiera fakturan",
|
||||
"copy_load_failed_description": "Fakturan finns inte eller kan inte användas som mall.",
|
||||
"close": "Stäng",
|
||||
"bank_missing_warning": "Betalningsuppgifter saknas: du behöver lägga till dem innan du skapar en faktura.",
|
||||
"bank_add_now": "Lägg till nu",
|
||||
"customer_card_title": "Kund",
|
||||
@@ -2710,9 +2722,13 @@
|
||||
"sent_at_suffix": " • Skickad {date}",
|
||||
"convert_to_invoice": "Konvertera till faktura",
|
||||
"send_via_email": "Skicka via e-post",
|
||||
"send_via_email_and_book": "Skicka via e-post och bokför",
|
||||
"mark_sent_manually": "Skickad manuellt",
|
||||
"mark_sent_and_book": "Markera som skickad och bokför",
|
||||
"complete_credit_bookkeeping": "Slutför bokföring",
|
||||
"mark_as_sent": "Markera som skickad",
|
||||
"mark_as_paid": "Markera som betald",
|
||||
"copy_invoice": "Kopiera faktura",
|
||||
"download_pdf": "Ladda ner PDF",
|
||||
"viewer_disabled_tooltip": "Du har endast läsbehörighet i detta företag",
|
||||
"customer_card_title": "Kund",
|
||||
@@ -2754,7 +2770,7 @@
|
||||
"payment_status_view_voucher_unlinked": "Saknar verifikat",
|
||||
"payment_status_empty": "Inga registrerade betalningar ännu.",
|
||||
"reminders_card_title": "Påminnelser",
|
||||
"reminders_description": "Automatiska påminnelser skickas vid 15, 30 och 45 dagars förfallen betalning",
|
||||
"reminders_description": "Automatiska påminnelser skickas när fakturan varit förfallen i {day1}, {day2} och {day3} dagar",
|
||||
"reminders_empty": "Inga påminnelser har skickats ännu.",
|
||||
"reminder_level_label": "Nivå {level}",
|
||||
"reminder_level_1": "Vänlig påminnelse",
|
||||
@@ -2765,6 +2781,8 @@
|
||||
"reminder_objection": "Kunden har invändningar",
|
||||
"credited_card_title": "Krediterad",
|
||||
"see_credit_note": "Se kreditfaktura {number}",
|
||||
"credit_draft_card_title": "Kreditfaktura väntar på att skickas",
|
||||
"open_credit_draft": "Öppna utkast {number}",
|
||||
"credit_note_card_title": "Kreditfaktura",
|
||||
"credit_note_description": "Denna kreditfaktura krediterar",
|
||||
"see_original_invoice": "Se faktura {number}",
|
||||
@@ -2774,6 +2792,7 @@
|
||||
"actions_card_title": "Åtgärder",
|
||||
"cancel_action": "Makulera",
|
||||
"delete_draft": "Makulera utkast",
|
||||
"remove_credit_draft": "Ta bort kreditutkast",
|
||||
"create_credit_note": "Skapa kreditfaktura",
|
||||
"no_customer_email_warning": "Kunden saknar e-postadress. Lägg till e-post för att kunna skicka fakturan digitalt.",
|
||||
"send_manual_hint_with_email": "Använd om du redan skickat fakturan på annat sätt (post, annat system)",
|
||||
@@ -2801,6 +2820,9 @@
|
||||
"remove_dialog_title": "Ta bort utkast?",
|
||||
"remove_dialog_desc": "Utkastet och dess rader tas bort permanent. Eftersom inget fakturanummer tilldelats påverkas inte nummerserien. Detta kan inte ångras.",
|
||||
"remove_dialog_confirm": "Ta bort",
|
||||
"remove_credit_dialog_title": "Ta bort kreditutkast?",
|
||||
"remove_credit_dialog_desc": "Kreditfakturan har inte utfärdats eller bokförts. Utkastet och dess rader tas bort permanent och kan skapas på nytt.",
|
||||
"remove_credit_dialog_confirm": "Ta bort utkast",
|
||||
"removed_toast_title": "Utkast borttaget",
|
||||
"removed_toast_description": "Utkastet har tagits bort.",
|
||||
"status_update_toast_title": "Uppdaterad",
|
||||
@@ -2830,8 +2852,8 @@
|
||||
"back": "Tillbaka",
|
||||
"title": "Skapa kreditfaktura",
|
||||
"subtitle": "Krediterar faktura {number}",
|
||||
"warning_title": "Oåterkallelig åtgärd",
|
||||
"warning_description": "En kreditfaktura makulerar den ursprungliga fakturan helt. Alla belopp blir negativa, en bokföringsverifikation skapas, och den ursprungliga fakturan markeras som krediterad. Denna åtgärd kan inte ångras.",
|
||||
"warning_title": "Kreditfakturan skapas som utkast",
|
||||
"warning_description": "Alla belopp blir negativa. Originalfakturan markeras som krediterad först när kreditfakturan skickas eller markeras som skickad. Bokföringen hanteras då enligt företagets valda bokföringsmetod.",
|
||||
"original_card_title": "Ursprunglig faktura",
|
||||
"invoice_number_label": "Fakturanummer:",
|
||||
"date_label": "Datum:",
|
||||
@@ -2867,7 +2889,7 @@
|
||||
"already_credited_title": "Redan krediterad",
|
||||
"already_credited_description": "Denna faktura har redan krediterats",
|
||||
"created_toast_title": "Kreditfaktura skapad",
|
||||
"created_toast_description": "Kreditfaktura {number} har skapats",
|
||||
"created_toast_description": "Kreditfaktura {number} har skapats som utkast.",
|
||||
"create_failed_title": "Kunde inte skapa kreditfaktura",
|
||||
"create_failed_fallback": "Kunde inte skapa kreditfaktura",
|
||||
"try_again": "Försök igen."
|
||||
@@ -2956,26 +2978,54 @@
|
||||
"invoice_send_dialog": {
|
||||
"title_email": "Skicka faktura",
|
||||
"title_manual": "Markera som skickad",
|
||||
"title_credit_email": "Skicka kreditfaktura",
|
||||
"title_credit_manual": "Markera kreditfaktura som skickad",
|
||||
"title_credit_repair": "Slutför kreditfakturans bokföring",
|
||||
"title_suffix": ": {number}",
|
||||
"description_sek_suffix": " ({amount} SEK)",
|
||||
"description_to_email": " till {email}",
|
||||
"load_failed_title": "Kunde inte ladda inställningar",
|
||||
"no_active_company": "Inget aktivt företag",
|
||||
"company_settings_failed": "Kunde inte ladda företagsinställningar",
|
||||
"fiscal_period_failed": "Kunde inte ladda räkenskapsperioden",
|
||||
"original_invoice_failed": "Kunde inte ladda originalfakturan",
|
||||
"journal_preview_intro": "Följande bokföringsverifikation skapas automatiskt:",
|
||||
"voucher_description": "Försäljning faktura{numberSpace}{customerSuffix}",
|
||||
"credit_voucher_description": "Kreditfaktura{numberSpace}{customerSuffix}",
|
||||
"explain_cash": "Kontantmetoden: bokföring sker vid betalning, inte vid fakturering.",
|
||||
"explain_credit_cash": "Kontantmetoden: originalfakturan är obetald, så ingen verifikation skapas när kreditfakturan utfärdas.",
|
||||
"explain_email": "Fakturan skickas till {email}.",
|
||||
"explain_manual": "Fakturan markeras som skickad.",
|
||||
"cancel": "Avbryt",
|
||||
"later": "Gör senare",
|
||||
"send_invoice": "Skicka faktura",
|
||||
"send_invoice_and_book": "Skicka och bokför",
|
||||
"mark_as_sent": "Markera som skickad",
|
||||
"mark_as_sent_and_book": "Markera som skickad och bokför",
|
||||
"send_credit_note": "Skicka kreditfaktura",
|
||||
"send_credit_note_and_book": "Skicka och bokför kreditfaktura",
|
||||
"mark_credit_note_sent": "Markera som skickad",
|
||||
"mark_credit_note_sent_and_book": "Markera som skickad och bokför",
|
||||
"complete_credit_bookkeeping": "Slutför bokföring",
|
||||
"send_failed_title": "Kunde inte skicka faktura",
|
||||
"credit_send_failed_title": "Kunde inte utfärda kreditfakturan",
|
||||
"send_failed_fallback": "Kunde inte skicka fakturan",
|
||||
"send_success_title": "Faktura skickad",
|
||||
"send_book_success_title": "Skickad och bokförd",
|
||||
"credit_send_success_title": "Kreditfaktura skickad",
|
||||
"credit_send_book_success_title": "Kreditfaktura skickad och bokförd",
|
||||
"credit_send_success": "Kreditfakturan har skickats till {email} och utfärdats.",
|
||||
"send_success_default": "Fakturan har skickats till {email}",
|
||||
"partial_success": "{message}. Ett efterföljande steg misslyckades. Kontrollera fakturan och bokföringen.",
|
||||
"mark_success_title": "Faktura markerad som skickad",
|
||||
"mark_book_success_title": "Skickad och bokförd",
|
||||
"credit_mark_success_title": "Kreditfaktura utfärdad",
|
||||
"credit_mark_book_success_title": "Kreditfaktura skickad och bokförd",
|
||||
"credit_repair_success_title": "Bokföringen är slutförd",
|
||||
"credit_mark_success_voucher_created": "Kreditfakturan är markerad som skickad och verifikationen har skapats.",
|
||||
"credit_mark_success_no_voucher": "Kreditfakturan är markerad som skickad. Kontantmetoden kräver ingen verifikation för en obetald originalfaktura.",
|
||||
"mark_success_voucher_created": "Bokföringsverifikationen har skapats.",
|
||||
"mark_partial_success": "Fakturan markerades som skickad, men ett efterföljande steg misslyckades. Kontrollera fakturan och bokföringen.",
|
||||
"try_again": "Försök igen."
|
||||
},
|
||||
"invoice_payment_dialog": {
|
||||
@@ -3060,6 +3110,14 @@
|
||||
"due_date_label": "Förfallodatum",
|
||||
"payment_reference_label": "OCR / Betalningsreferens",
|
||||
"payment_reference_placeholder": "OCR-nummer",
|
||||
"document_label": "Fakturaunderlag",
|
||||
"document_help": "Bifoga leverantörens PDF eller en bild. Underlaget sparas med fakturan och kopplas automatiskt till verifikationen.",
|
||||
"document_upload_in_progress_title": "Underlaget laddas fortfarande upp",
|
||||
"document_upload_in_progress_description": "Vänta tills uppladdningen är klar innan du registrerar fakturan.",
|
||||
"document_upload_failed_title": "Underlaget kunde inte laddas upp",
|
||||
"document_upload_failed_description": "Ta bort filen och försök ladda upp den igen.",
|
||||
"document_link_warning_title": "Fakturan registrerades, men underlaget saknas på verifikationen",
|
||||
"document_link_warning_description": "Öppna verifikationen och bifoga underlaget där.",
|
||||
"add_row": "Lägg till rad",
|
||||
"currency_label": "Valuta",
|
||||
"exchange_rate_label": "Växelkurs",
|
||||
@@ -3267,6 +3325,9 @@
|
||||
"registration_voucher": "Registreringsverifikation",
|
||||
"no_registration_voucher": "Ingen registreringsverifikation (kontantmetoden)",
|
||||
"payment_voucher": "Betalningsverifikation",
|
||||
"document_title": "Fakturaunderlag",
|
||||
"document_attached": "Leverantörens faktura är bifogad och arkiverad.",
|
||||
"view_document": "Visa underlag",
|
||||
"notes_title": "Anteckningar",
|
||||
"pay_dialog_title": "Markera som betald",
|
||||
"tab_new_payment": "Ny betalning",
|
||||
@@ -3474,11 +3535,27 @@
|
||||
"corrupt_replace_cta": "Ladda upp ny version",
|
||||
"integrity_unknown": "Filens integritet kunde inte verifieras: försök igen senare om förhandsgranskningen inte visas."
|
||||
},
|
||||
"document_upload": {
|
||||
"session_expired": "Din session har gått ut. Ladda om sidan och logga in igen.",
|
||||
"server_status": "Servern svarade {status}.",
|
||||
"failed_status": "Uppladdningen misslyckades ({status})",
|
||||
"network_error": "Uppladdningen misslyckades: nätverksfel",
|
||||
"unsupported_type": "Filtypen stöds inte",
|
||||
"too_large": "Filen är för stor (max 10 MB)",
|
||||
"compact_prompt": "Dra och släpp eller klicka",
|
||||
"prompt": "Dra och släpp filer här",
|
||||
"format_hint": "PDF eller bild (max 10 MB)",
|
||||
"uploaded": "Uppladdad",
|
||||
"error": "Fel",
|
||||
"remove_file": "Ta bort fil",
|
||||
"uploading": "Laddar upp..."
|
||||
},
|
||||
"journal_attachments": {
|
||||
"loading": "Laddar underlag...",
|
||||
"title": "Underlag",
|
||||
"add": "Lägg till underlag",
|
||||
"empty": "Inga underlag bifogade.",
|
||||
"via_supplier_invoice": "Via leverantörsfaktura",
|
||||
"download": "Ladda ner",
|
||||
"remove": "Ta bort",
|
||||
"replace": "Ersätt med ny version",
|
||||
@@ -3924,7 +4001,7 @@
|
||||
"ext_enable_banking_long_description": "Koppla ditt bankkonto direkt och synka transaktioner automatiskt via säker PSD2-bankintegration. Stöder de flesta svenska banker.",
|
||||
"ext_email_name": "E-post (Resend)",
|
||||
"ext_email_description": "Skicka fakturor och påminnelser via e-post",
|
||||
"ext_email_long_description": "Aktiverar e-postfunktioner: skicka fakturor till kunder, automatiska betalningspåminnelser (15/30/45 dagar), och e-postmeddelanden. Kräver ett Resend-konto med verifierad domän.",
|
||||
"ext_email_long_description": "Aktiverar e-postfunktioner: skicka fakturor till kunder, automatiska betalningspåminnelser enligt valt schema, och e-postmeddelanden. Kräver ett Resend-konto med verifierad domän.",
|
||||
"ext_arcim_migration_name": "Systemmigration",
|
||||
"ext_arcim_migration_description": "Migrera bokföring från Fortnox, Visma, Bokio, Björn Lundén eller Briox",
|
||||
"ext_arcim_migration_long_description": "Flytta all bokföringsdata från ditt gamla system till accounted. Importerar kontoplan, verifikationer, kunder, leverantörer och öppna fakturor automatiskt via säker API-integration direkt med leverantören.",
|
||||
@@ -4217,6 +4294,7 @@
|
||||
"back": "Tillbaka till artiklar",
|
||||
"edit": "Redigera",
|
||||
"deactivate": "Inaktivera",
|
||||
"delete": "Ta bort",
|
||||
"edit_dialog_title": "Redigera artikel",
|
||||
"viewer_disabled_tooltip": "Du har endast läsbehörighet i detta företag",
|
||||
"type_vara": "Vara",
|
||||
@@ -4247,6 +4325,11 @@
|
||||
"deactivate_confirm_label": "Inaktivera",
|
||||
"deactivated_title": "Artikel inaktiverad",
|
||||
"deactivate_failed_title": "Kunde inte inaktivera artikel",
|
||||
"delete_confirm_title": "Ta bort {name}",
|
||||
"delete_confirm_description": "Artikeln och dess artikelnummer tas bort permanent. Det går bara om artikeln aldrig har använts på en faktura.",
|
||||
"delete_confirm_label": "Ta bort",
|
||||
"deleted_title": "Artikel borttagen",
|
||||
"delete_failed_title": "Kunde inte ta bort artikel",
|
||||
"activate_and_save": "Aktivera och spara"
|
||||
},
|
||||
"form_article": {
|
||||
|
||||
Reference in New Issue
Block a user