From d2495c152e4a0e7d6430b518c7f1f92c5b6429d4 Mon Sep 17 00:00:00 2001 From: Tummas Joensen Date: Wed, 22 Nov 2023 11:19:18 +0000 Subject: [PATCH 001/107] Add Danish language support --- src/utils/language.ts | 1 + translations/da.csv | 1002 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1003 insertions(+) create mode 100644 translations/da.csv diff --git a/src/utils/language.ts b/src/utils/language.ts index deffc062..1305019b 100644 --- a/src/utils/language.ts +++ b/src/utils/language.ts @@ -17,6 +17,7 @@ export const languageCodeMap: Record = { Turkish: 'tr', Korean: 'ko', Swedish: 'sv', + Danish: 'da', 'Simplified Chinese': 'zh-CN', }; diff --git a/translations/da.csv b/translations/da.csv new file mode 100644 index 00000000..939ee061 --- /dev/null +++ b/translations/da.csv @@ -0,0 +1,1002 @@ +"${0} ${1} already exists.","${0} ${1} findes allerede.", +"${0} ${1} does not exist","${0} ${1} findes ikke", +"${0} ${1} has been modified after loading please reload entry.","${0} ${1} er blevet ændret efter indlæsning, genindlæs venligst posteringen.", +"${0} ${1} is linked with existing records.","${0} ${1} er linket med eksisterende poster.", +"${0} account not set in Inventory Settings.","${0} konto er opsat i Varelager opsætning.", +"${0} already saved","${0} allerede gemt", +"${0} already submitted","${0} allerede bogført", +"${0} cancelled","${0} annulleret", +"${0} cannot be cancelled","${0} kan ikke annulleres", +"${0} cannot be deleted","${0} kan ikke slettes", +"${0} deleted", "${0} slettet", +"${0} entries failed","${0} indtastninger mislykkedes", +"${0} entries imported","${0} indtastninger importeret", +"${0} entry failed","${0} indtastning mislykkedes", +"${0} entry imported","${0} indtastning importeret", +"${0} fields selected","${0} felter valgt", +"${0} filters applied","${0} filtre anvendt", +"${0} has linked child accounts.","${0} har tilknyttede underkonti.", +"${0} of type ${1} does not exist","${0} av type ${1} findes ikke", +"${0} out of ${1}","${0} af ${1}", +"${0} party ${1} is different from ${2}","${0} partner ${1} skiller sig fra ${2}", +"${0} quantity 1 added.","${0} mængde 1 tilføjet.", +"${0} row added.","${0} række tilføjet.", +"${0} rows","${0} rækker", +"${0} rows added.","${0} rækker tilføjet.", +"${0} saved","${0} gemt", +"${0} shortcuts","${0} genveje", +"${0} stored at ${1}","${0} gemt på ${1}", +"${0} submitted","${0} bogført", +"${0} value ${1} does not exist.","${0} værdi ${1} findes ikke.", +0%,0%, +03-23-2022,03-23-2022, +03/23/2022,03/23/2022, +"1 filter applied","1 filter anvendt", +2022-03-23,2022-03-23, +"23 Mar, 2022","23 mar, 2022", +23-03-2022,23-03-2022, +23.03.2022,23.03.2022, +23/03/2022,23/03/2022, +9888900000,9888900000, +"A submittable entry is deleted only if it is in the cancelled state.","En bogførbar post slettes kun, hvis den er i annulleret tilstand.", +Account,konto, +"Account ${0} does not exist.","Konto ${0} findes ikke.", +"Account Entries",Kontoposter, +"Account Name",Kontonanv, +"Account Type",Kontotype, +Accounting,Bogføring, +"Accounting Entries",Bogføringsposter, +"Accounting Ledger Entry","Bogføringspost", +"Accounting Settings","Bogførings indstillinger", +Accounts,Konti, +"Accounts Payable","Kontoer til betaling", +"Accounts Receivable","Debitor konti", +"Accumulated Depreciation","Akkumuleret afskrivning", +Action,Handling, +Active,Aktiv, +"Add Account","Tilføj konto", +"Add Customers","Tilføj kunder", +"Add Group","Tilføj gruppe", +"Add Items","Tilføj elementer", +"Add Row","Tilføj række", +"Add Suppliers","Tilføj leverandører", +"Add Taxes","Tilføj skatter", +"Add a few customers to create your first sales invoice","Tilføj nogle kunder for at oprette din første salgsfaktura", +"Add a few suppliers to create your first purchase invoice","Tilføj nogle leverandører for at oprette din første købsfaktura", +"Add a filter","Tilføj et filter", +"Add a remark","Tilføj en bemærkning", +"Add attachment","Vedhæft fil", +"Add invoice terms","Tilføj fakturabetingelser", +"Add products or services that you buy from your suppliers","Tilføj produkter eller tjenester, som du køber fra dine leverandører", +"Add products or services that you sell to your customers","Tilføj produkter eller tjenester, som du sælger til dine kunder", +"Add transfer terms","Tilføj overførselsbetingelser", +"Additional ${0} Serial Numbers required for ${1} quantity of ${2}.","Yderligere ${0} serienumre kræves for ${1} mængde af ${2}.", +"Additional quantity (${0}) required${1} to make outward transfer of item ${2} from ${3} on ${4}","Yderligere mængde (${0}) kræves${1} for at foretage udgående overførsel af vare ${2} fra ${3} på ${4}", +Address,Adresse, +"Address Display","Adressevisning", +"Address Line 1","Adresse linje 1", +"Address Line 2","Adresse linje 2", +"Address Name","Adresse navn", +"Administrative Expenses","Administrative udgifter", +All,Alle, +Amount,Beløb, +"Amount Paid","Betalt beløb", +"Amount: ${0} and writeoff: ${1} is less than the total amount allocated to references: ${2}.","Beløb: ${0} og afskrivning: ${1} er mindre end det samlede beløb tildelt til referencer: ${2}.", +"Amount: ${0} is less than the total amount allocated to references: ${1}.","Beløb: ${0} er mindre end det samlede beløb tildelt til referencer: ${1}.", +Amounts,Beløb, +"An entry is cancelled only if it is in the submitted state.","En postering annulleres kun, hvis den er i indsendt tilstand.", +"An entry is submitted only if it is submittable and is in the saved state.","En postering indsendes kun, hvis den kan indsendes og er i gemt tilstand.", +"An error occurred.","Der opstod en fejl.", +"Applicable anywhere in Frappe Books","Gælder overalt i Frappe Books", +"Applicable when Quick Search is open","Gælder, når Quick Search er åben", +"Applicable when Template Builder is open","Gælder, når Skabelonbygger er åben", +"Applicable when an entry is open in the Form view or Quick Edit view","Gælder, når en postering er åben i Form-visning eller Hurtig redigerings-visning", +"Applicable when the List View of an entry type is open","Gælder, når List View af en posteringstype er åben", +"Application of Funds (Assets)","Anvendelse af midler (aktiver)", +"Apply Discount After Tax","Anvend rabat efter skat", +"Apply and view changes made to the print template","Anvend og se ændringer foretaget til printskabelonen", +April,April, +Arial,Arial, +"Ascending Order","Stigende rækkefølge", +Asset,Aktiv, +"Attach Image","Vedhæft billede", +Attachment,Vedhæftning, +August,August, +"Auto Payments","Automatiske betalinger", +"Auto Stock Transfer","Automatisk lageroverførsel", +Autocomplete,Autoudfyld, +"Back Reference","Tilbage Reference", +"Bad import data, could not read file.","Dårlige importdata, kunne ikke læse filen.", +Balance,Balance, +"Balance Sheet","Balance", +Bank,Bank, +"Bank Accounts","Bankkonti", +"Bank Entry","Bankpost", +"Bank Name","Banknavn", +"Bank Overdraft Account","Bankovertrækskonto", +Barcode,Stregkode, +"Base Grand Total","Grundlæggende samlet total", +"Based On","Baseret på", +Batch,Batch, +"Batch not set for row ${0}.","Batch ikke sat for række ${0}.", +"Batch set for row ${0}.","Batch sat for række ${0}.", +"Bill Created","Faktura oprettet", +Billing,Fakturering, +Black,Sort, +Blue,Blå, +Both,Begge, +"Both From and To Location cannot be undefined","Både Fra og Til placering kan ikke være udefineret", +Buildings,Bygninger, +Cancel,Annuller, +"Cancel ${0}?","Annuller ${0}?", +"Cancel or Delete an entry.","Annuller eller slet en postering.", +Cancelled,Annulleret, +"Cannot Commit Error","Kan ikke udføre fejl", +"Cannot Delete","Kan ikke slette", +"Cannot Delete Account","Kan ikke slette konto", +"Cannot Export","Kan ikke eksportere", +"Cannot Import","Kan ikke importere", +"Cannot Open File","Kan ikke åbne fil", +"Cannot cancel ${0} ${1} because of the following ${2}: ${3}","Kan ikke annullere ${0} ${1} på grund af følgende ${2}: ${3}", +"Cannot delete ${0} ""${1}"" because of linked entries.","Kan ikke slette ${0} ""${1}"" på grund af tilknyttede poster.", +"Cannot open file","Kan ikke åbne fil", +"Cannot perform operation.","Kan ikke udføre operation.", +"Cannot read file","Kan ikke læse fil", +"Capital Equipments","Kapitaludstyr", +"Capital Stock",Kapital, +Cash,Kontanter, +"Cash Entry",Kontantpost, +"Cash In Hand","Kontanter i hånden", +Cashflow,"Likviditet", +"Central Tax","Central skat", +"Change DB","Skift DB", +"Change File","Skift fil", +"Change Ref Type","Skift Ref Type", +"Changes made to settings will be visible on reload.","Ændringer foretaget til indstillinger vil være synlige ved genindlæsning.", +Chargeable,"Fakturerbar", +"Chart Of Accounts Reviewed","Kontoplan gennemgået", +"Chart of Accounts","Kontoplan", +Check,"Kontrollere", +Cheque,"Check", +"City / Town","By / By", +Clear,"Ryd op", +"Clearance Date","Rydningsdato", +Close,"Luk", +"Close Frappe Books and try manually.","Luk Frappe Books og prøv manuelt.", +"Close Quick Search","Luk hurtigsøgning", +Closing,"Lukning", +"Closing (Cr)","Lukning (Cr)", +"Closing (Dr)","Lukning (Dr)", +Collapse,"Kollaps", +Color,Farve, +"Commission on Sales","Provision på salg", +Common,"Fælles", +Company,Firma, +"Company Logo","Firmalogo", +"Company Name","Firmanavn", +"Company Setup","Firma opsætning", +Completed,Afsluttet, +Condition,Betingelse, +"Consolidate Columns","Konsolidere kolonner", +Contacts,Kontakter, +Contains,Indeholder, +"Continue submitting Sales Invoice?","Fortsæt med at indsende salgsfaktura?", +"Contra Entry",Kontrapost, +"Conversion Error",Konverteringsfejl, +"Conversion Factor",Konverteringsfaktor, +"Cost Of Goods Sold Acc.","Omkostninger ved solgte varer akk.", +"Cost of Goods Sold","Omkostninger ved solgte varer", +"Could not connect to database file ${0}, please select the file manually","Kunne ikke forbinde til databasefil ${0}, vælg venligst filen manuelt", +Country,Land, +"Country Code",Landekode, +"Country code used to initialize regional settings.","Landekode bruges til at initialisere regionale indstillinger.", +Courier,Kurér, +Cr.,Kredit, +"Cr. ${0}","Kredit ${0}", +Create,Opret, +"Create Demo","Opret demo", +"Create Purchase","Opret køb", +"Create Purchase Invoice","Opret købsfaktura", +"Create Sale","Opret salg", +"Create Sales Invoice","Opret salgsfaktura", +"Create a demo company to try out Frappe Books","Opret et demo-selskab for at prøve Frappe Books", +"Create a new company and store it on your computer","Opret et nyt selskab og gem det på din computer", +"Create a new company or select an existing one from your computer","Opret et nyt selskab eller vælg et eksisterende fra din computer", +"Create a new entry of the same type as the List View","Opret en ny post af samme type som Listevisning", +"Create new ${0} entry?","Opret ny ${0} post?", +"Create your first purchase invoice from the created supplier","Opret din første købsfaktura fra den oprettede leverandør", +"Create your first sales invoice for the created customer","Opret din første salgsfaktura for den oprettede kunde", +Created,Oprettet, +"Created By","Oprettet af", +"Creating Items and Parties","Opretter varer og parter", +"Creating Journal Entries","Opretter journalposter", +"Creating Purchase Invoices","Opretter købsfakturaer", +Credit,Kredit, +"Credit Card Entry",Kreditkortspost, +"Credit Note",Kreditnota, +Creditors,Kreditorer, +Currency,Valuta, +"Currency Name",Valutanavn, +Current,Nuværende, +"Current Assets","Nuværende aktiver", +"Current Liabilities","Nuværende forpligtelser", +"Custom Field","Brugerdefineret felt", +"Custom Fields","Brugerdefinerede felter", +"Custom Form","Brugerdefineret formular", +"Custom Hex","Brugerdefineret hex", +Customer,Kunde, +"Customer Created","Kunde oprettet", +"Customer Currency",Kundevaluta, +Customers,Kunder, +Customizations,Tilpasninger, +"Customize Form","Tilpas formular", +"Customize your invoices by adding a logo and address details","Tilpas dine fakturaer ved at tilføje et logo og adresseoplysninger", +Dashboard,Dashboard, +Data,Data, +"Database Error","Databasefejl", +"Database file: ${0}","Databasefil: ${0}", +Date,Dato, +"Date Format",Datoformat, +"Date Time",Dato tid, +Day,Dag, +Debit,Debit, +"Debit Note",Debitnota, +Debtors,Debitorer, +December,December, +"Decrease print template display scale","Nedskalér visningsskala for printskabelon", +Default,Standard, +"Default Account",Standardkonto, +"Default Location",Standardplacering, +Defaults,Standarder, +Delete,Slet, +"Delete ${0}?","Slet ${0}?", +"Delete Account","Slet konto", +"Delete Failed","Sletning mislykkedes", +"Delete Group","Slet gruppe", +Delivered,Leveret, +Depreciation,Afskrivning, +"Depreciation Entry",Afskrivningspost, +Description,Beskrivelse, +Details,Detaljer, +"Direct Expenses","Direkte udgifter", +"Direct Income","Direkte indkomst", +"Directory for database file ${0} does not exist, please select the file manually","Mappe for databasefil ${0} findes ikke, vælg venligst filen manuelt", +Disabled,Deaktiveret, +"Discount Account",Rabatkonto, +"Discount Account is not set.","Rabatkonto er ikke indstillet.", +"Discount Amount",Rabatbeløb, +"Discount Amount (${0}) cannot be greater than Amount (${1}).","Rabatbeløb (${0}) kan ikke være større end beløb (${1}).", +"Discount Percent",Rabatprocent, +"Discount Percent (${0}) cannot be greater than 100.","Rabatprocent (${0}) kan ikke være højere end 100.", +"Discounted Amount","Rabatteret beløb", +Discounts,Rabatter, +"Display Doc","Vis dokument", +"Display Logo in Invoice","Vis logo på faktura", +"Display Precision","Vis præcision", +"Display Precision should have a value between 0 and 9.","Visningspræcision skal have en værdi mellem 0 og 9.", +"Display Scale",Visningsskala, +"Dividends Paid","Udbetalte udbytter", +"Doc ${0} ${1} not set","Dok ${0} ${1} ikke indstillet", +Docs,Dokumenter, +Documentation,Dokumentation, +"Does Not Contain","Indeholder ikke", +Done,Færdig, +Dr.,Debit, +"Dr. ${0}","Debit ${0}", +Draft,Kladde, +Duplicate,Duplikér, +"Duplicate Entry","Dobbeltindførsel", +"Duplicate Template","Dupliker skabelon", +"Duplicate columns found: ${0}","Dublerede kolonner fundet: ${0}", +"Duties and Taxes","Afgifter og skatter", +"Dynamic Link",Dynamisk link, +"Earnest Money","Alvorlige penge", +"Electronic Equipments","Elektronisk udstyr", +Email,"E-mail", +"Email Address","E-mailadresse", +Empty,Tøm, +"Empty file selected","Tom fil valgt", +"Enable Barcodes","Aktivér stregkoder", +"Enable Batches","Aktivér partier", +"Enable Discount Accounting","Aktivér rabatbogføring", +"Enable Form Customization","Aktivér formular tilpasning", +"Enable Inventory","Aktivér lager", +"Enable Price List","Aktivér prisliste", +"Enable Serial Number","Aktivér serienummer", +"Enable Stock Returns","Aktivér lagerretur", +"Enable UOM Conversion","Aktivér enhedsomregning", +Enabled,Aktiveret, +"Enabled For","Aktiveret for", +"Enter Country to load States","Indtast land for at indlæse stater", +"Enter State","Indtast stat", +"Enter barcode",Indtast stregkode, +"Entertainment Expenses",Underholdningsudgifter, +Entry,Post, +"Entry Currency",Indførselsvaluta, +"Entry Label",Indførselsetiket, +"Entry No","Post nr", +"Entry No.",Post nr., +"Entry Type",Posttype, +"Entry has Grand Total ${0}. Please verify amounts.","Indførsel har samlet total ${0}. Kontroller venligst beløbene.", +Equity,Egenkapital, +Error,Fejl, +"Exchange Gain/Loss","Vekselgevinst/tab", +"Exchange Rate",Vekselkurs, +"Excise Entry",Afgiftspost, +"Existing Company","Eksisterende virksomhed", +Expand,Udvid, +Expense,Udgift, +"Expense Account",Udgiftskonto, +Expenses,Udgifter, +"Expenses Included In Valuation","Udgifter inkluderet i vurdering", +"Expiry Date",Udløbsdato, +Export,Exportér, +"Export Failed","Eksport mislykkedes", +"Export Format",Eksportformat, +"Export Successful","Eksport vellykket", +"Export Wizard",Eksportguide, +FIFO,FIFO, +Failed,Mislykkedes, +Fax,Fax, +Features,Funktioner, +February,Februar, +Field,Felt, +Fieldname,"Felt navn", +"Fieldname ${0} already exists for ${1}","Felt navn ${0} findes allerede for ${1}", +"Fieldname ${0} already used for Custom Field ${1}","Felt navn ${0} allerede brugt til brugerdefineret felt ${1}", +Fieldtype,Felttype, +"File ${0} does not exist.","Filen ${0} findes ikke.", +"File selection failed","Filvalg mislykkedes", +Fill,"Fyld", +Filter,Filtrer, +"Fiscal Year",Regnskabår, +"Fiscal Year End Date","Regnskabsår slutter", +"Fiscal Year Start Date","Regnskabsår starter", +"Fix Failed","Fix mislykkedes", +"Fixed Asset",Anlægsaktiv, +"Fixed Assets",Anlægsaktiver, +Float,Float, +"Following cells have errors: ${0}.","Følgende celler har fejl: ${0}.", +"Following links do not exist: ${absentLinks .map((l) =>","Følgende links eksisterer ikke: ${absentLinks .map((l) =>", +Font,Skrifttype, +"For Purchase,Til køb", +"For Sales","Til salg", +Forbidden Error,"Forbudt fejl", +"Form Section",Formularsektion, +"Form Tab",Formularfane, +"Form Type",Formulartype, +Fr,Fr, +Fraction,Brøk, +"Fraction Units",Brøkenheder, +"Frappe Books does not have access to the selected file: ${0}","Frappe Books har ikke adgang til den valgte fil: ${0}", +"Freight and Forwarding Charges","Frakt og videresendingsgebyrer", +From,Fra, +"From Account","Fra konto", +"From Date","Fra dato", +"From Loc.","Fra lok.", +"From Year","Fra år", +"Full Name","Fulde navn", +"Furnitures and Fixtures","Møbler og inventar", +GST,GST, +"GSTIN No.","Gstin No.", +GSTR1,Gstr1, +GSTR2,GSTR2, +"Gain/Loss on Asset Disposal","Gebyr / tab ved afhændelse af aktiver", +General,Generelt, +"General Ledger","Hovedbog", +"Get Started","Kom igang", +"Global","Globalt", +"Go back to the previous page","Gå tilbage til den forrige side", +"Gram","Gram", +"Grand Total","Samlet total", +"Greater Than","Større end", +"Green","Grøn", +"Group By","Gruppér efter", +"HSN/SAC","HSN/SAC", +"HSN/SAC Code","HSN/SAC -kode", +"Half Yearly","Halvårs-", +"Half Years","Et halvt år", +"Has Batch","Har parti", +"Has Serial Number","Har serienummer", +"Height (in cm)","Højde (i cm)", +"Help","Hjælp", +"Hex Value","Hex-værdi", +"Hidden values will be visible on Print on.","Skjulte værdier vil blive synlige ved udskrivning.", +"Hide Get Started","Skjul Kom igang", +"Hide Group Amounts","Skjul gruppebeløb", +"Hide Month/Year","Skjul måned/år", +"Hides the Get Started section from the sidebar. Change will be visible on restart or refreshing the app.","Skjuler Kom igang-sektionen fra sidepanelet. Ændringer vil være synlige ved genstart eller opdatering af app'en.", +"Hour","Time", +"INR","INR", +"Image","Billede", +"Import Complete","Import fuldført", +"Import Data","Importér data", +"Import Data.","Importer data.", +"Import Type","Importtype", +"Import Wizard","Importguide", +"Importer not set, reload tool","Importør ikke indstillet, genindlæs værktøj", +"Inactive","Inaktiv", +"Include Cancelled","Inkluder annullerede", +"Income","Indkomst", +"Income Account","Indkomstkonto", +"Increase print template display scale","Forøg visningsskalaen for printskabelon", +"Indigo","Indigo", +"Indirect Expenses","Indirekte udgifter", +"Indirect Income","Indirekte indkomst", +"Inflow","Indstrømning", +"Instance Id","Instans-id", +"Insufficient Quantity","Utilstrækkelig mængde", +"Insufficient Quantity.","Utilstrækkelig mængde.", +"Int","Int", +"Intergrated Tax","Integreret skat", +"Internal Precision","Intern præcision", +"Invalid Key Error","Ugyldig nøglefejl", +"Invalid barcode value ${0}.","Ugyldig stregkodeværdi ${0}.", +"Invalid value ${0} for ${1}","Ugyldig værdi ${0} for ${1}", +"Invalid value found for ${0}","Ugyldig værdi fundet for ${0}", +"Inventory","Lager", +"Inventory Settings","Lagerindstillinger", +"Investments","Investeringer", +"Invoice","Faktura", +"Invoice Created","Faktura oprettet", +"Invoice Date","Fakturadato", +"Invoice Item","Fakturavare", +"Invoice No","Faktura nr", +"Invoice No.","Faktura nr.", +"Invoice Value","Fakturaværdi", +"Invoices","Fakturaer", +"Is","Er", +"Is Custom","Er tilpasset", +"Is Empty","Er tom", +"Is Group","Er gruppe", +"Is Landscape","Er landskab", +"Is Not","Er ikke", +"Is Not Empty","Er ikke tom", +"Is Price List Enabled","Er prisliste aktiveret", +"Is Required","Er påkrævet", +"Is Whole","Er hel", +"Item","Vare", +"Item ${0} is a batched item","Vare ${0} er en partivare", +"Item ${0} is not a batched item","Vare ${0} er ikke en partivare", +"Item Description","Varebeskrivelse", +"Item Name","Varenavn", +"Item Prices","Varepriser", +"Item with From location not found","Vare med Fra-sted ikke fundet", +"Item with To location not found","Vare med Til-sted ikke fundet", +"Item with barcode ${0} not found.","Vare med stregkode ${0} ikke fundet.", +"Items","Varer", +"January","Januar", +"John Doe","John Doe", +"Journal Entries","Journalføringer", +"Journal Entry","Journalføring", +"Journal Entry Account","Journalføringskonto", +"Journal Entry Number Series","Journalføringsnummer-serie", +"Journal Entry Print Template","Udskabelon til journalføring", +"July","Juli", +"June","Juni", +"Key Hints","Nøglehints", +"Kg","Kg", +"Label","Etiket", +"Language","Sprog", +"Left Index","Venstre indeks", +"Legal Expenses","Juridiske udgifter", +"Less Filters","Færre filtre", +"Less Than","Mindre end", +"Liability","Forpligtelse", +"Limit","Begræns", +"Link","Link", +"Link Validation Error","Link valideringsfejl", +"Linked Entries","Kædede poster", +"List","Liste", +"List View","Listevisning", +"Load an existing company from your computer","Indlæs en eksisterende virksomhed fra din computer", +"Loading Report...","Indlæser rapport...", +"Loading instance...","Indlæser instans...", +"Loading...","Indlæser...", +"Loans (Liabilities)","Lån (forpligtelser)", +"Loans and Advances (Assets)","Lån og forskud (aktiver)", +"Locale","Lokalitet", +"Location","Sted", +"Location Name","Stedsnavn", +"Logo","Logo", +"Make Entry","Foretag indtastning", +"Make Payment On Submit","Foretag betaling ved indsendelse", +"Make Purchase Receipt On Submit","Udsted købskvittering ved indsendelse", +"Make Shipment On Submit","Foretag forsendelse ved indsendelse", +"Mandatory Error","Obligatorisk fejl", +"Manufacture","Fremstilling", +"Manufacture Date","Fremstillingsdato", +"Mar 23, 2022","23. mar 2022", +"March","Marts", +"Mark ${0} as submitted?","Marker ${0} som indsendt?", +"Marketing Expenses","Markedsføringsudgifter", +"Material Issue","Materialespørgsmål", +"Material Receipt","Materialemodtagelse", +"Material Transfer","Materialeoverførsel", +"May","Maj", +"Meter","Meter", +"Misc","Diverse", +"Miscellaneous","Diverse", +"Miscellaneous Expenses","Diverse udgifter", +"Mo","Mo", +"Modified","Ændret", +"Modified By","Ændret af", +"Monthly","Månedligt", +"Months","Måneder", +"More","Mere", +"More Filters","Flere filtre", +"More shortcuts will be added soon.","Flere genveje vil blive tilføjet snart.", +"Movement Type","Bevægelsestype", +"Moving Average","Glidende gennemsnit", +"Name","Navn", +"Navigate","Navigera", +"Net Total","Netto total", +"New ${0}","Ny ${0}", +"New ${0} ${1}","Ny ${0} ${1}", +"New Account","Nyt konto", +"New Company","Nyt firma", +"New Entry","Ny indgang", +"New Template","Ny skabelon", +"No","Nej", +"No Display Entries Found","Ingen visningsposter fundet", +"No Print Templates not found for entry type ${0}","Ingen printskabeloner fundet for posttype ${0}", +"No Value","Ingen værdi", +"No Values to be Displayed","Ingen værdier at vise", +"No entries found","Ingen poster fundet", +"No entries were imported.","Ingen poster blev importeret.", +"No expenses in this period","Ingen udgifter i denne periode", +"No filters selected","Ingen filtre valgt", +"No linked entries found","Ingen kædede poster fundet", +"No results found","Ingen resultater fundne", +"No rows added. Select a file or add rows.","Ingen rækker tilføjet. Vælg en fil eller tilføj rækker.", +"No transactions yet","Ingen transaktioner endnu", +"Non Active Serial Number ${0} cannot be used as Manufacture raw material","Inaktivt serienummer ${0} kan ikke anvendes som råmateriale til fremstilling", +"Non Active Serial Number ${0} cannot be used for Material Issue","Inaktivt serienummer ${0} kan ikke bruges til materialeudstedelse", +"Non Active Serial Number ${0} cannot be used for Material Transfer","Inaktivt serienummer ${0} kan ikke bruges til materialeoverførsel", +"Non Inactive Serial Number ${0} cannot be used for Material Receipt","Ikke-inaktivt serienummer ${0} kan ikke bruges til materialemodtagelse", +"None","Ingen", +"Not Found","Ikke fundet", +"Not Saved","Ikke gemt", +"Not Submitted","Ikke indsendt", +"Not Transferred","Ikke overført", +"Notes","Noter", +"November","November", +"Number Display","Nummervisning", +"Number Series","Nummerserie", +"Number of ${0}","Antal af ${0}", +"Number of Rows","Antal rækker", +"October","Oktober", +"Office Equipments","Kontorudstyr", +"Office Maintenance Expenses","Kontorsvedligeholdelsesudgifter", +"Office Rent","Kontorleje", +"Okay","Okay", +"Onboarding Complete","Onboarding fuldført", +"Only From or To can be set for Manufacture","Kun Fra eller Til kan indstilles for fremstilling", +"Open Count","Åben tælling", +"Open Documentation","Åben dokumentation", +"Open Folder","Åben mappe", +"Open Print View","Åben printvisning", +"Open Print View if Print is available.","Åben printvisning, hvis print er tilgængelig.", +"Open Quick Search","Åben hurtigsøgning", +"Open Report Print View","Åben rapport printvisning", +"Open the Export Wizard modal","Åben eksportguiden modal", +"Opening (Cr)","Åbning (Cr)", +"Opening (Dr)","Åbning (Dr)", +"Opening Balance Equity","Åbningsbalance egenkapital", +"Opening Balances","Åbningssaldi", +"Opening Entry","Åbningspost", +"Options","Muligheder", +"Orange","Orange", +"Organisation","Organisation", +"Outflow","Udstrømning", +"Outstanding","Fremragende", +"Outstanding Amount","Udestående beløb", +"Pad Zeros","Udfyld nul", +"Page","Side", +"Paid","Betalt", +"Paid ${0}","Betalt ${0}", +"Parent","Forælder", +"Parent Account","Overordnet konto", +"Party","Partner", +"Patch Run","Patchkørsel", +"Pay","Betal", +"Payable","Betalbar", +"Payment","Betaling", +"Payment For","Betaling for", +"Payment Method","Betalingsmetode", +"Payment No","Betalingsnr", +"Payment Number Series","Betalingsnummerserie", +"Payment Print Template","Betalings printskabelon", +"Payment Reference","Betalingsreference", +"Payment Type","Betalingstype", +"Payment amount cannot be ${0}.","Betalingsbeløb kan ikke være ${0}.", +"Payment amount cannot be less than zero.","Betalingsbeløb kan ikke være mindre end nul.", +"Payment amount cannot exceed ${0}.","Betalingsbeløb kan ikke overstige ${0}.", +"Payment amount: ${0} should be greater than 0.","Betalingsbeløb: ${0} bør være større end 0.", +"Payment amount: ${0} should be less than Outstanding amount: ${1}.","Betalingsbeløb: ${0} bør være mindre end udestående beløb: ${1}.", +"Payment of ${0} will be made from account ""${1}"" to account ""${2}"" on Submit.","Betaling af ${0} vil blive foretaget fra konto ""${1}"" til konto ""${2}"" ved indsendelse.", +"Payments","Betalinger", +"Payroll Payable","Løn til udbetaling", +"Pending Qty. ${0}","Afventende antal ${0}", +"Pending qty. ${0}","Afventende antal ${0}", +"Periodicity","Periodicitet", +"Phone","Telefon", +"Pick Columns","Vælg kolonner", +"Pick Import Columns","Vælg importkolonner", +"Pink","Rosa", +"Place","Sted", +"Place of supply","Leveringssted", +"Plants and Machineries","Planter og maskiner", +"Please Wait","Vent venligst", +"Please check Key Hints for valid key names","Kontroller venligst nøglehints for gyldige nøglenavne", +"Please create a ${0} entry to view Template Preview.","Skab venligst en ${0} post for at se skabelonforhåndsvisning.", +"Please fill all values.","Udfyld venligst alle værdier.", +"Please restart and try again.","Genstart venligst og prøv igen.", +"Please select a Print Template","Vælg venligst en udskriftsskabelon", +"Please select a valid reference type.","Vælg en gyldig referencetype.", +"Please set GSTIN in General Settings.","Indstil venligst GSTIN i Generelle Indstillinger.", +"Please set Round Off Account in the Settings.","Indstil venligst Afrundingskonto i Indstillingerne.", +"Please set a Display Doc","Indstil venligst et Visningsdokument", +"Postal Code","Postnummer", +"Postal Expenses","Postomkostninger", +"Posting Date","Bogføringsdato", +"Prefix","Præfiks", +"Price List","Prisliste", +"Price List Item","Prisliste vare", +"Prime Bank","Primær Bank", +"Print","Udskriv", +"Print ${0}","Udskriv ${0}", +"Print Settings","Udskriftsindstillinger", +"Print Setup","Udskriftsopsætning", +"Print Template","Udskriftsskabelon", +"Print Template Name not set","Udskriftsskabelonnavn ikke angivet", +"Print Template is empty","Udskriftsskabelon er tom", +"Print Templates","Udskriftsskabeloner", +"Print View","Udskriftsvisning", +"Print and Stationery","Udskrivning og papirvarer", +"Product","Produkt", +"Profit And Loss","Profit og tab", +"Profit and Loss","Profit og tab", +"Purchase","Køb", +"Purchase Acc.","Købskonto", +"Purchase Invoice","Købsfaktura", +"Purchase Invoice Item","Købsfakturavare", +"Purchase Invoice Number Series","Købsfakturanummerserie", +"Purchase Invoice Print Template","Købsfaktura udskriftsskabelon", +"Purchase Invoice Terms","Købsfakturavilkår", +"Purchase Invoices","Købsfakturaer", +"Purchase Item","Købsvare", +"Purchase Item Created","Købsvare oprettet", +"Purchase Items","Købsvarer", +"Purchase Payment","Købsbetaling", +"Purchase Payment Account","Købsbetalingskonto", +"Purchase Payments","Købsbetalinger", +"Purchase Receipt","Købskvittering", +"Purchase Receipt Item","Købskvitteringsvare", +"Purchase Receipt Location","Købskvitteringssted", +"Purchase Receipt Number Series","Købskvitteringsnummer serie", +"Purchase Receipt Print Template","Købskvittering udskriftsskabelon", +"Purchase Receipt Terms","Købskvitteringsvilkår", +"Purchases","Køb", +"Purple","Lilla", +"Purpose","Formål", +"Qty. ${0}","Antal. ${0}", +"Qty. in Transfer Unit","Antal i overførselsenhed", +"Quantity","Kvantitet", +"Quantity (${0}) has to be greater than zero","Kvantitet (${0}) skal være større end nul", +"Quantity needs to be set","Kvantitet skal indstilles", +"Quarterly","Kvartalsvis", +"Quarters","Kvartaler", +"Quick Search","Hurtigsøgning", +"Quick edit error: ${0} entry has no name.","Hurtig redigeringsfejl: ${0} post har intet navn.", +"Rate","Vurdering", +"Rate (${0}) cannot be less zero.","Rate (${0}) kan ikke være mindre end nul.", +"Rate (${0}) has to be greater than zero","Rate (${0}) skal være større end nul", +"Rate can't be negative.","Rate kan ikke være negativ.", +"Rate needs to be set","Rate skal indstilles", +"Raw Value: ${0}","Rå værdi: ${0}", +"Receivable","Tilgodehavende", +"Receive","Modtag", +"Red","Rød", +"Ref Name","Ref Navn", +"Ref Type","Ref Type", +"Ref. / Cheque No.","Ref. / Check Nr.", +"Ref. Date","Ref. Dato", +"Ref. Name","Ref. Navn", +"Ref. Type","Ref. Type", +"Reference","Reference", +"Reference Date","Referencedato", +"Reference Number","Referencenummer", +"Reference Type","Referencetype", +"References","Referencer", +"Reload Frappe Books?","Genindlæs Frappe Bøger?", +"Report","Rapport", +"Report Error","Rapportér fejl", +"Report Issue","Rapportér problem", +"Report will use more than one page if required.","Rapport vil bruge mere end en side, hvis nødvendigt.", +"Reports","Rapporter", +"Required fields not selected: ${0}","Påkrævede felter ikke valgt: ${0}", +"Retained Earnings","Tilbageholdte indtægter", +"Return","Returnering", +"Return Against","Returnering mod", +"Return Issued","Returnering udstedt", +"Reverse Chrg.","Omvendt opladning", +"Reverted","Tilbageført", +"Reverts","Reverter", +"Review Accounts","Gennemgå konti", +"Review your chart of accounts, add any account or tax heads as needed","Gennemgå din kontoplan, tilføj eventuelle konti eller skattehoveder som nødvendigt", +"Right Index","Højre indeks", +"Role","Rolle", +"Root Type","Rodtype", +"Round Off","Afrund", +"Round Off Account","Afrundingskonto", +"Round Off Account Not Found","Afrundingskonto ikke fundet", +"Rounded Off","Afrundet", +"Row ${0}","Række ${0}", +"Sa","Sa", +"Salary","Løn", +"Sales","Salg", +"Sales Acc.","Salgskonto", +"Sales Expenses","Salgsudgifter", +"Sales Invoice","Salgsfaktura", +"Sales Invoice Item","Salgsfakturavare", +"Sales Invoice Number Series","Salgsfakturanummerserie", +"Sales Invoice Print Template","Salgsfaktura udskriftsskabelon", +"Sales Invoice Terms","Salgsfakturavilkår", +"Sales Invoices","Salgsfakturaer", +"Sales Item","Salgsvare", +"Sales Item Created","Salgsvare oprettet", +"Sales Items","Salgsvarer", +"Sales Payment","Salgsbetaling", +"Sales Payment Account","Salgsbetalingskonto", +"Sales Payments","Salgsbetalinger", +"Sales and Purchase","Salg og køb", +"Save","Gem", +"Save ${0}?","Gem ${0}?", +"Save Customizations","Gem tilpasninger", +"Save Template","Gem skabelon", +"Save Template File","Gem skabelonfil", +"Save as PDF","Gem som PDF", +"Save as PDF Successful","Gemt som PDF med succes", +"Save changes made to ${0}?","Gem ændringer foretaget til ${0}?", +"Save or Submit an entry.","Gem eller indsend en post.", +"Saved","Gemt", +"Secured Loans","Sikrede lån", +"Securities and Deposits","Værdipapirer og indskud", +"Select","Vælg", +"Select CoA","Vælg CoA", +"Select Color","Vælg Farve", +"Select Country","Vælg Land", +"Select File","Vælg Fil", +"Select Image","Vælg Billede", +"Select Template File","Vælg Skabelonfil", +"Select a Display Doc to view the Template","Vælg et Display Dok for at se skabelonen", +"Select a Template type","Vælg en skabelontype", +"Select a form type to customize","Vælg en formtype til tilpasning", +"Select a pre-defined page size, or set a custom page size for your Print Template.","Vælg en foruddefineret side størrelse, eller indstil en brugerdefineret side størrelse for din Udskriftsskabelon.", +"Select column","Vælg kolonne", +"Select file","Vælg fil", +"Select folder","Vælg mappe", +"Selected","Valgt", +"September","September", +"Serial Number","Serienummer", +"Serial Number ${0} does not belong to the item ${1}.","Serienummer ${0} tilhører ikke varen ${1}.", +"Serial Number ${0} does not exist.","Serienummer ${0} findes ikke.", +"Serial Number ${0} is not Active.","Serienummer ${0} er ikke aktivt.", +"Serial Number ${0} is not Inactive","Serienummer ${0} er ikke inaktivt", +"Serial Number Description","Serienummerbeskrivelse", +"Serial Number is enabled for Item ${0}","Serienummer er aktiveret for varen ${0}", +"Serial Number is not enabled for Item ${0}","Serienummer er ikke aktiveret for varen ${0}", +"Serial Number not set for row ${0}.","Serienummer ikke angivet for række ${0}.", +"Serial Number set for row ${0}.","Serienummer angivet for række ${0}.", +"Service","Service", +"Set Discount Amount","Angiv rabatbeløb", +"Set Period","Angiv periode", +"Set Print Size","Angiv udskriftsstørrelse", +"Set Up","Opsætning", +"Set Up Your Workspace","Opsæt din arbejdsplads", +"Set a Template value to see the Print Template","Angiv en værdi for skabelonen for at se udskriftsskabelonen", +"Set an Import Type","Angiv en importtype", +"Set the display language.","Angiv visningssproget.", +"Set the local code. This is used for number formatting.","Angiv den lokale kode. Dette bruges til talformatering.", +"Set up your company information, email, country and fiscal year","Opsæt dine virksomhedsoplysninger, e-mail, land og regnskabsår", +"Set up your opening balances before performing any accounting entries","Opsæt dine åbningsbalancer, før du udfører nogen bogføringsposter", +"Set up your organization","Opsæt din organisation", +"Set up your tax templates for your sales or purchase transactions","Opsæt dine skabeloner for skat for dine salgs- eller købstransaktioner", +"Sets how many digits are shown after the decimal point.","Angiver, hvor mange cifre der vises efter decimaltegnet.", +"Sets the app-wide date display format.","Angiver appens datoformat.", +"Sets the internal precision used for monetary calculations. Above 6 should be sufficient for most currencies.","Angiver den interne præcision, der bruges til monetære beregninger. Over 6 bør være tilstrækkelig for de fleste valutaer.", +"Setting Up Instance","Opsætning af instans", +Settings,"Indstillinger", +Setup,"Opsætning", +"Setup Complete","Opsætning fuldført", +"Setup Wizard","Opsætningsguide", +"Setup system defaults like date format and display precision","Opsæt systemstandarder som datoformat og visningspræcision", +Shipment,"Forsendelse", +"Shipment Item","Forsendelsesvare", +"Shipment Location","Forsendelsessted", +"Shipment Number Series","Forsendelsesnummer-serie", +"Shipment Print Template",, +"Shipment Terms","Forsendelsesvilkår", +Shortcuts,"Genveje", +"Should entries be submitted after syncing?","Skal poster indsendes efter synkronisering?", +"Show HSN","Vis HSN", +"Show Me","Vis mig", +"Show Month/Year","Vis måned/år", +"Single Value","Enkeltværdi", +"Skip Child Tables","Spring over underordnede tabeller", +"Skip Transactions","Spring over transaktioner", +"Smallest Currency Fraction Value","Mindste valutabrøkdelværdi", +Softwares,"Software", +"Something has gone terribly wrong. Please check the console and raise an issue.","Der er sket noget frygteligt galt. Kontroller konsollen og opret en sag.", +"Source of Funds (Liabilities)","Kilde til midler (forpligtelser)", +"Standard Chart of Accounts","Standard kontoplan", +Start,"Start", +"Start From Row Index","Start fra rækkeindeks", +State,stat, +"State Tax","Statsafgift", +Status,Status, +Stock,Lager, +"Stock Adjustment","Lagerjustering", +"Stock Assets","Lageraktiver", +"Stock Balance","Lagerbalance", +"Stock Entries","Lagerposter", +"Stock Expenses","Lagerudgifter", +"Stock In Hand","Lager på hånden", +"Stock In Hand Acc.","Lager på hånden (akkumuleret)", +"Stock Ledger","Lagerbog", +"Stock Ledger Entry","Lagerbogspost", +"Stock Liabilities","Lagerforpligtelser", +"Stock Movement","Lagerbevægelse", +"Stock Movement Item","Lagerbevægelsesvare", +"Stock Movement No.","Lagerbevægelsesnummer", +"Stock Movement Number Series","Lagerbevægelsesnummer-serie", +"Stock Movement Print Template","Lagerbevægelsesudskriftsskabelon", +"Stock Movements","Lagerbevægelser", +"Stock Not Received","Lager ikke modtaget", +"Stock Not Shipped","Lager ikke afsendt", +"Stock Not Transferred","Lager ikke overført", +"Stock Received But Not Billed","Lager modtaget, men ikke faktureret", +"Stock Received But Not Billed Acc.","Lager modtaget, men ikke faktureret (akkumuleret)", +"Stock Transfer Item","Lageroverførsel", +"Stock Unit","Lagerenhed", +StockTransfer,StockTransfer, +Stores,Butikker, +Su,Su, +Submit,"Indsend", +"Submit ${0}?","Indsend ${0}?", +"Submit entries?","Indsend poster?", +Submitted,Indsendt, +Success,"Succes", +Supplier,Leverandør, +"Supplier Created","Leverandør oprettet", +Suppliers,Leverandører, +Symbol,Symbol, +System,System, +"System Settings",Systemindstillinger, +"System Setup",Systemopsætning, +Table,"Tabel", +Target,"Mål", +Tax,"Skat", +"Tax Account","Skattekonti", +"Tax Amount","Skattebeløb", +"Tax Assets","Skatteaktiver", +"Tax Detail","Skattedetaljer", +"Tax ID","Skatte-ID", +"Tax Rate","Skattesats", +"Tax Summary","Skatteoversigt", +"Tax Template","Skabelon for skat", +"Tax Templates","Skabeloner for skat", +"Tax and Totals","Skat og totaler", +"Taxable Value","Skattepligtig værdi", +"Taxed Amount","Beskattet beløb", +Taxes,Skatter, +Teal,"Teal", +"Telephone Expenses","Telefonudgifter", +Template,Mal, +"Template Builder","Skabelonbygger", +"Template Compilation Error","Skabelonkompilationsfejl", +"Template Name","Skabelonnavn", +"Template Type","Skabelontype", +"Template file saved","Skabelonfil gemt", +Temporary,Temporær, +"Temporary Accounts","Midlertidige konti", +"Temporary Opening",Temporær, +Terms,"Vilkår", +Text,"Tekst", +Th,Th, +"The following characters cannot be used ${0} in a Number Series name.","Følgende tegn kan ikke bruges ${0} i et nummerserienavn.", +"The following items have insufficient quantity for Shipment: ${0}","Følgende varer har utilstrækkelig mængde til forsendelse: ${0}", +"This Month","Denne måned", +"This Quarter","Dette kvartal", +"This Year","Dette år", +"This action is permanent","Denne handling er permanent", +"This action is permanent and will cancel the following payment: ${0}","Denne handling er permanent og vil annullere følgende betaling: ${0}", +"This action is permanent and will cancel the following payments: ${0}","Denne handling er permanent og vil annullere følgende betalinger: ${0}", +"This action is permanent and will delete associated ledger entries.","Denne handling er permanent og vil slette tilknyttede bogføringsposter.", +"This action is permanent.","Denne handling er permanent.", +"Times New Roman","Times New Roman", +To,Til, +"To Account","Til konto", +"To Account and From Account can't be the same: ${0}","Til konto og Fra konto kan ikke være det samme: ${0}", +"To Date",Hidtil, +"To Loc.","Til sted", +"To Year","Til år", +"Toggle Edit Mode","Skift redigeringsfunktion", +"Toggle Key Hints","Skift nøglehints", +"Toggle Linked Entries widget, not available in Quick Edit view.","Skift kædede poster widget, ikke tilgængelig i Quick Edit-visning.", +"Toggle between form and full width","Skift mellem form og fuld bredde", +"Toggle sidebar","Skift sidepanel", +"Toggle the Create filter","Skift opret filter", +"Toggle the Docs filter","Skift dokumentfilteret", +"Toggle the List filter","Skift listen filter", +"Toggle the Page filter","Skift sidefilteret", +"Toggle the Report filter","Skift filteret for rapport", +"Top Expenses","Topudgifter", +Total,Total, +"Total Amount","Totalbeløb", +"Total Asset (Debit)","Total aktiver (debit)", +"Total Debit: ${0} must be equal to Total Credit: ${1}","Total debit: ${0} skal være lig med total kredit: ${1}", +"Total Discount","Samlet rabat", +"Total Equity (Credit)","Total egenkapital (kredit)", +"Total Expense (Debit)","Total udgift (debit)", +"Total Income (Credit)","Total indkomst (kredit)", +"Total Liability (Credit)","Total forpligtelse (kredit)", +"Total Profit","Total fortjeneste", +"Total Spending","Samlede udgifter", +"Track Inventory","Spor lager", +Transfer,Overførsel, +"Transfer No","Overførselsnummer", +"Transfer Type",Overførselstype, +"Transfer Unit","Overførselsenhed", +"Transfer Unit ${0} is not applicable for Item ${1}","Overførselsenhed ${0} er ikke relevant for vare ${1}", +"Transfer will cause future entries to have negative stock.","Overførsel vil medføre, at fremtidige poster har negativt lager.", +"Travel Expenses","Rejseudgifter", +"Trial Balance","Prøvebalance", +Tu,Tu, +Type,Type, +"Type to search...","Skriv for at søge...", +UOM,UOM, +"UOM Conversion Item","UOM-konverteringsvare", +"UOM Conversions","UOM-konverteringer", +Unit,Enhed, +"Unit Type",Enhedstype, +Unpaid,Ubetalt, +"Unpaid ${0}","Ubetalt ${0}", +"Unsecured Loans","Usikrede lån", +"Until Date","Indtil dato", +"Use Full Width","Brug fuld bredde", +"Use List Filters","Brug liste filtre", +"User Remark",Brugerbemærkning, +"Utility Expenses","Hjælpeprogramudgifter", +"Validation Error",Valideringsfejl, +"Valuation Method",Vurderingsmetode, +Value,Værdi, +"Value missing for ${0}","Værdi mangler for ${0}", +"Value: ${0}","Værdi: ${0}", +Version,Version, +View,Vis, +"View Accounting Entries","Vis bogføringsposter", +"View Paid Invoices","Vis betalte fakturaer", +"View Purchases","Vis køb", +"View Sales","Vis salg", +"View Stock Entries","Vis lagerposter", +"View Unpaid Invoices","Vis ubetalte fakturaer", +"View linked entries","Vis kædede poster", +We,Vi, +"Welcome to Frappe Books","Velkommen til Frappe Books", +"Width (in cm)","Bredde (i cm)", +"Write Off",Afskrivning, +"Write Off Account","Afskrivningskonto", +"Write Off Account ${0} does not exist. Please set Write Off Account in General Settings","Afskrivningskonto ${0} findes ikke. Angiv venligst afskrivningskonto i generelle indstillinger", +"Write Off Account not set. Please set Write Off Account in General Settings","Afskrivningskonto ikke angivet. Angiv venligst afskrivningskonto i generelle indstillinger", +"Write Off Entry","Afskrivningspost", +"Year to Date","År til dato", +Yearly,Årlig, +Years,År, +Yellow,Gul, +Yes,Ja, +"check values and click on","kontroller værdier og klik på", +"in Batch ${0}","i parti ${0}", +john@doe.com,john@doe.com, +"to apply changes","for at anvende ændringer", \ No newline at end of file From 6ec7a1b9a17881e88f4cce38acc93a2053c7bef8 Mon Sep 17 00:00:00 2001 From: Konstantin Sharlaimov Date: Thu, 2 Nov 2023 22:21:12 +0100 Subject: [PATCH 002/107] Add regional schemas for Switzerland. --- .gitignore | 1 + schemas/regional/ch/AccountingSettings.json | 21 +++++++++++++++++++++ schemas/regional/ch/index.ts | 4 ++++ schemas/regional/index.ts | 6 +++++- src/utils/printTemplates.ts | 2 +- 5 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 schemas/regional/ch/AccountingSettings.json create mode 100644 schemas/regional/ch/index.ts diff --git a/.gitignore b/.gitignore index c56e8d3e..fdd7227d 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,7 @@ yarn-error.log* *.njsproj *.sln *.sw? +*.code-workspace #Electron-builder output /dist_electron diff --git a/schemas/regional/ch/AccountingSettings.json b/schemas/regional/ch/AccountingSettings.json new file mode 100644 index 00000000..b024733d --- /dev/null +++ b/schemas/regional/ch/AccountingSettings.json @@ -0,0 +1,21 @@ +{ + "name": "AccountingSettings", + "fields": [ + { + "fieldname": "taxId", + "label": "Tax ID", + "fieldtype": "Data", + "placeholder": "CHE-123.456.789", + "section": "Default" + } + ], + "quickEditFields": [ + "fullname", + "email", + "companyName", + "country", + "fiscalYearStart", + "fiscalYearEnd", + "taxId" + ] +} diff --git a/schemas/regional/ch/index.ts b/schemas/regional/ch/index.ts new file mode 100644 index 00000000..3287e390 --- /dev/null +++ b/schemas/regional/ch/index.ts @@ -0,0 +1,4 @@ +import { SchemaStub } from '../../types'; +import AccountingSettings from './AccountingSettings.json'; + +export default [AccountingSettings] as SchemaStub[]; diff --git a/schemas/regional/index.ts b/schemas/regional/index.ts index de55493e..6c9b8e88 100644 --- a/schemas/regional/index.ts +++ b/schemas/regional/index.ts @@ -1,7 +1,11 @@ import { SchemaStub } from 'schemas/types'; import IndianSchemas from './in'; +import SwissSchemas from './ch'; /** * Regional Schemas are exported by country code. */ -export default { in: IndianSchemas } as Record; +export default { in: IndianSchemas, ch: SwissSchemas } as Record< + string, + SchemaStub[] +>; diff --git a/src/utils/printTemplates.ts b/src/utils/printTemplates.ts index 867f89ad..0eaa41f5 100644 --- a/src/utils/printTemplates.ts +++ b/src/utils/printTemplates.ts @@ -29,7 +29,7 @@ const printSettingsFields = [ 'address', 'companyName', ]; -const accountingSettingsFields = ['gstin']; +const accountingSettingsFields = ['gstin', 'taxId']; export async function getPrintTemplatePropValues( doc: Doc From 4c789bbf26063dc76e7392d25953fe4e39f50793 Mon Sep 17 00:00:00 2001 From: SumanTwati Date: Sun, 3 Dec 2023 03:59:44 +0545 Subject: [PATCH 003/107] added nepali translation (#772) --- src/utils/language.ts | 17 +- translations/np.csv | 1002 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1011 insertions(+), 8 deletions(-) create mode 100644 translations/np.csv diff --git a/src/utils/language.ts b/src/utils/language.ts index 1305019b..867cf93a 100644 --- a/src/utils/language.ts +++ b/src/utils/language.ts @@ -5,20 +5,21 @@ import { systemLanguageRef } from './refs'; // Language: Language Code in books/translations export const languageCodeMap: Record = { + Arabic: 'ar', + Catalan: 'ca-ES', + Danish: 'da', + Dutch: 'nl', English: 'en', French: 'fr', German: 'de', - Portuguese: 'pt', - Arabic: 'ar', - Catalan: 'ca-ES', - Spanish: 'es', - Dutch: 'nl', Gujarati: 'gu', - Turkish: 'tr', Korean: 'ko', - Swedish: 'sv', - Danish: 'da', + Nepali: 'np', + Portuguese: 'pt', 'Simplified Chinese': 'zh-CN', + Spanish: 'es', + Swedish: 'sv', + Turkish: 'tr', }; export async function setLanguageMap( diff --git a/translations/np.csv b/translations/np.csv new file mode 100644 index 00000000..73e41350 --- /dev/null +++ b/translations/np.csv @@ -0,0 +1,1002 @@ +"${0} ${1} already exists.","${0} ${1} पहिले नै अवस्थित छ।", +"${0} ${1} does not exist","${0} ${1} अवस्थित छैन।", +"${0} ${1} has been modified after loading please reload entry.","${0} ${1} लोड गरिसकेपछि परिमार्जन गरिएको छ कृपया एन्ट्री पुन: लोड गर्नुहोस्।", +"${0} ${1} is linked with existing records.","${0} ${1} अवस्थित रेकर्डहरूसँग जोडिएको छ।", +"${0} account not set in Inventory Settings.","${0} खाता सूची सेटिङहरूमा सेट गरिएको छैन।", +"${0} already saved","${0} पहिले नै दाखिला गरिएको छ", +"${0} already submitted","${0} पहिले नै पेश गरिएको छ", +"${0} cancelled","${0} रद्द गरियो", +"${0} cannot be cancelled","${0} रद्द गर्न सकिँदैन", +"${0} cannot be deleted","${0} मेटाउन सकिँदैन", +"${0} deleted","${0} मेटाइयो", +"${0} entries failed","${0} एन्ट्रीहरू असफल भयो", +"${0} entries imported","${0} एन्ट्रीहरू आयात गरियो", +"${0} entry failed","${0} एन्ट्री असफल भयो", +"${0} entry imported","${0} एन्ट्री आयात गरियो", +"${0} fields selected","${0} फिल्डहरू चयन गरियो", +"${0} filters applied","${0} फिल्टरहरू लागू गरियो", +"${0} has linked child accounts.","${0} सहायक खाताहरू जोडिएको छ।", +"${0} of type ${1} does not exist","${0} प्रकार ${1} अवस्थित छैन", +"${0} out of ${1}","${1} मध्ये ${0}", +"${0} party ${1} is different from ${2}","${0} पार्टी ${1} ${2} भन्दा फरक छ", +"${0} quantity 1 added.","${0} मात्रा १ थपियो।", +"${0} row added.","${0} पंक्ति थपियो।", +"${0} rows","${0} पङ्क्तिहरू", +"${0} rows added.","${0} पङ्क्तिहरू थपियो।", +"${0} saved","${0} दाखिला गरियो", +"${0} shortcuts","${0} सर्टकटहरू", +"${0} stored at ${1}","${0} ${1} मा भण्डारण गरियो", +"${0} submitted","${0} पेश गरियो", +"${0} value ${1} does not exist.","${0} मान ${1} अवस्थित छैन।", +0%,"०%", +03-23-2022,"०३-२३-२०२२", +03/23/2022,"०३/२३/२०२२", +"1 filter applied","१ फिल्टर लागू गरियो", +2022-03-23,"२०२२-०३-२३", +"23 Mar, 2022","२३ मार्च, २०२२", +23-03-2022,"२३-०३-२०२२", +23.03.2022,"२३.०३.२०२२", +23/03/2022,"२३/०३/२०२२", +9888900000,९८८८९०००००, +"A submittable entry is deleted only if it is in the cancelled state.","पेश गर्न मिल्ने एन्ट्री रद्द गरिएको अवस्थामा मात्र मेटाइन्छ।", +Account,"खाता", +"Account ${0} does not exist.","खाता ${0} अवस्थित छैन।", +"Account Entries","खाता एन्ट्रीहरू", +"Account Name","खाताको नाम", +"Account Type","खाताको प्रकार", +Accounting,"लेखा", +"Accounting Entries","लेखा एन्ट्रीहरू", +"Accounting Ledger Entry","लेखा खाता एन्ट्री", +"Accounting Settings","लेखा सेटिङहरू", +Accounts,खाताहरू, +"Accounts Payable","भुक्तानी योग्य खाताहरू", +"Accounts Receivable","प्राप्तयोग्य खाताहरू", +"Accumulated Depreciation","संचित मूल्यह्रास", +Action,"कार्य", +Active,"सक्रिय", +"Add Account","खाता थप्नुहोस्", +"Add Customers","ग्राहकहरू थप्नुहोस्", +"Add Group","समूह थप्नुहोस्", +"Add Items","वस्तुहरू थप्नुहोस्", +"Add Row","पङ्क्ति थप्नुहोस्", +"Add Suppliers","आपूर्तिकर्ता थप्नुहोस्", +"Add Taxes","करहरू थप्नुहोस्", +"Add a few customers to create your first sales invoice","आफ्नो पहिलो बिक्री बीजक सिर्जना गर्न केही ग्राहकहरू थप्नुहोस्", +"Add a few suppliers to create your first purchase invoice","आफ्नो पहिलो खरिद बीजक सिर्जना गर्न केही आपूर्तिकर्ताहरू थप्नुहोस्", +"Add a filter","फिल्टर थप्नुहोस्", +"Add a remark","टिप्पणी थप्नुहोस्", +"Add attachment","संलग्नक थप्नुहोस्", +"Add invoice terms","बीजक सर्तहरू थप्नुहोस्", +"Add products or services that you buy from your suppliers","तपाईंले आफ्ना आपूर्तिकर्ताहरूबाट खरिद गर्नुभएको उत्पादन वा सेवाहरू थप्नुहोस्", +"Add products or services that you sell to your customers","तपाईंले आफ्ना ग्राहकहरूलाई बेच्ने उत्पादन वा सेवाहरू थप्नुहोस्", +"Add transfer terms","स्थानान्तरण सर्तहरू थप्नुहोस्", +"Additional ${0} Serial Numbers required for ${1} quantity of ${2}.",${2} को ${1} मात्राको लागि थप ${0} क्रम संख्याहरू आवश्यक छ।, +"Additional quantity (${0}) required${1} to make outward transfer of item ${2} from ${3} on ${4}","अतिरिक्त मात्रा (${0}) आवश्यक छ ${1} वस्तुको बाहिरी स्थानान्तरण गर्न ${2} ${3} बाट ${4} मा", +Address,ठेगाना, +"Address Display","ठेगाना प्रदर्शन", +"Address Line 1","ठेगाना लाइन १", +"Address Line 2","ठेगाना लाइन २", +"Address Name","ठेगाना नाम", +"Administrative Expenses","प्रशासनिक खर्च", +All,"सबै", +Amount,"रकम", +"Amount Paid","तिरीएको रकम", +"Amount: ${0} and writeoff: ${1} is less than the total amount allocated to references: ${2}.","रकम: ${0} र राइटअफ: ${1} सन्दर्भहरूमा छुट्याइएको कुल रकम भन्दा कम छ: ${2}।", +"Amount: ${0} is less than the total amount allocated to references: ${1}.","रकम: ${0} सन्दर्भहरूमा छुट्याइएको कुल रकम भन्दा कम छ: ${1}।", +Amounts,"रकम", +"An entry is cancelled only if it is in the submitted state.","पेश गरिएको अवस्थामा मात्र एन्ट्री रद्द हुन्छ।", +"An entry is submitted only if it is submittable and is in the saved state.","एन्ट्री मात्र पेश गरिन्छ यदि यो पेश गर्न योग्य छ र दाखिल अवस्थामा छ।", +"An error occurred.","एउटा त्रुटि भयो।", +"Applicable anywhere in Frappe Books","फ्रपि बुक्स्मा कहीं पनि लागू हुन्छ", +"Applicable when Quick Search is open","द्रुत खोज खुला हुँदा लागू हुन्छ", +"Applicable when Template Builder is open","टेम्प्लेट बिल्डर खुला हुँदा लागू हुन्छ", +"Applicable when a entry is open in the Form view or Quick Edit view","फारम भ्यू वा द्रुत सम्पादन भ्यूमा एन्ट्री खुला हुँदा लागू हुन्छ", +"Applicable when the List View of an entry type is open","एन्ट्री प्रकारको सूची भ्यू खुला हुँदा लागू हुन्छ", +"Application of Funds (Assets)","कोषको आवेदन (सम्पत्ति)", +"Apply Discount After Tax","कर पछि छूट लागू गर्नुहोस्", +"Apply and view changes made to the print template","प्रिन्ट टेम्प्लेटमा गरिएका परिवर्तनहरू लागू गर्नुहोस् र हेर्नुहोस्", +April,"अप्रिल", +Arial,"एरियल", +"Ascending Order","आरोही क्रम", +Asset,"सम्पत्ति", +"Attach Image","फोटो संलग्न गर्नुहोस्", +Attachment,"संलग्नक", +August,"अगस्ट", +"Auto Payments","स्वत: भुक्तानी", +"Auto Stock Transfer","स्वत: स्टक स्थानान्तरण", +Autocomplete,"स्वत: पूर्ण", +"Back Reference","पछाडि सन्दर्भ", +"Bad import data, could not read file.","खराब आयात डाटा, फाइल पढ्न सकेन।", +Balance,"ब्यालेन्स", +"Balance Sheet","सन्तुलन परीक्षा", +Bank,"बैंक", +"Bank Accounts","बैंक खाताहरू", +"Bank Entry","बैंक एन्ट्री", +"Bank Name","बैंक नाम", +"Bank Overdraft Account","बैंक ओभरड्राफ्ट खाता", +Barcode,"बारकोड", +"Base Grand Total","आधार कुल", +"Based On","मा आधारित", +Batch,"ब्याच", +"Batch not set for row ${0}.","पङ्क्ति ${0} को लागि ब्याच सेट गरिएको छैन।", +"Batch set for row ${0}.","पङ्क्ति ${0} को लागि ब्याच सेट।", +"Bill Created","बिल बनाइयो", +Billing,"बिलिङ", +Black,"कालो", +Blue,"निलो", +Both,"दुबै", +"Both From and To Location cannot be undefined","दुबै स्थानबाट र स्थान अपरिभाषित हुन सक्दैन", +Buildings,"भवनहरू", +Cancel,"रद्द गर्नुहोस्", +"Cancel ${0}?","${0} रद्द गर्ने हो?", +"Cancel or Delete an entry.","रद्द गर्नुहोस् वा एन्ट्री मेटाउनुहोस्।", +Cancelled,"रद्द गरियो", +"Cannot Commit Error","त्रुटि कमिट गर्न सकिँदैन", +"Cannot Delete","मेटाउन सकिँदैन", +"Cannot Delete Account","खाता मेटाउन सकिँदैन", +"Cannot Export","निर्यात गर्न सकिँदैन", +"Cannot Import","आयात गर्न सकिँदैन", +"Cannot Open File","फाइल खोल्न सकिँदैन", +"Cannot cancel ${0} ${1} because of the following ${2}: ${3}","निम्न ${2} को कारणले गर्दा ${0} ${1} रद्द गर्न सकिँदैन: ${3}", +"Cannot delete ${0} ""${1}"" because of linked entries.","लिङ्क गरिएका एन्ट्रीहरूको कारण ${0} ""${1}"" मेटाउन सकिँदैन।", +"Cannot open file","फाइल खोल्न सकिँदैन", +"Cannot perform operation.","सञ्चालन गर्न सकिँदैन।", +"Cannot read file","फाइल पढ्न सकिँदैन", +"Capital Equipments","पूंजी उपकरणहरू", +"Capital Stock","पुँजी स्टक", +Cash,"नगद", +"Cash Entry","नगद एन्ट्री", +"Cash In Hand","हातमा नगद", +Cashflow,"नगद प्रवाह", +"Central Tax","केन्द्रीय कर", +"Change DB","DB परिवर्तन गर्नुहोस्", +"Change File","फाइल परिवर्तन गर्नुहोस्", +"Change Ref Type","रेफ प्रकार परिवर्तन गर्नुहोस्", +"Changes made to settings will be visible on reload.","सेटिङहरूमा गरिएका परिवर्तनहरू पुनः लोड गर्दा देखिने छन्।", +Chargeable,"चार्जयोग्य", +"Chart Of Accounts Reviewed","लेखाको चार्ट समीक्षा गरियो", +"Chart of Accounts","लेखाको चार्ट", +Check,"जाँच गर्नुहोस्", +Cheque,"चेक", +"City / Town","शहर / नगर", +Clear,"खाली गर्नुहोस्", +"Clearance Date","क्लियरेन्स मिति", +Close,"बन्द गर्नुहोस्", +"Close Frappe Books and try manually.","फ्रपि बुक्स् बन्द गर्नुहोस् र म्यानुअल रूपमा प्रयास गर्नुहोस्।", +"Close Quick Search","द्रुत खोज बन्द गर्नुहोस्", +Closing,"क्लोजिंग", +"Closing (Cr)","क्लोजिंग (Cr)", +"Closing (Dr)","क्लोजिंग (Dr)", +Collapse,"संक्षिप्त गर्नुहोस्", +Color,"रंग", +"Commission on Sales","बिक्री मा आयोग", +Common,"सामान्य", +Company,"कम्पनी", +"Company Logo","कम्पनीको लोगो", +"Company Name","कम्पनीको नाम", +"Company Setup","कम्पनी सेटअप", +Completed,"पूरा भयो", +Condition,"अवस्था", +"Consolidate Columns","स्तम्भहरू समेकित गर्नुहोस्", +Contacts,"सम्पर्कहरू", +Contains,"समावेश गर्दछ", +"Continue submitting Sales Invoice?","बिक्री बीजक पेश गर्न जारी राख्नुहुन्छ?", +"Contra Entry","कन्ट्रा एन्ट्री", +"Conversion Error","रूपान्तरण त्रुटि", +"Conversion Factor","रूपान्तरण कारक", +"Cost Of Goods Sold Acc.","सामान बेचेको खाताको लागत", +"Cost of Goods Sold","बेचेको सामानको लागत", +"Could not connect to database file ${0}, please select the file manually","डाटाबेस फाइल ${0} मा जडान गर्न सकिएन, कृपया फाइल म्यानुअल रूपमा छान्नुहोस्", +Country,"देश", +"Country Code","देश कोड", +"Country code used to initialize regional settings.","क्षेत्रीय सेटिङहरू प्रारम्भ गर्न प्रयोग गरिने देश कोड।", +Courier,"कुरियर", +Cr.,"क्रे.", +"Cr. ${0}","क्रे. ${0}", +Create,"सिर्जना गर्नुहोस्", +"Create Demo","डेमो सिर्जना गर्नुहोस्", +"Create Purchase","खरिद सिर्जना गर्नुहोस्", +"Create Purchase Invoice","खरिद बीजक सिर्जना गर्नुहोस्", +"Create Sale","बिक्री सिर्जना गर्नुहोस्", +"Create Sales Invoice","बिक्री बीजक सिर्जना गर्नुहोस्", +"Create a demo company to try out Frappe Books","फ्रपि बुक्स् प्रयास गर्न डेमो कम्पनी सिर्जना गर्नुहोस्", +"Create a new company and store it on your computer","नयाँ कम्पनी बनाउनुहोस् र यसलाई आफ्नो कम्प्युटरमा भण्डार गर्नुहोस्", +"Create a new company or select an existing one from your computer","नयाँ कम्पनी सिर्जना गर्नुहोस् वा तपाइँको कम्प्युटरबाट अवस्थित एक छान्नुहोस्", +"Create a new entry of the same type as the List View","सूची भ्यू जस्तै समान प्रकारको नयाँ एन्ट्री सिर्जना गर्नुहोस्", +"Create new ${0} entry?","नयाँ ${0} एन्ट्री सिर्जना गर्ने?", +"Create your first purchase invoice from the created supplier","सिर्जना गरिएको आपूर्तिकर्ताबाट तपाईंको पहिलो खरिद बीजक सिर्जना गर्नुहोस्", +"Create your first sales invoice for the created customer","सिर्जना गरिएको ग्राहकको लागि तपाईंको पहिलो बिक्री बीजक सिर्जना गर्नुहोस्", +Created,"सिर्जना गरियो", +"Created By","द्वारा सिर्जना गरिएको", +"Creating Items and Parties","वस्तुहरू र पार्टीहरू सिर्जना गर्दै", +"Creating Journal Entries","जर्नल एन्ट्रीहरू सिर्जना गर्दै", +"Creating Purchase Invoices","खरिद बीजकहरू सिर्जना गर्दै", +Credit,"क्रेडिट", +"Credit Card Entry","क्रेडिट कार्ड एन्ट्री", +"Credit Note","क्रेडिट नोट", +Creditors,"ऋणीहरू", +Currency,"मुद्रा", +"Currency Name","मुद्रा नाम", +Current,"वर्तमान", +"Current Assets","चालु सम्पत्ति", +"Current Liabilities","चालु दायित्व", +"Custom Field","अनुकूलन फिल्ड", +"Custom Fields","अनुकूलन फिल्डहरू", +"Custom Form","अनुकूलन फारम", +"Custom Hex","अनुकूलन हेक्स", +Customer,"ग्राहक", +"Customer Created","ग्राहक सिर्जना गरियो", +"Customer Currency","ग्राहक मुद्रा", +Customers,"ग्राहकहरु", +Customizations,"अनुकूलनहरू", +"Customize Form","फारम अनुकूलित गर्नुहोस्", +"Customize your invoices by adding a logo and address details","लोगो र ठेगाना विवरणहरू थपेर आफ्नो बीजकहरू अनुकूलित गर्नुहोस्", +Dashboard,"ड्यासबोर्ड", +Data,"डाटा", +"Database Error","डाटाबेस त्रुटि", +"Database file: ${0}","डाटाबेस फाइल: ${0}", +Date,"मिति", +"Date Format","मिति ढाँचा", +"Date Time","मिति समय", +Day,"दिन", +Debit,"डेबिट", +"Debit Note","डेबिट नोट", +Debtors,"ऋणीहरू", +December,"डिसेम्बर", +"Decrease print template display scale","प्रिन्ट टेम्प्लेट डिस्प्ले स्केल घटाउनुहोस्", +Default,"पूर्वनिर्धारित", +"Default Account","पूर्वनिर्धारित खाता", +"Default Location","पूर्वनिर्धारित स्थान", +Defaults,"पूर्वनिर्धारितहरू", +Delete,"मेटाउने", +"Delete ${0}?","${0} मेट्ने हो?", +"Delete Account","खाता मेटाउनुहोस्", +"Delete Failed","मेटाउन सकिएन", +"Delete Group","समूह मेटाउनुहोस्", +Delivered,"डेलिभर गरियो", +Depreciation,"मूल्यह्रास", +"Depreciation Entry","मूल्यह्रास एन्ट्री", +Description,"विवरण", +Details,"विवरणहरू", +"Direct Expenses","प्रत्यक्ष खर्च", +"Direct Income","प्रत्यक्ष आम्दानी", +"Directory for database file ${0} does not exist, please select the file manually","डाटाबेस फाइल ${0} को लागि डाइरेक्टरी अवस्थित छैन, कृपया फाइल म्यानुअल रूपमा छान्नुहोस्", +Disabled,"असक्षम", +"Discount Account","छुट खाता", +"Discount Account is not set.","छुट खाता सेट गरिएको छैन।", +"Discount Amount","छुट रकम", +"Discount Amount (${0}) cannot be greated than Amount (${1}).","छुट रकम (${0}) रकम (${1}) भन्दा बढी हुन सक्दैन।", +"Discount Percent","छुट प्रतिशत", +"Discount Percent (${0}) cannot be greater than 100.","छुट प्रतिशत (${0}) १०० भन्दा बढी हुन सक्दैन।", +"Discounted Amount","छुट रकम", +Discounts,"छुटहरू", +"Display Doc","कागजात प्रदर्शन गर्नुहोस्", +"Display Logo in Invoice","बीजकमा लोगो प्रदर्शन गर्नुहोस्", +"Display Precision","प्रेसिजन प्रदर्शन गर्नुहोस्", +"Display Precision should have a value between 0 and 9.","डिस्प्ले प्रेसिजनको मान ० र ९ बीचको हुनुपर्छ।", +"Display Scale","डिस्प्ले स्केल", +"Dividends Paid","लाभांश भुक्तान गरियो", +"Doc ${0} ${1} not set","कागजात ${0} ${1} सेट गरिएको छैन", +Docs,"कागजात", +Documentation,"कागजात", +"Does Not Contain","समावेश गर्दैन", +Done,"सकियो", +Dr.,"डे.", +"Dr. ${0}","डे. ${0}", +Draft,"मस्यौदा", +Duplicate,"नक्कल", +"Duplicate Entry","नक्कल एन्ट्री", +"Duplicate Template","नक्कल टेम्प्लेट", +"Duplicate columns found: ${0}","नक्कल स्तम्भ फेला पर्यो: ${0}", +"Duties and Taxes","शुल्क र करहरू", +"Dynamic Link","डायनामिक लिङ्क", +"Earnest Money","अर्नेस्ट पैसा", +"Electronic Equipments","इलेक्ट्रोनिक उपकरणहरू", +Email,"इमेल", +"Email Address","इमेल ठेगाना", +Empty,"खाली", +"Empty file selected","खाली फाइल चयन गरियो", +"Enable Barcodes","बारकोड सक्षम गर्नुहोस्", +"Enable Batches","ब्याचहरू सक्षम गर्नुहोस्", +"Enable Discount Accounting","छुट लेखा सक्षम गर्नुहोस्", +"Enable Form Customization","फारम अनुकूलन सक्षम गर्नुहोस्", +"Enable Inventory","इन्भेन्टरी सक्षम गर्नुहोस्", +"Enable Price List","मूल्य सूची सक्षम गर्नुहोस्", +"Enable Serial Number","क्रम संख्या सक्षम गर्नुहोस्", +"Enable Stock Returns","स्टक रिटर्न सक्षम गर्नुहोस्", +"Enable UOM Conversion","UOM रूपान्तरण सक्षम गर्नुहोस्", +Enabled,"सक्षम गरियो", +"Enabled For","लागि सक्षम गरियो", +"Enter Country to load States","राज्यहरू लोड गर्न देश प्रविष्ट गर्नुहोस्", +"Enter State","राज्य प्रविष्ट गर्नुहोस्", +"Enter barcode","बारकोड प्रविष्ट गर्नुहोस्", +"Entertainment Expenses","मनोरञ्जन खर्च", +Entry,"प्रवेश", +"Entry Currency","एन्ट्री मुद्रा", +"Entry Label","एन्ट्री लेबल", +"Entry No","प्रवेश नं", +"Entry No.","प्रवेश नं.", +"Entry Type","एन्ट्री प्रकार", +"Entry has Grand Total ${0}. Please verify amounts.","एन्ट्रीमा कुल जम्मा ${0} छ। कृपया रकमहरू प्रमाणित गर्नुहोस्।", +Equity,"इक्विटी", +Error,"त्रुटि", +"Exchange Gain/Loss","विनिमय लाभ/हानि", +"Exchange Rate","विनिमय दर", +"Excise Entry","अन्तःशुल्क प्रवेश", +"Existing Company","Existing Company", +Expand,"विस्तार गर्नुहोस्", +Expense,"खर्च", +"Expense Account","खर्च खाता", +Expenses,"खर्च", +"Expenses Included In Valuation","मूल्याङ्कनमा समावेश खर्चहरू", +"Expiry Date","म्याद सकिने मिति", +Export,"निर्यात गर्नुहोस्", +"Export Failed","निर्यात असफल भयो", +"Export Format","ढाँचा निर्यात गर्नुहोस्", +"Export Successful","निर्यात सफल", +"Export Wizard","विजार्ड निर्यात गर्नुहोस्", +FIFO,"फिफो", +Failed,"असफल", +Fax,"फ्याक्स", +Features,"विशेषताहरु", +February,"फेब्रुअरी", +Field,"फिल्ड", +Fieldname,"फिल्डनाम", +"Fieldname ${0} already exists for ${1}","फिल्डनाम ${0} पहिले नै ${1} को लागि अवस्थित छ", +"Fieldname ${0} already used for Custom Field ${1}","फिल्डनाम ${0} पहिले नै अनुकूलन क्षेत्र ${1} को लागि प्रयोग गरिएको छ", +Fieldtype,"फिल्डप्रकार", +"File ${0} does not exist.","फाइल ${0} अवस्थित छैन।", +"File selection failed","फाइल चयन असफल भयो", +Fill,"भर्न", +Filter,"फिल्टर गर्नुहोस्", +"Fiscal Year","आर्थिक वर्ष", +"Fiscal Year End Date","आर्थिक वर्षको अन्त्य मिति", +"Fiscal Year Start Date","आर्थिक वर्ष सुरु मिति", +"Fix Failed","समाधान असफल भयो", +"Fixed Asset","स्थिर सम्पत्ति", +"Fixed Assets","स्थिर सम्पत्ति", +Float,"फ्लोट", +"Following cells have errors: ${0}.","निम्न कक्षहरूमा त्रुटिहरू छन्: ${0}।", +"Following links do not exist: ${absentLinks .map((l) =>","निम्न लिङ्कहरू अवस्थित छैनन्: ${absentLinks .map((l) =>", +Font,"फन्ट", +"For Purchase","खरिदका लागि", +"For Sales","बिक्रीको लागी", +"Forbidden Error","निषेधित त्रुटि", +"Form Section","फारम खण्ड", +"Form Tab","फारम ट्याब", +"Form Type","फारम प्रकार", +Fr,, +Fraction,"अंश", +"Fraction Units","अंश एकाइहरू", +"Frappe Books does not have access to the selected file: ${0}","फ्रपि बुक्स्सँग चयन गरिएको फाइलमा पहुँच छैन: ${0}", +"Freight and Forwarding Charges","भाडा र फर्वार्डिङ शुल्कहरू", +From,"देखि", +"From Account","खाताबाट", +"From Date","मिति देखि", +"From Loc.","Loc देखि", +"From Year","वर्ष देखि", +"Full Name","पुरा नाम", +"Furnitures and Fixtures","फर्निचर र फिक्स्चर", +GST,, +"GSTIN No.",, +GSTR1,, +GSTR2,, +"Gain/Loss on Asset Disposal","सम्पत्ति डिस्पोजलमा लाभ/हानि", +General,"सामान्य", +"General Ledger","साधारण लेजर", +"Get Started","सुरु गर्नुहोस्", +Global,"विश्वव्यापी", +"Go back to the previous page","अघिल्लो पृष्ठमा फर्कनुहोस्", +Gram,"ग्राम", +"Grand Total","कूल जम्मा", +"Greater Than","भन्दा ठुलो", +Green,"हरियो", +"Group By","द्वारा समूह", +HSN/SAC,, +"HSN/SAC Code","HSN/SAC कोड", +"Half Yearly","अर्धवार्षिक", +"Half Years","आधा वर्ष", +"Has Batch","ब्याच छ", +"Has Serial Number","क्रम संख्या छ", +"Height (in cm)","उचाइ (सेमीमा)", +Help,"मद्दत", +"Hex Value","हेक्स मान", +"Hidden values will be visible on Print on.","लुकेका मानहरू प्रिन्ट अनमा देखिनेछन्।", +"Hide Get Started","लुकाउनुहोस् सुरु गर्नुहोस्", +"Hide Group Amounts","समूह रकमहरू लुकाउनुहोस्", +"Hide Month/Year","महिना/वर्ष लुकाउनुहोस्", +"Hides the Get Started section from the sidebar. Change will be visible on restart or refreshing the app.","साइडबारबाट सुरु गर्नुहोस् खण्ड लुकाउँछ। एप रिस्टार्ट गर्दा वा रिफ्रेस गर्दा परिवर्तन देखिने छ।", +Hour,"घण्टा", +INR,, +Image,"फोटो", +"Import Complete","आयात पूरा भयो", +"Import Data","डाटा आयात", +"Import Data.","डाटा आयात।", +"Import Type","आयात प्रकार", +"Import Wizard","विजार्ड आयात", +"Importer not set, reload tool","आयातकर्ता सेट गरिएको छैन, उपकरण पुन: लोड गर्नुहोस्", +Inactive,"निष्क्रिय", +"Include Cancelled","रद्द समावेश", +Income,"आम्दानी", +"Income Account","आय खाता", +"Increase print template display scale","प्रिन्ट टेम्प्लेट प्रदर्शन स्केल बढाउनुहोस्", +Indigo,"इन्डिगो", +"Indirect Expenses","अप्रत्यक्ष खर्च", +"Indirect Income","अप्रत्यक्ष आय", +Inflow,"प्रवाह", +"Instance Id","इन्स्ट्यान्स आईडी", +"Insufficient Quantity","अपर्याप्त मात्रा", +"Insufficient Quantity.","अपर्याप्त मात्रा.", +Int,, +"Intergrated Tax","एकीकृत कर", +"Internal Precision","आन्तरिक परिशुद्धता", +"Invalid Key Error","अमान्य कुञ्जी त्रुटि", +"Invalid barcode value ${0}.","अवैध बारकोड मान ${0}।", +"Invalid value ${0} for ${1}","${1} को लागि अवैध मान ${0}", +"Invalid value found for ${0}","${0} को लागि अवैध मान भेटियो", +Inventory,"सूची", +"Inventory Settings","सूची सेटिङहरू", +Investments,"लगानी", +Invoice,"बीजक", +"Invoice Created","बीजक सिर्जना गरियो", +"Invoice Date","बीजक मिति", +"Invoice Item","बीजक वस्तु", +"Invoice No","बीजक नं", +"Invoice No.","बीजक नं.", +"Invoice Value","बीजक मूल्य", +Invoices,"बीजकहरू", +Is,"छ", +"Is Custom","कस्टम छ", +"Is Empty","खाली छ", +"Is Group","समूह छ", +"Is Landscape","ल्यान्डस्केप छ", +"Is Not","छैन", +"Is Not Empty","खाली छैन", +"Is Price List Enabled","मूल्य सूची सक्षम छ", +"Is Required","आवश्यक छ", +"Is Whole","पूरै छ", +Item,"वस्तु", +"Item ${0} is a batched item","वस्तु ${0} एउटा ब्याच गरिएको वस्तु हो", +"Item ${0} is not a batched item","वस्तु ${0} ब्याच गरिएको वस्तु होइन", +"Item Description","वस्तु विवरण", +"Item Name","वस्तुको नाम", +"Item Prices","वस्तु मूल्यहरू", +"Item with From location not found","स्थानबाट वस्तु फेला परेन", +"Item with To location not found","स्थानमा रहेको वस्तु फेला परेन", +"Item with barcode ${0} not found.","बारकोड ${0} भएको वस्तु फेला परेन।", +Items,"वस्तुहरू", +January,"जनवरी", +"John Doe","जोन डो", +"Journal Entries","जर्नल एन्ट्रीहरू", +"Journal Entry","जर्नल एन्ट्री", +"Journal Entry Account","जर्नल एन्ट्री खाता", +"Journal Entry Number Series","जर्नल एन्ट्री नम्बर श्रृंखला", +"Journal Entry Print Template","जर्नल एन्ट्री प्रिन्ट टेम्प्लेट", +July,"जुलाई", +June,"जुन", +"Key Hints","कुञ्जी संकेतहरू", +Kg,"के.जि.", +Label,"लेबल", +Language,"भाषा", +"Left Index","बायाँ सूचकांक", +"Legal Expenses","कानूनी खर्च", +"Less Filters","कम फिल्टरहरू", +"Less Than","भन्दा कम", +Liability,"दायित्व", +Limit,"सीमा", +Link,"लिङ्क", +"Link Validation Error","लिङ्क प्रमाणीकरण त्रुटि", +"Linked Entries","लिङ्क गरिएको एन्ट्रीहरू", +List,"सूची", +"List View","सूची भ्यू", +"Load an existing company from your computer","आफ्नो कम्प्युटरबाट अवस्थित कम्पनी लोड गर्नुहोस्", +"Loading Report...","प्रतिवेदन लोड हुँदैछ...", +"Loading instance...","इन्स्ट्यान्स लोड हुँदैछ...", +Loading...,"लोड हुँदैछ...", +"Loans (Liabilities)","ऋण (दायित्व)", +"Loans and Advances (Assets)","कर्जा र अग्रिम (सम्पत्ति)", +Locale,"स्थानीय", +Location,"स्थान", +"Location Name","स्थानको नाम", +Logo,"लोगो", +"Make Entry","एन्ट्री बनाउनुहोस्", +"Make Payment On Submit","पेश गर्दा भुक्तानी गर्नुहोस्", +"Make Purchase Receipt On Submit","पेश गर्दा खरिद रसिद बनाउनुहोस्", +"Make Shipment On Submit","पेश गर्दा ढुवानी गर्नुहोस्", +"Mandatory Error","अनिवार्य त्रुटि", +Manufacture,"निर्माता", +"Manufacture Date","निर्माण मिति", +"Mar 23, 2022","मार्च २३, २०२२", +March,"मार्च", +"Mark ${0} as submitted?","${0} लाई पेश गरिएको भनी चिन्ह लगाउने हो?", +"Marketing Expenses","मार्केटिङ खर्च", +"Material Issue","सामग्री निस्कासन", +"Material Receipt","सामग्री रसिद", +"Material Transfer","सामाग्री स्थानान्तरण", +May,"मे", +Meter,"मिटर", +Misc,"विविध", +Miscellaneous,"विविध", +"Miscellaneous Expenses","विविध खर्च", +Mo,"मो", +Modified,"परिमार्जित", +"Modified By","द्वारा परिमार्जित", +Monthly,"मासिक", +Months,"महिनाहरू", +More,"थप", +"More Filters","थप फिल्टरहरू", +"More shortcuts will be added soon.","थप सर्टकटहरू चाँडै थपिने छन्।", +"Movement Type","मुभमेन्ट प्रकार", +"Moving Average","चलेमान औसत", +Name,"नाम", +Navigate,"नेभिगेट गर्नुहोस्", +"Net Total","कुल जम्मा", +"New ${0}","नयाँ ${0}", +"New ${0} ${1}","नयाँ ${0} ${1}", +"New Account","नयाँ खाता", +"New Company","नयाँ कम्पनी", +"New Entry","नयाँ एन्ट्री", +"New Template","नयाँ टेम्प्लेट", +No,"होइन", +"No Display Entries Found","कुनै प्रदर्शन एन्ट्रीहरू भेटिएन", +"No Print Templates not found for entry type ${0}","एन्ट्री प्रकार ${0} को लागि कुनै प्रिन्ट टेम्प्लेट भेटिएन", +"No Value","कुनै मानहरू छैनन्", +"No Values to be Displayed","प्रदर्शन गर्न कुनै मानहरू छैनन्", +"No entries found","कुनै एन्ट्रीहरू फेला परेनन्", +"No entries were imported.","कुनै एन्ट्रीहरू आयात गरिएन।", +"No expenses in this period","यस अवधिमा कुनै खर्च छैन", +"No filters selected","कुनै फिल्टर चयन गरिएको छैन", +"No linked entries found","कुनै लिङ्क गरिएको एन्ट्रीहरू फेला परेनन्", +"No results found","कुनै परिणाम फेला परेन", +"No rows added. Select a file or add rows.","कुनै पङ्क्तिहरू थपिएका छैनन्। फाइल छान्नुहोस् वा पङ्क्तिहरू थप्नुहोस्।", +"No transactions yet","अहिलेसम्म कुनै लेनदेन छैन", +"Non Active Serial Number ${0} cannot be used as Manufacture raw material","गैर सक्रिय क्रम संख्या ${0} लाई कच्चा माल निर्माणको रूपमा प्रयोग गर्न सकिँदैन", +"Non Active Serial Number ${0} cannot be used for Material Issue","गैर सक्रिय क्रम संख्या ${0} सामग्री मुद्दाको लागि प्रयोग गर्न सकिँदैन", +"Non Active Serial Number ${0} cannot be used for Material Transfer","गैर सक्रिय क्रम संख्या ${0} सामग्री स्थानान्तरणको लागि प्रयोग गर्न सकिँदैन", +"Non Inactive Serial Number ${0} cannot be used for Material Receipt","गैर-निष्क्रिय क्रम संख्या ${0} सामग्री रसिदको लागि प्रयोग गर्न सकिँदैन", +None,"कुनै पनि छैन", +"Not Found","फेला परेन", +"Not Saved","दाखिल गरिएको छैन", +"Not Submitted","पेश गरिएको छैन", +"Not Transferred","स्थानान्तरण गरिएको छैन", +Notes,"नोटहरू", +November,"नोभेम्बर", +"Number Display","नम्बर डिस्प्ले", +"Number Series","संख्या श्रृंखला", +"Number of ${0}","${0} को संख्या", +"Number of Rows","पङ्क्तिहरूको संख्या", +October,"अक्टोबर", +"Office Equipments","कार्यालय उपकरणहरू", +"Office Maintenance Expenses","कार्यालय मर्मत खर्च", +"Office Rent","कार्यालय भाडा", +Okay,"हुन्छ", +"Onboarding Complete","अनबोर्डिङ पूरा भयो", +"Only From or To can be set for Manufacture","केवल बाट वा उत्पादन को लागी सेट गर्न सकिन्छ", +"Open Count","खुला गणना", +"Open Documentation","कागजात खोल्नुहोस्", +"Open Folder","फोल्डर खोल्नुहोस्", +"Open Print View","प्रिन्ट भ्यू खोल्नुहोस्", +"Open Print View if Print is available.","यदि प्रिन्ट उपलब्ध छ भने प्रिन्ट भ्यू खोल्नुहोस्", +"Open Quick Search","द्रुत खोज खोल्नुहोस्", +"Open Report Print View","रिपोर्ट प्रिन्ट भ्यू खोल्नुहोस्", +"Open the Export Wizard modal","निर्यात विजार्ड मोडल खोल्नुहोस्", +"Opening (Cr)","ओपनिङ (क्रे)", +"Opening (Dr)","ओपनिङ (डे)", +"Opening Balance Equity","ओपनिङ ब्यालेन्स इक्विटी", +"Opening Balances","ओपनिङ ब्यालेन्स", +"Opening Entry","ओपनिङ एन्ट्री", +Options,"विकल्पहरू", +Orange,"सुन्तला", +Organisation,"संगठन", +Outflow,"बहिर्गमन", +Outstanding,"लिन बाँकि", +"Outstanding Amount","लिन बाँकि रकम", +"Pad Zeros","प्याड शून्य", +Page,"पृष्ठ", +Paid,"भुक्तान गरियो", +"Paid ${0}","भुक्तान गरिएको ${0}", +Parent,"प्यारेन्ट", +"Parent Account","प्यारेन्ट खाता", +Party,"पार्टी", +"Patch Run","प्याच रन", +Pay,"तिर्नुहोस्", +Payable,"भुक्तान योग्य", +Payment,"भुक्तानी", +"Payment For","लागि भुक्तानी", +"Payment Method","भुक्तानी विधि", +"Payment No","भुक्तानी नं", +"Payment Number Series","भुक्तानी नम्बर श्रृंखला", +"Payment Print Template","भुक्तानी प्रिन्ट टेम्प्लेट", +"Payment Reference","भुक्तानी सन्दर्भ", +"Payment Type","भुक्तानी प्रकार", +"Payment amount cannot be ${0}.","भुक्तानी रकम ${0} हुन सक्दैन।", +"Payment amount cannot be less than zero.","भुक्तानी रकम शून्य भन्दा कम हुन सक्दैन।", +"Payment amount cannot exceed ${0}.","भुक्तानी रकम ${0} भन्दा बढी हुन सक्दैन।", +"Payment amount: ${0} should be greater than 0.","भुक्तानी रकम: ${0} ० भन्दा बढी हुनुपर्छ।", +"Payment amount: ${0} should be less than Outstanding amount: ${1}.","भुक्तानी रकम: ${0} बाँकी रकम भन्दा कम हुनुपर्छ: ${1}।", +"Payment of ${0} will be made from account ""${1}"" to account ""${2}"" on Submit.","${0} को भुक्तानी खाता ""${1}"" बाट ""${2}"" खातामा पेस गर्दा गरिनेछ।", +Payments,"भुक्तानीहरू", +"Payroll Payable","पेरोल भुक्तानी योग्य", +"Pending Qty. ${0}","विचाराधीन मात्रा ${0}", +"Pending qty. ${0}","विचाराधीन मात्रा ${0}", +Periodicity,"आवधिकता", +Phone,"फोन", +"Pick Columns","स्तम्भहरू छान्नुहोस्", +"Pick Import Columns","आयात स्तम्भहरू छान्नुहोस्", +Pink,"गुलाबी", +Place,"स्थान", +"Place of supply","आपूर्ति गर्ने ठाउँ", +"Plants and Machineries","प्लाण्टस् र मेसिनरी", +"Please Wait","कृपया पर्खनुहोस्", +"Please check Key Hints for valid key names","कृपया मान्य कुञ्जी नामहरूको लागि कुञ्जी संकेतहरू जाँच गर्नुहोस्", +"Please create a ${0} entry to view Template Preview.","टेम्प्लेट पूर्वावलोकन हेर्नको लागि कृपया ${0} एन्ट्री सिर्जना गर्नुहोस्।", +"Please fill all values.","कृपया सबै मानहरू भर्नुहोस्।", +"Please restart and try again.","कृपया पुन: सुरु गर्नुहोस् र पुन: प्रयास गर्नुहोस्।", +"Please select a Print Template","कृपया प्रिन्ट टेम्प्लेट छान्नुहोस्", +"Please select a valid reference type.","कृपया वैध सन्दर्भ प्रकार छान्नुहोस्।", +"Please set GSTIN in General Settings.","कृपया सामान्य सेटिङहरूमा GSTIN सेट गर्नुहोस्।", +"Please set Round Off Account in the Settings.","कृपया सेटिङहरूमा राउन्ड अफ खाता सेट गर्नुहोस्।", +"Please set a Display Doc","कृपया डिस्प्ले कागजात सेट गर्नुहोस्", +"Postal Code","हुलाक कोड", +"Postal Expenses","हुलाक खर्च", +"Posting Date","पोस्टिङ मिति", +Prefix,"प्रिफिक्स", +"Price List","मूल्य सूचि", +"Price List Item","मूल्य सूची वस्तु", +"Prime Bank","प्राइम बैंक", +Print,"प्रिन्ट गर्नुहोस्", +"Print ${0}","प्रिन्ट गर्नुहोस् ${0}", +"Print Settings","प्रिन्ट सेटिङ्हरू", +"Print Setup","प्रिन्ट सेटअप", +"Print Template","प्रिन्ट टेम्प्लेट", +"Print Template Name not set","प्रिन्ट टेम्प्लेट नाम सेट गरिएको छैन", +"Print Template is empty","प्रिन्ट टेम्प्लेट खाली छ", +"Print Templates","प्रिन्ट टेम्प्लेटहरू", +"Print View","प्रिन्ट भ्यू", +"Print and Stationery","प्रिन्ट र स्टेशनरी", +Product,"उत्पादन", +"Profit And Loss","नाफा र घाटा", +"Profit and Loss","नाफा र घाटा", +Purchase,"खरिद", +"Purchase Acc.","खरिद खाता", +"Purchase Invoice","खरिद बीजक", +"Purchase Invoice Item","खरिद बीजक वस्तु", +"Purchase Invoice Number Series","खरीद बीजक नम्बर श्रृंखला", +"Purchase Invoice Print Template","खरिद बीजक प्रिन्ट टेम्प्लेट", +"Purchase Invoice Terms","खरीद बीजक सर्तहरू", +"Purchase Invoices","खरीद बीजकहरू", +"Purchase Item","वस्तु खरिद", +"Purchase Item Created","खरिद वस्तु सिर्जना गरियो", +"Purchase Items","खरिद वस्तुहरू", +"Purchase Payment","खरिद भुक्तानी", +"Purchase Payment Account","खरिद भुक्तानी खाता", +"Purchase Payments","खरिद भुक्तानीहरू", +"Purchase Receipt","खरिद रसिद", +"Purchase Receipt Item","खरिद रसिद वस्तु", +"Purchase Receipt Location","खरीद रसिद स्थान", +"Purchase Receipt Number Series","खरीद रसिद नम्बर श्रृंखला", +"Purchase Receipt Print Template","खरीद रसिद प्रिन्ट टेम्प्लेट", +"Purchase Receipt Terms","खरीद रसिद सर्तहरू", +Purchases,"खरिदहरू", +Purple,"बैजनी", +Purpose,"उद्देश्य", +"Qty. ${0}","मात्रा ${0}", +"Qty. in Transfer Unit","स्थानान्तरण एकाइमा मात्रा", +Quantity,"मात्रा", +"Quantity (${0}) has to be greater than zero","मात्रा (${0}) शून्य भन्दा ठूलो हुनुपर्छ", +"Quantity needs to be set","मात्रा सेट गर्न आवश्यक छ", +Quarterly,"त्रैमासिक", +Quarters,"त्रैमासिक", +"Quick Search","द्रुत खोज", +"Quick edit error: ${0} entry has no name.","द्रुत सम्पादन त्रुटि: ${0} एन्ट्रीको कुनै नाम छैन।", +Rate,"दर", +"Rate (${0}) cannot be less zero.","दर (${0}) शून्य भन्दा कम हुन सक्दैन।", +"Rate (${0}) has to be greater than zero","दर (${0}) शून्य भन्दा बढी हुनुपर्छ", +"Rate can't be negative.","दर ऋणात्मक हुन सक्दैन।", +"Rate needs to be set","दर तोक्नुपर्छ", +"Raw Value: ${0}","कच्चा मान: ${0}", +Receivable,"प्राप्त गर्न सकिने", +Receive,"प्राप्त गर्नुहोस्", +Red,"रातो", +"Ref Name","सन्दर्भ नाम", +"Ref Type","सन्दर्भ प्रकार", +"Ref. / Cheque No.","सन्दर्भ / चेक नम्बर", +"Ref. Date","सन्दर्भ मिति", +"Ref. Name","सन्दर्भ नाम", +"Ref. Type","सन्दर्भ प्रकार", +Reference,"सन्दर्भ", +"Reference Date","सन्दर्भ मिति", +"Reference Number","सन्दर्भ नम्बर", +"Reference Type","सन्दर्भ प्रकार", +References,"सन्दर्भहरू", +"Reload Frappe Books?","फ्रपि बुक्स् पुनः लोड गर्ने हो", +Report,"रिपोर्ट", +"Report Error","त्रुटि रिपोर्ट ", +"Report Issue","रिपोर्ट जारी", +"Report will use more than one page if required.","आवश्यक भएमा रिपोर्टले एकभन्दा बढी पृष्ठ प्रयोग गर्नेछ।", +Reports,"रिपोर्टहरू", +"Required fields not selected: ${0}","आवश्यक क्षेत्रहरू चयन गरिएको छैन: ${0}", +"Retained Earnings","राखिएको कमाई", +Return,"फिर्ता", +"Return Against","विरुद्ध फिर्ता", +"Return Issued","फिर्ता जारी गरियो", +"Reverse Chrg.","रिभर्स चार्ज", +Reverted,"उल्टाइयो", +Reverts,"उल्टाउँछ", +"Review Accounts","समीक्षा खाताहरू", +"Review your chart of accounts, add any account or tax heads as needed","आफ्नो खाताको चार्ट समीक्षा गर्नुहोस्, आवश्यकता अनुसार कुनै पनि खाता वा कर शीर्षकहरू थप्नुहोस्", +"Right Index","दायाँ सूचकांक", +Role,"भूमिका", +"Root Type","रूट प्रकार", +"Round Off","राउन्ड अफ", +"Round Off Account","राउन्ड अफ खाता", +"Round Off Account Not Found","राउन्ड अफ खाता फेला परेन", +"Rounded Off","राउन्ड अफ गरियो", +"Row ${0}","पङ्क्ति ${0}", +Sa,, +Salary,"तलब", +Sales,"बिक्री", +"Sales Acc.","बिक्री खाता", +"Sales Expenses","बिक्री खर्च", +"Sales Invoice","बिक्री बीजक", +"Sales Invoice Item","बिक्री बीजक वस्तु", +"Sales Invoice Number Series","बिक्री बीजक नम्बर श्रृंखला", +"Sales Invoice Print Template","बिक्री बीजक प्रिन्ट टेम्प्लेट", +"Sales Invoice Terms","बिक्री बीजक सर्तहरू", +"Sales Invoices","बिक्री बीजकहरू", +"Sales Item","बिक्री वस्तु", +"Sales Item Created","बिक्री वस्तु सिर्जना गरियो", +"Sales Items","बिक्री वस्तुहरू", +"Sales Payment","बिक्री भुक्तानी", +"Sales Payment Account","बिक्री भुक्तानी खाता", +"Sales Payments","बिक्री भुक्तानी", +"Sales and Purchase","बिक्री र खरिद", +Save,"दाखिल", +"Save ${0}?","दाखिल ${0}?", +"Save Customizations","दाखिल अनुकूलनहरू", +"Save Template","दाखिल टेम्प्लेट", +"Save Template File","दाखिल टेम्प्लेट फाइल", +"Save as PDF","PDF को रूपमा दाखिल गर्नुहोस्", +"Save as PDF Successful","PDF को रूपमा दाखिल गरियो", +"Save changes made to ${0}?","${0} मा गरिएका परिवर्तनहरू दाखिल गर्ने हो?", +"Save or Submit an entry.","दाखिल गर्नुहोस् वा एन्ट्री पेश गर्नुहोस्।", +Saved,"दाखिल गरियो", +"Secured Loans","सुरक्षित ऋण", +"Securities and Deposits","धितो र निक्षेप", +Select,"छान्नुहोस्", +"Select CoA","CoA छान्नुहोस्", +"Select Color","रंग छान्नुहोस्", +"Select Country","देश छान्नुहोस्", +"Select File","फाइल छान्नुहोस्", +"Select Image","फोटो छान्नुहोस्", +"Select Template File","टेम्प्लेट फाइल छान्नुहोस्", +"Select a Display Doc to view the Template","टेम्प्लेट हेर्नको लागि डिस्प्ले कागजात छान्नुहोस्", +"Select a Template type","टेम्प्लेट प्रकार छान्नुहोस्", +"Select a form type to customize","अनुकूलन गर्न फारम प्रकार छान्नुहोस्", +"Select a pre-defined page size, or set a custom page size for your Print Template.","पूर्व-परिभाषित पृष्ठ आकार छान्नुहोस्, वा तपाइँको प्रिन्ट टेम्प्लेटको लागि अनुकूलन पृष्ठ आकार सेट गर्नुहोस्।", +"Select column","स्तम्भ छान्नुहोस्", +"Select file","फाईल छान्नुहोस्", +"Select folder","फोल्डर छान्नुहोस्", +Selected,"चयन गरियो", +September,"सेप्टेम्बर", +"Serial Number","क्रम संख्या", +"Serial Number ${0} does not belong to the item ${1}.","क्रम संख्या ${0} वस्तु ${1} सँग सम्बन्धित छैन।", +"Serial Number ${0} does not exist.","क्रम संख्या ${0} अवस्थित छैन।", +"Serial Number ${0} is not Active.","क्रम संख्या ${0} सक्रिय छैन।", +"Serial Number ${0} is not Inactive","क्रम संख्या ${0} निष्क्रिय छैन", +"Serial Number Description","क्रम संख्या विवरण", +"Serial Number is enabled for Item ${0}","क्रम संख्या वस्तु ${0} को लागि सक्षम छ", +"Serial Number is not enabled for Item ${0}","क्रम संख्या वस्तु ${0} को लागि सक्षम गरिएको छैन", +"Serial Number not set for row ${0}.","पङ्क्ति ${0} को लागि क्रम संख्या सेट गरिएको छैन।", +"Serial Number set for row ${0}.","पङ्क्ति ${0} को लागि क्रम संख्या सेट गरियो।", +Service,"सेवा", +"Set Discount Amount","छुट रकम सेट गर्नुहोस्", +"Set Period","अवधि सेट गर्नुहोस्", +"Set Print Size","प्रिन्ट साइज सेट गर्नुहोस्", +"Set Up","सेट अप", +"Set Up Your Workspace","आफ्नो कार्यक्षेत्र सेटअप गर्नुहोस्", +"Set a Template value to see the Print Template","प्रिन्ट टेम्प्लेट हेर्नको लागि टेम्प्लेट मान सेट गर्नुहोस्", +"Set an Import Type","आयात प्रकार सेट गर्नुहोस्", +"Set the display language.","डिस्प्ले भाषा सेट गर्नुहोस्।", +"Set the local code. This is used for number formatting.","स्थानीय कोड सेट गर्नुहोस्। यो संख्या ढाँचाको लागि प्रयोग गरिन्छ।", +"Set up your company information, email, country and fiscal year","आफ्नो कम्पनी जानकारी, इमेल, देश र आर्थिक वर्ष सेट अप गर्नुहोस्", +"Set up your opening balances before performing any accounting entries","कुनै पनि लेखा एन्ट्रीहरू प्रदर्शन गर्नु अघि आफ्नो ओपनिङ ब्यालेन्स सेट अप गर्नुहोस्", +"Set up your organization","आफ्नो संस्था स्थापना गर्नुहोस्", +"Set up your tax templates for your sales or purchase transactions","आफ्नो बिक्री वा खरिद लेनदेनको लागि आफ्नो कर टेम्प्लेटहरू सेट अप गर्नुहोस्", +"Sets how many digits are shown after the decimal point.","दशमलव बिन्दु पछि देखाइएका अङ्कहरू सेट गर्छ।", +"Sets the app-wide date display format.","एप-व्यापी मिति प्रदर्शन ढाँचा सेट गर्दछ।", +"Sets the internal precision used for monetary calculations. Above 6 should be sufficient for most currencies.","मौद्रिक गणनाको लागि प्रयोग गरिएको आन्तरिक परिशुद्धता सेट गर्दछ। माथि ६ धेरै मुद्राहरूको लागि पर्याप्त हुनुपर्छ।", +"Setting Up Instance","इन्स्ट्यान्स सेटअप गर्दै", +Settings,"सेटिङहरू", +Setup,"सेटअप", +"Setup Complete","सेटअप सम्पन्न भयो", +"Setup Wizard","सेटअप विजार्ड", +"Setup system defaults like date format and display precision","मिति ढाँचा र प्रदर्शन परिशुद्धता जस्तै सेटअप प्रणाली पूर्वनिर्धारित", +Shipment,"ढुवानी", +"Shipment Item","ढुवानी वस्तु", +"Shipment Location","ढुवानी स्थान", +"Shipment Number Series","ढुवानी नम्बर श्रृंखला", +"Shipment Print Template","ढुवानी प्रिन्ट टेम्प्लेट", +"Shipment Terms","ढुवानी सर्तहरू", +Shortcuts,"सर्टकटहरू", +"Should entries be submitted after syncing?","सिंक गरेपछि एन्ट्रीहरू पेश गर्नुपर्छ?", +"Show HSN","HSN देखाउनुहोस्", +"Show Me","मलाई देखाउनुहोस्", +"Show Month/Year","महिना/वर्ष देखाउनुहोस्", +"Single Value","एकल मान", +"Skip Child Tables","सहायक तालिकाहरू छोड्नुहोस्", +"Skip Transactions","लेनदेन छोड्नुहोस्", +"Smallest Currency Fraction Value","सबैभन्दा सानो मुद्रा अंश मान", +Softwares,"सफ्टवेयरहरू", +"Something has gone terribly wrong. Please check the console and raise an issue.","केही नराम्रोसँग गडबड भएको छ। कृपया कन्सोल जाँच गर्नुहोस् र मुद्दा उठाउनुहोस्।", +"Source of Funds (Liabilities)","कोषको स्रोत (दायित्व)", +"Standard Chart of Accounts","खाताहरूको मानक चार्ट", +Start,"सुरु", +"Start From Row Index","पङ्क्ति सूचकांकबाट सुरु गर्नुहोस्", +State,"राज्य", +"State Tax","राज्य कर", +Status,"स्थिति", +Stock,"स्टक", +"Stock Adjustment","स्टक समायोजन", +"Stock Assets","स्टक सम्पत्ति", +"Stock Balance","स्टक मौज्दात", +"Stock Entries","स्टक एन्ट्रीहरू", +"Stock Expenses","स्टक खर्च", +"Stock In Hand","स्टक इन ह्यण्ड", +"Stock In Hand Acc.","स्टक इन ह्यण्ड खाता", +"Stock Ledger","स्टक लेजर", +"Stock Ledger Entry","स्टक लेजर एन्ट्री", +"Stock Liabilities","स्टक दायित्वहरू", +"Stock Movement","स्टक आवागमन", +"Stock Movement Item","स्टक आवागमन वस्तु", +"Stock Movement No.","स्टक आवागमन नं.", +"Stock Movement Number Series","स्टक आवागमन संख्या श्रृंखला", +"Stock Movement Print Template","स्टक आवागमन प्रिन्ट टेम्प्लेट", +"Stock Movements","स्टक आवागमनहरू", +"Stock Not Received","स्टक प्राप्त भएको छैन", +"Stock Not Shipped","स्टक पठाइएको छैन", +"Stock Not Transferred","स्टक स्थानान्तरण गरिएको छैन", +"Stock Received But Not Billed","स्टक प्राप्त भयो तर बिल गरिएको छैन", +"Stock Received But Not Billed Acc.","स्टक प्राप्त भयो तर बिल गरिएको खाता छैन", +"Stock Transfer Item","स्टक स्थानान्तरण वस्तु", +"Stock Unit","स्टक एकाइ", +StockTransfer,"स्टक ट्रान्सफर", +Stores,"स्टोरहरू", +Su,, +Submit,"पेश गर्नुहोस्", +"Submit ${0}?","${0} पेस गर्ने हो?", +"Submit entries?","एन्ट्रीहरू पेस गर्ने हो?", +Submitted,"पेस गरियो", +Success,"सफलता", +Supplier,"आपूर्तिकर्ता", +"Supplier Created","आपूर्तिकर्ता सिर्जना गरियो", +Suppliers,"आपूर्तिकर्ताहरू", +Symbol,"प्रतीक", +System,"प्रणाली", +"System Settings","प्रणाली सेटिङहरू", +"System Setup","प्रणाली सेटअप", +Table,"तालिका", +Target,"लक्ष्य", +Tax,"कर", +"Tax Account","कर खाता", +"Tax Amount","कर रकम", +"Tax Assets","कर सम्पत्ति", +"Tax Detail","कर विवरण", +"Tax ID","कर ID", +"Tax Rate","कर दर", +"Tax Summary","कर सारांश", +"Tax Template","कर टेम्प्लेट", +"Tax Templates","कर टेम्प्लेटहरू", +"Tax and Totals","कर र कुल", +"Taxable Value","कर योग्य मूल्य", +"Taxed Amount","कर लगाइएको रकम", +Taxes,"करहरू", +Teal,"चिसो", +"Telephone Expenses","टेलिफोन खर्च", +Template,"टेम्प्लेट", +"Template Builder","टेम्प्लेट बिल्डर", +"Template Compilation Error","टेम्प्लेट संकलन त्रुटि", +"Template Name","टेम्प्लेट नाम", +"Template Type","टेम्प्लेट प्रकार", +"Template file saved","टेम्प्लेट फाइल दाखिला गरियो", +Temporary,"अस्थायी", +"Temporary Accounts","अस्थायी खाताहरू", +"Temporary Opening","अस्थायी ओपनिङ", +Terms,"सर्तहरू", +Text,"टेस्ट", +Th,, +"The following characters cannot be used ${0} in a Number Series name.","निम्न वर्णहरू प्रयोग गर्न सकिँदैन ${0} नम्बर शृङ्खलाको नाममा।", +"The following items have insufficient quantity for Shipment: ${0}","निम्न वस्तुहरूमा ढुवानीको लागि अपर्याप्त मात्रा छ: ${0}", +"This Month","यस महिना", +"This Quarter","यस त्रैमासिक", +"This Year","यस वर्ष", +"This action is permanent","यो कारबाही स्थायी छ", +"This action is permanent and will cancel the following payment: ${0}","यो कार्य स्थायी छ र निम्न भुक्तानी रद्द हुनेछ: ${0}", +"This action is permanent and will cancel the following payments: ${0}","यो कार्य स्थायी छ र निम्न भुक्तानीहरू रद्द गर्नेछ: ${0}", +"This action is permanent and will delete associated ledger entries.","यो कार्य स्थायी छ र सम्बन्धित खाता एन्ट्रीहरू मेटाउनेछ।", +"This action is permanent.","यो कारबाही स्थायी छ।", +"Times New Roman",, +To,"सम्म", +"To Account","खातामा", +"To Account and From Account can't be the same: ${0}","खातामा र खाताबाट एउटै हुन सक्दैन: ${0}", +"To Date","मिति सम्म", +"To Loc.","स्थानमा", +"To Year","वर्ष सम्म", +"Toggle Edit Mode","सम्पादन मोड टगल गर्नुहोस्", +"Toggle Key Hints","कुञ्जी संकेतहरू टगल गर्नुहोस्", +"Toggle Linked Entries widget, not available in Quick Edit view.","लिंक गरिएका एन्ट्रीहरू विजेट टगल गर्नुहोस्, द्रुत सम्पादन भ्यूमा उपलब्ध छैन।", +"Toggle between form and full width","फारम र पूर्ण चौडाइ बीच टगल गर्नुहोस्", +"Toggle sidebar","साइडबार टगल गर्नुहोस्", +"Toggle the Create filter","सिर्जना फिल्टर टगल गर्नुहोस्", +"Toggle the Docs filter","कागजात फिल्टर टगल गर्नुहोस्", +"Toggle the List filter","सूची फिल्टर टगल गर्नुहोस्", +"Toggle the Page filter","पृष्ठ फिल्टर टगल गर्नुहोस्", +"Toggle the Report filter","रिपोर्ट फिल्टर टगल गर्नुहोस्", +"Top Expenses","शीर्ष खर्चहरू", +Total,"कुल", +"Total Amount","कुल रकम", +"Total Asset (Debit)","कुल सम्पत्ति (डेबिट)", +"Total Debit: ${0} must be equal to Total Credit: ${1}","कुल डेबिट: ${0} कुल क्रेडिटको बराबर हुनुपर्छ: ${1}", +"Total Discount","कुल छुट", +"Total Equity (Credit)","कुल इक्विटी (क्रेडिट)", +"Total Expense (Debit)","कुल खर्च (डेबिट)", +"Total Income (Credit)","कुल आय (क्रेडिट)", +"Total Liability (Credit)","कुल दायित्व (क्रेडिट)", +"Total Profit","कुल नाफा", +"Total Spending","कुल खर्च", +"Track Inventory","ट्र्याक सूची", +Transfer,"स्थानान्तरण", +"Transfer No","स्थानान्तरण नं", +"Transfer Type","स्थानान्तरण प्रकार", +"Transfer Unit","स्थानान्तरण एकाइ", +"Transfer Unit ${0} is not applicable for Item ${1}","स्थानान्तरण एकाइ ${0} वस्तु ${1} को लागी लागू हुँदैन", +"Transfer will cause future entries to have negative stock.","स्थानान्तरणले भविष्यका प्रविष्टिहरू नकारात्मक स्टकको कारण हुनेछ।", +"Travel Expenses","यात्रा खर्च", +"Trial Balance","सन्तुलन परिक्षेण", +Tu,, +Type,"प्रकार", +"Type to search...","खोज्न को लागी टाइप गर्नुहोस्...", +UOM,"नाप्ने एकाइ", +"UOM Conversion Item","नाप्ने एकाइ रूपान्तरण वस्तु", +"UOM Conversions","नाप्ने एकाइ रूपान्तरणहरू", +Unit,"एकाइ", +"Unit Type","एकाइ प्रकार", +Unpaid,"भुक्तान नगरिएको", +"Unpaid ${0}","भुक्तान नगरिएको ${0}", +"Unsecured Loans","असुरक्षित ऋण", +"Until Date","मिति सम्म", +"Use Full Width","पूर्ण चौडाइ प्रयोग गर्नुहोस्", +"Use List Filters","सूची फिल्टरहरू प्रयोग गर्नुहोस्", +"User Remark","प्रयोगकर्ता टिप्पणी", +"Utility Expenses","उपयोगिता खर्च", +"Validation Error","प्रमाणीकरण त्रुटि", +"Valuation Method","मूल्याङ्कन विधि", +Value,"मान", +"Value missing for ${0}","${0} को लागि मान छैन", +"Value: ${0}","मान: $ {0}", +Version,"संस्करण", +View,"भ्यू", +"View Accounting Entries","लेखा एन्ट्रीहरू हेर्नुहोस्", +"View Paid Invoices","भुक्तान गरिएको इनभ्वाइसहरू हेर्नुहोस्", +"View Purchases","खरिदहरू हेर्नुहोस्", +"View Sales","बिक्री हेर्नुहोस्", +"View Stock Entries","स्टक एन्ट्रीहरू हेर्नुहोस्", +"View Unpaid Invoices","भुक्तान नगरिएको इनभ्वाइसहरू हेर्नुहोस्", +"View linked entries","लिङ्क गरिएका एन्ट्रीहरू हेर्नुहोस्", +We,"हामी", +"Welcome to Frappe Books","फ्रपि बुक्स्मा स्वागत छ", +"Width (in cm)","चौडाइ (सेमीमा)", +"Write Off",, +"Write Off Account",, +"Write Off Account ${0} does not exist. Please set Write Off Account in General Settings",, +"Write Off Account not set. Please set Write Off Account in General Settings",, +"Write Off Entry",, +"Year to Date","वर्ष देखि मिति", +Yearly,"वार्षिक", +Years,"वर्षहरू", +Yellow,"पहेंलो", +Yes,"हो", +"check values and click on","मानहरू जाँच गर्नुहोस् र क्लिक गर्नुहोस्", +"in Batch ${0}","ब्याच ${0} मा", +john@doe.com,, +"to apply changes","परिवर्तनहरू लागू गर्न", \ No newline at end of file From 2d52ce8a25fe07bd2578e9164265ebe4fb7a0260 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Sun, 3 Dec 2023 12:37:51 +0530 Subject: [PATCH 004/107] fix: revert referenceType as required --- schemas/app/Payment.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/schemas/app/Payment.json b/schemas/app/Payment.json index 9e1de96a..780c8c55 100644 --- a/schemas/app/Payment.json +++ b/schemas/app/Payment.json @@ -171,8 +171,7 @@ "label": "Purchase" } ], - "hidden": true, - "required": true + "hidden": true } ], "quickEditFields": [ From 22b32cbc41df608af4c9fc71a57bc4f25ebe3413 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Wed, 16 Aug 2023 17:50:57 +0530 Subject: [PATCH 005/107] feat: pos schemas --- schemas/app/Defaults.json | 38 +++++++++++++ schemas/app/inventory/InventorySettings.json | 7 +++ .../Point of Sale/CashDenominations.json | 14 +++++ .../DefaultCashDenominations.json | 7 +++ .../OpeningCashInDenominations.json | 17 ++++++ .../inventory/Point of Sale/POSSettings.json | 23 ++++++++ .../app/inventory/Point of Sale/POSShift.json | 56 +++++++++++++++++++ .../Point of Sale/POSShiftAmounts.json | 27 +++++++++ .../Point of Sale/POSShiftClosingAmounts.json | 42 ++++++++++++++ .../Point of Sale/POSShiftOpeningAmounts.json | 15 +++++ 10 files changed, 246 insertions(+) create mode 100644 schemas/app/inventory/Point of Sale/CashDenominations.json create mode 100644 schemas/app/inventory/Point of Sale/DefaultCashDenominations.json create mode 100644 schemas/app/inventory/Point of Sale/OpeningCashInDenominations.json create mode 100644 schemas/app/inventory/Point of Sale/POSSettings.json create mode 100644 schemas/app/inventory/Point of Sale/POSShift.json create mode 100644 schemas/app/inventory/Point of Sale/POSShiftAmounts.json create mode 100644 schemas/app/inventory/Point of Sale/POSShiftClosingAmounts.json create mode 100644 schemas/app/inventory/Point of Sale/POSShiftOpeningAmounts.json diff --git a/schemas/app/Defaults.json b/schemas/app/Defaults.json index 9b5e5c3d..bf47f7de 100644 --- a/schemas/app/Defaults.json +++ b/schemas/app/Defaults.json @@ -164,6 +164,44 @@ "fieldtype": "Link", "target": "PrintTemplate", "section": "Print Templates" + }, + { + "fieldname": "posCustomer", + "label": "POS Customer", + "fieldtype": "Link", + "target": "Party", + "section": "Point of Sale" + }, + { + "fieldname": "posInventory", + "label": "Inventory", + "fieldtype": "Link", + "target": "Location", + "default": "Stores", + "section": "Point of Sale" + }, + { + "fieldname": "posPrintTemplate", + "label": "Print Template", + "fieldtype": "Link", + "target": "PrintTemplate", + "default": "Minimal - Sales Invoice", + "section": "Point of Sale" + }, + { + "fieldname": "posAdjustmentAccount", + "label": "Adjustment Account", + "fieldtype": "Link", + "target": "Account", + "default": "Write Off", + "section": "Point of Sale" + }, + { + "fieldname": "posCashDenominations", + "label": "Cash Denominations", + "fieldtype": "Table", + "target": "DefaultCashDenominations", + "section": "Point of Sale" } ] } diff --git a/schemas/app/inventory/InventorySettings.json b/schemas/app/inventory/InventorySettings.json index fd1c6ceb..1cd3a479 100644 --- a/schemas/app/inventory/InventorySettings.json +++ b/schemas/app/inventory/InventorySettings.json @@ -63,6 +63,13 @@ "fieldtype": "Check", "default": false, "section": "Features" + }, + { + "fieldname": "enablePointOfSale", + "label": "Enable Point of Sale", + "fieldtype": "Check", + "default": false, + "section": "Features" } ] } diff --git a/schemas/app/inventory/Point of Sale/CashDenominations.json b/schemas/app/inventory/Point of Sale/CashDenominations.json new file mode 100644 index 00000000..fac35407 --- /dev/null +++ b/schemas/app/inventory/Point of Sale/CashDenominations.json @@ -0,0 +1,14 @@ +{ + "name": "CashDenominations", + "label": "Cash Denominations", + "isAbstract": true, + "fields": [ + { + "fieldname": "denomination", + "fieldtype": "Currency", + "label": "Denomination", + "placeholder": "Denomination", + "required": true + } + ] +} diff --git a/schemas/app/inventory/Point of Sale/DefaultCashDenominations.json b/schemas/app/inventory/Point of Sale/DefaultCashDenominations.json new file mode 100644 index 00000000..971992d9 --- /dev/null +++ b/schemas/app/inventory/Point of Sale/DefaultCashDenominations.json @@ -0,0 +1,7 @@ +{ + "name": "DefaultCashDenominations", + "label": "Default Cash Denominations", + "isChild": true, + "extends": "CashDenominations", + "tableFields": ["denomination"] +} diff --git a/schemas/app/inventory/Point of Sale/OpeningCashInDenominations.json b/schemas/app/inventory/Point of Sale/OpeningCashInDenominations.json new file mode 100644 index 00000000..fa9e2297 --- /dev/null +++ b/schemas/app/inventory/Point of Sale/OpeningCashInDenominations.json @@ -0,0 +1,17 @@ +{ + "name": "OpeningCashInDenominations", + "label": "Opening Cash In Denominations", + "isChild": true, + "extends": "CashDenominations", + "fields": [ + { + "fieldname": "count", + "label": "Count", + "placeholder": "Count", + "fieldtype": "Int", + "default": 0, + "required": true + } + ], + "tableFields": ["denomination", "count"] +} diff --git a/schemas/app/inventory/Point of Sale/POSSettings.json b/schemas/app/inventory/Point of Sale/POSSettings.json new file mode 100644 index 00000000..78d57674 --- /dev/null +++ b/schemas/app/inventory/Point of Sale/POSSettings.json @@ -0,0 +1,23 @@ +{ + "name": "POSSettings", + "label": "POS Settings", + "isSingle": true, + "isChild": false, + "isSubmittable": true, + "fields": [ + { + "fieldname": "discountAfterTax", + "label": "Apply Discount After Tax", + "fieldtype": "Check", + "default": false, + "section": "Default" + }, + { + "fieldname": "hideImages", + "label": "Hide Images", + "fieldtype": "Check", + "default": false, + "section": "Default" + } + ] +} diff --git a/schemas/app/inventory/Point of Sale/POSShift.json b/schemas/app/inventory/Point of Sale/POSShift.json new file mode 100644 index 00000000..ea878e21 --- /dev/null +++ b/schemas/app/inventory/Point of Sale/POSShift.json @@ -0,0 +1,56 @@ +{ + "name": "POSShift", + "isSingle": true, + "isChild": false, + "fields": [ + { + "fieldname": "isShiftOpen", + "label": "Is POS Shift Open", + "fieldtype": "Check", + "default": false, + "section": "Defaults" + }, + { + "fieldname": "openingDate", + "label": "Opening Date", + "fieldtype": "Datetime", + "section": "Defaults" + }, + { + "fieldname": "closingDate", + "label": "Closing Date", + "fieldtype": "Datetime", + "section": "Defaults" + }, + { + "fieldname": "openingCashAmount", + "label": "Opening Cash Amount", + "fieldtype": "Currency", + "section": "Defaults" + }, + { + "fieldname": "totalOpeningAmount", + "label": "Opening Amount", + "fieldtype": "Currency", + "section": "Defaults" + }, + { + "fieldname": "openingCashInDenominations", + "fieldtype": "Table", + "target": "OpeningCashInDenominations", + "section": "Defaults" + }, + { + "fieldname": "openingAmounts", + "fieldtype": "Table", + "target": "POSShiftOpeningAmounts", + "section": "Defaults" + }, + { + "fieldname": "closingAmounts", + "fieldtype": "Table", + "target": "POSShiftClosingAmounts", + "section": "Defaults" + } + ] +} diff --git a/schemas/app/inventory/Point of Sale/POSShiftAmounts.json b/schemas/app/inventory/Point of Sale/POSShiftAmounts.json new file mode 100644 index 00000000..031723af --- /dev/null +++ b/schemas/app/inventory/Point of Sale/POSShiftAmounts.json @@ -0,0 +1,27 @@ +{ + "name": "POSShiftAmounts", + "label": "POS Shift Amount", + "isChild": true, + "isAbstract": true, + "fields": [ + { + "fieldname": "paymentMethod", + "label": "Payment Method", + "placeholder": "Payment Method", + "fieldtype": "Select", + "options": [ + { + "value": "Cash", + "label": "Cash" + }, + { + "value": "Transfer", + "label": "Transfer" + } + ], + "required": true, + "section": "Details" + } + ] + } + \ No newline at end of file diff --git a/schemas/app/inventory/Point of Sale/POSShiftClosingAmounts.json b/schemas/app/inventory/Point of Sale/POSShiftClosingAmounts.json new file mode 100644 index 00000000..3f3587b9 --- /dev/null +++ b/schemas/app/inventory/Point of Sale/POSShiftClosingAmounts.json @@ -0,0 +1,42 @@ +{ + "name": "POSShiftClosingAmounts", + "label": "Opening Amount", + "isChild": true, + "extends": "POSShiftAmounts", + "fields": [ + { + "fieldname": "openingAmount", + "fieldtype": "Currency", + "label": "Opening Amount", + "placeholder": "Opening Amount", + "readOnly": true + }, + { + "fieldname": "closingAmount", + "fieldtype": "Currency", + "label": "Closing Amount", + "placeholder": "Closing Amount" + }, + { + "fieldname": "expectedAmount", + "fieldtype": "Currency", + "label": "Expected Amount", + "placeholder": "Expected Amount", + "readOnly": true + }, + { + "fieldname": "differenceAmount", + "fieldtype": "Currency", + "label": "Difference Amount", + "placeholder": "Difference Amount", + "readOnly": true + } + ], + "tableFields": [ + "paymentMethod", + "openingAmount", + "closingAmount", + "expectedAmount", + "differenceAmount" + ] +} diff --git a/schemas/app/inventory/Point of Sale/POSShiftOpeningAmounts.json b/schemas/app/inventory/Point of Sale/POSShiftOpeningAmounts.json new file mode 100644 index 00000000..ec77e73e --- /dev/null +++ b/schemas/app/inventory/Point of Sale/POSShiftOpeningAmounts.json @@ -0,0 +1,15 @@ +{ + "name": "POSShiftOpeningAmounts", + "label": "Opening Amount", + "isChild": true, + "extends": "POSShiftAmounts", + "fields": [ + { + "fieldname": "amount", + "label": "Amount", + "fieldtype": "Currency", + "section": "Defaults" + } + ], + "tableFields": ["paymentMethod", "amount"] +} From ad9401e2443ccef83f9d7653f43ce9fdadcdf757 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Mon, 21 Aug 2023 14:28:41 +0530 Subject: [PATCH 006/107] chore: fix code format --- .../Point of Sale/POSShiftAmounts.json | 51 +++++++++---------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/schemas/app/inventory/Point of Sale/POSShiftAmounts.json b/schemas/app/inventory/Point of Sale/POSShiftAmounts.json index 031723af..8ebfb5a1 100644 --- a/schemas/app/inventory/Point of Sale/POSShiftAmounts.json +++ b/schemas/app/inventory/Point of Sale/POSShiftAmounts.json @@ -1,27 +1,26 @@ { - "name": "POSShiftAmounts", - "label": "POS Shift Amount", - "isChild": true, - "isAbstract": true, - "fields": [ - { - "fieldname": "paymentMethod", - "label": "Payment Method", - "placeholder": "Payment Method", - "fieldtype": "Select", - "options": [ - { - "value": "Cash", - "label": "Cash" - }, - { - "value": "Transfer", - "label": "Transfer" - } - ], - "required": true, - "section": "Details" - } - ] - } - \ No newline at end of file + "name": "POSShiftAmounts", + "label": "POS Shift Amount", + "isChild": true, + "isAbstract": true, + "fields": [ + { + "fieldname": "paymentMethod", + "label": "Payment Method", + "placeholder": "Payment Method", + "fieldtype": "Select", + "options": [ + { + "value": "Cash", + "label": "Cash" + }, + { + "value": "Transfer", + "label": "Transfer" + } + ], + "required": true, + "section": "Details" + } + ] +} From 7ce556b8eb7a68d5b17ebf19e6b619df99c2d5ce Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Tue, 22 Aug 2023 12:03:25 +0530 Subject: [PATCH 007/107] feat: pos shift opening schemas --- .../{POSShiftOpeningAmounts.json => OpeningAmounts.json} | 2 +- .../{OpeningCashInDenominations.json => OpeningCash.json} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename schemas/app/inventory/Point of Sale/{POSShiftOpeningAmounts.json => OpeningAmounts.json} (88%) rename schemas/app/inventory/Point of Sale/{OpeningCashInDenominations.json => OpeningCash.json} (89%) diff --git a/schemas/app/inventory/Point of Sale/POSShiftOpeningAmounts.json b/schemas/app/inventory/Point of Sale/OpeningAmounts.json similarity index 88% rename from schemas/app/inventory/Point of Sale/POSShiftOpeningAmounts.json rename to schemas/app/inventory/Point of Sale/OpeningAmounts.json index ec77e73e..4c764f63 100644 --- a/schemas/app/inventory/Point of Sale/POSShiftOpeningAmounts.json +++ b/schemas/app/inventory/Point of Sale/OpeningAmounts.json @@ -1,5 +1,5 @@ { - "name": "POSShiftOpeningAmounts", + "name": "OpeningAmounts", "label": "Opening Amount", "isChild": true, "extends": "POSShiftAmounts", diff --git a/schemas/app/inventory/Point of Sale/OpeningCashInDenominations.json b/schemas/app/inventory/Point of Sale/OpeningCash.json similarity index 89% rename from schemas/app/inventory/Point of Sale/OpeningCashInDenominations.json rename to schemas/app/inventory/Point of Sale/OpeningCash.json index fa9e2297..3a8bac98 100644 --- a/schemas/app/inventory/Point of Sale/OpeningCashInDenominations.json +++ b/schemas/app/inventory/Point of Sale/OpeningCash.json @@ -1,5 +1,5 @@ { - "name": "OpeningCashInDenominations", + "name": "OpeningCash", "label": "Opening Cash In Denominations", "isChild": true, "extends": "CashDenominations", From e4907165bb19bb3e5392a537bfb99d92e245ad12 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Tue, 22 Aug 2023 12:04:30 +0530 Subject: [PATCH 008/107] feat: pos shift closing schemas --- ...tClosingAmounts.json => ClosingAmounts.json} | 4 ++-- .../inventory/Point of Sale/ClosingCash.json | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) rename schemas/app/inventory/Point of Sale/{POSShiftClosingAmounts.json => ClosingAmounts.json} (93%) create mode 100644 schemas/app/inventory/Point of Sale/ClosingCash.json diff --git a/schemas/app/inventory/Point of Sale/POSShiftClosingAmounts.json b/schemas/app/inventory/Point of Sale/ClosingAmounts.json similarity index 93% rename from schemas/app/inventory/Point of Sale/POSShiftClosingAmounts.json rename to schemas/app/inventory/Point of Sale/ClosingAmounts.json index 3f3587b9..ea786c13 100644 --- a/schemas/app/inventory/Point of Sale/POSShiftClosingAmounts.json +++ b/schemas/app/inventory/Point of Sale/ClosingAmounts.json @@ -1,6 +1,6 @@ { - "name": "POSShiftClosingAmounts", - "label": "Opening Amount", + "name": "ClosingAmounts", + "label": "Closing Amount", "isChild": true, "extends": "POSShiftAmounts", "fields": [ diff --git a/schemas/app/inventory/Point of Sale/ClosingCash.json b/schemas/app/inventory/Point of Sale/ClosingCash.json new file mode 100644 index 00000000..c125edeb --- /dev/null +++ b/schemas/app/inventory/Point of Sale/ClosingCash.json @@ -0,0 +1,17 @@ +{ + "name": "ClosingCash", + "label": "Closing Cash In Denominations", + "isChild": true, + "extends": "CashDenominations", + "fields": [ + { + "fieldname": "count", + "label": "Count", + "placeholder": "Count", + "fieldtype": "Int", + "default": 0, + "required": true + } + ], + "tableFields": ["denomination", "count"] +} From 65018bd75067d7e20f53dcb8822f8dd49e976bd2 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Tue, 22 Aug 2023 12:06:16 +0530 Subject: [PATCH 009/107] refactor: pos shift & pos settings schemas --- .../inventory/Point of Sale/POSSettings.json | 17 +------- .../app/inventory/Point of Sale/POSShift.json | 40 +++++-------------- .../Point of Sale/POSShiftAmounts.json | 3 +- schemas/schemas.ts | 19 +++++++++ 4 files changed, 32 insertions(+), 47 deletions(-) diff --git a/schemas/app/inventory/Point of Sale/POSSettings.json b/schemas/app/inventory/Point of Sale/POSSettings.json index 78d57674..5f33fa3b 100644 --- a/schemas/app/inventory/Point of Sale/POSSettings.json +++ b/schemas/app/inventory/Point of Sale/POSSettings.json @@ -4,20 +4,5 @@ "isSingle": true, "isChild": false, "isSubmittable": true, - "fields": [ - { - "fieldname": "discountAfterTax", - "label": "Apply Discount After Tax", - "fieldtype": "Check", - "default": false, - "section": "Default" - }, - { - "fieldname": "hideImages", - "label": "Hide Images", - "fieldtype": "Check", - "default": false, - "section": "Default" - } - ] + "fields": [] } diff --git a/schemas/app/inventory/Point of Sale/POSShift.json b/schemas/app/inventory/Point of Sale/POSShift.json index ea878e21..fa8c0798 100644 --- a/schemas/app/inventory/Point of Sale/POSShift.json +++ b/schemas/app/inventory/Point of Sale/POSShift.json @@ -7,50 +7,32 @@ "fieldname": "isShiftOpen", "label": "Is POS Shift Open", "fieldtype": "Check", - "default": false, - "section": "Defaults" + "default": false }, { "fieldname": "openingDate", "label": "Opening Date", - "fieldtype": "Datetime", - "section": "Defaults" + "fieldtype": "Datetime" }, { "fieldname": "closingDate", "label": "Closing Date", - "fieldtype": "Datetime", - "section": "Defaults" + "fieldtype": "Datetime" }, { - "fieldname": "openingCashAmount", - "label": "Opening Cash Amount", - "fieldtype": "Currency", - "section": "Defaults" - }, - { - "fieldname": "totalOpeningAmount", - "label": "Opening Amount", - "fieldtype": "Currency", - "section": "Defaults" - }, - { - "fieldname": "openingCashInDenominations", + "fieldname": "openingCash", "fieldtype": "Table", - "target": "OpeningCashInDenominations", - "section": "Defaults" + "target": "OpeningCash" + }, + { + "fieldname": "closingCash", + "fieldtype": "Table", + "target": "ClosingCash" }, { "fieldname": "openingAmounts", "fieldtype": "Table", - "target": "POSShiftOpeningAmounts", - "section": "Defaults" - }, - { - "fieldname": "closingAmounts", - "fieldtype": "Table", - "target": "POSShiftClosingAmounts", - "section": "Defaults" + "target": "OpeningAmounts" } ] } diff --git a/schemas/app/inventory/Point of Sale/POSShiftAmounts.json b/schemas/app/inventory/Point of Sale/POSShiftAmounts.json index 8ebfb5a1..a891d448 100644 --- a/schemas/app/inventory/Point of Sale/POSShiftAmounts.json +++ b/schemas/app/inventory/Point of Sale/POSShiftAmounts.json @@ -19,8 +19,7 @@ "label": "Transfer" } ], - "required": true, - "section": "Details" + "required": true } ] } diff --git a/schemas/schemas.ts b/schemas/schemas.ts index 9c3ed968..1e92f56c 100644 --- a/schemas/schemas.ts +++ b/schemas/schemas.ts @@ -52,6 +52,15 @@ import base from './meta/base.json'; import child from './meta/child.json'; import submittable from './meta/submittable.json'; import tree from './meta/tree.json'; +import CashDenominations from './app/inventory/Point of Sale/CashDenominations.json'; +import ClosingAmounts from './app/inventory/Point of Sale/ClosingAmounts.json'; +import ClosingCash from './app/inventory/Point of Sale/ClosingCash.json'; +import DefaultCashDenominations from './app/inventory/Point of Sale/DefaultCashDenominations.json'; +import OpeningAmounts from './app/inventory/Point of Sale/OpeningAmounts.json'; +import OpeningCash from './app/inventory/Point of Sale/OpeningCash.json'; +import POSSettings from './app/inventory/Point of Sale/POSSettings.json'; +import POSShift from './app/inventory/Point of Sale/POSShift.json'; +import POSShiftAmounts from './app/inventory/Point of Sale/POSShiftAmounts.json'; import { Schema, SchemaStub } from './types'; export const coreSchemas: Schema[] = [ @@ -129,4 +138,14 @@ export const appSchemas: Schema[] | SchemaStub[] = [ CustomForm as Schema, CustomField as Schema, + + CashDenominations as Schema, + ClosingAmounts as Schema, + ClosingCash as Schema, + DefaultCashDenominations as Schema, + OpeningAmounts as Schema, + OpeningCash as Schema, + POSSettings as Schema, + POSShift as Schema, + POSShiftAmounts as Schema, ]; From 4f3e3536d26a24b5aa317fa36bb5e4902e316189 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Tue, 22 Aug 2023 12:13:38 +0530 Subject: [PATCH 010/107] feat(ui): neupos icon --- src/components/Icons/18/index.ts | 2 ++ src/components/Icons/18/neupos.vue | 15 +++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 src/components/Icons/18/neupos.vue diff --git a/src/components/Icons/18/index.ts b/src/components/Icons/18/index.ts index b9b87c1f..a63458c4 100644 --- a/src/components/Icons/18/index.ts +++ b/src/components/Icons/18/index.ts @@ -9,6 +9,7 @@ import Inventory from './inventory.vue'; import Invoice from './invoice.vue'; import Item from './item.vue'; import Mail from './mail.vue'; +import NeuPOS from './neupos.vue'; import OpeningAc from './opening-ac.vue'; import Percentage from './percentage.vue'; import Property from './property.vue'; @@ -36,6 +37,7 @@ export default { 'invoice': Invoice, 'item': Item, 'mail': Mail, + 'neupos': NeuPOS, 'opening-ac': OpeningAc, 'percentage': Percentage, 'property': Property, diff --git a/src/components/Icons/18/neupos.vue b/src/components/Icons/18/neupos.vue new file mode 100644 index 00000000..796affde --- /dev/null +++ b/src/components/Icons/18/neupos.vue @@ -0,0 +1,15 @@ + + From a01dfedff1d58c193735bc3bba19fd7f66b0e339 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Tue, 22 Aug 2023 12:14:54 +0530 Subject: [PATCH 011/107] feat: neupos route & sidebar config --- src/router.ts | 7 +++++++ src/utils/sidebarConfig.ts | 15 +++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/router.ts b/src/router.ts index 5b91933f..ba334a07 100644 --- a/src/router.ts +++ b/src/router.ts @@ -11,6 +11,7 @@ import Report from 'src/pages/Report.vue'; import Settings from 'src/pages/Settings/Settings.vue'; import TemplateBuilder from 'src/pages/TemplateBuilder/TemplateBuilder.vue'; import CustomizeForm from 'src/pages/CustomizeForm/CustomizeForm.vue'; +import NeuPOS from 'src/pages/NeuPOS/NeuPOS.vue'; import type { HistoryState } from 'vue-router'; import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'; import { historyState } from './utils/refs'; @@ -124,6 +125,12 @@ const routes: RouteRecordRaw[] = [ edit: (route) => route.query, }, }, + { + path: '/neupos', + name: 'NeuPOS', + component: NeuPOS, + props: {}, + }, ]; const router = createRouter({ routes, history: createWebHistory() }); diff --git a/src/utils/sidebarConfig.ts b/src/utils/sidebarConfig.ts index 7a308ebd..23f5e714 100644 --- a/src/utils/sidebarConfig.ts +++ b/src/utils/sidebarConfig.ts @@ -101,6 +101,20 @@ function getInventorySidebar(): SidebarRoot[] { ]; } +function getPOSSidebar() { + const isPOSEnabled = !!fyo.singles.InventorySettings?.enablePointOfSale; + if (!isPOSEnabled) { + return []; + } + + return { + label: t`NeuPOS`, + name: 'neupos', + route: '/neupos', + icon: 'neupos', + }; +} + function getReportSidebar() { return { label: t`Reports`, @@ -256,6 +270,7 @@ function getCompleteSidebar(): SidebarConfig { }, getReportSidebar(), getInventorySidebar(), + getPOSSidebar(), getRegionalSidebar(), { label: t`Setup`, From b8518c6c7de9fba7cc6532cf4e2fedc115c406d5 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Tue, 22 Aug 2023 12:18:23 +0530 Subject: [PATCH 012/107] feat: cash denomination models --- models/inventory/Point of Sale/CashDenominations.ts | 6 ++++++ models/inventory/Point of Sale/ClosingCash.ts | 3 +++ models/inventory/Point of Sale/DefaultCashDenominations.ts | 3 +++ models/inventory/Point of Sale/OpeningCash.ts | 5 +++++ 4 files changed, 17 insertions(+) create mode 100644 models/inventory/Point of Sale/CashDenominations.ts create mode 100644 models/inventory/Point of Sale/ClosingCash.ts create mode 100644 models/inventory/Point of Sale/DefaultCashDenominations.ts create mode 100644 models/inventory/Point of Sale/OpeningCash.ts diff --git a/models/inventory/Point of Sale/CashDenominations.ts b/models/inventory/Point of Sale/CashDenominations.ts new file mode 100644 index 00000000..a13fcac6 --- /dev/null +++ b/models/inventory/Point of Sale/CashDenominations.ts @@ -0,0 +1,6 @@ +import { Doc } from 'fyo/model/doc'; +import { Money } from 'pesa'; + +export abstract class CashDenominations extends Doc { + denomination?: Money; +} diff --git a/models/inventory/Point of Sale/ClosingCash.ts b/models/inventory/Point of Sale/ClosingCash.ts new file mode 100644 index 00000000..2fcae076 --- /dev/null +++ b/models/inventory/Point of Sale/ClosingCash.ts @@ -0,0 +1,3 @@ +import { CashDenominations } from './CashDenominations'; + +export class ClosingCash extends CashDenominations {} diff --git a/models/inventory/Point of Sale/DefaultCashDenominations.ts b/models/inventory/Point of Sale/DefaultCashDenominations.ts new file mode 100644 index 00000000..0173527f --- /dev/null +++ b/models/inventory/Point of Sale/DefaultCashDenominations.ts @@ -0,0 +1,3 @@ +import { CashDenominations } from './CashDenominations'; + +export class DefaultCashDenominations extends CashDenominations {} diff --git a/models/inventory/Point of Sale/OpeningCash.ts b/models/inventory/Point of Sale/OpeningCash.ts new file mode 100644 index 00000000..d702c418 --- /dev/null +++ b/models/inventory/Point of Sale/OpeningCash.ts @@ -0,0 +1,5 @@ +import { CashDenominations } from './CashDenominations'; + +export class OpeningCash extends CashDenominations { + count?: number; +} From 9930a15e6e6a941c48400d4a4224339e70578295 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Tue, 22 Aug 2023 12:18:51 +0530 Subject: [PATCH 013/107] feat: pos shift models --- fyo/model/types.ts | 2 + models/baseModels/Defaults/Defaults.ts | 17 +++++++ models/index.ts | 11 +++++ models/inventory/InventorySettings.ts | 4 ++ .../inventory/Point of Sale/ClosingAmounts.ts | 26 +++++++++++ .../inventory/Point of Sale/OpeningAmounts.ts | 7 +++ models/inventory/Point of Sale/POSShift.ts | 44 +++++++++++++++++++ models/types.ts | 3 +- 8 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 models/inventory/Point of Sale/ClosingAmounts.ts create mode 100644 models/inventory/Point of Sale/OpeningAmounts.ts create mode 100644 models/inventory/Point of Sale/POSShift.ts diff --git a/fyo/model/types.ts b/fyo/model/types.ts index 087ce184..e99858cb 100644 --- a/fyo/model/types.ts +++ b/fyo/model/types.ts @@ -10,6 +10,7 @@ import type { Defaults } from 'models/baseModels/Defaults/Defaults'; import type { PrintSettings } from 'models/baseModels/PrintSettings/PrintSettings'; import type { InventorySettings } from 'models/inventory/InventorySettings'; import type { Misc } from 'models/baseModels/Misc'; +import type { POSShift } from 'models/inventory/Point of Sale/POSShift'; /** * The functions below are used for dynamic evaluation @@ -54,6 +55,7 @@ export interface SinglesMap { SystemSettings?: SystemSettings; AccountingSettings?: AccountingSettings; InventorySettings?: InventorySettings; + POSShift?: POSShift; PrintSettings?: PrintSettings; Defaults?: Defaults; Misc?: Misc; diff --git a/models/baseModels/Defaults/Defaults.ts b/models/baseModels/Defaults/Defaults.ts index bfee0ff6..180f07c7 100644 --- a/models/baseModels/Defaults/Defaults.ts +++ b/models/baseModels/Defaults/Defaults.ts @@ -1,3 +1,4 @@ +import { DefaultCashDenominations } from 'models/inventory/Point of Sale/DefaultCashDenominations'; import { Doc } from 'fyo/model/doc'; import { FiltersMap, HiddenMap } from 'fyo/model/types'; import { ModelNameEnum } from 'models/types'; @@ -35,6 +36,13 @@ export class Defaults extends Doc { purchaseReceiptPrintTemplate?: string; stockMovementPrintTemplate?: string; + // Point of Sale + posAdjustmentAccount?: string; + posCashDenominations?: DefaultCashDenominations[]; + posCustomer?: string; + posInventory?: string; + posPrintTemplate?: string; + static commonFilters = { // Auto Payments salesPaymentAccount: () => ({ isGroup: false, accountType: 'Cash' }), @@ -82,6 +90,10 @@ export class Defaults extends Doc { return () => !this.fyo.singles.AccountingSettings?.enableInventory; } + getPointOfSaleHidden() { + return () => !this.fyo.singles.InventorySettings?.enablePointOfSale; + } + hidden: HiddenMap = { stockMovementNumberSeries: this.getInventoryHidden(), shipmentNumberSeries: this.getInventoryHidden(), @@ -91,6 +103,11 @@ export class Defaults extends Doc { shipmentPrintTemplate: this.getInventoryHidden(), purchaseReceiptPrintTemplate: this.getInventoryHidden(), stockMovementPrintTemplate: this.getInventoryHidden(), + posAdjustmentAccount: this.getPointOfSaleHidden(), + posCashDenominations: this.getPointOfSaleHidden(), + posCustomer: this.getPointOfSaleHidden(), + posInventory: this.getPointOfSaleHidden(), + posPrintTemplate: this.getPointOfSaleHidden(), }; } diff --git a/models/index.ts b/models/index.ts index e2009b84..37cdef62 100644 --- a/models/index.ts +++ b/models/index.ts @@ -33,6 +33,11 @@ import { ShipmentItem } from './inventory/ShipmentItem'; import { StockLedgerEntry } from './inventory/StockLedgerEntry'; import { StockMovement } from './inventory/StockMovement'; import { StockMovementItem } from './inventory/StockMovementItem'; +import { ClosingAmounts } from './inventory/Point of Sale/ClosingAmounts'; +import { ClosingCash } from './inventory/Point of Sale/ClosingCash'; +import { OpeningAmounts } from './inventory/Point of Sale/OpeningAmounts'; +import { OpeningCash } from './inventory/Point of Sale/OpeningCash'; +import { POSShift } from './inventory/Point of Sale/POSShift'; export const models = { Account, @@ -70,6 +75,12 @@ export const models = { ShipmentItem, PurchaseReceipt, PurchaseReceiptItem, + // POS Models + ClosingAmounts, + ClosingCash, + OpeningAmounts, + OpeningCash, + POSShift, } as ModelMap; export async function getRegionalModels( diff --git a/models/inventory/InventorySettings.ts b/models/inventory/InventorySettings.ts index 69b27da3..8cb64bce 100644 --- a/models/inventory/InventorySettings.ts +++ b/models/inventory/InventorySettings.ts @@ -12,6 +12,7 @@ export class InventorySettings extends Doc { enableSerialNumber?: boolean; enableUomConversions?: boolean; enableStockReturns?: boolean; + enablePointOfSale?: boolean; static filters: FiltersMap = { stockInHand: () => ({ @@ -44,5 +45,8 @@ export class InventorySettings extends Doc { enableStockReturns: () => { return !!this.enableStockReturns; }, + enablePointOfSale: () => { + return !!this.fyo.singles.POSShift?.isShiftOpen; + }, }; } diff --git a/models/inventory/Point of Sale/ClosingAmounts.ts b/models/inventory/Point of Sale/ClosingAmounts.ts new file mode 100644 index 00000000..467adc97 --- /dev/null +++ b/models/inventory/Point of Sale/ClosingAmounts.ts @@ -0,0 +1,26 @@ +import { Doc } from 'fyo/model/doc'; +import { FormulaMap } from 'fyo/model/types'; +import { Money } from 'pesa'; + +export class ClosingAmounts extends Doc { + openingAmount?: Money; + closingAmount?: Money; + expectedAmount?: Money; + differenceAmount?: Money; + + formulas: FormulaMap = { + differenceAmount: { + formula: () => { + if (!this.closingAmount) { + return this.fyo.pesa(0); + } + + if (!this.expectedAmount) { + return this.fyo.pesa(0); + } + + return this.closingAmount.sub(this.expectedAmount); + }, + }, + }; +} diff --git a/models/inventory/Point of Sale/OpeningAmounts.ts b/models/inventory/Point of Sale/OpeningAmounts.ts new file mode 100644 index 00000000..860e2699 --- /dev/null +++ b/models/inventory/Point of Sale/OpeningAmounts.ts @@ -0,0 +1,7 @@ +import { Doc } from 'fyo/model/doc'; +import { Money } from 'pesa'; + +export class OpeningAmounts extends Doc { + amount?: Money; + paymentMethod?: 'Cash' | 'Transfer'; +} diff --git a/models/inventory/Point of Sale/POSShift.ts b/models/inventory/Point of Sale/POSShift.ts new file mode 100644 index 00000000..ebc8217c --- /dev/null +++ b/models/inventory/Point of Sale/POSShift.ts @@ -0,0 +1,44 @@ +import { ClosingAmounts } from './ClosingAmounts'; +import { ClosingCash } from './ClosingCash'; +import { Doc } from 'fyo/model/doc'; +import { OpeningAmounts } from './OpeningAmounts'; +import { OpeningCash } from './OpeningCash'; + +export class POSShift extends Doc { + isShiftOpen?: boolean; + openingDate?: Date; + closingDate?: Date; + openingAmounts?: OpeningAmounts[]; + closingAmounts?: ClosingAmounts[]; + openingCash?: OpeningCash[]; + closingCash?: ClosingCash[]; + + get openingCashAmount() { + if (!this.openingCash) { + return this.fyo.pesa(0); + } + + let openingAmount = this.fyo.pesa(0); + + this.openingCash.map((row: OpeningCash) => { + const denomination = row.denomination ?? this.fyo.pesa(0); + const count = row.count ?? 0; + + const amount = denomination.mul(count); + openingAmount = openingAmount.add(amount); + }); + return openingAmount; + } + + get openingTransferAmount() { + if (!this.openingAmounts) { + return this.fyo.pesa(0); + } + + const transferAmountRow = this.openingAmounts.filter( + (row) => row.paymentMethod === 'Transfer' + )[0]; + + return transferAmountRow.amount ?? this.fyo.pesa(0); + } +} diff --git a/models/types.ts b/models/types.ts index 8d63d40f..bbcc3ca9 100644 --- a/models/types.ts +++ b/models/types.ts @@ -45,7 +45,8 @@ export enum ModelNameEnum { PurchaseReceiptItem = 'PurchaseReceiptItem', Location = 'Location', CustomForm = 'CustomForm', - CustomField = 'CustomField' + CustomField = 'CustomField', + POSShift = 'POSShift' } export type ModelName = keyof typeof ModelNameEnum; From 69b213e995972dbb757520ffd57d7d0551c73c00 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Tue, 22 Aug 2023 12:27:18 +0530 Subject: [PATCH 014/107] feat: neupos page --- src/pages/NeuPOS/NeuPOS.vue | 49 +++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/pages/NeuPOS/NeuPOS.vue diff --git a/src/pages/NeuPOS/NeuPOS.vue b/src/pages/NeuPOS/NeuPOS.vue new file mode 100644 index 00000000..14e84fe5 --- /dev/null +++ b/src/pages/NeuPOS/NeuPOS.vue @@ -0,0 +1,49 @@ + + + From 49cf461d54bb6e57ba43b17636716307cc4acc27 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Tue, 22 Aug 2023 12:27:48 +0530 Subject: [PATCH 015/107] feat: pos shift open page --- src/pages/NeuPOS/OpenPOSShift.vue | 175 ++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 src/pages/NeuPOS/OpenPOSShift.vue diff --git a/src/pages/NeuPOS/OpenPOSShift.vue b/src/pages/NeuPOS/OpenPOSShift.vue new file mode 100644 index 00000000..66b88016 --- /dev/null +++ b/src/pages/NeuPOS/OpenPOSShift.vue @@ -0,0 +1,175 @@ + + + From 017255129001c4de781d16c1d1c1fda3e99fb8e1 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Tue, 22 Aug 2023 18:22:12 +0530 Subject: [PATCH 016/107] fix: enabled create for pos default customer --- schemas/app/Defaults.json | 1 + 1 file changed, 1 insertion(+) diff --git a/schemas/app/Defaults.json b/schemas/app/Defaults.json index bf47f7de..7b94b0a9 100644 --- a/schemas/app/Defaults.json +++ b/schemas/app/Defaults.json @@ -170,6 +170,7 @@ "label": "POS Customer", "fieldtype": "Link", "target": "Party", + "create": true, "section": "Point of Sale" }, { From 9cf3ee0626bf16c5872d5dce44382b877c0d428a Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Tue, 22 Aug 2023 18:23:29 +0530 Subject: [PATCH 017/107] feat: isPOS field to identify inv created in pos --- schemas/app/SalesInvoice.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/schemas/app/SalesInvoice.json b/schemas/app/SalesInvoice.json index dcbfc5de..d520d0e5 100644 --- a/schemas/app/SalesInvoice.json +++ b/schemas/app/SalesInvoice.json @@ -61,6 +61,12 @@ "target": "SalesInvoice", "label": "Return Against", "section": "References" + }, + { + "fieldname": "isPOS", + "fieldtype": "Check", + "default": false, + "hidden": true } ], "keywordFields": ["name", "party"] From b9b2f3d49ee2ef6c9a7720f42e94482f54589e28 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Tue, 22 Aug 2023 18:26:21 +0530 Subject: [PATCH 018/107] fix: added closingAmounts in posShift --- .../inventory/Point of Sale/ClosingAmounts.ts | 5 ++-- models/inventory/Point of Sale/POSShift.ts | 27 +++++++++++++++---- .../app/inventory/Point of Sale/POSShift.json | 5 ++++ 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/models/inventory/Point of Sale/ClosingAmounts.ts b/models/inventory/Point of Sale/ClosingAmounts.ts index 467adc97..e08898f2 100644 --- a/models/inventory/Point of Sale/ClosingAmounts.ts +++ b/models/inventory/Point of Sale/ClosingAmounts.ts @@ -3,10 +3,11 @@ import { FormulaMap } from 'fyo/model/types'; import { Money } from 'pesa'; export class ClosingAmounts extends Doc { - openingAmount?: Money; closingAmount?: Money; - expectedAmount?: Money; differenceAmount?: Money; + expectedAmount?: Money; + openingAmount?: Money; + paymentMethod?: string; formulas: FormulaMap = { differenceAmount: { diff --git a/models/inventory/Point of Sale/POSShift.ts b/models/inventory/Point of Sale/POSShift.ts index ebc8217c..b56fc859 100644 --- a/models/inventory/Point of Sale/POSShift.ts +++ b/models/inventory/Point of Sale/POSShift.ts @@ -5,13 +5,13 @@ import { OpeningAmounts } from './OpeningAmounts'; import { OpeningCash } from './OpeningCash'; export class POSShift extends Doc { - isShiftOpen?: boolean; - openingDate?: Date; - closingDate?: Date; - openingAmounts?: OpeningAmounts[]; closingAmounts?: ClosingAmounts[]; - openingCash?: OpeningCash[]; closingCash?: ClosingCash[]; + closingDate?: Date; + isShiftOpen?: boolean; + openingAmounts?: OpeningAmounts[]; + openingCash?: OpeningCash[]; + openingDate?: Date; get openingCashAmount() { if (!this.openingCash) { @@ -30,6 +30,23 @@ export class POSShift extends Doc { return openingAmount; } + get closingCashAmount() { + if (!this.closingCash) { + return this.fyo.pesa(0); + } + + let closingAmount = this.fyo.pesa(0); + + this.closingCash.map((row: ClosingCash) => { + const denomination = row.denomination ?? this.fyo.pesa(0); + const count = row.count ?? 0; + + const amount = denomination.mul(count); + closingAmount = closingAmount.add(amount); + }); + return closingAmount; + } + get openingTransferAmount() { if (!this.openingAmounts) { return this.fyo.pesa(0); diff --git a/schemas/app/inventory/Point of Sale/POSShift.json b/schemas/app/inventory/Point of Sale/POSShift.json index fa8c0798..c17b834f 100644 --- a/schemas/app/inventory/Point of Sale/POSShift.json +++ b/schemas/app/inventory/Point of Sale/POSShift.json @@ -33,6 +33,11 @@ "fieldname": "openingAmounts", "fieldtype": "Table", "target": "OpeningAmounts" + }, + { + "fieldname": "closingAmounts", + "fieldtype": "Table", + "target": "ClosingAmounts" } ] } From 06da764309badcb255958def914adfbd8277256f Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Tue, 22 Aug 2023 18:27:40 +0530 Subject: [PATCH 019/107] incr: posShiftOpen modal --- .../{OpenPOSShift.vue => OpenPOSShiftModal.vue} | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) rename src/pages/NeuPOS/{OpenPOSShift.vue => OpenPOSShiftModal.vue} (95%) diff --git a/src/pages/NeuPOS/OpenPOSShift.vue b/src/pages/NeuPOS/OpenPOSShiftModal.vue similarity index 95% rename from src/pages/NeuPOS/OpenPOSShift.vue rename to src/pages/NeuPOS/OpenPOSShiftModal.vue index 66b88016..48f0a31f 100644 --- a/src/pages/NeuPOS/OpenPOSShift.vue +++ b/src/pages/NeuPOS/OpenPOSShiftModal.vue @@ -74,7 +74,7 @@ export default defineComponent({ doc: computed(() => this.posShiftDoc), }; }, - emits: ['toggleShiftOpenModal'], + emits: ['toggleModal'], data() { return { posShiftDoc: undefined as POSShift | undefined, @@ -92,6 +92,7 @@ export default defineComponent({ this.posShiftDoc = fyo.singles[ModelNameEnum.POSShift]; await this.seedDefaults(); + this.isValuesSeeded = true; }, methods: { async seedDefaultCashDenomiations() { @@ -142,10 +143,8 @@ export default defineComponent({ return; } - this.isValuesSeeded = false; await this.seedDefaultCashDenomiations(); await this.seedPaymentMethods(); - this.isValuesSeeded = true; }, getField(fieldname: string) { return this.fyo.getField(ModelNameEnum.POSShift, fieldname); @@ -166,9 +165,13 @@ export default defineComponent({ this.setOpeningCashAmount(); }, async handleSubmit() { - await this.posShiftDoc?.set('isShiftOpen', true); + await this.posShiftDoc?.setMultiple({ + isShiftOpen: true, + openingDate: new Date(), + }); + await this.posShiftDoc?.sync(); - this.$emit('toggleShiftOpenModal'); + this.$emit('toggleModal', 'ShiftOpen'); }, }, }); From 746b3b26ee97ba6ef11841dbfdb1eb954a6034ef Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Tue, 22 Aug 2023 18:28:40 +0530 Subject: [PATCH 020/107] incr: close pos shift modal --- src/pages/NeuPOS/ClosePOSShiftModal.vue | 185 ++++++++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100644 src/pages/NeuPOS/ClosePOSShiftModal.vue diff --git a/src/pages/NeuPOS/ClosePOSShiftModal.vue b/src/pages/NeuPOS/ClosePOSShiftModal.vue new file mode 100644 index 00000000..35c957fb --- /dev/null +++ b/src/pages/NeuPOS/ClosePOSShiftModal.vue @@ -0,0 +1,185 @@ + + + From 218547269da5e53aefc140b4b9a6f0d554372081 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Tue, 22 Aug 2023 18:29:37 +0530 Subject: [PATCH 021/107] feat: get pos transacted amount --- backend/database/bespoke.ts | 44 +++++++++++++++++++++++++++++++++++++ fyo/core/dbHandler.ts | 10 +++++++++ 2 files changed, 54 insertions(+) diff --git a/backend/database/bespoke.ts b/backend/database/bespoke.ts index b9b3af74..6aaed0e6 100644 --- a/backend/database/bespoke.ts +++ b/backend/database/bespoke.ts @@ -10,6 +10,7 @@ import DatabaseCore from './core'; import { BespokeFunction } from './types'; import { DocItem, ReturnDocItem } from 'models/inventory/types'; import { safeParseFloat } from 'utils/index'; +import { Money } from 'pesa'; export class BespokeQueries { [key: string]: BespokeFunction; @@ -390,4 +391,47 @@ export class BespokeQueries { } return returnBalanceItems; } + + static async getPOSTransactedAmount( + db: DatabaseCore, + fromDate: Date + ): Promise | undefined> { + const sinvNames = ( + await db.knex!(ModelNameEnum.SalesInvoice) + .select('name') + .where('isPOS', true) + .andWhereRaw('datetime(date) > datetime(?)', [ + new Date(fromDate.setHours(0, 0, 0)).toISOString(), + ]) + .andWhereRaw('datetime(date) < datetime(?)', [new Date().toISOString()]) + ).map((row: { name: string }) => row.name); + + if (!sinvNames.length) { + return; + } + + const paymentEntryNames: string[] = ( + await db.knex!(ModelNameEnum.PaymentFor) + .select('parent') + .whereIn('referenceName', sinvNames) + ).map((doc: { parent: string }) => doc.parent); + + const groupedAmounts = (await db.knex!(ModelNameEnum.Payment) + .select('paymentMethod') + .whereIn('name', paymentEntryNames) + .groupBy('paymentMethod') + .sum({ amount: 'amount' })) as { paymentMethod: string; amount: Money }[]; + + const transactedAmounts = {} as { [paymentMethod: string]: Money }; + + if (!groupedAmounts) { + return; + } + + for (const row of groupedAmounts) { + transactedAmounts[row.paymentMethod] = row.amount; + } + + return transactedAmounts; + } } diff --git a/fyo/core/dbHandler.ts b/fyo/core/dbHandler.ts index cb75cc9c..6a2c7d49 100644 --- a/fyo/core/dbHandler.ts +++ b/fyo/core/dbHandler.ts @@ -27,6 +27,7 @@ import { RawValueMap, } from './types'; import { ReturnDocItem } from 'models/inventory/types'; +import { Money } from 'pesa'; type FieldMap = Record>; @@ -342,6 +343,15 @@ export class DatabaseHandler extends DatabaseBase { )) as Promise | undefined>; } + async getPOSTransactedAmount( + fromDate: Date + ): Promise | undefined> { + return (await this.#demux.callBespoke( + 'getPOSTransactedAmount', + fromDate + )) as Promise | undefined>; + } + /** * Internal methods */ From 79ef11bb23e90917f9ea11d29c1cb7022ab3d5a9 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Tue, 22 Aug 2023 18:30:24 +0530 Subject: [PATCH 022/107] incr: pos shift models --- models/inventory/Point of Sale/ClosingCash.ts | 4 +++- models/inventory/Point of Sale/OpeningAmounts.ts | 4 ++++ models/inventory/Point of Sale/POSShift.ts | 10 +++++----- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/models/inventory/Point of Sale/ClosingCash.ts b/models/inventory/Point of Sale/ClosingCash.ts index 2fcae076..dd5c787f 100644 --- a/models/inventory/Point of Sale/ClosingCash.ts +++ b/models/inventory/Point of Sale/ClosingCash.ts @@ -1,3 +1,5 @@ import { CashDenominations } from './CashDenominations'; -export class ClosingCash extends CashDenominations {} +export class ClosingCash extends CashDenominations { + count?: number; +} diff --git a/models/inventory/Point of Sale/OpeningAmounts.ts b/models/inventory/Point of Sale/OpeningAmounts.ts index 860e2699..86a0ad72 100644 --- a/models/inventory/Point of Sale/OpeningAmounts.ts +++ b/models/inventory/Point of Sale/OpeningAmounts.ts @@ -4,4 +4,8 @@ import { Money } from 'pesa'; export class OpeningAmounts extends Doc { amount?: Money; paymentMethod?: 'Cash' | 'Transfer'; + + get openingCashAmount() { + return this.parentdoc?.openingCashAmount as Money; + } } diff --git a/models/inventory/Point of Sale/POSShift.ts b/models/inventory/Point of Sale/POSShift.ts index b56fc859..ff9e6134 100644 --- a/models/inventory/Point of Sale/POSShift.ts +++ b/models/inventory/Point of Sale/POSShift.ts @@ -5,13 +5,13 @@ import { OpeningAmounts } from './OpeningAmounts'; import { OpeningCash } from './OpeningCash'; export class POSShift extends Doc { - closingAmounts?: ClosingAmounts[]; - closingCash?: ClosingCash[]; - closingDate?: Date; isShiftOpen?: boolean; - openingAmounts?: OpeningAmounts[]; - openingCash?: OpeningCash[]; openingDate?: Date; + closingDate?: Date; + openingAmounts?: OpeningAmounts[]; + closingAmounts?: ClosingAmounts[]; + openingCash?: OpeningCash[]; + closingCash?: ClosingCash[]; get openingCashAmount() { if (!this.openingCash) { From e7486db8ad73c1035807843fe1e99b4380feb68c Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Tue, 22 Aug 2023 18:30:58 +0530 Subject: [PATCH 023/107] incr: added pos open & close modal --- src/pages/NeuPOS/NeuPOS.vue | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/src/pages/NeuPOS/NeuPOS.vue b/src/pages/NeuPOS/NeuPOS.vue index 14e84fe5..892c4525 100644 --- a/src/pages/NeuPOS/NeuPOS.vue +++ b/src/pages/NeuPOS/NeuPOS.vue @@ -3,7 +3,7 @@
-
From 1878f261107b1f587c18b179135c94bbaf197325 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Wed, 23 Aug 2023 12:11:53 +0530 Subject: [PATCH 025/107] feat: items table --- src/components/NeuPOS/ItemsTable.vue | 140 +++++++++++++++++++++++++++ src/components/NeuPOS/types.ts | 10 ++ 2 files changed, 150 insertions(+) create mode 100644 src/components/NeuPOS/ItemsTable.vue create mode 100644 src/components/NeuPOS/types.ts diff --git a/src/components/NeuPOS/ItemsTable.vue b/src/components/NeuPOS/ItemsTable.vue new file mode 100644 index 00000000..7465fcb1 --- /dev/null +++ b/src/components/NeuPOS/ItemsTable.vue @@ -0,0 +1,140 @@ + + + diff --git a/src/components/NeuPOS/types.ts b/src/components/NeuPOS/types.ts new file mode 100644 index 00000000..3c669994 --- /dev/null +++ b/src/components/NeuPOS/types.ts @@ -0,0 +1,10 @@ +export type ItemQtyMap = { + [item: string]: { availableQty: number;[batch: string]: number }; +} + +export type ItemSerialNumbers = { [item: string]: string } + +export enum DiscountType { + Percent= "percent", + Amount= "amount" +} \ No newline at end of file From c12d9e1fb883b72c705db384bf46856bf87034e7 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Wed, 23 Aug 2023 12:16:16 +0530 Subject: [PATCH 026/107] feat: selected items table --- src/components/NeuPOS/SelectedItemRow.vue | 329 ++++++++++++++++++++ src/components/NeuPOS/SelectedItemTable.vue | 132 ++++++++ src/pages/NeuPOS/NeuPOS.vue | 204 +++++++++++- 3 files changed, 660 insertions(+), 5 deletions(-) create mode 100644 src/components/NeuPOS/SelectedItemRow.vue create mode 100644 src/components/NeuPOS/SelectedItemTable.vue diff --git a/src/components/NeuPOS/SelectedItemRow.vue b/src/components/NeuPOS/SelectedItemRow.vue new file mode 100644 index 00000000..346493c2 --- /dev/null +++ b/src/components/NeuPOS/SelectedItemRow.vue @@ -0,0 +1,329 @@ + + + diff --git a/src/components/NeuPOS/SelectedItemTable.vue b/src/components/NeuPOS/SelectedItemTable.vue new file mode 100644 index 00000000..57ce6680 --- /dev/null +++ b/src/components/NeuPOS/SelectedItemTable.vue @@ -0,0 +1,132 @@ + + diff --git a/src/pages/NeuPOS/NeuPOS.vue b/src/pages/NeuPOS/NeuPOS.vue index 892c4525..d4f05558 100644 --- a/src/pages/NeuPOS/NeuPOS.vue +++ b/src/pages/NeuPOS/NeuPOS.vue @@ -4,7 +4,7 @@
@@ -22,37 +22,141 @@ @toggle-modal="toggleModal" /> - + + +
+
+
+ + +
+
+ +
+
+
+ + + +
+
+
+
From 0189e99c9be16bdf2ed2dcd11844c430ba3954c2 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Wed, 23 Aug 2023 15:16:31 +0530 Subject: [PATCH 027/107] feat: floating label input base --- .../NeuPOS/FloatingLabelInputBase.vue | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/components/NeuPOS/FloatingLabelInputBase.vue diff --git a/src/components/NeuPOS/FloatingLabelInputBase.vue b/src/components/NeuPOS/FloatingLabelInputBase.vue new file mode 100644 index 00000000..47b9b064 --- /dev/null +++ b/src/components/NeuPOS/FloatingLabelInputBase.vue @@ -0,0 +1,63 @@ + + From f43161adf7706840df67bfa9357410c3fdd63fa1 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Wed, 23 Aug 2023 15:16:53 +0530 Subject: [PATCH 028/107] feat: floating label currency input --- .../NeuPOS/FloatingLabelCurrencyInput.vue | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 src/components/NeuPOS/FloatingLabelCurrencyInput.vue diff --git a/src/components/NeuPOS/FloatingLabelCurrencyInput.vue b/src/components/NeuPOS/FloatingLabelCurrencyInput.vue new file mode 100644 index 00000000..e7ec2c90 --- /dev/null +++ b/src/components/NeuPOS/FloatingLabelCurrencyInput.vue @@ -0,0 +1,116 @@ + + + From 53955045de65a98a56a93204b8575765325dd349 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Wed, 23 Aug 2023 15:17:06 +0530 Subject: [PATCH 029/107] feat: floating label float input --- src/components/NeuPOS/FloatingLabelFloatInput.vue | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/components/NeuPOS/FloatingLabelFloatInput.vue diff --git a/src/components/NeuPOS/FloatingLabelFloatInput.vue b/src/components/NeuPOS/FloatingLabelFloatInput.vue new file mode 100644 index 00000000..1daa9892 --- /dev/null +++ b/src/components/NeuPOS/FloatingLabelFloatInput.vue @@ -0,0 +1,14 @@ + From 5b66b98f4e08c11283ccd67836bbe96a217259d1 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Wed, 23 Aug 2023 15:17:55 +0530 Subject: [PATCH 030/107] incr: selected item row component --- src/components/NeuPOS/SelectedItemRow.vue | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/components/NeuPOS/SelectedItemRow.vue b/src/components/NeuPOS/SelectedItemRow.vue index 346493c2..0dc0595c 100644 --- a/src/components/NeuPOS/SelectedItemRow.vue +++ b/src/components/NeuPOS/SelectedItemRow.vue @@ -242,22 +242,22 @@ diff --git a/src/pages/NeuPOS/PaymentModal.vue b/src/pages/NeuPOS/PaymentModal.vue index 38ece2ea..ff886f20 100644 --- a/src/pages/NeuPOS/PaymentModal.vue +++ b/src/pages/NeuPOS/PaymentModal.vue @@ -1,17 +1,331 @@ - From b0722537555f14adeca751fa754f2f29a76712e2 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Thu, 24 Aug 2023 17:55:23 +0530 Subject: [PATCH 034/107] fix: enable POS only if discounts enabled --- models/inventory/InventorySettings.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/models/inventory/InventorySettings.ts b/models/inventory/InventorySettings.ts index 8cb64bce..d2d1439d 100644 --- a/models/inventory/InventorySettings.ts +++ b/models/inventory/InventorySettings.ts @@ -46,7 +46,10 @@ export class InventorySettings extends Doc { return !!this.enableStockReturns; }, enablePointOfSale: () => { - return !!this.fyo.singles.POSShift?.isShiftOpen; + return ( + !!this.fyo.singles.POSShift?.isShiftOpen && + !!this.fyo.singles.AccountingSettings?.enableDiscounting + ); }, }; } From c483c4bf73d0f71b0a2c72c681f341c84394913b Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Thu, 24 Aug 2023 18:08:22 +0530 Subject: [PATCH 035/107] fix: show item discount amount & percent --- src/pages/NeuPOS/NeuPOS.vue | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/pages/NeuPOS/NeuPOS.vue b/src/pages/NeuPOS/NeuPOS.vue index ed9a2bf7..06277e7c 100644 --- a/src/pages/NeuPOS/NeuPOS.vue +++ b/src/pages/NeuPOS/NeuPOS.vue @@ -323,7 +323,15 @@ export default defineComponent({ } for (const item of this.sinvDoc.items) { - itemDiscounts.add(item.itemDiscountedTotal as Money); + if (item.setItemDiscountAmount) { + itemDiscounts = itemDiscounts.add(item.itemDiscountAmount as Money); + } + + if (item.amount && (item.itemDiscountPercent as number) > 1) { + itemDiscounts = itemDiscounts.add( + item.amount.percent(item.itemDiscountPercent as number) + ); + } } this.itemDiscounts = itemDiscounts; From 3bbf5294c99e476f18a845dd97b37c7442650c5e Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Fri, 25 Aug 2023 10:30:01 +0530 Subject: [PATCH 036/107] fix: add item triggering multiple times --- src/components/NeuPOS/ItemsTable.vue | 4 +-- src/components/NeuPOS/types.ts | 2 +- src/pages/NeuPOS/NeuPOS.vue | 47 +++++++++++++++++----------- 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/src/components/NeuPOS/ItemsTable.vue b/src/components/NeuPOS/ItemsTable.vue index 7b9193b2..674c11f1 100644 --- a/src/components/NeuPOS/ItemsTable.vue +++ b/src/components/NeuPOS/ItemsTable.vue @@ -83,7 +83,7 @@ export default defineComponent({ tableFields() { return [ { - fieldname: 'item', + fieldname: 'name', fieldtype: 'Data', label: 'Item', placeholder: 'Item', @@ -145,7 +145,7 @@ export default defineComponent({ this.items.push({ availableQty, - item: item.name, + name: item.name, rate: item.rate as Money, unit: item.unit as string, hasBatch: !!item.hasBatch, diff --git a/src/components/NeuPOS/types.ts b/src/components/NeuPOS/types.ts index 5890b31e..a1530e29 100644 --- a/src/components/NeuPOS/types.ts +++ b/src/components/NeuPOS/types.ts @@ -11,7 +11,7 @@ export type DiscountType = "percent" | "amount"; export type ModalName = 'ShiftOpen' | 'ShiftClose' | 'Payment' export interface POSItem { - item: string, + name: string, rate: Money, availableQty: number, unit: string, diff --git a/src/pages/NeuPOS/NeuPOS.vue b/src/pages/NeuPOS/NeuPOS.vue index 06277e7c..3fb997cd 100644 --- a/src/pages/NeuPOS/NeuPOS.vue +++ b/src/pages/NeuPOS/NeuPOS.vue @@ -43,8 +43,11 @@ }" :border="true" :class="['w-full']" - value="" - @change="async (item) => (item ? addItem(getItem(item, 0)) : null)" + :value="itemSearchTerm" + @keyup.enter=" + async () => await addItem(await getItem(itemSearchTerm)) + " + @change="(item: string) =>itemSearchTerm= item" /> @@ -168,10 +171,10 @@ import OpenPOSShiftModal from './OpenPOSShiftModal.vue'; import PageHeader from 'src/components/PageHeader.vue'; import PaymentModal from './PaymentModal.vue'; import SelectedItemTable from 'src/components/NeuPOS/SelectedItemTable.vue'; -import { routeTo, toggleSidebar } from 'src/utils/ui'; -import { fyo } from 'src/initFyo'; -import { computed, defineComponent } from 'vue'; import { ValuationMethod } from 'models/inventory/types'; +import { computed, defineComponent } from 'vue'; +import { fyo } from 'src/initFyo'; +import { routeTo, toggleSidebar } from 'src/utils/ui'; import { getRawStockLedgerEntries, getStockBalanceEntries, @@ -179,13 +182,13 @@ import { } from 'reports/inventory/helpers'; import { ModelNameEnum } from 'models/types'; import { SalesInvoice } from 'models/baseModels/SalesInvoice/SalesInvoice'; -import { getItem } from 'models/inventory/tests/helpers'; import { t } from 'fyo'; import { ItemQtyMap, ItemSerialNumbers, POSItem, } from 'src/components/NeuPOS/types'; +import { Item } from 'models/baseModels/Item/Item'; import { ModalName } from 'src/components/NeuPOS/types'; import { Money } from 'pesa'; import { Payment } from 'models/baseModels/Payment/Payment'; @@ -235,6 +238,7 @@ export default defineComponent({ defaultCustomer: undefined as string | undefined, transferRefNo: undefined as string | undefined, + itemSearchTerm: '', transferClearanceDate: undefined as Date | undefined, @@ -340,23 +344,31 @@ export default defineComponent({ this.setTotalQuantity(); this.setItemDiscounts(); }, - async addItem(item: POSItem) { + async getItem(item: string): Promise { + if (!item) { + return; + } + const itemDoc = (await fyo.doc.getDoc(ModelNameEnum.Item, item)) as Item; + if (!itemDoc) { + return; + } + return itemDoc; + }, + async addItem(item: POSItem | Item | undefined) { if (!item) { return; } - await this.sinvDoc.runFormulas(); - - if (this.itemQtyMap[item.item].availableQty === 0) { + if (this.itemQtyMap[item.name as string].availableQty === 0) { showToast({ type: 'error', - message: t`Item ${item.item} has Zero Quantity`, + message: t`Item ${item.name as string} has Zero Quantity`, duration: 'short', }); } const existingItems = - this.sinvDoc.items?.filter((item) => item.item === item.item) ?? []; + this.sinvDoc.items?.filter((item) => item.item === item.name) ?? []; if (item.hasBatch) { for (const item of existingItems) { @@ -372,9 +384,8 @@ export default defineComponent({ try { await this.sinvDoc.append('items', { - ...item, - item: item.item, - name: undefined, + rate: item.rate as Money, + item: item.name, }); } catch (error) { showToast({ @@ -391,9 +402,8 @@ export default defineComponent({ } await this.sinvDoc.append('items', { - ...item, - name: undefined, - item: item.item, + rate: item.rate as Money, + item: item.name, }); }, setSinvDoc() { @@ -513,7 +523,6 @@ export default defineComponent({ }); } }, - getItem, showToast, }, }); From 65c472500b1de6926bab98ff444065dcd29b052c Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Fri, 25 Aug 2023 17:35:48 +0530 Subject: [PATCH 037/107] fix(ui): table overflowing --- src/components/NeuPOS/ItemsTable.vue | 58 +++++++++++---------- src/components/NeuPOS/SelectedItemTable.vue | 42 ++++++++------- 2 files changed, 52 insertions(+), 48 deletions(-) diff --git a/src/components/NeuPOS/ItemsTable.vue b/src/components/NeuPOS/ItemsTable.vue index 674c11f1..43d0a1ab 100644 --- a/src/components/NeuPOS/ItemsTable.vue +++ b/src/components/NeuPOS/ItemsTable.vue @@ -18,34 +18,36 @@ - - - +
+ + + +
diff --git a/src/pages/POS/PaymentModal.vue b/src/pages/POS/PaymentModal.vue index 4194b927..12c31317 100644 --- a/src/pages/POS/PaymentModal.vue +++ b/src/pages/POS/PaymentModal.vue @@ -162,6 +162,7 @@ :show-label="true" :border="true" :text-right="true" + :value="itemDiscounts" /> { + const itemQtyMap: ItemQtyMap = {}; + const valuationMethod = + fyo.singles.InventorySettings?.valuationMethod ?? ValuationMethod.FIFO; + + const rawSLEs = await getRawStockLedgerEntries(fyo); + const rawData = getStockLedgerEntries(rawSLEs, valuationMethod); + + const stockBalance = getStockBalanceEntries(rawData, {}); + + for (const row of stockBalance) { + if (!itemQtyMap[row.item]) { + itemQtyMap[row.item] = { availableQty: 0 }; + } + + if (row.batch) { + itemQtyMap[row.item][row.batch] = row.balanceQuantity; + } + + itemQtyMap[row.item].availableQty += row.balanceQuantity; + } + return itemQtyMap; +} + +export function getTotalQuantity(items: SalesInvoiceItem[]): number { + let totalQuantity = safeParseFloat(0); + + if (!items.length) { + return totalQuantity; + } + + for (const item of items) { + const quantity = item.quantity ?? 0; + totalQuantity = safeParseFloat(totalQuantity + quantity); + } + return totalQuantity; +} + +export function getItemDiscounts(items: SalesInvoiceItem[]): Money { + let itemDiscounts = fyo.pesa(0); + + if (!items.length) { + return itemDiscounts; + } + + for (const item of items) { + if (!item.itemDiscountAmount?.isZero()) { + itemDiscounts = itemDiscounts.add(item.itemDiscountAmount as Money); + } + + if (item.amount && (item.itemDiscountPercent as number) > 1) { + itemDiscounts = itemDiscounts.add( + item.amount.percent(item.itemDiscountPercent as number) + ); + } + } + return itemDiscounts; +} + +export async function getItem(item: string): Promise { + const itemDoc = (await fyo.doc.getDoc(ModelNameEnum.Item, item)) as Item; + if (!itemDoc) { + return; + } + + return itemDoc; +} + +export function validateSinv( + items: SalesInvoiceItem[], + itemQtyMap: ItemQtyMap +) { + if (!items) { + return; + } + + for (const item of items) { + if (!item.quantity || item.quantity < 1) { + throw new ValidationError( + t`Invalid Quantity for Item ${item.item as string}` + ); + } + + if (!itemQtyMap[item.item as string]) { + throw new ValidationError(t`Item ${item.item as string} not in Stock`); + } + + if (item.quantity > itemQtyMap[item.item as string].availableQty) { + throw new ValidationError( + t`Insufficient Quantity. Item ${item.item as string} has only ${ + itemQtyMap[item.item as string].availableQty + } quantities available. you selected ${item.quantity}` + ); + } + } +} + +export async function validateShipment(itemSerialNumbers: ItemSerialNumbers) { + if (!itemSerialNumbers) { + return; + } + + for (const idx in itemSerialNumbers) { + const serialNumbers = itemSerialNumbers[idx].split('\n'); + + for (const serialNumber of serialNumbers) { + const status = await fyo.getValue( + ModelNameEnum.SerialNumber, + serialNumber, + 'status' + ); + + if (status !== 'Active') { + throw new ValidationError( + t`Serial Number ${serialNumber} status is not Active.` + ); + } + } + } +} + +export function getTotalTaxedAmount(sinvDoc: SalesInvoice): Money { + let totalTaxedAmount = fyo.pesa(0); + if (!sinvDoc.items?.length || !sinvDoc.taxes?.length) { + return totalTaxedAmount; + } + + for (const row of sinvDoc.taxes) { + totalTaxedAmount = totalTaxedAmount.add(row.amount as Money); + } + return totalTaxedAmount; +} From db2a97d01ebfa86df9cd7621a3174760e8e116ff Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Fri, 1 Sep 2023 10:52:34 +0530 Subject: [PATCH 044/107] test: pos transacted amount --- .../tests/testPointOfSales.spec.ts | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 models/inventory/Point of Sale/tests/testPointOfSales.spec.ts diff --git a/models/inventory/Point of Sale/tests/testPointOfSales.spec.ts b/models/inventory/Point of Sale/tests/testPointOfSales.spec.ts new file mode 100644 index 00000000..d5552283 --- /dev/null +++ b/models/inventory/Point of Sale/tests/testPointOfSales.spec.ts @@ -0,0 +1,99 @@ +import test from 'tape'; +import { closeTestFyo, getTestFyo, setupTestFyo } from 'tests/helpers'; +import { SalesInvoice } from 'models/baseModels/SalesInvoice/SalesInvoice'; +import { Payment } from 'models/baseModels/Payment/Payment'; +import { Money } from 'pesa'; +import { ModelNameEnum } from 'models/types'; + +const fyo = getTestFyo(); + +setupTestFyo(fyo, __filename); + +const customer = { name: 'Someone', role: 'Both' }; +const itemMap = { + Pen: { + name: 'Pen', + rate: 700, + }, + Ink: { + name: 'Ink', + rate: 50, + }, +}; + +test('insert test docs', async (t) => { + await fyo.doc.getNewDoc(ModelNameEnum.Item, itemMap.Pen).sync(); + await fyo.doc.getNewDoc(ModelNameEnum.Item, itemMap.Ink).sync(); + await fyo.doc.getNewDoc(ModelNameEnum.Party, customer).sync(); +}); + +let sinvDocOne: SalesInvoice | undefined; + +test('check pos transacted amount', async (t) => { + const transactedAmountBeforeTxn = await fyo.db.getPOSTransactedAmount( + new Date('2022-01-01') + ); + + t.equals(transactedAmountBeforeTxn, undefined); + + sinvDocOne = fyo.doc.getNewDoc(ModelNameEnum.SalesInvoice, { + isPOS: true, + date: new Date('2022-01-02'), + account: 'Debtors', + party: customer.name, + }) as SalesInvoice; + + await sinvDocOne.append('items', { + item: itemMap.Pen.name, + rate: itemMap.Pen.rate, + quantity: 1, + }); + + await (await sinvDocOne.sync()).submit(); + const paymentDocOne = sinvDocOne.getPayment() as Payment; + + await paymentDocOne.sync(); + + const sinvDocTwo = fyo.doc.getNewDoc(ModelNameEnum.SalesInvoice, { + isPOS: true, + date: new Date('2022-01-02'), + account: 'Debtors', + party: customer.name, + }) as SalesInvoice; + + await sinvDocTwo.append('items', { + item: itemMap.Pen.name, + rate: itemMap.Pen.rate, + quantity: 1, + }); + + await (await sinvDocTwo.sync()).submit(); + const paymentDocTwo = sinvDocTwo.getPayment() as Payment; + + await paymentDocTwo.setMultiple({ + paymentMethod: 'Transfer', + clearanceDate: new Date(), + referenceId: 'xxxxxxxx', + }); + + await paymentDocTwo.sync(); + + const transactedAmountAfterTxn: Record | undefined = + await fyo.db.getPOSTransactedAmount(new Date('2022-01-02')); + + t.true(transactedAmountAfterTxn); + + t.equals( + transactedAmountAfterTxn?.Cash, + sinvDocOne.grandTotal?.float, + 'transacted cash amount matches' + ); + + t.equals( + transactedAmountAfterTxn?.Transfer, + sinvDocTwo.grandTotal?.float, + 'transacted transfer amount matches' + ); +}); + +closeTestFyo(fyo, __filename); From 8186f12548ccab0bd23e828eff7c196199079c6a Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Tue, 5 Sep 2023 17:33:42 +0530 Subject: [PATCH 045/107] feat: pos settings --- fyo/model/types.ts | 2 ++ models/baseModels/Defaults/Defaults.ts | 8 ++--- models/index.ts | 2 ++ models/inventory/Point of Sale/POSSettings.ts | 19 ++++++++++ models/types.ts | 1 + schemas/app/Defaults.json | 24 ------------- .../inventory/Point of Sale/POSSettings.json | 35 +++++++++++++++++++ schemas/schemas.ts | 2 ++ src/pages/Settings/Settings.vue | 18 ++++++++-- 9 files changed, 78 insertions(+), 33 deletions(-) create mode 100644 models/inventory/Point of Sale/POSSettings.ts create mode 100644 schemas/app/inventory/Point of Sale/POSSettings.json diff --git a/fyo/model/types.ts b/fyo/model/types.ts index e99858cb..13f0bc40 100644 --- a/fyo/model/types.ts +++ b/fyo/model/types.ts @@ -10,6 +10,7 @@ import type { Defaults } from 'models/baseModels/Defaults/Defaults'; import type { PrintSettings } from 'models/baseModels/PrintSettings/PrintSettings'; import type { InventorySettings } from 'models/inventory/InventorySettings'; import type { Misc } from 'models/baseModels/Misc'; +import type { POSSettings } from 'models/inventory/Point of Sale/POSSettings'; import type { POSShift } from 'models/inventory/Point of Sale/POSShift'; /** @@ -55,6 +56,7 @@ export interface SinglesMap { SystemSettings?: SystemSettings; AccountingSettings?: AccountingSettings; InventorySettings?: InventorySettings; + POSSettings?: POSSettings; POSShift?: POSShift; PrintSettings?: PrintSettings; Defaults?: Defaults; diff --git a/models/baseModels/Defaults/Defaults.ts b/models/baseModels/Defaults/Defaults.ts index 180f07c7..2515d35e 100644 --- a/models/baseModels/Defaults/Defaults.ts +++ b/models/baseModels/Defaults/Defaults.ts @@ -2,6 +2,7 @@ import { DefaultCashDenominations } from 'models/inventory/Point of Sale/Default import { Doc } from 'fyo/model/doc'; import { FiltersMap, HiddenMap } from 'fyo/model/types'; import { ModelNameEnum } from 'models/types'; +import { PartyRoleEnum } from '../Party/types'; export class Defaults extends Doc { // Auto Payments @@ -37,11 +38,8 @@ export class Defaults extends Doc { stockMovementPrintTemplate?: string; // Point of Sale - posAdjustmentAccount?: string; posCashDenominations?: DefaultCashDenominations[]; posCustomer?: string; - posInventory?: string; - posPrintTemplate?: string; static commonFilters = { // Auto Payments @@ -81,6 +79,7 @@ export class Defaults extends Doc { type: ModelNameEnum.PurchaseReceipt, }), stockMovementPrintTemplate: () => ({ type: ModelNameEnum.StockMovement }), + posCustomer: () => ({ role: PartyRoleEnum.Customer }), }; static filters: FiltersMap = this.commonFilters; @@ -103,11 +102,8 @@ export class Defaults extends Doc { shipmentPrintTemplate: this.getInventoryHidden(), purchaseReceiptPrintTemplate: this.getInventoryHidden(), stockMovementPrintTemplate: this.getInventoryHidden(), - posAdjustmentAccount: this.getPointOfSaleHidden(), posCashDenominations: this.getPointOfSaleHidden(), posCustomer: this.getPointOfSaleHidden(), - posInventory: this.getPointOfSaleHidden(), - posPrintTemplate: this.getPointOfSaleHidden(), }; } diff --git a/models/index.ts b/models/index.ts index 37cdef62..51c1c672 100644 --- a/models/index.ts +++ b/models/index.ts @@ -37,6 +37,7 @@ import { ClosingAmounts } from './inventory/Point of Sale/ClosingAmounts'; import { ClosingCash } from './inventory/Point of Sale/ClosingCash'; import { OpeningAmounts } from './inventory/Point of Sale/OpeningAmounts'; import { OpeningCash } from './inventory/Point of Sale/OpeningCash'; +import { POSSettings } from './inventory/Point of Sale/POSSettings'; import { POSShift } from './inventory/Point of Sale/POSShift'; export const models = { @@ -80,6 +81,7 @@ export const models = { ClosingCash, OpeningAmounts, OpeningCash, + POSSettings, POSShift, } as ModelMap; diff --git a/models/inventory/Point of Sale/POSSettings.ts b/models/inventory/Point of Sale/POSSettings.ts new file mode 100644 index 00000000..a36749b2 --- /dev/null +++ b/models/inventory/Point of Sale/POSSettings.ts @@ -0,0 +1,19 @@ +import { Doc } from 'fyo/model/doc'; +import { FiltersMap } from 'fyo/model/types'; +import { + AccountRootTypeEnum, + AccountTypeEnum, +} from 'models/baseModels/Account/types'; + +export class POSSettings extends Doc { + inventory?: string; + cashAccount?: string; + writeOffAccount?: string; + + static filters: FiltersMap = { + cashAccount: () => ({ + rootType: AccountRootTypeEnum.Asset, + accountType: AccountTypeEnum.Cash, + }), + }; +} diff --git a/models/types.ts b/models/types.ts index bbcc3ca9..b3fdf730 100644 --- a/models/types.ts +++ b/models/types.ts @@ -46,6 +46,7 @@ export enum ModelNameEnum { Location = 'Location', CustomForm = 'CustomForm', CustomField = 'CustomField', + POSSettings = 'POSSettings', POSShift = 'POSShift' } diff --git a/schemas/app/Defaults.json b/schemas/app/Defaults.json index 7b94b0a9..ba920134 100644 --- a/schemas/app/Defaults.json +++ b/schemas/app/Defaults.json @@ -173,30 +173,6 @@ "create": true, "section": "Point of Sale" }, - { - "fieldname": "posInventory", - "label": "Inventory", - "fieldtype": "Link", - "target": "Location", - "default": "Stores", - "section": "Point of Sale" - }, - { - "fieldname": "posPrintTemplate", - "label": "Print Template", - "fieldtype": "Link", - "target": "PrintTemplate", - "default": "Minimal - Sales Invoice", - "section": "Point of Sale" - }, - { - "fieldname": "posAdjustmentAccount", - "label": "Adjustment Account", - "fieldtype": "Link", - "target": "Account", - "default": "Write Off", - "section": "Point of Sale" - }, { "fieldname": "posCashDenominations", "label": "Cash Denominations", diff --git a/schemas/app/inventory/Point of Sale/POSSettings.json b/schemas/app/inventory/Point of Sale/POSSettings.json new file mode 100644 index 00000000..33697613 --- /dev/null +++ b/schemas/app/inventory/Point of Sale/POSSettings.json @@ -0,0 +1,35 @@ +{ + "name": "POSSettings", + "label": "POS Settings", + "isSingle": true, + "isChild": false, + "fields": [ + { + "fieldname": "inventory", + "label": "Inventory", + "fieldtype": "Link", + "target": "Location", + "create": true, + "default": "Stores", + "section": "Default" + }, + { + "fieldname": "cashAccount", + "label": "Counter Cash Account", + "fieldtype": "Link", + "target": "Account", + "required": true, + "create": true, + "section": "Default" + }, + { + "fieldname": "writeOffAccount", + "label": "Write Off Account", + "fieldtype": "Link", + "target": "Account", + "create": true, + "default": "Write Off", + "section": "Default" + } + ] +} diff --git a/schemas/schemas.ts b/schemas/schemas.ts index b3cce3bd..1e92f56c 100644 --- a/schemas/schemas.ts +++ b/schemas/schemas.ts @@ -58,6 +58,7 @@ import ClosingCash from './app/inventory/Point of Sale/ClosingCash.json'; import DefaultCashDenominations from './app/inventory/Point of Sale/DefaultCashDenominations.json'; import OpeningAmounts from './app/inventory/Point of Sale/OpeningAmounts.json'; import OpeningCash from './app/inventory/Point of Sale/OpeningCash.json'; +import POSSettings from './app/inventory/Point of Sale/POSSettings.json'; import POSShift from './app/inventory/Point of Sale/POSShift.json'; import POSShiftAmounts from './app/inventory/Point of Sale/POSShiftAmounts.json'; import { Schema, SchemaStub } from './types'; @@ -144,6 +145,7 @@ export const appSchemas: Schema[] | SchemaStub[] = [ DefaultCashDenominations as Schema, OpeningAmounts as Schema, OpeningCash as Schema, + POSSettings as Schema, POSShift as Schema, POSShiftAmounts as Schema, ]; diff --git a/src/pages/Settings/Settings.vue b/src/pages/Settings/Settings.vue index 7973cbb2..f4551221 100644 --- a/src/pages/Settings/Settings.vue +++ b/src/pages/Settings/Settings.vue @@ -115,6 +115,7 @@ export default defineComponent({ ModelNameEnum.AccountingSettings, ModelNameEnum.InventorySettings, ModelNameEnum.Defaults, + ModelNameEnum.POSSettings, ModelNameEnum.PrintSettings, ModelNameEnum.SystemSettings, ].some((s) => this.fyo.singles[s]?.canSave); @@ -133,6 +134,7 @@ export default defineComponent({ [ModelNameEnum.PrintSettings]: this.t`Print`, [ModelNameEnum.InventorySettings]: this.t`Inventory`, [ModelNameEnum.Defaults]: this.t`Defaults`, + [ModelNameEnum.POSSettings]: this.t`POS Settings`, [ModelNameEnum.SystemSettings]: this.t`System`, }; }, @@ -140,16 +142,26 @@ export default defineComponent({ const enableInventory = !!this.fyo.singles.AccountingSettings?.enableInventory; + const enablePOS = !!this.fyo.singles.InventorySettings?.enablePointOfSale; + return [ ModelNameEnum.AccountingSettings, ModelNameEnum.InventorySettings, ModelNameEnum.Defaults, + ModelNameEnum.POSSettings, ModelNameEnum.PrintSettings, ModelNameEnum.SystemSettings, ] - .filter((s) => - s === ModelNameEnum.InventorySettings ? enableInventory : true - ) + .filter((s) => { + if (s === ModelNameEnum.InventorySettings && !enableInventory) { + return false; + } + + if (s === ModelNameEnum.POSSettings && !enablePOS) { + return false; + } + return true; + }) .map((s) => this.fyo.schemaMap[s]!); }, activeGroup(): Map { From 7db0cf5ce9b2d1192ee2aad3e7fa826b5d096ad0 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Tue, 5 Sep 2023 17:38:13 +0530 Subject: [PATCH 046/107] fix: party creation from POS --- src/pages/POS/POS.vue | 43 ++++++++++++++++++++++++------------------- src/router.ts | 10 ++++++++-- 2 files changed, 32 insertions(+), 21 deletions(-) diff --git a/src/pages/POS/POS.vue b/src/pages/POS/POS.vue index 67a011de..b830b555 100644 --- a/src/pages/POS/POS.vue +++ b/src/pages/POS/POS.vue @@ -9,6 +9,7 @@
@@ -57,18 +58,12 @@
+ @@ -217,7 +212,9 @@ export default defineComponent({ }, provide() { return { + doc: computed(() => this.sinvDoc), cashAmount: computed(() => this.cashAmount), + isDiscountingEnabled: computed(() => this.isDiscountingEnabled), itemDiscounts: computed(() => this.itemDiscounts), itemQtyMap: computed(() => this.itemQtyMap), itemSerialNumbers: computed(() => this.itemSerialNumbers), @@ -255,6 +252,11 @@ export default defineComponent({ }; }, computed: { + defaultPOSCashAccount: () => + fyo.singles.POSSettings?.cashAccount ?? undefined, + isDiscountingEnabled(): boolean { + return !!fyo.singles.AccountingSettings?.enableDiscounting; + }, isPosShiftOpen: () => !!fyo.singles.POSShift?.isShiftOpen, }, watch: { @@ -294,6 +296,7 @@ export default defineComponent({ this.sinvDoc = this.fyo.doc.getNewDoc(ModelNameEnum.SalesInvoice, { account: 'Debtors', party: this.sinvDoc.party ?? this.defaultCustomer, + isPOS: true, }) as SalesInvoice; }, setTotalQuantity() { @@ -404,7 +407,6 @@ export default defineComponent({ } }, async makePayment() { - await validateShipment(this.itemSerialNumbers); const paymentMethod = this.cashAmount.isZero() ? 'Transfer' : 'Cash'; await this.paymentDoc.set('paymentMethod', paymentMethod); @@ -417,35 +419,39 @@ export default defineComponent({ } if (paymentMethod === 'Cash') { - await this.paymentDoc.set('amount', this.cashAmount as Money); + await this.paymentDoc.setMultiple({ + paymentAccount: this.defaultPOSCashAccount, + amount: this.cashAmount as Money, + }); } try { await this.paymentDoc?.sync(); await this.paymentDoc?.submit(); } catch (error) { - showToast({ + return showToast({ type: 'error', message: t`${error as string}`, }); } }, async makeStockTransfer() { - const shipment = (await this.sinvDoc.getStockTransfer()) as Shipment; - if (!shipment.items) { + const shipmentDoc = (await this.sinvDoc.getStockTransfer()) as Shipment; + if (!shipmentDoc.items) { return; } - for (const item of shipment.items) { + for (const item of shipmentDoc.items) { + item.location = fyo.singles.POSSettings?.inventory; item.serialNumber = this.itemSerialNumbers[item.item as string] ?? undefined; } try { - await shipment.sync(); - await shipment.submit(); + await shipmentDoc.sync(); + await shipmentDoc.submit(); } catch (error) { - showToast({ + return showToast({ type: 'error', message: t`${error as string}`, }); @@ -455,12 +461,11 @@ export default defineComponent({ try { await this.validate(); await this.sinvDoc.runFormulas(); - await this.sinvDoc._callAllTableFieldsApplyFormula(); await this.sinvDoc.sync(); await this.sinvDoc.submit(); this.paymentDoc = this.sinvDoc.getPayment() as Payment; } catch (error) { - showToast({ + return showToast({ type: 'error', message: t`${error as string}`, }); diff --git a/src/router.ts b/src/router.ts index 53b19750..4e7b7932 100644 --- a/src/router.ts +++ b/src/router.ts @@ -128,8 +128,14 @@ const routes: RouteRecordRaw[] = [ { path: '/pos', name: 'Point of Sale', - component: POS, - props: {}, + components: { + default: POS, + edit: QuickEditForm, + }, + props: { + default: true, + edit: (route) => route.query, + }, }, ]; From 7e7e3ed3cd329db8ad348ccb7b3992e5c6712ef8 Mon Sep 17 00:00:00 2001 From: akshayitzme Date: Tue, 5 Sep 2023 17:39:24 +0530 Subject: [PATCH 047/107] chore: code cleanup --- models/inventory/Point of Sale/POSShift.ts | 10 +- src/components/POS/SelectedItemRow.vue | 126 +++++++++++---------- src/components/POS/SelectedItemTable.vue | 18 ++- src/pages/POS/ClosePOSShiftModal.vue | 80 ++++++++----- src/pages/POS/OpenPOSShiftModal.vue | 72 +++++++++--- src/pages/POS/PaymentModal.vue | 52 +++++---- src/utils/pos.ts | 78 ++++++++++++- 7 files changed, 301 insertions(+), 135 deletions(-) diff --git a/models/inventory/Point of Sale/POSShift.ts b/models/inventory/Point of Sale/POSShift.ts index ff9e6134..b56fc859 100644 --- a/models/inventory/Point of Sale/POSShift.ts +++ b/models/inventory/Point of Sale/POSShift.ts @@ -5,13 +5,13 @@ import { OpeningAmounts } from './OpeningAmounts'; import { OpeningCash } from './OpeningCash'; export class POSShift extends Doc { - isShiftOpen?: boolean; - openingDate?: Date; - closingDate?: Date; - openingAmounts?: OpeningAmounts[]; closingAmounts?: ClosingAmounts[]; - openingCash?: OpeningCash[]; closingCash?: ClosingCash[]; + closingDate?: Date; + isShiftOpen?: boolean; + openingAmounts?: OpeningAmounts[]; + openingCash?: OpeningCash[]; + openingDate?: Date; get openingCashAmount() { if (!this.openingCash) { diff --git a/src/components/POS/SelectedItemRow.vue b/src/components/POS/SelectedItemRow.vue index 74f375ad..d4e8b4c9 100644 --- a/src/components/POS/SelectedItemRow.vue +++ b/src/components/POS/SelectedItemRow.vue @@ -95,6 +95,7 @@
setTransferUnit((row.transferUnit = value))" /> + + +
+
+ +
+ +
+ +
+ +
+
- -
- -
- - -
- -
- -
- -
- -
@@ -268,6 +274,7 @@ export default defineComponent({ emits: ['removeItem', 'setItemSerialNumbers'], setup() { return { + isDiscountingEnabled: inject('isDiscountingEnabled') as boolean, itemSerialNumbers: inject('itemSerialNumbers') as { [item: string]: string; }, @@ -282,6 +289,11 @@ export default defineComponent({ defaultRate: this.row.rate as Money, }; }, + computed: { + isUOMConversionEnabled(): boolean { + return !!fyo.singles.InventorySettings?.enableUomConversions; + }, + }, methods: { async getAvailableQtyInBatch(): Promise { if (!this.row.batch) { diff --git a/src/components/POS/SelectedItemTable.vue b/src/components/POS/SelectedItemTable.vue index 5813705c..1713a16e 100644 --- a/src/components/POS/SelectedItemTable.vue +++ b/src/components/POS/SelectedItemTable.vue @@ -42,19 +42,31 @@
+ diff --git a/src/pages/TemplateBuilder/TemplateBuilder.vue b/src/pages/TemplateBuilder/TemplateBuilder.vue index 6d09ca00..6737ce36 100644 --- a/src/pages/TemplateBuilder/TemplateBuilder.vue +++ b/src/pages/TemplateBuilder/TemplateBuilder.vue @@ -213,6 +213,13 @@ > + + +