Proprietální řešení zpracování WooCommerce objednávek pro online tiskovou službu (WinForm)

Dalibor Votruba 30cb1d2ecd Fix variant price reset on Import; bump version to 1.3.4 1 maand geleden
App 30cb1d2ecd Fix variant price reset on Import; bump version to 1.3.4 1 maand geleden
Setup 30cb1d2ecd Fix variant price reset on Import; bump version to 1.3.4 1 maand geleden
Test 30cb1d2ecd Fix variant price reset on Import; bump version to 1.3.4 1 maand geleden
.gitignore b4350ce0ac Add project, initial version 1 jaar geleden
CLAUDE.md 30cb1d2ecd Fix variant price reset on Import; bump version to 1.3.4 1 maand geleden
README.md 30cb1d2ecd Fix variant price reset on Import; bump version to 1.3.4 1 maand geleden
bo_strong_key_pair.snk 4d561fb3d9 - add signature 1 jaar geleden
qdr.app.studiou.orders2printpack.sln 4f309d0f7c change file structure, add empty UT, add EmailStorageProcessor 1 jaar geleden

README.md

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í

# 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ů.
  • TSSTSSApiKey, 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