add feature RetrievePricelist
This commit is contained in:
parent
ac5b104eab
commit
f4bae2a9b8
131
webActions.go
131
webActions.go
|
@ -1,6 +1,7 @@
|
||||||
package paxan
|
package paxan
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/csv"
|
||||||
"io"
|
"io"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
@ -12,6 +13,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/PuerkitoBio/goquery"
|
"github.com/PuerkitoBio/goquery"
|
||||||
|
"golang.org/x/text/encoding/charmap"
|
||||||
)
|
)
|
||||||
|
|
||||||
type paxanWebOrder struct {
|
type paxanWebOrder struct {
|
||||||
|
@ -33,6 +35,71 @@ type paxanWebOrderEntry struct {
|
||||||
Total2 string
|
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 {
|
func downloadFile(filepath string, resp *http.Response) error {
|
||||||
// Create the file
|
// Create the file
|
||||||
file, err := os.Create(filepath)
|
file, err := os.Create(filepath)
|
||||||
|
@ -101,6 +168,70 @@ func DownloadPricelists(client *http.Client) error {
|
||||||
return nil
|
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) {
|
func paxanGetOrders(client *http.Client) ([]paxanWebOrder, error) {
|
||||||
var list []paxanWebOrder
|
var list []paxanWebOrder
|
||||||
kvs := make(map[string]string)
|
kvs := make(map[string]string)
|
||||||
|
|
Loading…
Reference in New Issue