def main(): """ Just main proc """ dl_app.parser.add_argument('--ca_id', type=int, required=True, help='id контрагента Деллин') dl_app.parser.add_argument('--address', type=str, required=True, help='Произвольный адрес') args = dl_app.parser.parse_args() app = dl_app.DL_app(args=args, description='DL address add') logging.info("args=%s", args) app.login(auth=True) app.db_login() curs = app.conn.cursor() #params = {} #params["counteragentID"] = args.ca_id #params["search"] = args.address #dl_res = app.dl.dl_address_add_v2(params) dl_res = app.dl.dl_address_add_v2(args.ca_id, args.address.replace('№', '')) logging.info('dl_address_add res=%s', dl_res) if dl_res['metadata']['status'] == 200: ret_address_id = dl_res['data']['addressID'] logging.info('op status=%s, data.state=%s, addressID=%s', dl_res['metadata']['status'], dl_res['data']['state'], ret_address_id) print(ret_address_id, end='', flush=True) # add lastUpdate=now() loc_sql = curs.mogrify( u"INSERT INTO ext.dl_addresses(\ ca_id, id, address, is_terminal, type, status)\ VALUES(%s,%s,%s,%s,%s,%s)\ ON CONFLICT DO NOTHING;", (args.ca_id, ret_address_id, args.address, 'f', 'delivery', 1)) logging.info(u"loc_sql=%s", loc_sql) curs.execute(loc_sql) app.conn.commit() else: err_str = json.dumps(dl_res["errors"], ensure_ascii=False) logging.error(err_str) print(err_str, file=sys.stderr, end='', flush=True) app.logout()
#!/usr/bin/env python3 # -*- coding: utf8 -*- import logging import sys import dl_app dl_app.parser.add_argument('--ca_id', type=int, required=True, help='ca_id') dl_app.parser.add_argument('--term_id', type=int, required=True, help='DL terminal_id') args = dl_app.parser.parse_args() # TODO rename 'app' to 'app' app = dl_app.DL_app(args=args, description='DL terminal as address add') logging.info("args={}".format(args)) if app.login(auth=True): # Торговый Дом ЭнергоПрибор, ca_id=6619266 dl_res = app.dl.dl_address_term_add(ca_id=args.ca_id, term_id=args.term_id) logging.info('dl_res={}'.format(dl_res)) # OUTPUT: dl_res={'success': {'state': 'new', 'addressID': 89941747}} if 200 == app.dl.status_code: if 'success' in dl_res: ret_addr_id = dl_res['success']['addressID'] logging.info('state={}, addressID={}'.format( dl_res['success']['state'], ret_addr_id)) if 'new' == dl_res['success']['state'] or 'existing' == dl_res[ 'success']['state']: print(ret_addr_id, end='', flush=True)
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import logging # import os # import sys import dl_app dl_app.parser.add_argument('--url', type=str, required=True, help='URL справочника на api.dellin.ru') args = dl_app.parser.parse_args() app = dl_app.DL_app(args=args, description='DL directory download') logging.info("args={}".format(args)) if app.login(auth=True): dl_res = app.dl.dl_any(args.url) if 200 == app.dl.status_code: logging.info("dl_res={}".format(dl_res)) print(dl_res['hash']) print(dl_res['url']) #print(dl.text) app.logout()
def main(): """ Just main proc """ dl_app.parser.add_argument('--ca_id', type=int, required=True, help='id контрагента Деллин') dl_app.parser.add_argument('--address', type=str, required=True, help='Произвольный адрес') args = dl_app.parser.parse_args() app = dl_app.DL_app(args=args, description='DL address add') logging.info("args=%s", args) app.login(auth=True) app.db_login() curs = app.conn.cursor() addr_sql = "select * from shp.dl_ca_addr_fields({}, '{}')" curs.execute(addr_sql.format(-1, args.address)) (ret_flag, ret_addr_kladr_street, ret_addr_house, ret_addr_block, ret_addr_flat, ret_street, ret_street_type, ret_addr_city_code, ret_addr_city) = curs.fetchone() if ret_flag: logging.info('app.dl_address_add(ca_id={}, kladr_street={}, street={},\ house={}, building={}, flat={});'.format(args.ca_id, ret_addr_kladr_street, ret_street, ret_addr_house, ret_addr_block, ret_addr_flat)) # do not call dellin api if not ret_addr_house: err_params = [] if ret_addr_house is None: err_params.append(ERR_REASON['house']) print(ca_params_error(err_params), file=sys.stderr, end='', flush=True) return params = {} params["counteragentID"] = args.ca_id params["house"] = ret_addr_house[:5] params["building"] = ret_addr_block params["structure"] = None params["flat"] = ret_addr_flat if ret_addr_kladr_street: params["street"] = ret_addr_kladr_street else: custom_street = {} custom_street["code"] = ret_addr_city_code.ljust(25, '0') custom_street["street"] = ret_street_type or 'ул. Отсутствующая' params["customStreet"] = custom_street dl_res = app.dl.dl_any_address_add(params) logging.info('dl_address_add res=%s', dl_res) if app.dl.status_code == 200: if 'success' in dl_res: ret_address_id = dl_res['success']['addressID'] logging.info('state=%s, addressID=%s', dl_res['success']['state'], ret_address_id) print(ret_address_id, end='', flush=True) # add lastUpdate=now() loc_sql = curs.mogrify( u"INSERT INTO ext.dl_addresses(\ ca_id, id, address, code, street, house, is_terminal, type, status)\ VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s)\ ON CONFLICT DO NOTHING;", (args.ca_id, ret_address_id, args.address, ret_addr_kladr_street, ret_street, ret_addr_house, 'f', 'delivery', 1)) logging.info(u"loc_sql=%s", loc_sql) curs.execute(loc_sql) app.conn.commit() else: err_str = 'ERROR={}'.format(dl_res) logging.error(err_str) print(err_str, file=sys.stderr, end='', flush=True) else: err_str = 'ERROR={}'.format(app.dl.err_msg) logging.error(err_str) print(err_str, file=sys.stderr, end='', flush=True) else: err_str = 'Ошибка разбора адреса: {}'.format(ret_addr_city) logging.error(err_str) print(err_str, file=sys.stderr, end='', flush=True) app.logout()
def main(): """ Just main proc """ dl_app.parser.add_argument('--shp_id', type=int, required=True, help='shp_id') dl_app.parser.add_argument('--test', type=bool, required=False, default=False, help='test mode') args = dl_app.parser.parse_args() app = dl_app.DL_app(args=args, description='DL request v1') logging.info("args=%s", args) app.db_login() curs = app.conn.cursor() shp_id = args.shp_id logging.info("shp_id=%d", shp_id) curs.callproc('shp.dl_req_params', [shp_id]) (sender_id, sender_address_id, receiver_id, receiver_address_id, boxes, wepay, pre_shipdate, delivery_type, is_terminal) = curs.fetchone() assert sender_id is not None, 'sender_id не определён' assert sender_address_id is not None, 'sender_address_id не определён' assert receiver_id is not None, 'receiver_id не определён' assert receiver_address_id is not None, 'receiver_address_id не определён' assert boxes is not None, 'boxes не определён' assert wepay is not None, 'wepay не определён' assert delivery_type in [1, 4, 6, 20, 21], 'delivery_type - недопустимое значение' assert is_terminal is not None, 'is_terminal не определён' curs.callproc('shp.dl_req_sender_contacts', [shp_id]) sender_contact_ids = [r[0] for r in curs.fetchall()] logging.debug('sender_contacts=%s', sender_contact_ids) curs.callproc('shp.dl_req_sender_phones', [shp_id]) sender_phone_ids = [r[0] for r in curs.fetchall()] logging.debug('sender_phones=%s', sender_phone_ids) curs.callproc('shp.dl_req_receiver_contacts', [shp_id]) receiver_contact_ids = [r[0] for r in curs.fetchall()] logging.debug('receiver_contacts=%s', receiver_contact_ids) curs.callproc('shp.dl_req_receiver_phones', [shp_id]) receiver_phone_ids = [r[0] for r in curs.fetchall()] logging.debug('receiver_phones=%s', receiver_phone_ids) sender = collections.OrderedDict() sender["counteragentID"] = sender_id sender["addressID"] = sender_address_id sender["contacts"] = sender_contact_ids sender["phones"] = sender_phone_ids sender["worktimeStart"] = "00:00" sender["worktimeEnd"] = "23:59" # Receiver receiver = collections.OrderedDict() receiver["counteragentID"] = receiver_id receiver["addressID"] = receiver_address_id receiver["contacts"] = receiver_contact_ids receiver["phones"] = receiver_phone_ids receiver["worktimeStart"] = "00:00" receiver["worktimeEnd"] = "23:59" # -------------------------------------------- # TO DO set cargo_length = 0.3 cargo_width = 0.3 cargo_height = 0.3 cargo_weight = 1 cargo_total_volume = cargo_length * cargo_width * cargo_height cargo_total_weight = 1 # Request request = collections.OrderedDict() request["sender"] = sender request["receiver"] = receiver request["day"] = pre_shipdate.day request["month"] = pre_shipdate.month request["year"] = pre_shipdate.year request["totalWeight"] = cargo_total_weight request["totalVolume"] = cargo_total_volume request["quantity"] = boxes request["maxLength"] = cargo_length request["maxWidth"] = cargo_width request["maxHeight"] = cargo_height request["maxWeight"] = cargo_weight request["statedValue"] = 0.0 # 1 - отправитель, 2 -получатель if wepay: loc_payer = 1 else: loc_payer = 2 request["whoIsPayer"] = loc_payer request["primaryPayer"] = loc_payer request["paymentType"] = 1 request["deliveryType"] = delivery_type request["freight_uid"] = "0xab117f72d9de97b843ba5fd18cc2e858" # additionalServices #curs.execute('SELECT is_terminal FROM shp.vw_dl_addresses WHERE id = {}'.format(\ #receiver_address_id)) #is_terminal = curs.fetchone()[0] logging.info('is_terminal=%s', is_terminal) # доставка до двери 1 if not is_terminal: request["additionalServices"] = [{'service': 1, 'payer': loc_payer}] if args.test: request["inOrder"] = 0 loc_status = 2 else: request["inOrder"] = 1 loc_status = 1 loc_auth = True if not app.login(auth=loc_auth): logging.error('login error: %s', app.dl.err_msg) print(app.dl.err_msg, file=sys.stderr) sys.exit(-1) dl_res = app.dl.dl_request_v1(request) logging.info('dl.text=%s', app.dl.text) logging.debug('dl_res=%s', dl_res) logging.info(json.dumps(dl_res, ensure_ascii=False, indent=4)) now = datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d %H:%M:%S') dl_answer = dl_res["answer"] if dl_answer["state"] == 'success': upd_sql = curs.mogrify(u""" UPDATE shp.dl_preorder_params SET sts_code=%s, upddate=%s, ret_code=%s, ret_msg=NULL, req_id=%s, req_barcode=%s WHERE shp_id=%s;""", (loc_status, now, app.dl.status_code, dl_answer["requestID"], dl_answer["barcode"], shp_id)) print('{}@{}'.format(dl_answer["requestID"], dl_answer["barcode"]), end='', flush=True) else: upd_sql = curs.mogrify(u""" UPDATE shp.dl_preorder_params SET sts_code=%s, upddate=%s, ret_code=%s, ret_msg=%s WHERE shp_id=%s;""", (9, now, app.dl.status_code, json.dumps(dl_answer, ensure_ascii=False), shp_id)) logging.info(u"upd_sql=%s", upd_sql) curs.execute(upd_sql) app.conn.commit() if app.dl.session_id: app.logout()
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import logging # import os import sys import dl_app args = dl_app.parser.parse_args() ret_code = -1 app = dl_app.DL_app(args=args, description='DL counteragents in JSON download') logging.info("args={}".format(args)) if app.login(auth=True): dl_res = app.dl.dl_book_counteragents() if 200 == app.dl.status_code: logging.info('res_count={}'.format(len(dl_res))) with open('res-counteragents.txt', 'w') as of: of.write(app.dl.text.replace('\n', '').replace('\\', '\\\\')) ret_code = 0 """ load into PG with copy-dl-counteragents.sql """ else: err_str = 'ERROR={}'.format(app.dl.err_msg) logging.error(err_str) ret_code = 1 app.logout()
def main(): """ Just main proc """ # dl_app.parser.add_argument('--addr_id', type=int, required=True, help='ca addr_id') # dl_app.parser.add_argument('--phone', type=str, required=True, help='phone number') args = dl_app.parser.parse_args() app = dl_app.DL_app(args=args, description='DL req test') logging.info("args=%s", args) app.db_login() # -------------------------------------------- # Sender sender_id = 6619266 # TODO set sender_address_id = 24109121 # TODO set sender_contact_id = [87652393] # TODO set sender_phone_id = [92944190] # TODO set sender = collections.OrderedDict() sender["counteragentID"] = sender_id sender["addressID"] = sender_address_id sender["contacts"] = sender_contact_id sender["phones"] = sender_phone_id sender["worktimeStart"] = "00:00" sender["worktimeEnd"] = "23:59" # Receiver receiver_id = 573899 # TODO set receiver_address_id = 24136692 # TODO set receiver_contact_id = [84253436] # TODO set receiver_phone_id = [90121936] # TODO set receiver = collections.OrderedDict() receiver["counteragentID"] = receiver_id receiver["addressID"] = receiver_address_id receiver["contacts"] = receiver_contact_id receiver["phones"] = receiver_phone_id receiver["worktimeStart"] = "00:00" receiver["worktimeEnd"] = "23:59" # -------------------------------------------- # TODO set cargo_length = 0.01 cargo_width = 0.01 cargo_height = 0.01 cargo_weight = 1 cargo_total_volume = 0.001 cargo_total_weight = 1 # Request tomorrow_date = datetime.date.today() + datetime.timedelta(days=1) request = collections.OrderedDict() request["sender"] = sender request["receiver"] = receiver request["day"] = tomorrow_date.day request["month"] = tomorrow_date.month request["year"] = tomorrow_date.year request["totalWeight"] = cargo_total_weight request["totalVolume"] = cargo_total_volume request["quantity"] = 1 request["maxLength"] = cargo_length request["maxWidth"] = cargo_width request["maxHeight"] = cargo_height request["maxWeight"] = cargo_weight request["statedValue"] = 0.0 request["whoIsPayer"] = 2 request["primaryPayer"] = 2 request["paymentType"] = 1 request["deliveryType"] = 6 request["freight_uid"] = "0xab117f72d9de97b843ba5fd18cc2e858" request["inOrder"] = 0 loc_auth = True app.login(auth=loc_auth) dl_res = app.dl.dl_request_v1(request) logging.info('dl.text={}'.format(app.dl.text)) #logging.info('dl_res={}'.format(dl_res)) print(json.dumps(dl_res, ensure_ascii=False, indent=4)) if app.dl.session_id: app.logout()
def main(): """ Just main proc """ dl_app.parser.add_argument('--pdoc_id', type=int, required=True, help='arc_energo.person_doc.pdoc_id') args = dl_app.parser.parse_args() app = dl_app.DL_app(args=args, description='DL person add') logging.info("args=%s", args) app.login(auth=True) app.db_login() curs = app.conn.cursor() sql_doc = """ SELECT doc_type, doc_prenum, doc_num, doc_issue::varchar, e."ФИО" FROM person_doc join "Работники" e on e."КодРаботника" = emp_code WHERE pdoc_id={}; """.format(args.pdoc_id) curs.execute(sql_doc) (doc_type, doc_prenum, doc_num, doc_issue, person_name) = curs.fetchone() params = {} params["form"] = '0xAB91FEEA04F6D4AD48DF42161B6C2E7A' params["name"] = person_name doc = {} doc["type"] = PERSON_DOCS[doc_type] doc["serial"] = doc_prenum doc["number"] = doc_num doc["date"] = doc_issue params["document"] = doc logging.info( 'dl_book_ca_update(doc_type=%s, doc_prenum=%s, doc_num=%s,\ doc_issue=%s, person_name=%s)', doc_type, doc_prenum, doc_num, doc_issue, person_name) # do not call dellin api if not check_params(person_name, doc_prenum, doc_num): return dl_res = app.dl.dl_book_ca_update(params) logging.info('dl_book_ca_update res=%s', dl_res) if app.dl.status_code == 200: if 'success' in dl_res: ret_ca_id = dl_res['success']['counteragentID'] logging.info('state=%s, counteragentID=%s', dl_res['success']['state'], ret_ca_id) print(ret_ca_id, end='', flush=True) loc_sql = curs.mogrify( u"INSERT INTO ext.dl_counteragents(id, type,\ name, dl_doc_type, dl_doc_serial, dl_doc_number, status)\ VALUES(%s,%s,%s,%s,%s,%s,%s) ON CONFLICT DO NOTHING;", (ret_ca_id, 'private', person_name, PERSON_DOCS[doc_type], doc_prenum, doc_num, 1)) logging.info(u"loc_sql=%s", loc_sql) curs.execute(loc_sql) app.conn.commit() else: err_str = 'ERROR={}'.format(dl_res) logging.error(err_str) print(err_str, file=sys.stderr, end='', flush=True) else: err_str = 'ERROR={}'.format(app.dl.err_msg) logging.error(err_str) print(err_str, file=sys.stderr, end='', flush=True) app.logout()
type=int, required=False, help='ids list') dl_app.parser.add_argument('--phones', nargs='+', type=int, required=False, help='ids list') dl_app.parser.add_argument('--contacts', nargs='+', type=int, required=False, help='ids list') args = dl_app.parser.parse_args() app = dl_app.DL_app(args=args, description='DL addr_book delete') logging.info("args={}".format(args)) if app.login(auth=True): dl_res = app.dl.dl_book_delete(ca_list=args.cas, addr_list=args.addresses, phone_list=args.phones, contact_list=args.contacts) logging.info('dl_res={}'.format(dl_res)) if 200 == app.dl.status_code: if 'deleted' in dl_res: logging.info('res={}'.format(dl_res["deleted"])) else: err_str = 'ERROR={}'.format(dl_res) logging.error(err_str) print(err_str, file=sys.stderr, end='', flush=True)
#!/usr/bin/env python3 # -*- coding: utf8 -*- """ test dellin v2/req """ import logging import json from datetime import date import dl_app # dl_app.parser.add_argument('--addr_id', type=int, required=True, help='ca addr_id') # dl_app.parser.add_argument('--phone', type=str, required=True, help='phone number') args = dl_app.parser.parse_args() app = dl_app.DL_app(args=args, description='DL req test') logging.info("args={}".format(args)) def ca_id_to_counteragent(arg_id): """ convert id to json structure """ return arg_id # def address_id_to_address(arg_id): # pass def contact_id_to_contact(arg_id):
#!/usr/bin/env python3 # -*- coding: utf8 -*- import logging import sys import dl_app dl_app.parser.add_argument('--addr_id', type=int, required=True, help='ca addr_id') dl_app.parser.add_argument('--phone', type=str, required=True, help='phone number') dl_app.parser.add_argument('--add_num', type=str, required=False, help='extention number') args = dl_app.parser.parse_args() app = dl_app.DL_app(args=args, description='DL phone add') logging.info("args={}".format(args)) if app.login(auth=True): # addr_id=20463457 : 194292, г. Санкт-Петербург 1-й Верхний пер, д. 12 # Торговый Дом ЭнергоПрибор # dl_res = app.dl.dl_phone_add(args.addr_id, '+7(921)-917-65 97') dl_res = app.dl.dl_phone_add(args.addr_id, args.phone, args.add_num) logging.info('dl_res={}'.format(dl_res)) # OUTPUT: dl_res={'success': {'state': 'new', 'phoneID': 89941747}} if 200 == app.dl.status_code: if 'success' in dl_res: ret_phone_id = dl_res['success']['phoneID'] logging.info('state={}, phoneID={}'.format( dl_res['success']['state'], ret_phone_id)) print(ret_phone_id, end='', flush=True) app.db_login() curs = app.conn.cursor()
dl_app.parser.add_argument('--phone_id', type=int, required=True, help='phone_id') dl_app.parser.add_argument('--phone', type=str, required=True, help='phone number') dl_app.parser.add_argument('--add_num', type=str, required=False, help='extention number') args = dl_app.parser.parse_args() app = dl_app.DL_app(args=args, description='DL phone update') logging.info("args={}".format(args)) if app.login(auth=True): dl_res = app.dl.dl_phone_update(args.phone_id, args.phone, args.add_num) logging.info('dl_res={}'.format(dl_res)) # OUTPUT: dl_res={'success': .... if 200 == app.dl.status_code: if 'success' in dl_res: ret_phone_id = dl_res['success']['phoneID'] logging.info('state={}, phoneID={}'.format( dl_res['success']['state'], ret_phone_id)) print(ret_phone_id, end='', flush=True) app.db_login() curs = app.conn.cursor()
def main(): """ Just main proc """ dl_app.parser.add_argument('--code', type=int, required=True, help='arc_energo.Предприятия.Код') dl_app.parser.add_argument('--address', type=str, required=False, help='Произвольный адрес') dl_app.parser.add_argument('--name', type=str, required=False, help='Название контрагента без ОПФ') dl_app.parser.add_argument('--form_name', type=str, required=False, help='название ОПФ') dl_app.parser.add_argument('--country_id', type=str, required=False, help='UID страны') dl_app.parser.add_argument('--juridical', type=bool, required=False, help='флаг юрлицо') args = dl_app.parser.parse_args() app = dl_app.DL_app(args=args, description='DL counteragent add') logging.info("args=%s", args) app.login(auth=True) app.db_login() curs = app.conn.cursor() if args.address: addr_sql = "select * from shp.dl_ca_addr_fields({}, '{}')" curs.execute(addr_sql.format(args.code, args.address)) else: addr_sql = "select * from shp.dl_ca_addr_fields({})" curs.execute(addr_sql.format(args.code)) (ret_flag, ret_addr_kladr_street, ret_addr_house, ret_addr_block, ret_addr_flat, ret_street, ret_street_type, ret_addr_city_code, ret_addr_city) = curs.fetchone() if not ret_flag: err_str = 'Ошибка при разборе адреса через dadata.ru: {}'.format( ret_addr_city) logging.error(err_str) print(err_str, file=sys.stderr, end='', flush=True) else: sql_ent = """SELECT "Предприятия".opf_dl as opf_dl, \ "Предприятия".opf as opf_name, \ trim(replace("Предприятие", coalesce("Предприятия".opf, ''), '')) as ent_name,\ "ЮрНазвание" as legal_name, \ "ИНН" as inn FROM "Предприятия" WHERE "Код"={};""".format(args.code) curs.execute(sql_ent) (opf_dl, opf_name, name, legal_name, inn) = curs.fetchone() logging.info('app.l_book_ca_update(name={}, opf_dl={},\ opf_name={}, inn={},\ city_kladr={}, kladr_street={}, street={}, street_type={},\ house={}, building={},\ flat={});'.format(name, opf_dl, opf_name, inn, ret_addr_city_code, ret_addr_kladr_street, ret_street, ret_street_type, ret_addr_house, ret_addr_block, ret_addr_flat)) # if OK loc_status = 1 # loc_status = int(bool(opf_dl and name and inn and ret_addr_house)) loc_status = int(bool(name and inn and ret_addr_city_code)) # and ret_addr_house)) # and ret_addr_kladr_street and ret_addr_house)) if not opf_dl: if args.form_name: custom_form = {} custom_form["formName"] = args.form_name name = args.name opf_name = args.form_name custom_form["countryUID"] = args.country_id custom_form["juridical"] = args.juridical else: loc_status = -1 logging.info('dl_book_ca_update loc_status=%s', loc_status) ca_params_sql = curs.mogrify( u"INSERT INTO shp.dl_ca_params\ (arc_code, any_address,\ ca_name, legal_name, inn, opf_dl, opf_name, \ street_kladr, street, house, chk_result)\ VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);", (int(args.code), args.address, name, legal_name, inn, opf_dl, opf_name, ret_addr_kladr_street, ret_street, ret_addr_house, loc_status)) curs.execute(ca_params_sql) app.conn.commit() # do not call dellin api if loc_status != 1: err_params = [] if loc_status == -1: err_params.append(ERR_REASON['opf_none']) else: if name is None or name == '': err_params.append(ERR_REASON['name']) if inn is None or inn == '': err_params.append(ERR_REASON['inn']) if ret_addr_city_code is None or ret_addr_city_code == '': err_params.append(ERR_REASON['city_code']) if err_params: print(ca_params_error(err_params), file=sys.stderr, end='', flush=True) return params = {} params["name"] = name params["inn"] = inn if opf_dl: params["form"] = opf_dl else: params["customForm"] = custom_form jur_address = {} jur_address["building"] = ret_addr_block jur_address["structure"] = None jur_address["flat"] = ret_addr_flat # обработка улицы без кода КЛАДР if ret_addr_kladr_street is None or ret_addr_kladr_street == '': custom_street = {} custom_street["code"] = ret_addr_city_code.ljust(25, '0') custom_street["street"] = ret_street_type or 'ул. Отсутствующая' jur_address["customStreet"] = custom_street else: jur_address["street"] = ret_addr_kladr_street if ret_addr_house: jur_address["house"] = ret_addr_house[:5] else: jur_address["house"] = '1' params["juridicalAddress"] = jur_address logging.info('dl_book_ca_update params=%s', params) dl_res = app.dl.dl_book_ca_update(params) logging.info('dl_book_ca_update res=%s', dl_res) if app.dl.status_code == 200: if 'success' in dl_res: ret_ca_id = dl_res['success']['counteragentID'] logging.info('state=%s, counteragentID=%s', dl_res['success']['state'], ret_ca_id) print(ret_ca_id, end='', flush=True) # add lastUpdate=now() loc_sql = curs.mogrify( u"""INSERT INTO ext.dl_counteragents(id, inn, status) VALUES(%s,%s,%s) ON CONFLICT DO NOTHING;""", (ret_ca_id, inn, 1)) logging.info(u"loc_sql=%s", loc_sql) curs.execute(loc_sql) app.conn.commit() else: err_str = 'ERROR={}'.format(dl_res) logging.error(err_str) print(err_str, file=sys.stderr, end='', flush=True) else: err_str = 'ERROR={}'.format(app.dl.err_msg) logging.error(err_str) print(err_str, file=sys.stderr, end='', flush=True) app.logout()
msg = "Not a valid date: '{0}'.".format(date_str) raise argparse.ArgumentTypeError(msg) dl_app.parser.add_argument('--start_date', help="The Start Date - format YYYY-MM-DD", required=False, default=datetime.strftime(datetime.today(), '%Y-%m-%d'), type=valid_date) dl_app.parser.add_argument("--finish_date", help="The Finish Date - format YYYY-MM-DD", required=False, type=valid_date) args = dl_app.parser.parse_args() app = dl_app.DL_app(args=args, description='DL advanced tracking') logging.info("args={}".format(args)) if app.login(auth=True): app.db_login() shp_cmd_template = """INSERT INTO shp.vs_dl_tracking(\ tracking_code,\ shp_id,\ shipment_dt,\ src_inn,\ dst_inn,\ sized_weight,\ sized_volume,\ shp_height,\ shp_width,\
0, """Выявлены расхождения в отправке (shp_id={}) между предзаказом {} и фактическим заказом Деллин {}: """.format(arg_shp_id, arg_doc_id, arg_tr_num)) body = u'\r\n'.join(warns) subj = u'Расхождения между отправкой Деллин {tr_num} \ и предзаказом {pre_order}'.format(tr_num=arg_tr_num, pre_order=arg_doc_id) logging.info('body=%s', body) to_addr = EMAIL_TO msg = """{_body} Почтовый робот 'АРК Энергосервис'""" send_email(to_addr, subj, msg.format(_body=body)) ARGS = dl_app.parser.parse_args() APP = dl_app.DL_app(args=ARGS, description='DL tracking') logging.info("ARGS=%s", ARGS) if APP.login(auth=True): APP.db_login() CURS = APP.conn.cursor() CURS.execute("SELECT * FROM shp.dl_preorders();") ROWS = CURS.fetchall() #ROWS = [(16715, '2020-07-03', '20-00011304449')] #ROWS = [(16719, '2020-07-03', '18347033')] #ROWS = [(16799, '2020-07-06', '18378910')] # ROWS = [(16821, '2020-07-07', '18397474')] Москва Румянцево """ ROWS = [(16807, '2020-07-10', '18388225'), (16792, '2020-07-07', '18385027'),
def main(): """ Just main proc """ dl_app.parser.add_argument('--code', type=int, required=True, help='arc_energo.Предприятия.Код') dl_app.parser.add_argument('--address', type=str, required=False, help='Произвольный адрес') dl_app.parser.add_argument('--name', type=str, required=False, help='Название контрагента без ОПФ') dl_app.parser.add_argument('--form_name', type=str, required=False, help='название ОПФ') dl_app.parser.add_argument('--country_id', type=str, required=False, help='UID страны') dl_app.parser.add_argument('--juridical', type=bool, required=False, help='флаг юрлицо') args = dl_app.parser.parse_args() app = dl_app.DL_app(args=args, description='DL counteragent add') logging.info("args=%s", args) app.login(auth=True) app.db_login() curs = app.conn.cursor() sql_ent = """SELECT "Предприятия".opf_dl as opf_dl, \ "Предприятия".opf as opf_name, \ trim(replace("Предприятие", coalesce("Предприятия".opf, ''), '')) as ent_name,\ "ЮрНазвание" as legal_name, \ "ЮрАдрес" as legal_addr, \ "ИНН" as inn FROM "Предприятия" WHERE "Код"={};""".format(args.code) curs.execute(sql_ent) (opf_dl, opf_name, name, legal_name, legal_addr, inn) = curs.fetchone() if args.address: legal_addr = args.address logging.info( 'app.l_book_ca_update(name={}, opf_dl={}, opf_name={}, inn={},\ );'.format(name, opf_dl, opf_name, inn)) # if OK loc_status = 1 # loc_status = int(bool(opf_dl and name and inn and ret_addr_house)) loc_status = int(bool(name and inn and legal_addr)) if not opf_dl: if args.form_name: custom_form = {} custom_form["formName"] = args.form_name name = args.name opf_name = args.form_name custom_form["countryUID"] = args.country_id custom_form["juridical"] = args.juridical else: loc_status = -1 logging.info('dl_book_ca_update loc_status=%s', loc_status) ca_params_sql = curs.mogrify( u"INSERT INTO shp.dl_ca_params\ (arc_code, any_address,\ ca_name, legal_name, inn, opf_dl, opf_name, \ street_kladr, street, house, chk_result)\ VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);", (int(args.code), args.address, name, legal_name, inn, opf_dl, opf_name, None, None, None, loc_status)) curs.execute(ca_params_sql) app.conn.commit() # do not call dellin api if loc_status != 1: err_params = [] if loc_status == -1: err_params.append(ERR_REASON['opf_none']) else: if name is None or name == '': err_params.append(ERR_REASON['name']) if inn is None or inn == '': err_params.append(ERR_REASON['inn']) if legal_addr is None or legal_addr == '': err_params.append(ERR_REASON['empty_addr']) if err_params: print(ca_params_error(err_params), file=sys.stderr, end='', flush=True) return params = {} params["name"] = name.replace('"', '') params["inn"] = inn if opf_dl: params["form"] = opf_dl else: params["customForm"] = custom_form jur_address = {} jur_address["search"] = legal_addr params["juridicalAddress"] = jur_address logging.info('dl_book_ca_update params=%s', params) dl_res = app.dl.dl_book_ca_update_v2(params) logging.info('dl_book_ca_update res=%s', dl_res) if app.dl.status_code == 200: """ dl_book_ca_update res={'metadata': {'generated_at': '2021-10-06 15:14:27', 'status': 200}, 'data': {'counteragentID': 13413740, 'juridicalAddressID': 47360949, 'state': 'new'}} ERROR={'metadata': {'generated_at': '2021-10-06 15:14:27', 'status': 200}, 'data': {'counteragentID': 13413740, 'juridicalAddressID': 47360949, 'state': 'new'}} """ if dl_res['metadata']['status'] == 200: ret_ca_id = dl_res['data']['counteragentID'] logging.info('state=%s, counteragentID=%s', dl_res['metadata']['status'], ret_ca_id) print(ret_ca_id, end='', flush=True) # add lastUpdate=now() loc_sql = curs.mogrify( u"""INSERT INTO ext.dl_counteragents(id, inn, status) VALUES(%s,%s,%s) ON CONFLICT DO NOTHING;""", (ret_ca_id, inn, 1)) logging.info(u"loc_sql=%s", loc_sql) curs.execute(loc_sql) app.conn.commit() else: err_str = 'ERROR={}'.format(dl_res) logging.error(err_str) print(err_str, file=sys.stderr, end='', flush=True) else: err_str = 'ERROR={}'.format(app.dl.err_msg) logging.error(err_str) print(err_str, file=sys.stderr, end='', flush=True) app.logout()
import logging import sys import dl_app dl_app.parser.add_argument('--addr_id', type=int, required=True, help='ca addr_id') dl_app.parser.add_argument('--contact', type=str, required=True, help='contact name') args = dl_app.parser.parse_args() app = dl_app.DL_app(args=args, description='DL contact add') logging.info("args={}".format(args)) if app.login(auth=True): # addr_id=20463457 : 194292, г. Санкт-Петербург 1-й Верхний пер, д. 12 # Торговый Дом ЭнергоПрибор dl_res = app.dl.dl_contact_add(args.addr_id, args.contact) logging.info('dl_res={}'.format(dl_res)) # OUTPUT: dl_res={'success': {'state': 'new', 'contactID': 89941747}} if 200 == app.dl.status_code: if 'success' in dl_res: ret_contact_id = dl_res['success']['personID'] logging.info('state={}, personID={}'.format( dl_res['success']['state'], ret_contact_id)) print(ret_contact_id, end='', flush=True) app.db_login()