def handle_ncs_errors(otsa, contract, inc): """Handle NCS errors - another artificially separated function just to try and solve the process_3c mess.""" update_status = True if contract['ncs_error_desc'] is not None and 'CSC.185' in contract[ 'ncs_error_desc']: fix_csc185(otsa, contract['cart_code']) resolution = '' elif contract['ncs_error_desc'] is not None and 'CSC.178' in contract[ 'ncs_error_desc']: fix_csc178(otsa, contract['cart_code']) resolution = '' elif contract['ncs_error_desc'] is not None and 'CSC.59' in contract[ 'ncs_error_desc']: # CSC.598, CSC.597 if not contract['cart_code']: fix_csc598(otsa, contract['trans_code']) else: cart = search_cart(otsa, contract['cart_code']) fix_csc598_cart(otsa, cart) resolution = '' elif contract['ncs_error_desc'] is not None and 'EDL.33' in contract[ 'ncs_error_desc']: update_transaction(otsa, contract['trans_code'], '3A') update_contract(otsa, contract['trans_code'], '3A') update_status = False resolution = 'Umowa ' + str(contract['trans_num']) + ' zrealizowana.' elif contract[ 'ncs_error_desc'] is not None and 'ACCOUNT ALREADY CREATED' in contract[ 'ncs_error_desc']: bscs = bscs_connection() customer_id = get_customer_id(bscs, contract['custcode']) bscs.close() fix_aac(otsa, contract['trans_code'], customer_id) resolution = '' elif contract['ncs_error_desc'] is not None and ( 'na zleceniu nie odpowiada' in contract['ncs_error_desc'] or 'nie jest dostepny' in contract['ncs_error_desc']): work_info = get_work_info(inc) if not is_work_info_empty(work_info): return '' add_work_info( inc, 'VC_OPTIPOS', 'Prośba o weryfikację, MSISDN {}.'.format(contract['msisdn'])) reassign_incident(inc, 'OV') resolution = '' elif contract['ncs_error_desc'] is not None and 'Voucher' in contract[ 'ncs_error_desc']: work_info = get_work_info(inc) if not is_work_info_empty(work_info): return '' add_work_info( inc, 'VC_OPTIPOS', 'Prośba o zmianę statusu vouchera, MSISDN {}.'.format( contract['msisdn'])) reassign_incident(inc, 'OV') resolution = '' else: resolution = '' return update_status, resolution
def process_1d(otsa, contract, inc): """Process transactions with '3D' status.""" resolution = '' if to_cancel(inc): update_transaction(otsa, contract['trans_code'], '3D') update_contract(otsa, contract['trans_code'], '3D') resolution = 'Umowa ' + contract['trans_num'] + ' anulowana.' return resolution
def process_1c(otsa, contract, inc): """Process transactions with '1C' status.""" if to_cancel(inc): update_transaction(otsa, contract['trans_code'], '3D') update_contract(otsa, contract['trans_code'], '3D') resolution = 'Umowa ' + contract['trans_num'] + ' anulowana.' elif to_process(inc): return process_3c(otsa, contract, inc) else: resolution = '' return resolution
def process_3c(otsa, contract, inc): """Process transactions with '3C' status. Possibly the biggest f*****g mess in this whole code.""" if 'ponowione3' in inc['summary']: return send_error_to_ov(inc, contract) update_status, resolution = handle_process_errors(otsa, contract) if not resolution: update_status, resolution = handle_ncs_errors(otsa, contract, inc) if update_status: update_transaction(otsa, contract['trans_code'], '1B') update_processing_status(inc) return resolution
def handle_process_errors(otsa, contract): """Handle process errors - artificially separated function part to slim down the process_3c() function.""" update_status = False if contract['process_error'] == 103199: resolution = 'Druga noga zamówienia nie znajduje sie w statusie HALTED w OM co jest wymagane przy MAGNUM, ' \ 'proszę ponownie wypisać całość. W razie wątpliwości proszę o kontakt z Dealer Support.\n' elif contract['process_error'] == 90100: if 'BSCS (47 - blad wewnetrzny systemu)' in contract['ncs_error_desc']: bscs = bscs_connection() set_trans_no(bscs, contract['custcode'], -1) bscs.close() else: transactions = search_cart(otsa, contract['cart_code']) for trans in transactions: fix_90100(otsa, trans['trans_code']) resolution = '' update_status = True elif contract['process_error'] == 21220: update_transaction(otsa, contract['trans_code'], '1C') resolution = 'Dokument został już zarejestrowany w CRM. Umowa w statusie do poprawienia. ' \ 'W razie wątpliwości proszę o kontakt z Dealer Support.' elif contract['process_error'] == 200307: update_transaction(otsa, contract['trans_code'], '1C') resolution = 'Wybrano e-fakturę, a nie podano adresu email. ' \ 'Proszę zmienić metodę wysyłki faktury lub uzupełnić adres mailowy. ' \ 'Umowa w statusie do poprawienia. W razie wątpliwości proszę kontaktować się z Dealer Support.' elif contract['process_error'] == 102860: update_transaction(otsa, contract['trans_code'], '1C') resolution = contract['ncs_error_desc'] + '\nUmowa w statusie do poprawy. ' \ 'W razie wątpliwości proszę o kontakt z Dealer Support.' else: resolution = '' return update_status, resolution
def process_2y(otsa, contract, inc): """Process transactions with '2Y' status.""" resolution = '' if to_cancel(inc): update_transaction(otsa, contract['trans_code'], '3D') update_contract(otsa, contract['trans_code'], '3D') resolution = 'Umowa ' + contract['trans_num'] + ' anulowana.' return resolution for line in inc['notes']: line = line.lower() if False: # 'wstrzym' in line and 'po stronie om' in line and not is_magnum(otsa, contract): resolution = 'Umowa ' + contract['trans_num'] + \ ' wstrzymana po stronie OM. Jest to poprawny biznesowo status. ' \ 'Proszę anulować lub zatwierdzić. W razie kłopotów proszę o kontakt z Dealer Support' return resolution if 'ponowione' in inc['summary']: resolution = 'Umowa {} wstrzymana po stronie OM. Jest to poprawny biznesowo status. ' \ 'Proszę anulować lub zatwierdzić. W razie kłopotów proszę o kontakt z Dealer Support'. \ format(contract['trans_num']) return resolution orders = get_orders(contract['msisdn']) for order in orders: if order['status'] == 'HALTED' and order['id'] == contract[ 'om_order_id']: update_transaction(otsa, contract['trans_code'], '1B') resolution = 'Umowa ' + contract[ 'trans_num'] + ' przekazana do realizacji.' elif order['status'] == 'COMPLETED' and order['id'] == contract[ 'om_order_id']: update_transaction(otsa, contract['trans_code'], '3A') update_contract(otsa, contract['trans_code'], '3A') resolution = 'Umowa ' + contract['trans_num'] + ' zrealizowana.' elif order['status'] == 'CANCELLED' and order['id'] == contract[ 'om_order_id']: update_transaction(otsa, contract['trans_code'], '3D') update_contract(otsa, contract['trans_code'], '3D') resolution = 'Umowa ' + contract['trans_num'] + ' anulowana.' else: resolution = '' return resolution