function processDataFromMoysklad($userDate) { $orderUrl = "CustomerOrder"; $goodUrl = "Good"; $serviceUrl = "Service"; $courierUrl = "Employee"; $warehouseUrl = "Warehouse"; // Getting data from Moysklad $courierData = getXmlFromMoysklad($courierUrl, ""); $goodData = getXmlFromMoysklad($goodUrl, ""); $serviceData = getXmlFromMoysklad($serviceUrl, ""); $warehouseData = getXmlFromMoysklad($warehouseUrl, ""); $date = new DateTime($userDate, new DateTimeZone("Europe/Moscow")); $filterTimeTomorrow = (int) $date->format("Ymd"); $date = new DateTime($userDate . "+1 day", new DateTimeZone("Europe/Moscow")); $filterTimeAfterTomorrow = (int) $date->format("Ymd"); $filterOrderString = urlencode("deliveryPlannedMoment>" . $filterTimeTomorrow . "040000;" . "deliveryPlannedMoment<" . $filterTimeAfterTomorrow . "040000"); $orderData = getXmlFromMoysklad($orderUrl, "?filter=" . $filterOrderString); // Parsing XML try { $goodXml = new SimpleXmlElement($goodData); } catch (Exception $e) { echo "Возникла ошибка при загрузке данных о товарах с Moysklad. Пожалуйста, попробуйте еще раз."; return; } $goodArray = parseXml($goodXml, "good"); $GLOBALS["goodArray"] = $goodArray; try { $serviceXml = new SimpleXmlElement($serviceData); } catch (Exception $e) { echo "Возникла ошибка при загрузке данных об услугах с Moysklad. Пожалуйста, попробуйте еще раз."; return; } $serviceArray = parseXml($serviceXml, "service"); $GLOBALS["serviceArray"] = $serviceArray; try { $orderXml = new SimpleXmlElement($orderData); } catch (Exception $e) { echo "Возникла ошибка при загрузке данных о заказах покупателей с Moysklad. Пожалуйста, попробуйте еще раз."; return; } $orderArray = parseXml($orderXml, "customerOrder"); $GLOBALS["orderArray"] = $orderArray; try { $warehouseXml = new SimpleXMLElement($warehouseData); } catch (Exception $e) { echo "Возникла ошибка при загрузке данных о складах с Moysklad. Пожалуйста, попробуйте еще раз."; return; } $warehouseArray = parseXml($warehouseXml, "warehouse"); $GLOBALS["warehouseArray"] = $warehouseArray; try { $courierXml = new SimpleXmlElement($courierData); } catch (Exception $e) { echo "Возникла ошибка при загрузке данных по курьерам с Moysklad. Пожалуйста, попробуйте еще раз."; return; } $courierArray = parseXml($courierXml, "courier"); $GLOBALS["courierArray"] = $courierArray; }
function parseXml($xml, $dataType) { $contragentUrl = "Company"; $array = array(); switch ($dataType) { case "customerOrder": $ordersForThisDateCounter = 0; $ordersValidForThisDateCounter = 0; $ordersWithValidContragentForThisDateCounter = 0; foreach ($xml->customerOrder as $customerOrder) { $isDeleted = false; foreach ($customerOrder->children() as $child) { if ($child->getName() == "deleted") { $isDeleted = true; } } if (!$isDeleted) { $ordersForThisDateCounter++; $newOrder = new CustomerOrder($customerOrder); if ($newOrder->areAllFieldsValid()) { $ordersValidForThisDateCounter++; $filterCompanyString = urlencode("uuid=" . $newOrder->getSourceAgentUuid()); $contragentData = getXmlFromMoysklad($contragentUrl, "?filter=" . $filterCompanyString); try { $contragentXml = new SimpleXmlElement($contragentData); $address = (string) $contragentXml->company->requisite["actualAddress"]; $contragentName = (string) $contragentXml->company["name"]; if (!empty($address)) { $ordersWithValidContragentForThisDateCounter++; $newOrder->setAddress($address); $newOrder->setContragentName($contragentName); $array[$newOrder->getUuid()] = $newOrder; $GLOBALS["numberOfOrders"]++; } } catch (Exception $e) { //echo "Выброшено исключение: ?filter=".$filterCompanyString."<br>"; } } } } $GLOBALS["ordersForThisDateCounter"] = $ordersForThisDateCounter; $GLOBALS["ordersValidForThisDateCounter"] = $ordersValidForThisDateCounter; $GLOBALS["ordersWithValidContragentForThisDateCounter"] = $ordersWithValidContragentForThisDateCounter; break; case "good": foreach ($xml->good as $good) { $newGood = new Good($good); $array[$newGood->getUuid()] = $newGood; } break; case "service": foreach ($xml->service as $service) { $newServiceUuid = (string) $service->uuid; $newServiceName = (string) $service["name"]; $array[$newServiceUuid] = $newServiceName; } break; case "courier": foreach ($xml->employee as $courier) { $newCourier = new Courier($courier); if ($newCourier->areAllFieldsValid() && $newCourier->getIsCourier() && $newCourier->getIsActive()) { $array[$newCourier->getUuid()] = $newCourier; } } break; case "warehouse": foreach ($xml->warehouse as $warehouse) { $newWarehouse = new Warehouse($warehouse); $array[$newWarehouse->getUuid()] = $newWarehouse; } break; } return $array; }