ООО «Оптикор» Инструкция по работе с заказами клиентов. Документ №: GTW_WebMethods_ClientOrder. Введение. Загрузка заказов клиентов, получение данных о том, в каком статусе находится заказ клиента, реализованы через взаимодействие с soap-сервисом, расположенным по адресу http://93.89.189.38:13131/WMS/SOAP/soap.php?xml_data=. Для работы необходим код сессии sid, который уникален для каждой организации. Загрузка заказа клиента. На вход методу подаётся файл формата *.XML, который должен содержать минимальный набор полей заказа, аналогично примеру ниже. <?xml version="1.0" encoding="utf-8" ?> <ClientOrder> <!-- Заказ--> <sid>sid<!--Сессия подключения--></sid> <StructureCode>ClientOrder<!--Передаваемая структура--></StructureCode>> <hdr_ClientOrder> <!--Заголовок--> <Date>2013-03-31</Date> <!--Дата заказа в формате гггг-мм-дд--> <DeliveryDate>2013-04-02</DeliveryDate> <!--Дата доставки заказа в формате гггг-мм-дд --> <Number>999999</Number> <!--Номер заказа в системе клиента, целочисленное значение --> <DeliveryType>Subway</DeliveryType> <!--Тип доставки--> <ClientParam> <!--Блок информации о клиенте--> <ClientSurname>Алексеев</ClientSurname> <!--Фамилия клиента, текстовое значение--> <ClientName>Алексей</ClientName> <!--Имя клиента, текстовое значение --> <ClientSecondname>Алексеевич</ClientSecondname> <!--Отчество клиента, текстовое значение --> <OwnerCode>111111</OwnerCode> <!--Номер заказчика в системе клиента, целочисленное значение --> <ZipCode>142000</ZipCode> <!--Почтовый код, целочисленное значение --> <Subject>Московская область</Subject> <!--Субъект, текстовое значение --> <Region>Домодедовский район</Region> <!--Регион, текстовое значение --> <City>Домодедово</City> <!--Город, текстовое значение --> <Town></Town> <!--Насленный пункт, текстовое значение --> <Street> ул. Гагарина </Street> <!—Улица, текстовое значение --> <House>5</House> <!—Дом, текстовое значение --> <Building></Building> <!—Строение, текстовое значение --> <Flat>2</Flat> <!--Квартира, целочисленное значение --> <Phone>555-55-55</Phone> <!--Номер телефона, текстовое значение --> </ClientParam> <OrderWeight>12</OrderWeight> <!--Суммарный вес заказа в кг, числовое значение--> <OrderVolume>0.1</OrderVolume> <!--Суммарный объём заказа в м. куб. , числовое значение --> <OrderSum>105000</OrderSum> <!--Сумма заказа, числовое значение --> <InsuresAmount>0</InsuresAmount> <!--Сумма страховки, числовое значение --> <DeliveryAmount>700</DeliveryAmount> <!--Сумма доставки, числовое значение --> <OrderToPay>105700</OrderToPay> <!--Сумма к оплате, числовое значение --> </hdr_ClientOrder> <tbl_ClientOrder> <!--Табличная часть--> <tbl_Line> <!--Линия табличной части--> <Article>12568923</Article> <!--Артикул товара, текстовое значение --> <Name>Hp Notebook DR-4000</Name> <!--Полное наименование товара, текстовое значение --> <Description>Hp NoteBook DR-4000 4CHz, 6Gb RAM, Core i5, Radeon 7800</Description> <!--Описание товара, текстовое значение --> <Barcode>12568923</Barcode> <!--Штрих-код товара, целочисленное значение --> <Weight>2.5</Weight> <!--Вес единицы товара в кг, числовое значение --> <Volume>0.02</Volume> <!--Объём единицы товара в м. куб. , числовое значение --> <Price>20000</Price> <!--Цена единицы товара, числовое значение --> <Qty>4</Qty> <!--Количество товара, целочисленное значение --> </tbl_Line> <tbl_Line> <!--Линия табличной части--> <Article>12568965</Article> <!--Артикул товара--> <Name>Hp Notebook DR-4020</Name> <!--Полное наименование товара--> <Description>Hp NoteBook DR-4020 4CHz, 8Gb RAM, Core i7, Radeon 8200</Description> <!--Описание товара--> <Barcode>13478523</Barcode> <!--Штрих-код товара--> <Weight>2</Weight> <!--Вес единицы товара в кг--> <Volume>0.02</Volume> <!--Объём единицы товара в м. куб.--> <Price>25000</Price> <!--Цена единицы товара--> <Qty>1</Qty> <!--Количество товара--> </tbl_Line> </tbl_ClientOrder> </ClientOrder> В ответ будет получена xml-структура с единственным тегом <Result></Result>, содержащим ответ сервера о результате добавления заказа или ошибке. Возможные варианты ответов: 1. «NO AUTHORIZATION» при неверном sid. 2. «Товар #Article# не найден в базе» при отсутствии записей о товаре в БД хотя бы с одним из указанных в заявке артикулов. Заказ не будет создан. 3. «Заявка #Number# успешно создана под №n». 4. «Заявка #Number# уже есть в базе данных». Получение статуса заказа клиента. На вход методу подаётся файл формата *.XML, который должен содержать минимальный набор полей, аналогично примеру ниже. <?xml version="1.0" encoding="utf-8" ?> <ClientOrder> <!-- Заказ--> <sid>sid</sid> <StructureCode>AskStatus</StructureCode> <hdr_AskStatus> <OrderNum>8</OrderNum> </hdr_AskStatus> </ClientOrder> В ответ будет получена xml-структура, аналогичная примеру, приведенному ниже. Она содержит информацию об истории изменения статусов. <StatusChange> <!—Изменение статуса--> <PreStatus>ClientOrder_Submit</PreStatus> <!—Начальный статус--> <PostStatus>ClientOrder_Reserve</PostStatus> <!—Конечный статус--> <RD>май 27 2013 2:28PM</RD> <!—Время изменения статуса--> </StatusChange> <StatusChange> <PreStatus>ClientOrder_Reserve</PreStatus> <PostStatus>ClientOrder_Submit</PostStatus> <RD>май 27 2013 2:28PM</RD> </StatusChange> <StatusChange> <PreStatus>ClientOrder_Submit</PreStatus> <PostStatus>ClientOrder_Execute</PostStatus> <RD>май 27 2013 2:47PM</RD> </StatusChange> <StatusChange> <PreStatus>ClientOrder_Execute</PreStatus> <PostStatus>ClientOrder_Reserve</PostStatus> <RD>май 27 2013 2:47PM</RD> </StatusChange> <StatusChange> <PreStatus>ClientOrder_Reserve</PreStatus> <PostStatus>ClientOrder_Execute</PostStatus> <RD>май 27 2013 2:47PM</RD> </StatusChange> Диаграмма возможных переходов между статусами представлена ниже на схеме. Получение данных о последних изменениях статусов заказов клиентов. На вход методу подаётся файл формата *.XML, который должен содержать минимальный набор полей, аналогично примеру ниже. <?xml version="1.0" encoding="utf-8" ?> <ClientOrder> <!-- Заказ--> <sid>sid</sid> <StructureCode>GetHistory</StructureCode> <root><!—Служебное поле, не заполняется--></root> </ClientOrder> В ответ будет получена xml-структура, аналогичная примеру, приведенному ниже. Она содержит историю изменения статусов, которую клиент еще не запрашивал. <StatusChange> <!—Изменение статуса--> <OrderNum>12345</OrderNum> <!—Номер заказа--> <PreStatus>ClientOrder_Submit</PreStatus> <!—Начальный статус--> <PostStatus>ClientOrder_Reserve</PostStatus> <!—Конечный статус--> <RD>май 27 2013 2:28PM</RD> <!—Время изменения статуса--> </StatusChange> <StatusChange> <OrderNum>12345</OrderNum> <PreStatus>ClientOrder_Reserve</PreStatus> <PostStatus>ClientOrder_Submit</PostStatus> <RD>май 27 2013 2:28PM</RD> </StatusChange> <StatusChange> <OrderNum>12346</OrderNum> <PreStatus>ClientOrder_Submit</PreStatus> <PostStatus>ClientOrder_Execute</PostStatus> <RD>май 27 2013 2:47PM</RD> </StatusChange> <StatusChange> <OrderNum>12346</OrderNum> <PreStatus>ClientOrder_Execute</PreStatus> <PostStatus>ClientOrder_Reserve</PostStatus> <RD>май 27 2013 2:47PM</RD> </StatusChange> <StatusChange> <OrderNum>12347</OrderNum> <PreStatus>ClientOrder_Reserve</PreStatus> <PostStatus>ClientOrder_Execute</PostStatus> <RD>май 27 2013 2:47PM</RD> </StatusChange>