コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
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
コード例 #4
0
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
コード例 #5
0
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
コード例 #6
0
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