.. _ainv_checks:

Перечень проверок документов
============================

Проверка заказа на поставку
---------------------------

Проверка наличия переданного номера заказа
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

В инфополе xml-файла входящего документа должен осуществляться поиск номера заказа по тегу ``order_num``. 
Если номер заказа не передан вместе с документом, автофактурирование будет приостановлено.

Проверка наличия заказа в системе SAP ERP
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

По значению, переданному в теге ``order_num`` инфополя файла формализованного документа, 
функционал выполняет поиск заказа в системе SAP ERP (в таблице ``EKKO`` в поле ``EBELN`` должно существовать значение из ``<order_num>``). 
Если заказ с указанным номером не найден, автофактурирование будет приостановлено.

Проверка заказа на актуальность
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Функционал выполняет проверку наличия метки «удалено» у всех позиций заказа. 
Если все позиции заказа имеют метку «удалено», автофактурирование будет приостановлено 
(метка на удаление содержится в поле ``LOEKZ`` в таблице ``EKPO`` для соответствующего номера заказа, т.е. ``EBELN``).

Проверка контрагента
--------------------

Продукт выполняет сопоставление контрагента, указанного в поле ``Поставщик`` найденного в системе SAP заказа, 
и контрагента, от которого поступил входящий документ (поле ``LIFNR`` в таблице ``EKKO`` для соответствующего ``EBELN``).
Если контрагенты не совпадают, автофактурирование будет приостановлено.

Поиск документа материала и счета-фактуры
-----------------------------------------

Поиск документа материала
^^^^^^^^^^^^^^^^^^^^^^^^^

Если документ материала по заказу не найден, то функционал начинает сопоставление позиций 
(в таблице ``EKBE`` для соответствующего ``EBELN`` должен быть указан ``BELNR``, для которого ``BEWPT=E``). 
Если документ материала по заказу  найден, то выполняется поиск сторно для этого документа материала. 

.. note:: Если документов материала несколько, то учитываются все найденные документы материала.


Проверка документа материала на сторно
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Выполняется поиск сторнирующего документа к найденному документу материала 
(в таблице ``MSEG`` поле ``SMBLN <> ‘’`` принимает значение ``MBLNR`` сторнируемого документа для всех позиций). 
Если найден сторнирующий документ, то документ материала не принимается во внимание. 
Если все найденные документы материала сторнированы, то функционал начинает сопоставление позиций. 
Если сторнирующий документ для документа материала не найден, то выполняется поиск счета-фактуры для этого документа материала.

Поиск счета-фактуры
^^^^^^^^^^^^^^^^^^^
Выполняется проверка, был ли создан счет-фактура для существующего документа материала
(в таблице ``EKBE`` для соответствующего ``EBELN`` должен быть указан ``BELNR``, для которого ``BEWPT=Q``).
Если счет-фактура был создан, то созданная фактура проверяется на сторно.
Если счет-фактура не создан, то функционал переходит к проверке позиций.

Проверка счета-фактуры на сторно
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Выполняется поиск сторнирующего документа к найденному счету-фактуре 
(в таблице ``RBKP`` поле ``STBLG <> ‘’`` для сторнируемого и сторнирующего документа). 
Если сторнирующий документ найден, то функционал переходит к проверке позиций. 
Если сторнирующий документ не найден, автоматическое фактурирование будет приостановлено 
(при этом, если в заказе еще есть открытые позиции, то функционал переходит к проверке позиций).

Сопоставление и анализ позиций электронного документа и системного документа SAP 
--------------------------------------------------------------------------------

Анализ позиций заказа
^^^^^^^^^^^^^^^^^^^^^

Для найденного заказа должен быть выполнен анализ позиций, требующих поступления материала (поле ``WEPOS`` в таблице ``EKPO`` для соответствующего ``EBELN``). 
Если в заказе есть позиции, требующие поступления материала, то выполняется поиск существующего документа материала или создание нового на основе позиций, 
требующих поступления. 
Если в заказе нет позиций, требующих поступления материала, то выполняется поиск существующего входящего счета, или его создание.


Сопоставление позиций
^^^^^^^^^^^^^^^^^^^^^

Позиции проверяются и сопоставляются в полуавтоматическом режиме.
Подробнее см. раздел :ref:`ainv_positions`.

Сопоставление количеств
^^^^^^^^^^^^^^^^^^^^^^^

Продукт попозиционно сравнивает количества, указанные в документе материала 
(поле ``ERFMG`` в таблице ``MSEG`` для соответствующего ``MBLNR``), и в электронном документе. 
Если количество хотя бы по одной позиции не совпадает, автоматическое фактурирование будет приостановлено. 
Если количества по всем позициям совпадают, функционал переходит к созданию документа материала.


Сопоставление единиц измерения
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Продукт попозиционно сравнивает единицы измерения в документе материала
(поле ``ERFME`` в таблице ``MSEG`` для соответствующего ``MBLNR``) и электронном документе. При этом ЕИ из электронного
документа преобразуется в код единицы измерения (поле MSEHI таблицы T006A для соответствующего MSEH6 или связка 
поля UOM из таблицы J_3RJ_UOM_CONV для соответствующего OKEI + поле MSEHI таблицы T006A для соответствующего MSEH6).
Если хотя бы для одной позиции единицы измерения не совпадают, автоматическое фактурирование будет приостановлено. 
Если для всех позиций единицы измерения совпадают, функционал начинает создание входящего счета-фактуры.