105 lines
2.2 KiB
Go
105 lines
2.2 KiB
Go
package billbee
|
|
|
|
import (
|
|
"github.com/m3tam3re/billbee/api/orders"
|
|
"github.com/m3tam3re/ordercollect/internal/models"
|
|
"github.com/m3tam3re/ordercollect/internal/shopify"
|
|
"time"
|
|
)
|
|
|
|
func Wk24ToBillbee(order models.Wk24order) error {
|
|
now := time.Now()
|
|
switch order.Country {
|
|
case "Österreich":
|
|
order.Country = "AT"
|
|
case "Austria":
|
|
order.Country = "AT"
|
|
default:
|
|
order.Country = "DE"
|
|
}
|
|
bOrder := orders.Order{
|
|
OrderNumber: order.Orderid,
|
|
CreatedAt: now.String()[:10],
|
|
State: 3,
|
|
VatMode: 0,
|
|
InvoiceAddress: &orders.InvoiceAddress{
|
|
Company: "Weltkarten24.Com",
|
|
Street: "Münchener Str.",
|
|
HouseNumber: "18",
|
|
City: "Germering",
|
|
Zip: "82110",
|
|
Country: "DE",
|
|
CountryISO2: "DE",
|
|
FirstName: "Peter-Holger",
|
|
LastName: "Grützner",
|
|
Phone: "",
|
|
Email: "orders@weltkarten24.com",
|
|
},
|
|
ShippingAddress: &orders.ShippingAddress{
|
|
Company: order.Name,
|
|
Street: order.Street,
|
|
City: order.City,
|
|
Zip: order.Zip,
|
|
Country: order.Country,
|
|
CountryISO2: order.Country,
|
|
Phone: "",
|
|
},
|
|
ShippingCost: 0,
|
|
PaymentMethod: 3,
|
|
OrderItems: nil,
|
|
Customer: &orders.Customer{
|
|
Id: 73771747,
|
|
Number: 602,
|
|
Type: 0,
|
|
Name: "Weltkarten24.com",
|
|
Email: "orders@weltkarten24.com",
|
|
Tel1: "",
|
|
},
|
|
}
|
|
tempOrderItems := []*orders.OrderItem{}
|
|
for _, item := range order.Items {
|
|
price, err := shopify.GetItemPrice(item.Sku)
|
|
if err != nil {
|
|
//TODO handle error
|
|
return err
|
|
}
|
|
tempOrderItems = append(tempOrderItems, &orders.OrderItem{
|
|
Discount: 20,
|
|
Product: &orders.Product{
|
|
Title: item.Sku,
|
|
},
|
|
Quantity: float32(item.Quantity),
|
|
TotalPrice: price * float32(item.Quantity),
|
|
})
|
|
|
|
if order.Country != "DE" {
|
|
|
|
var total float32
|
|
|
|
for _, item := range bOrder.OrderItems {
|
|
total = total + item.TotalPrice
|
|
}
|
|
|
|
switch {
|
|
case total < 25.01:
|
|
bOrder.ShippingCost = 6.90
|
|
case total > 25.00 && total < 150.00:
|
|
bOrder.ShippingCost = 13.90
|
|
case total > 150.00:
|
|
bOrder.ShippingCost = 79.90
|
|
default:
|
|
bOrder.ShippingCost = 0.00
|
|
}
|
|
}
|
|
|
|
}
|
|
bOrder.OrderItems = tempOrderItems
|
|
|
|
//TODO groroutine
|
|
err := bOrder.Create("69659")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|