getOrdersCollection($id); // $lastId = $id; // // $allOrdersData = []; // foreach ($orders as $order){ // $allOrdersData[] = $this->parseOrderToData($order); // $lastId = $order->getIncrementId(); // } // // $array = [ // 'data' => $allOrdersData, // 'lastorder' => $lastId // ]; // // return json_encode($array, JSON_UNESCAPED_SLASHES); // } public function getOrders($id) { $orders = $this->getCollection()->addAttributeToFilter('send_sap', ['null' => true]); $lastId = $id; $allOrdersData = []; foreach ($orders as $order){ if($order->getPayment()->getMethodInstance()->getCode() == 'cashbill') { if(!$order->getCashbillTransactionId()) continue; } $allOrdersData[] = $this->parseOrderToDataTestNew($order); $lastId = $order->getIncrementId(); $order->setSendSap(1)->save(); } $array = [ 'data' => $allOrdersData, 'lastorder' => $lastId ]; return json_encode($array, JSON_UNESCAPED_SLASHES); } protected function getOrdersCollection($ordersFrom) { $collection = $this->getCollection()->addAttributeToFilter('increment_id', ['gt' => $ordersFrom]); return $collection; } protected function parseOrderToData($order) { $data = $order->getData();// array_filter(); $orderId = $data['increment_id']; $saveData = []; foreach ($data as $key => $value) { $saveData[$key] = $value; } if(isset($data['punktodbioru'])) $saveData['punktodbioru'] = $data['punktodbioru']; $saveData['billing_address'] = array_filter($order->getBillingAddress()->getData()); $saveData['shipping_address'] = array_filter($order->getShippingAddress()->getData()); $saveData['payment'] = $order->getPayment()->getMethodInstance()->getCode(); $items = $order->getAllItems(); foreach ($items as $item){ $itemData = $item->getData(); //$stany = []; if($itemData['ilosc_do_domu'] || $itemData['ilosc_do_doslania_do_ksiegarni']) { //$stany[] = 'stan01GLOWN'; $ilosc = (int)$itemData['ilosc_do_domu'] + (int)$itemData['ilosc_do_doslania_do_ksiegarni']; $saveData['items'][] = [ 'sku' => $itemData['sku'], 'name' => $itemData['name'], 'price' => $itemData['price_incl_tax'], 'qty_ordered' => $ilosc, 'discount_amount' => $itemData['discount_amount'], 'stocks' => 'stan01GLOWN' ]; }elseif($itemData['ilosc_do_odbioru_w_ksiegarni']) { //$stany[] = $itemData['ksiegarnia']; $saveData['items'][] = [ 'sku' => $itemData['sku'], 'name' => $itemData['name'], 'price' => $itemData['price_incl_tax'], 'qty_ordered' => (int)$itemData['ilosc_do_odbioru_w_ksiegarni'], 'discount_amount' => $itemData['discount_amount'], 'stocks' => $itemData['ksiegarnia'] ]; }else { $saveData['items'][] = [ 'sku' => $itemData['sku'], 'name' => $itemData['name'], 'price' => $itemData['price_incl_tax'], 'qty_ordered' => (int)$itemData['qty_ordered'], 'discount_amount' => $itemData['discount_amount'], 'stocks' => 'stan01GLOWN' ]; } // $saveData['items'][] = [ // 'sku' => $itemData['sku'], // 'name' => $itemData['name'], // 'price' => $itemData['price'], // 'qty_ordered' => $itemData['qty_ordered'], // 'discount_amount' => $itemData['discount_amount'], // 'stocks' => implode(',', $stany) // ]; } return $saveData; } public function parseOrderToDataTestNew($order) { $data = $order->getData();// array_filter(); $orderId = $data['increment_id']; $saveData = []; $v_total_qty = 0; $v_all_item_qty = 0; foreach ($data as $key => $value) { $saveData[$key] = $value; } if(isset($data['punktodbioru'])) $saveData['punktodbioru'] = $data['punktodbioru']; $saveData['billing_address'] = array_filter($order->getBillingAddress()->getData()); $saveData['shipping_address'] = array_filter($order->getShippingAddress()->getData()); $saveData['payment'] = $order->getPayment()->getMethodInstance()->getCode(); $items = $order->getAllItems(); foreach ($items as $item){ $itemData = $item->getData(); $sum = (int)$itemData['ilosc_do_domu'] + (int)$itemData['ilosc_do_doslania_do_ksiegarni'] + (int)$itemData['ilosc_do_odbioru_w_ksiegarni']; if($itemData['qty_ordered'] != ($sum)){ mail("serwis@eduksiazka.pl","błąd zamówienia w bookland {$order->getIncrementId()}","błąd lub nieprawidłowe ilości w zamówieniu {$order->getIncrementId()} pozycja {$item->getSku()}\n"); } $price = $itemData['price_incl_tax']; $priceWithOutTax = $itemData['price']; $discount = $itemData['discount_amount']; $tax = $itemData['tax_percent']; $tax2 = 1 + ($tax/100); //eq 1,05 $discountWithoutVat = $discount / $tax2; if($itemData['ilosc_do_domu'] || $itemData['ilosc_do_doslania_do_ksiegarni']) { $ilosc = (int)$itemData['ilosc_do_domu'] + (int)$itemData['ilosc_do_doslania_do_ksiegarni']; $saveData['items'][] = [ 'sku' => $itemData['sku'], 'name' => $itemData['name'], 'price' => $itemData['price_incl_tax'], 'qty_ordered' => $ilosc, 'discount_amount' => $itemData['discount_amount'], 'stocks' => 'stan01GLOWN', 'orderline_total' => (float)$itemData['row_total'] - $discountWithoutVat, 'orderline_totalAfterVAT' => (float)$itemData['row_total_incl_tax'] - (float)$itemData['discount_amount'], ]; }elseif($itemData['ilosc_do_odbioru_w_ksiegarni']) { $ilosc = (int)$itemData['ilosc_do_odbioru_w_ksiegarni']; $saveData['items'][] = [ 'sku' => $itemData['sku'], 'name' => $itemData['name'], 'price' => $itemData['price_incl_tax'], 'qty_ordered' => $ilosc, 'discount_amount' => $itemData['discount_amount'], 'stocks' => $itemData['ksiegarnia'], 'orderline_total' => (float)$itemData['row_total'] - $discountWithoutVat, 'orderline_totalAfterVAT' => (float)$itemData['row_total_incl_tax'] - (float)$itemData['discount_amount'], ]; }else { $ilosc = (int)$itemData['qty_ordered']; $saveData['items'][] = [ 'sku' => $itemData['sku'], 'name' => $itemData['name'], 'price' => $itemData['price_incl_tax'], 'qty_ordered' => (int)$itemData['qty_ordered'], 'discount_amount' => $itemData['discount_amount'], 'stocks' => 'stan01GLOWN', 'orderline_total' => (float)$itemData['row_total'] - $discountWithoutVat, 'orderline_totalAfterVAT' => (float)$itemData['row_total_incl_tax'] - (float)$itemData['discount_amount'], ]; } } return $saveData; } }