Mergi la conținut
KAMOUniverse

Jurnal de schimbări

Ce e nou.

Fiecare îmbunătățire a platformei, pe măsură ce se livrează.

  1. · kamo-shared-library

    Revizuirea listei de diagrame, reacția alergică / severitatea, motivele stării, diagnosticele de comandă, nota de revizuire a rezultatelor

    - ClinicalListReview (fhir_chart_list_review): un real revizuit-la înregistrare pentru alergie și Liste de medicamente, astfel încât "revizuit" se oprește însemnând "cel puțin un rând există" - AllergyIntolerance: reaction_text, reaction_severity, status_reason; findActiveForChecking Exclude acum afirmațiile NKDA (și rândurile respinse); findActiveNoKnownAllergy / findActiveRecord - Condition.status_reason, Observation.status_reason, ServiceRequest.reason_codes, Recenzie pentru DiagnosticReport.review_note - EncounterDiagnosisRepository; **************** (schema de flux vitale)

  2. · kamo-shared-library

    Programați entitățile pentru ceasul practicii, camerele, plățile la birou și rechemarea

    - PracticeSettings (ehr_practice_settings): fusul orar al practicii și lungimea implicită a vizitei - PracticeRoom (ehr_practice_room): camere un pacient este pus în; pensionat, niciodată șters - PatientPayment (ehr_patient_payment): plăți de birou înregistrate (niciodată procesate), anulate cu un motiv - RecallOutreach (ehr_recall_outreach): încercări de contact înregistrate împotriva unei rechemări - Numirea: room_id, rescheduled_from_id / rescheduled_to_id, checked_out_by_member_id - ScheduleBlock: etichetă pentru timp blocat (prânz, întâlnire, vacanță) - PatientRecallRepository: countDue / countOverdue; WaitlistEntryRepository: găsiți candidați de orice tip (un UUID nul în ": x este NULL" ajunge Postgres netipărită) - PhiResourceType: PATIENT_RECALL, PATIENT_PAYMENT anexate

  3. · kamo-shared-library

    Înregistrarea înregistrării la recepție - detalii de contact, contacte de urgență, contor MRN, câmpuri de scriere a acoperirii

    Pacientul obține metoda de contact preferată, membrul de îngrijire primară și farmacia preferată; Contactele de urgență sunt FHIR Patient.contact (fhir_patient_contact, retras nu șters); Telecomunicații și adresa utilizează tabelele existente fhir_contact_point / fhir_address (nou PatientCommunicationRepository pentru limba preferată. O listă per-practice Rândul ehr_mrn_counter alocă MRN-uri într-un singur upsert atomic. Căutarea pacientului câștigă given-name, Datele de naștere-numai, prefix-cu-data de naștere și interogările de-id. PriorAuthorization câștigă o Descrierea serviciului și EligibilityCheck o notă de verificator. DDL aplicat în producție înainte de această împingere.

  4. · kamo-shared-library

    Documente grafice, șabloane de note de practică, text de citire a notelor și înregistrare de retragere

    - PatientDocument (ehr_patient_document): categorie, titlu, data documentului, conținut tip, dimensiune, SHA-256, imagine Img id + cheie de stocare, încărcător, introdus în eroare Cu cine/când/de ce. Niciodată șterse. - ClinicalNoteTemplate (ehr_note_template): șabloane de notă proprii unei practici. - ClinicalNote: coloanele introdus_în_eroare_la/_prin/_motiv; corpul curent tranzitoriu, Tip de versiune, steag SI, nume autor/co-semnatar/pacient pentru citiri. - ClinicalNoteVersion: numele autorului tranzitoriu. DDL aplicat la producția manuală (aditiv).

  5. · SecurityService

    Refuzuri reale, decizii de revizuire a sticlei sparte, trimitere onestă a cererilor, EOB-uri scrise de mână

    - EhrRuleViolationException: un refuz de business-regulă (nota nesemnată la închidere, înregistrare dublă, nu autorul/co-semnatar, auto-co-semnare, deja semnat, restricționat de la asigurator, sparge-sticlă fără un motiv, prea multe exporturi, meci suprimat) răspunde acum 409/422 cu propoziția sa în limbaj simplu în loc de opacul "Nu există o astfel de înregistrare". Negarea relației rămâne 404. - EhrExceptionHandler rulează la cea mai mare prioritate față de comerțul global Consilierea și acoperă calitatea, administrarea portalului, CCD, exportul în vrac și FHIR (o Lipsea chiar acolo a fost un 500). - Break-sticlă de revizuire: coadă cu nume, plus istorie, și o decizie (adecvat / inadecvat / are nevoie de urmărire, notă necesară, niciodată a ta). - Director de partener de schimb pentru clinicieni (VIEW_CHART, numai nume). - Pretenții: CPT / HCPCS, modificator, ICD-10, pointer, NPI și locul de prestare a serviciilor verificarea formatului; plătitorul și ID-ul membrului din acoperirea aleasă; o vizită trebuie să fie Închis la factură; procedurile facturate părăsesc coada neîncărcată; un proiect de cerere ClaimTransport cusătură: cu nici o casă de compensare, trimiteți marchează READY și spune așa; marchează-trimis înregistrează canalul, cine și notează. - Remitențele pot fi tastate dintr-o hârtie EOB, iar postarea acum se mișcă bani de la neaplicat la aplicat.

  6. · kamo-shared-library

    Înregistrați modul în care a fost trimisă o reclamație și listați accesurile de urgență revizuite

    O revendicare câștigă ready_at, submission_channel, submitted_by_member_id și submission_note, deci o cerere trimisă de mână printr-un portal de plătitor sau pe hârtie Este înregistrată onest în loc de o flip de stare care pretinde o casă de compensare Depozitarul de granturi break-glass câștigă statutul de revizuit-istoric Finder afișează noile liste de ecran de revizuire sub coada sa.

  7. · kamo-internal

    Factura prezintă blocul de remitere Creanțe, la fel ca și ofertele

    Dialogul facturii redă același QuoteRemittanceBlock pe care îl folosește previzualizarea cotației, Din detaliile de creanțe ale vânzătorului, în timp ce orice este datorat. Creanțele Switch spune acum că acoperă citate și facturi.

  8. · kamo-signer-monorepo

    Blocul de remitere al facturii se citește exact ca cel al ofertei

    Același titlu, etichete și notificare ACH Credit Only (signer.quote.remit), cu Referința numărului de factură păstrată sub ea.

  9. · SecurityService

    Facturile tipăresc detaliile ACH ale creanțelor exact ca și citatele

    PDF-ul și e-mailul conțin acum blocul de remitere al cotei, cuvânt cu cuvânt: - Remite plata la - beneficiarul plății (numele legal) - bancă - număr de rutare (ABA) - numărul contului - Notificarea ACH Credit Only Acestea sunt urmate de numărul de referință al facturii și de numărul propriu al pieței GET **************** dă consolei instrucțiunile necesare Ca și în citate, apare atunci când Creanțele au schimbat informațiile ACH Ambele numere sunt salvate.

  10. · kamo-internal

    Modificarea locurilor de muncă și a licențelor de la o anumită dată, cu previzualizarea taxei proporționale

    Schimbarea locurilor de muncă și a licențelor deschide un dialog pentru a seta: - licențele pentru locuri și fiecare add-on (licențele per utilizator urmează locurile până la A fost tastat peste); - data la care intră în vigoare (astăzi sau mai târziu); - dacă taxa proporțională merge pe propria sa factură acum (chiar înainte de data) sau la următoarea reînnoire; - pentru reduceri, un credit pentru partea neutilizată. Previzualizarea live a serverului arată perioada, zilele rămase, fiecare linie proporțională, Veți vedea orice taxă de configurare, totalul, modul în care va fi facturat și taxa recurentă înainte de a Modificările programate sunt listate în abonament și pot fi accesate prin intermediul Anulat. Înlocuiește vechiul dialog de așezare imediată.

  11. · SecurityService

    Puncte finale pentru modificări de date, proporționale ale locurilor și licențelor; lucrarea le aplică

    Noi puncte finale: - POST **************** - POST /subscriptions/{uid}/modificări - GET /abonamente/{uid}/modificări - POST **************** Lucrarea de facturare pe oră aplică modificări a căror dată a venit înainte de ridicare Reînnoirea facturilor, astfel încât reînnoirile facturează noile conturi.

  12. · kamo-shared-library

    Modificări ale licențelor pentru locuri și add-on-uri la mijlocul perioadei, la o dată aleasă, proporțional

    SubscriptionChangeService înregistrează o modificare a locurilor unui abonament live și Acesta previzualizează licențele suplimentare în vigoare la orice dată începând de astăzi Taxare proporțională: prețul fiecărei unități adăugate pe perioadă x zile rămase / zile în perioada în care se încadrează, de exemplu Harmony +6 locuri de la 1 noiembrie = 6 x $124 x 17/31 = $408.00. Taxa este facturată atunci când operatorul alege: proiectul propriu de factură acum (chiar înainte de data intrării în vigoare) sau la următoarea factură de reînnoire. La data intrării în vigoare, lucrarea de facturare aplică modificarea: - numărul de locuri, licențe și MRR ale abonamentului; - accesul clientului (numărul de locuri, rândurile de locuri, licențele add-on, cache); - fiecare proiect de reînnoire ulterioară, reconstruit sau dat o linie de ajustare dacă personalul a avut Ai editat-o. Cazuri de margine: - o schimbare exact într-o zi de facturare este efectuată de această reînnoire, mai degrabă decât proporțional de două ori; - o reducere nu încasează nimic și poate credita partea neutilizată la următoarea reînnoire; - o modificare programată poate fi anulată, anulându-se proiectul de factură; - taxele de instalare pentru locuri adăugate citesc acordul CLIENȚULUI. Vechea cale de schimbare a locurilor trece acum prin acest serviciu. Tabel nou commerce_subscription_changes; coloană nouă ****************

  13. · kamo-internal

    Stări în limbaj simplu peste tot; prețuri suplimentare convenite și o reducere lunară în asistentul de comandă

    StatusChip (89 de site-uri de apel) a arătat coduri brute, cum ar fi PENDING_APPROVAL; acum arată cuvintele dicționarului (common.statusCodes) sau codul citit cu voce tare pentru unul Filtrul listei de comenzi și fișierul CSV folosesc aceleași etichete. Personalul poate introduce un preț convenit pe licență pentru fiecare add-on selectat și un preț de achiziție Reducere lunară; ambele sunt trimise ca addonUnitPrices / recurringDiscount și facturate pe fiecare factură.

  14. · kamo-signer-monorepo

    Plătiți cu cardul pe pagina facturii

    Atunci când serverul o oferă (facturile vândute pe platformă cu un sold), factura Acesta trimite mesajul la /<locale>/i/<token>/pay, care trimite mesajul de confirmare la adresa de e-mail a utilizatorului clientul către o pagină de plată găzduită de Stripe (confirmarea bancară are loc acolo) și Un client care se întoarce vede confirmarea plății.

  15. · SecurityService

    Clientii platesc facturile cu cardul online; o cerere SCA a bancii ajunge la client

    Pe facturile vândute de platforma org (singurul vânzător al cărui cont Stripe este): - factura publica ofera plata prin card: POST **************** Deschide o pagină găzduită de Stripe care se întoarce la același link de facturare (creat pe partea de server, niciodată de la cerere); - plata se înregistrează la întoarcerea clientului și la locul de muncă pe oră, Exact o dată. Atunci când o debitare automată necesită ca clientul să o confirme la banca sa, Proprietarii primesc factura prin e-mail cu această solicitare, iar proprietarii sunt alertați ca și înainte.

  16. · BillingService

    Plătiți o factură de abonament cu cardul pe o pagină găzduită de Stripe

    Internal POST **************** creează un mod de plată Se salvează cardul pentru utilizare automată în viitor Taxele atunci când clientul are un cont, precum și confirmarea SCA a băncii GET /checkout/{id} raportează dacă a fost plătită și cu ce metodă Checkout-ul consumatorului ignoră aceste sesiuni.

  17. · kamo-shared-library

    Urmăriți online plata cu cardul a unei facturi în așteptare

    Coloană nouă nulă **************** plus ajutoare pentru a lista și deconta sesiunile în așteptare idempotent (o plată care poartă Aceeași referință a procesorului nu este niciodată înregistrată de două ori).

  18. · kamo-shared-library

    Prețurile suplimentare negociate și reducerea unei oferte se transferă în abonament

    Conversia unui citat poartă acum: - prețul convenit pe licență al fiecărui add-on (atunci când diferă de cel din catalog) - discountul ofertei sau al optiunii acceptate, ca suma lunara recurentă (un Reducerea perioadei opțiunii este împărțită pe lunile sale) Comenzile înregistrează ambele în custom_pricing, astfel încât un proiect de repreț le păstrează. Activare pune prețul convenit pe licențele suplimentare și reducerea la abonament (coloana nouă nulă **************** astfel încât fiecare factură Ordinele de personal pot indica atât direct, cât și indirect, valoarea tranzacției (addonUnitPrices, recurringDiscount).

  19. · kamo-internal

    Reînnoirea automată și notele funcționează pe abonamentele live; cardul de pe fișier și cardul de încărcare acum

    - Comutatorul de reînnoire automată stabilește reînnoirea proprie a abonamentului (a postat un câmp Actualizarea comenzii ignorată) și spune când se termină o reînnoire. - Note salva pe o comandă în orice stare. - Un abonament de plată cu cardul arată cardul în fișier. - Oferta de facturi deschise Charge card acum și arată de ce ultima încercare de card a eșuat.

  20. · kamo-internal

    Afișarea licențelor deținute și utilizate în cazul în care sunt atribuite cutii poștale și extensii

    Regula proprietarului 2026-10-22: pe utilizator add-on-uri factura licențele achiziționate, iar Licențele individuale sunt singura limită a ceea ce poate fi utilizat. Un LicenseUsageMeter ("4 din 10 licențe în uz", bară animată în culoarea mărcii organizației, colț Panglică, cip de avertizare și notă atunci când deja peste, link-ul la Planuri & Facturare) Citește GET /api/billing/licenses/usage și apare pe: - Setări > Gestionarea căsuțelor poștale de e-mail (KamoMail sau licențe de la terți) - selectorul de extensii pentru setările telefonului membrului (KamoPBX sau 3rd-party) - Planuri și facturare add-on rânduri Refuzele (409, propoziția în limbaj simplu a serverului) ajung acum la persoană: Atribuire cutie poștală, acordare cutie poștală partajată, atribuire inbox personal/salvare IMAP/OAuth connect si callback o arata in panoul acelei cutii postale (mai multe folosite pentru arunca unmanaged sau spune un eșec generic); fiecare astfel de acțiune reîmprospătează Șiruri noi: setări. facturare. licențe (kamo-traducere-dictionar).

  21. · kamo-internal

    Cotații de începere a abonamentelor; acceptare offline; comenzi ale utilizatorilor; facturare în limbaj simplu

    - Citate: "Adăugați din catalogul de abonament" umple un rând din planurile live / add-on-uri (nume, lunar preț, "pe utilizator / lună" / "pe bloc de 10 GB / lună") și păstrează referința catalogului; Ofertele de abonament acceptate se convertesc printr-un dialog (metoda de plată; organizația țintă) "Record acceptance" pentru hârtie/e-mail/PO; "Record acceptance" pentru e-mail/PO; Acceptările; previzualizările unui DRAFT poartă un filigran și fiecare imprimare este înregistrată; termenii de umplere {orgName} cu numele scurt al vânzătorului. - Expertul de comandă: organizația țintă numai pentru platforma org; negociată numai de personal Prețul pe loc și suprascrierea taxei de instalare. - Lista de înscrieri: următoarea dată de facturare, sold datorat, insigna scadentă; o metodă de plată partajată Asistent de etichetă pentru toate cele șase metode. - Pagina de abonament: evenimente în propoziții simple (activ → trecut scadent), numărul de ordine în loc de ID-ul înregistrării. - Vânzări de contact: nume, e-mail și telefon citit de la platforma org printr-un endpoint îngust.

  22. · SecurityService

    Refuzul unei cutii poștale de departament sau de contact dincolo de licențele de e-mail

    Regula proprietarului 2026-10-22: facturarea suplimentelor pe utilizator pentru licențele achiziționate; câte În cazul unui furnizor terț, o cutie poștală poate fi utilizată doar de către un singur utilizator Departamentul la care se poate ajunge printr-o cutie poștală sau informațiile de contact ale organizației Indicând la unul, îl mapează în Kamo (OrgMailboxBillingAggregator), astfel încât aceste Atribuirea a două salvări poate pune o cutie poștală în utilizare la fel de sigur ca și atribuirea ei unui membru. - MailboxLicenseCapGuard cere verificarea internă a licenței BillingService (X-Internal-Auth) înainte de POST/PUT /api/security/departments și PUT /org/{id} schimbă cutia poștală; un refuz este un 409 cu propoziția în Păstrarea sau ștergerea cutiei poștale este posibilă numai dacă Niciodată bifată; o întrerupere a serviciului de facturare eșuează OPEN cu un avertisment. - Ușa releului de facturare trece și GET /licenses/usage (aceleași drepturi ca și Alte utilizări citesc).

  23. · SecurityService

    Înregistrați acceptarea offline, înregistrați imprimările, convertiți ofertele în abonamente

    - POST **************** (SEND_QUOTES sau MANAGE_QUOTES) - POST **************** (VIEW_QUOTES sau MANAGE_QUOTES) - POST .../{uid}/convert are un corp opțional (organizație țintă, metodă de plată); Convertirea ca COMP are nevoie și de CREATE_SUBSCRIPTION_ORDERS - POSController refuză negotiatedUnitPrice / setupFeeOverride de la apelanți OWN-doar - GET **************** numele publicat al platformei org, e-mail de contact și telefon, pentru dialogul de contact de vânzări, în loc de constante hard-codate

  24. · kamo-shared-library

    Ofertele se transformă în abonamente; comenzile clienților nu comp vânzătorului

    - O cotație într-o piață de ABONARE, sau ale cărei rânduri acceptate au fost completate din abonament Catalog, se convertește într-un SubscriptionOrder (plan, locuri din cantitatea de cotație, add-on-uri cu Licențele lor, tariful acceptat pe loc ca preț negociat, taxa de instalare pe care clientul (vezi, angajamentul opțiunii acceptate ca ciclu, metoda de plată aleasă la conversie). Comanda poartă quote_uid; o a doua conversie este refuzată; un eveniment CONVERTED este înregistrat. Conversia cu amănuntul este neschimbată. - QuoteService.acceptOffline: personalul înregistrează o acceptare dată pe hârtie / e-mail / PO - proiect, trimis, Citate vizualizate sau expirate; totaluri prin applyOptionHeadlineTotals; nume de evenimente cine și de ce. - recordPrinted înregistrează un eveniment PRINTED (proiectele de imprimare spun acest lucru). - Rândurile pe scaun stochează numărul de locuri al citatului la fiecare salvare și revizuire; vizualizarea liniei trimite Cantitatea la care este prețuit un rând. - Liniile de citat poartă catalog_ref_code / catalog_ref_uid. - Termeni de suport {orgName}, umplut cu numele scurt al vânzătorului pe pagina clientului. - provisionOnApproval și activateCompOrder necesită o organizație țintă - o comandă cu nici unul Utilizat pentru a furniza abonamentul propriu al VÂNZĂTORULUI. - **************** / setupFeeOverride, aplicat după calculatePrice și amintit în custom_pricing, astfel încât un proiect de reprice păstrează afacerea. - Comanda și abonamentul DTOs poartă următoarea dată de facturare, soldul datorat și un steag scadent, Citește în două interogări pe listă.

  25. · EmailService

    Respingerea unei cutii poștale care depășește licențele de e-mail ale organizației

    Regula proprietarului 2026-10-22: facturarea suplimentelor pe utilizator pentru licențele achiziționate; câte Numărul de cutii poștale care pot fi utilizate este limitat doar de acestea Utilizarea, BillingService's **************** este cerut (X-Internal-Auth); un refuz este un 409 care poartă propoziția sa în limbaj simplu (StatusReasonAdvice), de ex. „Toate cele 10 licențe de e-mail de la terți sunt utilizate. Adăugați licențe în Facturare pentru a conecta o altă cutie poștală." Obligatoriu, înainte de a scrie ceva: - crearea unei cutii poștale (KamoMail o numără dintr-o dată; 3rd-party numai o dată mapată) - atribuirea unei cutii poștale unui membru - crearea unei cutii poștale partajate, acordarea accesului la una, pornirea unei cutii poștale - conectarea unui inbox personal (salvare IMAP, consimțământ OAuth și apelare înapoi) și Atribuirea unuia deja conectat - AI furnizarea cutiei poștale a membrilor (NOT_READY / LICENSE_LIMIT) O adresă deja numărată nu este niciodată refuzată, nimic existent nu este nealocat, Și o întrerupere a serviciului de facturare eșuează OPEN cu un avertisment Punctele finale de acces partajat și cutia poștală personală trec acum starea unui refuz și Sentința prin în loc de un 500.

  26. · VOIPService

    Refuzul unei extensii telefonice care depășește licențele organizației

    Regula proprietarului 2026-10-22: facturarea suplimentelor pe utilizator pentru licențele achiziționate; câte Utilizarea extensiilor este limitată doar de acestea. Înainte de a pune o extensie în funcțiune, După ce a intrat în uz, BillingService's **************** este (X-Internal-Auth); un refuz este un 409 care poartă mesajul său în limbaj simplu (LicenseCapAdvice), de exemplu, "Toate cele 10 licențe de telefon de la terți sunt Adăugați licențe în Facturare pentru a atribui o altă extensie." Obligatoriu, înainte de a scrie ceva: - PUT /api/voip/member/{id}/config (setările telefonului membrului), numind Extensia pe care membrul o deține acum, astfel încât o mișcare pe un sistem terț este gratuită - POST **************** (extensie nouă; KamoPBX conturi (fiecare activ, 3-party doar unul atribuit) - PUT **************** când rezultatul este ACTIVE - AI furnizarea liniei de voce (NOT_READY / LICENSE_LIMIT) O extensie deja numărată nu este niciodată refuzată, nimic existent nu este Neatribuit, iar o întrerupere BillingService eșuează OPEN cu un avertisment.

  27. · BillingService

    Utilizarea licențelor și verificările licențelor per unitate pentru suplimentele per utilizator

    Regula proprietarului 2026-10-22: fiecare add-on per utilizator facturează licențele achiziționate, cum ar fi Numărul de cutii poștale sau de extensii care pot fi utilizate este limitat doar de acestea. - GET /api/billing/licenses/usage (sesiune, X-Org-Id): pentru fiecare cod de add-on (EMAIL_3P_INTEGRATION, EMAIL_HOSTING, PBX_3P_INTEGRATION, PBX_HOSTING) este un serviciu de găzduire de e-mail Licențele deținute, în uz, disponibile, în așteptare și dacă organizația este scutită. - Ia **************** Protejat de X-Internal-Auth (timp constant comparativ cu billing.internal-auth-secret), pentru EmailService și VOIPService să întrebe înainte Punerea în funcțiune a încă unei unități. - Licențiat = AddOnLicenses.licensed peste abonamentul principal active_addon_codes / addon_quantities (sau un plan care include add-on-ul); Cheile rezervate __mailboxes:/__extensions: nu sunt niciodată citite ca licențe. In use = OrgMailboxBillingAggregator / OrgPbxBillingAggregator, contează numărul de mesaje trimise Factura de noapte folosește. - Platform org și OWNER_UNLIMITED sunt scutite; PAID și COMP sunt limitate; TRIAL, GRATUIT și nici un abonament sunt lăsate la porțile de drepturi existente. - Numai o schimbare care ADDS o unitate dincolo de licențele este refuzată; o unitate deja O mutare numărată, sau o mutare de extensie a unei terțe părți care eliberează una, trece întotdeauna.

  28. · SecurityService

    Endpoint-uri pentru a seta reînnoirea automată a unui abonament și notele unei comenzi în orice stare

  29. · kamo-shared-library

    Activarea sau dezactivarea reînnoirii pentru un abonament live; note pentru orice comandă

    Comutatorul de reînnoire automată al consolei a trimis un câmp pe care actualizarea comenzii doar pentru proiect nu l-a făcut Nu am, deci nu a salvat niciodată; și notele au eșuat pe orice comandă după proiect.

  30. · SecurityService

    Clienții cu card sunt taxați automat în ziua facturării

    Pentru abonamentele AUTO_BILL, sarcina de facturare încasează fiecare factură aprobată la Cardul salvat al clientului în ziua facturării prin cardul intern BillingService endpoint, înregistrează plata (metoda CARD, referință = PaymentIntent) și Reîncearcă o încărcare nereușită la fiecare trei zile, de până la patru ori Aprobarea și trimiterea unei facturi a cărei dată de facturare a sosit În primul rând, astfel încât e-mail-ul clientului este o chitanță. Noi puncte finale: - POST **************** - Ia ****************

Universul tău te așteaptă.

Începeți gratuit în câteva minute.Adăugați produse oricând sunteți pregătit — fără migrare, fără autentificări noi.

Gratuit pentru totdeauna — nu este necesar un card de credit