Skip to content

kjuchniewicz/orders

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Orders Parser Library

Biblioteka Go do parsowania plików XML zamówień Fischer Panda w formatach zamdet i zamgen.

Funkcjonalności

  • Automatyczne wykrywanie typu zamówienia (zamdet lub zamgen)
  • Parsowanie plików XML z dysku
  • Parsowanie danych XML z bajów (przydatne dla API)
  • Wsparcie dla wszystkich pól zamówienia
  • Struktura JSON-ready dla łatwej serializacji

Instalacja

go get github.com/kjuchniewicz/orders

Użycie

Parsowanie z pliku

package main

import (
    "fmt"
    "log"

    "github.com/kjuchniewicz/orders"
)

func main() {
    // Parsuj plik XML
    order, err := orders.ExtractOrder("zamowienie.xml")
    if err != nil {
        log.Fatal(err)
    }

    fmt.Printf("Nr zamówienia: %s\n", order.NrZamowienia)
    fmt.Printf("Data: %s\n", order.DataZamowienia)

    for _, line := range order.Wiersze {
        fmt.Printf("Wiersz %d: %s\n", line.PrintID, line.Nazwa)
    }
}

Parsowanie z bajów (dla API)

package main

import (
    "fmt"
    "io"
    "log"
    "net/http"

    "github.com/kjuchniewicz/orders"
)

func handleUpload(w http.ResponseWriter, r *http.Request) {
    // Odczytaj plik z formularza
    file, _, err := r.FormFile("xml")
    if err != nil {
        http.Error(w, err.Error(), http.StatusBadRequest)
        return
    }
    defer file.Close()

    // Odczytaj zawartość do bajów
    xmlData, err := io.ReadAll(file)
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
        return
    }

    // Parsuj zamówienie
    order, err := orders.ExtractOrderFromBytes(xmlData)
    if err != nil {
        http.Error(w, err.Error(), http.StatusBadRequest)
        return
    }

    // Zwróć jako JSON
    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(order)
}

Typy zamówień

Zamdet

Format szczegółowy zawierający:

  • Nazwę produktu
  • Numer artykułu
  • Cenę jednostkową, walutę
  • Opisy (Opis1-4)
  • Pole "Dostarczyc" z listą akcesoriów

Zamgen

Format ogólny zawierający:

  • Nazwę produktu
  • Numer artykułu i seryjny
  • Klienta
  • Numer zlecenia

Struktura danych

type OrderHeader struct {
    NrZamowienia    string      `json:"nr_zamowienia"`
    DataZamowienia  string      `json:"data_zamowienia"`
    OsobaKontaktowa string      `json:"osoba_kontaktowa"`
    Wiersze         []OrderLine `json:"wiersze"`
}

type OrderLine struct {
    PrintID         int    `json:"print_id"`
    Nazwa           string `json:"nazwa"`
    NumerArtykulu   string `json:"numer_artykulu"`
    Termin          string `json:"termin"`
    Ilosc           string `json:"ilosc"`
    Suma            string `json:"suma"`

    // Pola specyficzne dla zamdet
    JednostkaMiary  string `json:"jednostka_miary"`
    CenaJednostkowa string `json:"cena_jednostkowa"`
    Waluta          string `json:"waluta"`
    Opis1           string `json:"opis1"`
    Opis2           string `json:"opis2"`
    Opis3           string `json:"opis3"`
    Opis4           string `json:"opis4"`
    Dostarczyc      string `json:"dostarczyc"`

    // Pola specyficzne dla zamgen
    Seriennr        string `json:"seriennr,omitempty"`
    Auftrag         string `json:"auftrag,omitempty"`
    Kunde           string `json:"kunde,omitempty"`
}

Przykład użycia

Zobacz katalog example/ dla pełnego przykładu aplikacji CLI.

cd example
go run . ../zamdet1.xml

Licencja

Proprietary - Fischer Panda

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages