diff --git a/bnn.go b/bnn.go index 2359c5c..accfe68 100755 --- a/bnn.go +++ b/bnn.go @@ -28,75 +28,75 @@ type Info struct { // Item Structure of each Item type Item struct { - ArtikelNr string //hausinterne Artikelnummer, mit der bestellt werden soll - Aenderungskennung string //N=neu, A=Änderung, X=ausgelistet, R=Restbestand, V=vorübergehend ausgelistet, W=wiedergelistet - AenderungsDatum int //letztes Artikel-Änderungsdatum JJJJMMTT - AenderungsZeit int //Uhrzeit letzte Artikel-Änderung SSMM - EANladen int //EAN-Nummer Ladeneinheit (1) - EANbestell int //EAN-Nummer Bestelleinheit (1) - Bezeichnung string //Artikelbezeichnung - Bezeichnung2 string //Zusatz-Artikelbezeichnung - Bezeichnung3 string //Bezeichnung für Etiketten- bzw. Kassentext - Handelsklasse string //Handelsklasse (in römischen Zahlen: I, II, III, IV ...) - HerstellerInverkehrbringer string //Herstellerkürzel (nach BNN-Liste) des Herstellers lt. Deklaration auf der Verpackung - Hersteller string //Herstellerkürzel (nach BNN-Liste) falls abweichend von der Verpackung - Herkunft string //Qualitätsland (Auto-Länderkennzeichen) - Qualitaet string //Qualitätskennung (nach BNN-IK-Liste) - Kontrollstelle string //EG-Kontrollstellen-Kennung - MHDRestlaufzeit int //übliche Restlaufzeit in Tagen - WGBNN int //Warengruppe BNNEH (nach BNN-Liste) - WGIfH int //Warengruppe Institut für Handelsforschung (Liste beim BNN erhältlich) - WGGH int //Warengruppe des jeweiligen Großhändlers - ErsatzArtikelNr string //Ersatz-Artikelnummer Ersatzartikel wird geliefert, falls sonst nicht lieferbar - MinBestellMenge int //Mindestbestellmenge in Bestelleinheit (1) - Bestelleinheit string //Bestelleinheit (1) = Verkaufseinheit des Lieferanten - BestelleinheitsMenge int //Anzahl Ladeneinheiten je Bestelleinheit (1) - Ladeneinheit string //Ladeneinheit (1) = Verkaufseinheit im Laden - Mengenfaktor int //Faktor zur Menge-Preis-Relation Ladeneinheit (2) - Gewichtsartikel bool //J=Ja, N=Nein Ja, wenn der Artikel nur abgewogen verkauft wird - PfandNrLadeneinheit string //hausinterne PfandNr für Ladeneinheit (1) - PfandNrBestelleinheit string //hausinterne PfandNr für Bestelleinheit (1) - GewichtLadeneinheit int //Bruttogewicht einer Ladeneinheit (1) in kg - GewichtBestelleinheit int //Bruttogewicht einer Bestelleinheit (1) in kg - Breite int //Packungsbreite der Ladeneinheit in cm - Hoehe int //Packungshöhe der Ladeneinheit in cm - Tiefe int //Packungstiefe der Ladeneinheit in cm - MwstKennung int //Mehrwertsteuer 1=reduziert 2=voll 3=LandwirtsSatz - VkFestpreis int //Festpreis Endkunde incl. MWSt. lt. Hersteller (Bücher) - EmpfVk int //empf.VK des Herstellers incl. MWSt. je Ladeneinheit - EmpfVkGH int //VK-Vorschlag des Lieferanten incl. MWSt. je Ladeneinheit - Preis int //Einzelpreis o. MWSt je Ladeneinheit Mengenfaktor beachten! - rabattfaehig bool //J=Ja, N=Nein - skontierfaehig bool //J=Ja, N=Nein - StaffelMenge1 int //Staffelmenge in Ladeneinheit (1) - StaffelPreis1 int //Staffelpreis je Ladeneinheit (1) o. MWSt. - rabattfaehig1 bool //J=Ja, N=Nein - skontierfaehig1 bool //J=Ja, N=Nein - StaffelMenge2 int //Staffelmenge in Ladeneinheit (1) - StaffelPreis2 int //Staffelpreis je Ladeneinheit (1) o. MWSt. - rabattfaehig2 bool //J=Ja, N=Nein - skontierfaehig2 bool //J=Ja, N=Nein - StaffelMenge3 int //Staffelmenge in Ladeneinheit (1) - StaffelPreis3 int //Staffelpreis je Ladeneinheit (1) o. MWSt. - rabattfaehig3 bool //J=Ja, N=Nein - skontierfaehig3 bool //J=Ja, N=Nein - StaffelMenge4 int //Staffelmenge in Ladeneinheit (1) - StaffelPreis4 int //Staffelpreis je Ladeneinheit (1) o. MWSt. - rabattfaehig4 bool //J=Ja, N=Nein - skontierfaehig4 bool //J=Ja, N=Nein - StaffelMenge5 int //Staffelmenge in Ladeneinheit (1) - StaffelPreis5 int //Staffelpreis je Ladeneinheit (1) o. MWSt. - rabattfaehig5 bool //J=Ja, N=Nein - skontierfaehig5 bool //J=Ja, N=Nein - Artikelart string //F=Frische (mit Tagespreisen), T=Trocken, W=NaturWaren, P=Pfand (dieser Artikel ist das Pfand selbst!), A=Artikel aus FrischePreisliste (aktuelles Angebot) - Aktionspreis string //A=Aktionspreis - AktionspreisGueltigAb string //Datum JJJJMMTT, 0 bzw. leer = ab sofort - AktionspreisGueltigBis string //Datum JJJJMMTT, 0 bzw. leer = unbestimmt - empfVkAktion int //Aktions-VK-Vorschlag incl. MWSt. - GrundpreisEinheit string //Einheit der Grundpreisauszeichnung (kg, l) - GrundpreisFaktor int //Mengen-Faktor der Grundpreiseinheit zur Ladeneinheit - LieferbarAb string //Datum JJJJMMTT - LieferbarBis string //Datum JJJJMMTT + ArtikelNr string //hausinterne Artikelnummer, mit der bestellt werden soll + Aenderungskennung string //N=neu, A=Änderung, X=ausgelistet, R=Restbestand, V=vorübergehend ausgelistet, W=wiedergelistet + AenderungsDatum int //letztes Artikel-Änderungsdatum JJJJMMTT + AenderungsZeit int //Uhrzeit letzte Artikel-Änderung SSMM + EANladen int //EAN-Nummer Ladeneinheit (1) + EANbestell int //EAN-Nummer Bestelleinheit (1) + Bezeichnung string //Artikelbezeichnung + Bezeichnung2 string //Zusatz-Artikelbezeichnung + Bezeichnung3 string //Bezeichnung für Etiketten- bzw. Kassentext + Handelsklasse string //Handelsklasse (in römischen Zahlen: I, II, III, IV ...) + HerstellerInverkehrbringer string //Herstellerkürzel (nach BNN-Liste) des Herstellers lt. Deklaration auf der Verpackung + Hersteller string //Herstellerkürzel (nach BNN-Liste) falls abweichend von der Verpackung + Herkunft string //Qualitätsland (Auto-Länderkennzeichen) + Qualitaet string //Qualitätskennung (nach BNN-IK-Liste) + Kontrollstelle string //EG-Kontrollstellen-Kennung + MHDRestlaufzeit int //übliche Restlaufzeit in Tagen + WGBNN int //Warengruppe BNNEH (nach BNN-Liste) + WGIfH int //Warengruppe Institut für Handelsforschung (Liste beim BNN erhältlich) + WGGH int //Warengruppe des jeweiligen Großhändlers + ErsatzArtikelNr string //Ersatz-Artikelnummer Ersatzartikel wird geliefert, falls sonst nicht lieferbar + MinBestellMenge int //Mindestbestellmenge in Bestelleinheit (1) + Bestelleinheit string //Bestelleinheit (1) = Verkaufseinheit des Lieferanten + BestelleinheitsMenge int //Anzahl Ladeneinheiten je Bestelleinheit (1) + Ladeneinheit string //Ladeneinheit (1) = Verkaufseinheit im Laden + Mengenfaktor int //Faktor zur Menge-Preis-Relation Ladeneinheit (2) + Gewichtsartikel bool //J=Ja, N=Nein Ja, wenn der Artikel nur abgewogen verkauft wird + PfandNrLadeneinheit string //hausinterne PfandNr für Ladeneinheit (1) + PfandNrBestelleinheit string //hausinterne PfandNr für Bestelleinheit (1) + GewichtLadeneinheit int //Bruttogewicht einer Ladeneinheit (1) in kg + GewichtBestelleinheit int //Bruttogewicht einer Bestelleinheit (1) in kg + Breite int //Packungsbreite der Ladeneinheit in cm + Hoehe int //Packungshöhe der Ladeneinheit in cm + Tiefe int //Packungstiefe der Ladeneinheit in cm + MwstKennung int //Mehrwertsteuer 1=reduziert 2=voll 3=LandwirtsSatz + VkFestpreis float64 //Festpreis Endkunde incl. MWSt. lt. Hersteller (Bücher) + EmpfVk int //empf.VK des Herstellers incl. MWSt. je Ladeneinheit + EmpfVkGH int //VK-Vorschlag des Lieferanten incl. MWSt. je Ladeneinheit + Preis float64 //Einzelpreis o. MWSt je Ladeneinheit Mengenfaktor beachten! + rabattfaehig bool //J=Ja, N=Nein + skontierfaehig bool //J=Ja, N=Nein + StaffelMenge1 int //Staffelmenge in Ladeneinheit (1) + StaffelPreis1 float64 //Staffelpreis je Ladeneinheit (1) o. MWSt. + rabattfaehig1 bool //J=Ja, N=Nein + skontierfaehig1 bool //J=Ja, N=Nein + StaffelMenge2 int //Staffelmenge in Ladeneinheit (1) + StaffelPreis2 float64 //Staffelpreis je Ladeneinheit (1) o. MWSt. + rabattfaehig2 bool //J=Ja, N=Nein + skontierfaehig2 bool //J=Ja, N=Nein + StaffelMenge3 int //Staffelmenge in Ladeneinheit (1) + StaffelPreis3 float64 //Staffelpreis je Ladeneinheit (1) o. MWSt. + rabattfaehig3 bool //J=Ja, N=Nein + skontierfaehig3 bool //J=Ja, N=Nein + StaffelMenge4 int //Staffelmenge in Ladeneinheit (1) + StaffelPreis4 float64 //Staffelpreis je Ladeneinheit (1) o. MWSt. + rabattfaehig4 bool //J=Ja, N=Nein + skontierfaehig4 bool //J=Ja, N=Nein + StaffelMenge5 int //Staffelmenge in Ladeneinheit (1) + StaffelPreis5 float64 //Staffelpreis je Ladeneinheit (1) o. MWSt. + rabattfaehig5 bool //J=Ja, N=Nein + skontierfaehig5 bool //J=Ja, N=Nein + Artikelart string //F=Frische (mit Tagespreisen), T=Trocken, W=NaturWaren, P=Pfand (dieser Artikel ist das Pfand selbst!), A=Artikel aus FrischePreisliste (aktuelles Angebot) + Aktionspreis string //A=Aktionspreis + AktionspreisGueltigAb string //Datum JJJJMMTT, 0 bzw. leer = ab sofort + AktionspreisGueltigBis string //Datum JJJJMMTT, 0 bzw. leer = unbestimmt + empfVkAktion int //Aktions-VK-Vorschlag incl. MWSt. + GrundpreisEinheit string //Einheit der Grundpreisauszeichnung (kg, l) + GrundpreisFaktor int //Mengen-Faktor der Grundpreiseinheit zur Ladeneinheit + LieferbarAb string //Datum JJJJMMTT + LieferbarBis string //Datum JJJJMMTT } // Bnn Information of file @@ -117,6 +117,11 @@ func convertStringToInt(s string) int { return ret } +func convertStringToFloat(s string) float64 { + ret, _ := strconv.ParseFloat(strings.ReplaceAll(s, ",", "."), 64) + return ret +} + // ReadBnnFile Reads file and returns object with all containing information func ReadBnnFile(path string) (Bnn, error) { file, err := os.Open(path) @@ -218,30 +223,30 @@ func ReadBnn(r io.Reader) (Bnn, error) { item.Hoehe = convertStringToInt(col[31]) item.Tiefe = convertStringToInt(col[32]) item.MwstKennung = convertStringToInt(col[33]) - item.VkFestpreis = convertStringToInt(col[34]) + item.VkFestpreis = convertStringToFloat(col[34]) item.EmpfVk = convertStringToInt(col[35]) item.EmpfVkGH = convertStringToInt(col[36]) - item.Preis = convertStringToInt(col[37]) + item.Preis = convertStringToFloat(col[37]) item.rabattfaehig = convertBnnBool(col[38]) item.skontierfaehig = convertBnnBool(col[39]) item.StaffelMenge1 = convertStringToInt(col[40]) - item.StaffelPreis1 = convertStringToInt(col[41]) + item.StaffelPreis1 = convertStringToFloat(col[41]) item.rabattfaehig1 = convertBnnBool(col[42]) item.skontierfaehig1 = convertBnnBool(col[43]) item.StaffelMenge2 = convertStringToInt(col[44]) - item.StaffelPreis2 = convertStringToInt(col[45]) + item.StaffelPreis2 = convertStringToFloat(col[45]) item.rabattfaehig2 = convertBnnBool(col[46]) item.skontierfaehig2 = convertBnnBool(col[47]) item.StaffelMenge3 = convertStringToInt(col[48]) - item.StaffelPreis3 = convertStringToInt(col[49]) + item.StaffelPreis3 = convertStringToFloat(col[49]) item.rabattfaehig3 = convertBnnBool(col[50]) item.skontierfaehig3 = convertBnnBool(col[51]) item.StaffelMenge4 = convertStringToInt(col[52]) - item.StaffelPreis4 = convertStringToInt(col[53]) + item.StaffelPreis4 = convertStringToFloat(col[53]) item.rabattfaehig4 = convertBnnBool(col[54]) item.skontierfaehig4 = convertBnnBool(col[55]) item.StaffelMenge5 = convertStringToInt(col[56]) - item.StaffelPreis5 = convertStringToInt(col[57]) + item.StaffelPreis5 = convertStringToFloat(col[57]) item.rabattfaehig5 = convertBnnBool(col[58]) item.skontierfaehig5 = convertBnnBool(col[59]) item.Artikelart = col[60]