|
|
@@ -0,0 +1,156 @@
|
|
|
+# StudioU Orders2PrintPack
|
|
|
+
|
|
|
+**Verze 1.3.4** · Quadarax © 2025
|
|
|
+
|
|
|
+Proprietární desktopová aplikace (Windows Forms, .NET 9) pro online tiskovou službu **StudioU**. Zpracovává exporty objednávek z WooCommerce a převádí je na podklady připravené k tisku, katalog produktů, tiskové štítky a e-mailové odesílání digitálního obsahu.
|
|
|
+
|
|
|
+> Uživatelské rozhraní, názvy sloupců CSV i texty jsou v češtině.
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## Hlavní funkce
|
|
|
+
|
|
|
+Aplikace se spouští úvodní obrazovkou (`FormLauncher`), ze které jsou dostupné čtyři samostatné moduly a editor konfigurace.
|
|
|
+
|
|
|
+### 1. Příprava balíčků k tisku (`FormBatch`)
|
|
|
+Hlavní pracovní postup „objednávky → balíček k tisku":
|
|
|
+- Načte CSV export objednávek z WooCommerce.
|
|
|
+- Prohledá složku se zdrojovými (RAW) soubory a podle názvu souboru spáruje každý řádek objednávky s lokálním obrázkem.
|
|
|
+- Zkopíruje a přejmenuje soubory do výstupní složky podle masky `OutputFileMask` (tokeny `{order_no}`, `{prod_name}`, `{ordinal}`, `{ext}` a libovolný sloupec CSV).
|
|
|
+- Množství (`qty`) se rozkopíruje do číslovaných kopií.
|
|
|
+- Řádky odpovídající formátu digitálního obsahu (`FormatDigitalContains`) s vyplněným e-mailem se směrují do podsložky podle e-mailu místo tisku.
|
|
|
+- Umožňuje vygenerovat protokol (`.csv`) s číslem a datem externí objednávky.
|
|
|
+
|
|
|
+### 2. Editace produktů (`FormProductEdit`)
|
|
|
+Editace a import katalogu produktů a variant:
|
|
|
+- Produkt (`variable`) nebo varianta (`variation`) navázaná na rodiče přes SKU.
|
|
|
+- Generování URL a popisů z šablon (`ImportTpl*`).
|
|
|
+- Kontrola validity a duplicit, editace hodnot Minimum/Maximum množství.
|
|
|
+
|
|
|
+**Číselník variant a ceny.** Pravý panel obsahuje číselník variant (sloupce *Jméno*, *Cena*,
|
|
|
+*Min. Počet*, *Max. Počet*). Tento číselník slouží jako referenční ceník a ukládá se mezi spuštěními
|
|
|
+do uživatelské konfigurace (`PredefinedVariants`); při otevření okna se z ní obnoví.
|
|
|
+
|
|
|
+Doporučený postup pro ceny:
|
|
|
+1. **Import** ze složkové struktury (`kategorie/varianta/soubor`) vytvoří produkty a varianty.
|
|
|
+ Importované varianty vznikají s cenou `0` (cena se z importu nepřebírá).
|
|
|
+2. Cenu nastavíte v číselníku variant a tlačítkem **Použít** ji hromadně přenesete na všechny
|
|
|
+ produktové varianty se shodným názvem.
|
|
|
+
|
|
|
+Číselník variant si ceny drží i při importu – produkt s nulovou (nenastavenou) cenou referenční
|
|
|
+cenu nepřepíše. Skutečná nenulová cena zadaná na produktu se do číselníku naopak promítne.
|
|
|
+
|
|
|
+### 3. Tisk štítků (`FormLabelPrint`)
|
|
|
+Generování tiskových štítků z CSV do souboru `.xlsx` (Excel, přes OpenXML — bez nutnosti Office):
|
|
|
+- Agregace řádků podle `LabelAggregateColumns` a tvorba počítaných sloupců (`LabelAggegationDataExpression`).
|
|
|
+- Rozvržení štítků do mřížky N×M na stránku A4.
|
|
|
+- Šablona `LabelTemplate` podporuje zástupné symboly `{nazevSloupce}` a jednoduché formátování: `**tučně**`, `__kurzíva__`, `_podtržení_`, `^^velikost^text^^` a `{cr}` pro nový řádek.
|
|
|
+
|
|
|
+### 4. Odeslání digitálních dat (`FormDigitalSend` / `EmailStorageProcessor`)
|
|
|
+Odesílání odkazů ke stažení pro digitální objednávky:
|
|
|
+- Každá podsložka vstupního adresáře = jeden příjemce (název složky = e-mail).
|
|
|
+- Stavový automat ukládaný do `metadata.json`: `Ready → Processing → Uploading → Sending → Sent` (případně `Error`).
|
|
|
+- Pro každou položku: zabalí JPG do ZIP, nahraje do **Temporary Shared Storage (TSS)**, vygeneruje heslo a permalink ke stažení, personalizuje e-mailovou šablonu (`{{DOWNLOAD_LINK}}`, `{{PASSWORD}}`, `{{RECIPIENT}}`, `{{ORDERS}}`) a odešle přes SMTP.
|
|
|
+- ZIP soubory procházejí skrytými adresáři `.processing/` → `.sending/` → `.sent/`.
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## Požadavky
|
|
|
+
|
|
|
+- Windows (Windows Forms, cíl `net9.0-windows7.0`)
|
|
|
+- .NET 9 SDK
|
|
|
+- Externí NuGet závislosti:
|
|
|
+ - `qdr.fnd.core` — sdílená knihovna (logování, prohledávání souborů, CSV, `ParameterizedString`)
|
|
|
+ - `qdr.app.tss.client` — REST klient pro Temporary Shared Storage
|
|
|
+ - `DocumentFormat.OpenXml` — generování `.xlsx` štítků
|
|
|
+
|
|
|
+## Sestavení a spuštění
|
|
|
+
|
|
|
+```powershell
|
|
|
+# Sestavení celého řešení
|
|
|
+dotnet build qdr.app.studiou.orders2printpack.sln
|
|
|
+
|
|
|
+# Spuštění aplikace
|
|
|
+dotnet run --project App
|
|
|
+
|
|
|
+# Spuštění testů (NUnit)
|
|
|
+dotnet test
|
|
|
+```
|
|
|
+
|
|
|
+Instalátor (`Setup/Setup.vdproj`) je projekt Visual Studio Installer — lze sestavit pouze ve Visual Studiu s rozšířením pro instalační projekty, ne přes `dotnet`.
|
|
|
+
|
|
|
+## Konfigurace
|
|
|
+
|
|
|
+Veškeré nastavení je uloženo v uživatelské konfiguraci (`Properties/AppSettings`) a edituje se za běhu přes `dlgSettings` / `dlgEditCfg`. Klíčové skupiny:
|
|
|
+- **Mapování sloupců** (`MapCol*`) — propojení logických polí s názvy sloupců v CSV. Při jiné struktuře exportu se mění zde, ne v kódu.
|
|
|
+- **Šablony** výstupních souborů, importu, štítků.
|
|
|
+- **TSS** — `TSSApiKey`, `TSSUri`, `TSSChunkSizeBytes`.
|
|
|
+- **SMTP** — server, port, přihlášení, SSL.
|
|
|
+
|
|
|
+Tlačítko „Reset konfigurace" na úvodní obrazovce obnoví výchozí hodnoty.
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## Changelog
|
|
|
+
|
|
|
+### 1.3.4 (2026-06-09)
|
|
|
+- Oprava: import produktů již nepřepisuje ceny v číselníku variant na `0`. Předdefinované ceny variant (sloupec *Cena*) zůstávají po importu zachovány a není nutné je zadávat znovu ručně.
|
|
|
+
|
|
|
+### 1.3.3 (2025-06)
|
|
|
+- Přidán tag pro zpracování e-mailu (processing email) při tisku štítků
|
|
|
+
|
|
|
+### 1.3.2
|
|
|
+- Oprava agregace množství (quantity) při generování štítků
|
|
|
+
|
|
|
+### 1.3.1
|
|
|
+- Přidán sloupec „Vlastnost 1 varianta" (`[CsvColumn("Vlastnost 1 varianta")]`)
|
|
|
+
|
|
|
+### 1.3.0 (2025-05-26)
|
|
|
+- Přidán TSS REST API client (v.1.0.0)
|
|
|
+- Rozšíření konfigurace o hodnoty pro TSS REST API client
|
|
|
+- Přidána obrazovka „Odeslání digitálních dat"
|
|
|
+
|
|
|
+### 1.2.4 (2025-05-19)
|
|
|
+- Rozšíření podpory přípravy balíčků k tisku o generování digitálního obsahu podle cílového e-mailu
|
|
|
+- Přidán do konfigurace e-mail a identifikace formátu digitálního obsahu
|
|
|
+
|
|
|
+### 1.2.3 (2025-04-28)
|
|
|
+- Editace hodnot Minimum/Maximum na Produktu a Variantě
|
|
|
+- Editace RAW hodnot pro Kategorie produktu, variant a mapování Batch CSV sloupců + delimiter
|
|
|
+- Kontrola duplicit source souborů v importu Batch CSV
|
|
|
+
|
|
|
+### 1.2.2 (2025-04-01)
|
|
|
+- Při importu produktů se nastavuje fixní ShortDescription a Description pro produkt
|
|
|
+- Přidány sloupce Maximum/Minimum quantity pro varianty
|
|
|
+
|
|
|
+### 1.2.1 (2025-04-01)
|
|
|
+- Přidána možnost definovat agregaci při generování štítků a přidávání kalkulovaných sloupců
|
|
|
+- Rozšíření nastavení (konfigurace) tisku štítků
|
|
|
+
|
|
|
+### 1.2.0 (2025-03-13)
|
|
|
+- Upgrade na .NET 9.0
|
|
|
+- Přidána podpora pro tisk štítků podle importovaného .CSV do xlsx (Excel)
|
|
|
+- Přidána funkce generování repository v Editaci Produktů
|
|
|
+
|
|
|
+### 1.1.1 (2025-03-13)
|
|
|
+- Opraveno, Nový a Uložit otevře dialog pro uložení
|
|
|
+- Oprava importu produktů, měsíc importu v Url je formátován na dvě číslice
|
|
|
+- Oprava importu produktů, při importu se SKU složí ze jména importovaného souboru bez koncovky
|
|
|
+- Oprava výchozího mapování sloupců
|
|
|
+
|
|
|
+### 1.1.0 (2024-10-16)
|
|
|
+- Přidán launch screen
|
|
|
+- Přidána obrazovka Editace produktů s podporou importu ze struktury
|
|
|
+
|
|
|
+### 1.0.2 (2024-10-05)
|
|
|
+- Úprava mapování na sloupečky CSV, nastavení defaultů
|
|
|
+- Přidáno nastavení pro promazání výstupního adresáře, včetně nastavení
|
|
|
+
|
|
|
+### 1.0.1 (2024-09-27)
|
|
|
+- Přidána podpora generování protokolu (.csv)
|
|
|
+- Rozšíření datové struktury o položky OutputFileName, ExternalOrder, ExternalOrderDate
|
|
|
+- Oprava chyb UI
|
|
|
+
|
|
|
+### 1.0.0 (2024-09-27)
|
|
|
+- První verze
|
|
|
+</content>
|