add feature RetrievePricelist
This commit is contained in:
parent
ac5b104eab
commit
f4bae2a9b8
131
webActions.go
131
webActions.go
|
@ -1,6 +1,7 @@
|
|||
package paxan
|
||||
|
||||
import (
|
||||
"encoding/csv"
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
|
@ -12,6 +13,7 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/PuerkitoBio/goquery"
|
||||
"golang.org/x/text/encoding/charmap"
|
||||
)
|
||||
|
||||
type paxanWebOrder struct {
|
||||
|
@ -33,6 +35,71 @@ type paxanWebOrderEntry struct {
|
|||
Total2 string
|
||||
}
|
||||
|
||||
// SpricelistEntry - One entry in the spricelist
|
||||
type SpricelistEntry struct {
|
||||
Sortiment string
|
||||
Warengruppe string
|
||||
Untergruppe string
|
||||
Artnr int
|
||||
Itemname1 string
|
||||
Itemname2 string
|
||||
Hersteller string
|
||||
Qualitaet string
|
||||
Herkunft string
|
||||
Einheit string
|
||||
Aktion bool
|
||||
Menge1 float64
|
||||
Einzelpreis1 float64
|
||||
Vpepreis1 float64
|
||||
Menge2 string
|
||||
Einzelpreis2 string
|
||||
Vpepreis2 string
|
||||
Menge3 string
|
||||
Einzelpreis3 string
|
||||
Vpepreis3 string
|
||||
Menge4 string
|
||||
Einzelpreis4 string
|
||||
Vpepreis4 string
|
||||
Empfvk float64
|
||||
Mwst float64
|
||||
Ean string
|
||||
Glutenfrei bool
|
||||
Laktosefrei bool
|
||||
Vegan bool
|
||||
Regional bool
|
||||
Fairtrade bool
|
||||
}
|
||||
|
||||
func convertStringToBool(value string) bool {
|
||||
if value == "X" {
|
||||
return true
|
||||
}
|
||||
if value == "A" {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func convertStringToFloat(value string) float64 {
|
||||
value = strings.Replace(value, " €", "", -1)
|
||||
value = strings.Replace(value, ",", ".", -1)
|
||||
valueFloat, _ := strconv.ParseFloat(value, 46)
|
||||
return valueFloat
|
||||
}
|
||||
|
||||
func convertStringToInt(value string) int {
|
||||
valueInt, _ := strconv.Atoi(value)
|
||||
return valueInt
|
||||
}
|
||||
|
||||
func convertStringToTime(value string) time.Time {
|
||||
time, err := time.Parse("02.01.06", value)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
return time
|
||||
}
|
||||
|
||||
func downloadFile(filepath string, resp *http.Response) error {
|
||||
// Create the file
|
||||
file, err := os.Create(filepath)
|
||||
|
@ -101,6 +168,70 @@ func DownloadPricelists(client *http.Client) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// RetrievePricelist - Downloads and converts pricelist into an array
|
||||
func RetrievePricelist(client *http.Client) ([]SpricelistEntry, error) {
|
||||
// Download spreisliste
|
||||
resp, err := client.Get("https://www.hakopaxan-shop.de/csv/spreisliste.csv")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
dr := charmap.ISO8859_1.NewDecoder().Reader(resp.Body)
|
||||
|
||||
r := csv.NewReader(dr)
|
||||
r.Comma = ';'
|
||||
records, err := r.ReadAll()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
var priceList []SpricelistEntry
|
||||
|
||||
for i, line := range records {
|
||||
if i == 0 {
|
||||
continue
|
||||
}
|
||||
var priceListEntry SpricelistEntry
|
||||
|
||||
priceListEntry.Sortiment = line[0]
|
||||
priceListEntry.Warengruppe = line[1]
|
||||
priceListEntry.Untergruppe = line[2]
|
||||
priceListEntry.Artnr = convertStringToInt(line[3])
|
||||
priceListEntry.Itemname1 = line[4]
|
||||
priceListEntry.Itemname2 = line[5]
|
||||
priceListEntry.Hersteller = line[6]
|
||||
priceListEntry.Qualitaet = line[7]
|
||||
priceListEntry.Herkunft = line[8]
|
||||
priceListEntry.Einheit = line[9]
|
||||
priceListEntry.Aktion = convertStringToBool(line[10])
|
||||
priceListEntry.Menge1 = convertStringToFloat(line[11])
|
||||
priceListEntry.Einzelpreis1 = convertStringToFloat(line[12])
|
||||
priceListEntry.Vpepreis1 = convertStringToFloat(line[13])
|
||||
priceListEntry.Menge2 = line[14]
|
||||
priceListEntry.Einzelpreis2 = line[15]
|
||||
priceListEntry.Vpepreis2 = line[16]
|
||||
priceListEntry.Menge3 = line[17]
|
||||
priceListEntry.Einzelpreis3 = line[18]
|
||||
priceListEntry.Vpepreis3 = line[19]
|
||||
priceListEntry.Menge4 = line[20]
|
||||
priceListEntry.Einzelpreis4 = line[21]
|
||||
priceListEntry.Vpepreis4 = line[22]
|
||||
priceListEntry.Empfvk = convertStringToFloat(line[23])
|
||||
priceListEntry.Mwst = convertStringToFloat(line[24])
|
||||
priceListEntry.Ean = line[25]
|
||||
priceListEntry.Glutenfrei = convertStringToBool(line[26])
|
||||
priceListEntry.Laktosefrei = convertStringToBool(line[27])
|
||||
priceListEntry.Vegan = convertStringToBool(line[28])
|
||||
priceListEntry.Regional = convertStringToBool(line[29])
|
||||
priceListEntry.Fairtrade = convertStringToBool(line[30])
|
||||
|
||||
priceList = append(priceList, priceListEntry)
|
||||
}
|
||||
|
||||
return priceList, nil
|
||||
|
||||
}
|
||||
|
||||
func paxanGetOrders(client *http.Client) ([]paxanWebOrder, error) {
|
||||
var list []paxanWebOrder
|
||||
kvs := make(map[string]string)
|
||||
|
|
Loading…
Reference in New Issue