Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def get_order_type(order_data: Dict) -> ORDER_TYPES: # noqa: mccabe=MC0001
- """
- Логика такая: ищем ЮЛ (единственный жесткий критерий),
- далее для всех непомеченных:
- ищем и метим "Платежный агент с самофискализацией",
- далее ищем "Самоинкасацию",
- далее "Эквайринг",
- далее "Реестр",
- далее "ФЛ",
- далее "ЮЛ+ФЛ".
- Все, что после этого не помечено - ЮЛ. - еще раз
- (c) Екатерина Кирова
- """
- individual_inns = list(Recipient.objects.values_list('inn', flat=True))
- # секция исключений
- for exception in exception_section:
- payer_inn, payment_target, order_type = exception
- if (order_data.get('ПлательщикИНН', '') == payer_inn or not payer_inn)\
- and payment_target.lower() in get_from_many(
- 'НазначениеПлатежа', order_data).lower():
- return order_type
- # юрлицо
- if 'Счет по сбору платежей за ЖКУ' \
- in get_from_many('Плательщик', order_data)\
- and order_data.get('ПлательщикИНН', '').startswith('770207')\
- and order_data.get('ПлательщикБИК', '') == '044525411'\
- and order_data.get('ПлательщикСчет', '').startswith('409118')\
- and get_from_many('НазначениеПлатежа', order_data) == \
- 'Перечисление платежей за коммунальные услуги':
- return ENTITY
- # платёжный агент с фискализацией
- if order_data.get('ПлательщикИНН', '') in payment_agent_white_rule:
- return PAYMENT_AGENT
- # самоинкассация
- if order_data.get('ПолучательСчет', '') in [
- '40821810438000000440', '40821810051300000003'] and (
- contains(
- get_from_many('НазначениеПлатежа', order_data),
- ['платежей физических лиц через терминал', 'ЖКХ ИНКАС СУМКА'])
- ):
- return SELF_ENCASHMENT
- # эквайринг
- acquiring_pairs_match = False
- for acquiring_pair in acquiring_pairs:
- payer_inn, payment_target = acquiring_pair
- acquiring_pairs_match = \
- order_data.get('ПлательщикИНН', '') == payer_inn \
- and payment_target.lower() in get_from_many(
- 'НазначениеПлатежа', order_data).lower()
- if acquiring_pairs_match:
- break
- if order_data.get('СекцияДокумент', '') in \
- ['Платежное поручение', 'Банковский ордер'] \
- and ((order_data.get('ПлательщикИНН', '') == '7702070139'
- and get_from_many('НазначениеПлатежа', order_data).lower()
- .startswith(
- 'ВОЗМЕЩЕНИЕ СР-В ПО ОПЕРАЦИЯМ ЭКВАЙРИНГА'.lower()))
- or (order_data.get('ПлательщикИНН', '') == '7707083893'
- and 'Мерчант No850000035812' in
- get_from_many('НазначениеПлатежа', order_data))
- or acquiring_pairs_match):
- return ACQUIRING
- # реестр
- pairs_match, and_pairs_match = False, False
- for pair in pairs:
- payer_inn, payment_target = pair
- pairs_match = order_data.get('ПлательщикИНН', '') == payer_inn \
- and payment_target.lower() in get_from_many(
- 'НазначениеПлатежа', order_data).lower()
- if pairs_match:
- break
- for pair in and_pairs:
- payer_inn, *payment_targets = pair
- and_pairs_match = order_data.get('ПлательщикИНН', '') == payer_inn \
- and and_contains(
- get_from_many('НазначениеПлатежа', order_data), payment_targets)
- if and_pairs_match:
- break
- vtb_triple_condition = \
- order_data.get('ПлательщикИНН', '') == '7702070139' \
- and startswith(
- get_from_many('НазначениеПлатежа', order_data),
- ['ПЕРЕЧИСЛЕНИЕ ПЛАТЕЖЕЙ']) \
- and order_data.get('ПлательщикСчет', '') == '40911810100180000510'
- if ((order_data.get('ПлательщикБИК', '') in ['044525416', '044525283']
- and contains(
- get_from_many('НазначениеПлатежа', order_data), ['реестр'])) or
- (pairs_match or and_pairs_match or vtb_triple_condition
- or and_contains(
- get_from_many('НазначениеПлатежа', order_data),
- ['реестр', 'ООО "Регистратор"'])))\
- and not contains(
- get_from_many('НазначениеПлатежа', order_data),
- ['зарплат', 'зар плат', 'заработ']):
- return REGISTRY
- # физлица
- if (order_data.get('СекцияДокумент', '') in [
- 'Платежное поручение', 'Банковский ордер']
- or (order_data.get('СекцияДокумент', '') == 'Инкассовое поручение' and
- contains(
- get_from_many('НазначениеПлатежа', order_data),
- ['зыскание по ИД', 'ЗЫСК ПО ИД']))) \
- and contains(order_data.get('ПолучательИНН', ''), individual_inns)\
- and ('//' in get_from_many('Плательщик', order_data)
- or contains(order_data.get('ПлательщикБИК', ''),
- pbik_contains)
- or (startswith(order_data.get('ПлательщикСчет', ''),
- pacc_startswith)
- and contains(
- get_from_many('НазначениеПлатежа', order_data),
- i_purpose_contains)
- and not contains(
- get_from_many('НазначениеПлатежа', order_data),
- i_purpose_not_contains))):
- return INDIVIDUAL
- # физлица и юрлица
- if order_data.get('СекцияДокумент', '') in [
- 'Платежное поручение', 'Банковский ордер']\
- and contains(order_data.get('ПолучательИНН', ''), individual_inns)\
- and not startswith(
- order_data.get('ПлательщикРасчСчет=', ''),
- ie_accs_not_startswith)\
- and contains(
- get_from_many('НазначениеПлатежа', order_data),
- ie_purpose_contains)\
- and not contains(
- get_from_many('НазначениеПлатежа', order_data),
- ie_purpose_not_contains):
- return INDIVIDUAL_AND_ENTITY
- return ENTITY
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement