소스 검색

it works

master
Daniel 3 년 전
부모
커밋
01bbc6ccb3
1개의 변경된 파일46개의 추가작업 그리고 32개의 파일을 삭제
  1. +46
    -32
      src/EventListener/PostCheckoutListener.php

+ 46
- 32
src/EventListener/PostCheckoutListener.php 파일 보기

@@ -19,6 +19,9 @@ class PostCheckoutListener
const WAREHOUSE_ID = 'd8a6a9b8-d0ac-4d36-8d00-bd420d0d81f5';
const PAYMENT_CONDITION = 'PP';
const VAT_FACTOR = 1.19;
const SURCHAGRGE_SHIPPING = 'shipping';
const SURCHAGRGE_RULE = 'rule';
const SHIPPING_ITEM_ID = '99068232-8a4c-4468-9228-e61e26edac43';

private Order $order;
private ApiExact $apiExact;
@@ -26,6 +29,8 @@ class PostCheckoutListener
private $salesOrderItems = [];
private $billingCustomer = null;
private $shippingCustomer = null;
private $orderDiscount = null;
private $shippingItem = [];

/**
* @Hook("postCheckout")
@@ -34,21 +39,11 @@ class PostCheckoutListener
{
$this->order = $order;
$this->apiExact = new ApiExact();

$this->setDbProducts();
$this->setSurCharges();
$this->setOrderItems();
$this->setCustomers();

$surCharges = [];
/** @var ProductCollectionSurcharge $orderSurcharge */
foreach ($order->getSurcharges() as $orderSurcharge) {
$surCharges[] = $orderSurcharge;
}



$this->apiExact->createSalesOrder($this->createSalesOrderData());

}

private function setDbProducts()
@@ -63,11 +58,6 @@ class PostCheckoutListener
foreach ($dbProducts as $dbProduct) {
$this->dbProductsBySku[$dbProduct['sku']] = $dbProduct;
}
// ob_start();
// var_dump($this->dbProductsBySku);
// file_put_contents('dan.txt', ob_get_contents());
// ob_end_clean();

}

private function compareAddresses(Order $order)
@@ -110,12 +100,16 @@ class PostCheckoutListener
$exactId = $product->exact_id;
$unitPrice = (float) $orderItem->tax_free_price / (int) $orderItem->quantity;
$quantity = $orderItem->quantity;
$this->salesOrderItems[] = [
$item = [
'Description' => $name,
'Item' => $exactId,
'UnitPrice' => $unitPrice,
'Quantity' => $quantity
];
if ($this->orderDiscount !== null) {
$item['Discount'] = $this->orderDiscount;
}
$this->salesOrderItems[] = $item;
} else {
$productSet = $this->dbProductsBySku[$product->sku];
$quantity = $orderItem->quantity;
@@ -142,19 +136,24 @@ class PostCheckoutListener
];
}
}
$setDiscountFactor = (float) $orderItem->tax_free_price / $setPriceSingleProducts;
ob_start();
var_dump($setProducts);
file_put_contents('flo.txt', ob_get_contents());
ob_end_clean();

$setDiscountFactor = 1 - $orderItem->tax_free_price / $setPriceSingleProducts;
foreach ($setProducts as $setProduct) {
$this->salesOrderItems[] = [
$item = [
'Description' => $setProduct['product']['name'],
'Item' => $setProduct['product']['exact_id'],
'UnitPrice' => round($setProduct['netPrice'] * $setDiscountFactor, 2),
'Quantity' => $quantity * $setProduct['qty']
'UnitPrice' => $setProduct['netPrice'],
'Quantity' => $quantity * $setProduct['qty'],
];

if ($this->orderDiscount !== null) {
$setProductNetPrice = $setProduct['netPrice'] * (1 - $setDiscountFactor);
$discountedPrice = $setProductNetPrice * (1 - $this->orderDiscount);
$item['Discount'] = 1 - ($discountedPrice / $setProduct['netPrice']);
} else {
$item['Discount'] = $setDiscountFactor;
}
$this->salesOrderItems[] = $item;
}
}
}
@@ -173,8 +172,30 @@ class PostCheckoutListener
);
}

private function setSurCharges()
{
/** @var ProductCollectionSurcharge $orderSurcharge */
foreach ($this->order->getSurcharges() as $orderSurcharge) {
switch ($orderSurcharge->type) {
case self::SURCHAGRGE_SHIPPING:
$this->shippingItem = [
'Description' => $orderSurcharge->label,
'Item' => self::SHIPPING_ITEM_ID,
'UnitPrice' => round($orderSurcharge->total_price / self::VAT_FACTOR, 2),
'Quantity' => 1
];
break;
case self::SURCHAGRGE_RULE:
$discountValuePercentage = round((($orderSurcharge->total_price * -1) / $this->order->subtotal), 2);
$this->orderDiscount = $this->orderDiscount === null ? $discountValuePercentage : $this->orderDiscount + $discountValuePercentage;
break;
}
}
}

private function createSalesOrderData()
{
$this->salesOrderItems[] = $this->shippingItem;
$date = new \DateTime('now');
$res = [
'Description' => $this->order->id,
@@ -187,13 +208,6 @@ class PostCheckoutListener
if ($this->shippingCustomer !== null) {
$res['DeliverTo'] = $this->shippingCustomer->ID;
}
// if ($discount !== null) {
// $res['Discount'] = $shippingCustomer->ID;
// }
ob_start();
var_dump($res);
file_put_contents('dan.txt', ob_get_contents());
ob_end_clean();
return $res;
}
}

불러오는 중...
취소
저장