Exemple #1
0
    def _complete_to_modify_puyuan(self, request, queryset):
        from brick.table.t_operation_log_online_syn_py import t_operation_log_online_syn_py
        operation_log_obj = t_operation_log_online_syn_py(DBConn=connection)
        from app_djcelery.tasks import online_modify_puyuan_task

        first_name = request.user.first_name
        user_name = request.user.username
        now_time = datetime.now()

        sResult = {'rcode': '0', 'messages': ''}  # 初始状态
        opnum = 'modify_sku_%s_%s' % (now_time.strftime('%Y%m%d%H%M%S'),
                                      user_name)
        try:
            param = {}  # 操作日志的参数
            param['OpNum'] = opnum
            param['OpKey'] = queryset.values_list("MainSKU", flat=True)
            param['OpType'] = 'modify_sku'
            param['Status'] = 'runing'
            param['ErrorInfo'] = ''
            param['OpPerson'] = request.user.first_name
            param['OpTime'] = now_time
            param['OpStartTime'] = now_time
            param['OpEndTime'] = None
            param['aNum'] = len(queryset)
            param['rNum'] = 0
            param['eNum'] = 0
            iResult = operation_log_obj.createLog(param)
            assert iResult['errorcode'] == 0, "insert log error."
            modify_data_list = []
            for qs in queryset:
                modify_id = int(qs.id)
                details = eval(qs.Details) if qs.Details else {}
                modify_status = qs.Mstatus
                main_sku = qs.MainSKU
                apply_name = qs.SQStaffNameing if qs.SQStaffNameing else ''
                select = qs.Select
                temp_dict = {
                    'modify_id': modify_id,
                    'details': details,
                    'modify_status': modify_status,
                    'main_sku': main_sku,
                    'apply_name': apply_name,
                    'select': select
                }
                modify_data_list.append(temp_dict)
            online_modify_puyuan_task.delay(modify_data_list=modify_data_list,
                                            first_name=first_name,
                                            opnum=opnum)
            sResult['rcode'] = 1
            sResult['KEY'] = opnum
        except Exception, e:
            sResult['rcode'] = -1
            sResult['messages'] = '%s:%s' % (Exception, e)
            messages.error(request, '------%s' % sResult['messages'])
def online_sku_binding_add_puyuan(sku_link_data_list, opnum):
    """新增普源SKU绑定信息"""
    operation_log_obj = t_operation_log_online_syn_py(DBConn=connection)
    start_time = end_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    aNum = len(sku_link_data_list)
    rNum = 0
    eNum = 0
    operation_log_obj.update_banding_schedue(opnum, start_time, end_time, aNum,
                                             rNum, eNum)

    public_obj = public()
    pyconn_obj = py_conn()
    conn_result = pyconn_obj.py_conn_database()
    sqlserver_cursor = conn_result['py_cursor']
    success_add_id_list = []
    i = 0
    for sku_link_data in sku_link_data_list:
        if sqlserver_cursor:
            b_goodsskulinkshop_data_list = get_param(
                sku_link_data=sku_link_data, opflag='add')
            result = public_obj.goodsskulinkshop_info_to_pydb(
                b_goodsskulinkshop_data_list=b_goodsskulinkshop_data_list,
                sqlserverInfo=conn_result)
            if result['errorcode'] == 0:
                success_add_id_list.append(sku_link_data['id'])
                rNum += 1
            else:
                eNum += 1
        else:
            eNum += 1
        operation_log_obj.update_banding_schedue(opnum, start_time, end_time,
                                                 aNum, rNum, eNum)
        i += 1
        if i == 100:
            b_goodsskulinkshop.objects.filter(
                NID__in=success_add_id_list).update(Falg=1)
            i = 0
            success_add_id_list = []
    b_goodsskulinkshop.objects.filter(NID__in=success_add_id_list).update(
        Falg=1)
    pyconn_obj.py_close_conn_database()

    end_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    endFlag = 1
    operation_log_obj.update_banding_schedue(opnum, start_time, end_time, aNum,
                                             rNum, eNum, endFlag)
Exemple #3
0
    def _complete_to_write_puyuan(self, request, objs):
        from datetime import datetime
        from brick.table.t_operation_log_online_syn_py import t_operation_log_online_syn_py
        from app_djcelery.tasks import online_syn_to_puyuan_task
        from django.db import connection
        operation_log_obj = t_operation_log_online_syn_py(DBConn=connection)

        first_name = request.user.first_name
        user_name = request.user.username
        now_time = datetime.now()

        sResult = {'rcode': '0', 'messages': ''}  # 初始状态
        opnum = 'add_sku_%s_%s' % (now_time.strftime('%Y%m%d%H%M%S'),
                                   user_name)
        try:
            param = {}  # 操作日志的参数
            param['OpNum'] = opnum
            param['OpKey'] = objs.values_list("MainSKU", flat=True)
            param['OpType'] = 'add_sku'
            param['Status'] = 'runing'
            param['ErrorInfo'] = ''
            param['OpPerson'] = request.user.first_name
            param['OpTime'] = now_time
            param['OpStartTime'] = now_time
            param['OpEndTime'] = None
            param['aNum'] = len(objs)
            param['rNum'] = 0
            param['eNum'] = 0

            enter_id_list = []
            iResult = operation_log_obj.createLog(param)
            assert iResult['errorcode'] == 0, "insert log error."
            for obj in objs:
                enter_id_list.append(int(obj.id))
            online_syn_to_puyuan_task.delay(enter_id_list=enter_id_list,
                                            optype='add_sku',
                                            opnum=opnum,
                                            first_name=first_name,
                                            user_name=user_name)
            sResult['rcode'] = 1
            sResult['KEY'] = opnum
        except Exception, ex:
            sResult['rcode'] = -1
            sResult['messages'] = '%s:%s' % (Exception, ex)
def online_sku_binding_delete_puyuan(sku_link_data_list, opnum):
    """删除普源SKU绑定信息"""
    public_obj = public()
    operation_log_obj = t_operation_log_online_syn_py(DBConn=connection)
    pyconn_obj = py_conn()
    conn_result = pyconn_obj.py_conn_database()
    sqlserver_cursor = conn_result['py_cursor']

    success_delete_id_list = []
    success_delete_nid_list = []
    for sku_link_data in sku_link_data_list:
        shop_sku = sku_link_data['shop_sku']
        if sqlserver_cursor:
            b_goodsskulinkshop_data_list = get_param(
                sku_link_data=sku_link_data, opflag='delete')
            result = public_obj.goodsskulinkshop_info_to_pydb(
                b_goodsskulinkshop_data_list=b_goodsskulinkshop_data_list,
                sqlserverInfo=conn_result)
            if result['errorcode'] == 0:
                status = 'over'
                error_info = str(b_goodsskulinkshop_data_list)
                success_delete_id_list.append(sku_link_data['id'])
                success_delete_nid_list.append(sku_link_data['link_id'])
            else:
                status = 'error'
                error_info = result['errortext']
        else:
            status = 'error'
            error_info = u'普源数据库连接失败'
        ooResult = operation_log_obj.updateStatusP(opnum=opnum,
                                                   opkey=shop_sku,
                                                   status=status,
                                                   elogs=error_info)
        assert ooResult['errorcode'] == 0, ooResult['errortext']
    t_log_sku_shopsku_change.objects.filter(
        id__in=success_delete_id_list).update(Status='DELETED')
    b_goodsskulinkshop.objects.filter(NID__in=success_delete_nid_list).delete()
    pyconn_obj.py_close_conn_database()
    def to_export_py(self, request, queryset):
        pyconn = py_conn()
        sqlserverinfo = pyconn.py_conn_database()
        try:
            result = {'errorcode': 0, 'errortext': ''}
            strAllSKU = ""
            data_list = []
            for qs in queryset:
                #获取大类、小类名称
                if qs.LRTime is None:
                    qs.LRTime = fbaDateTime.now()
                b_goods_data = {
                    'GoodsCategoryID': '',
                    'CategoryCode': '',
                    'GoodsCode': qs.SKU,
                    'GoodsName': qs.Name2,
                    'ShopTitle': '',
                    'SKU': qs.SKU,
                    'BarCode': qs.BarCode,
                    'FitCode': '',
                    'MultiStyle': qs.MultiStyle,
                    'Material': qs.Material,
                    'Class': qs.Class,
                    'Model': qs.Model,
                    'Unit': qs.Unit,
                    'Style': qs.Style,
                    'Brand': qs.Brand,
                    'LocationID': '',
                    'Quantity': qs.Quantity,
                    'SalePrice': qs.SalePrice,
                    'CostPrice': qs.CostPrice,
                    'AliasCnName': qs.ReportName2,
                    'AliasEnName': qs.ReportName,
                    'Weight': qs.Weight,
                    'DeclaredValue': qs.DeclaredValue,
                    'OriginCountry': qs.OriginCountry,
                    'OriginCountryCode': qs.OriginCountryCode,
                    'ExpressID': '',
                    'Used': '',
                    'BmpFileName': '',
                    'BmpUrl': qs.BmpUrl,
                    'MaxNum': qs.MaxNum,
                    'MinNum': qs.MinNum,
                    'GoodsCount': '',
                    'SupplierID': '',
                    'Notes': qs.Remark,
                    'SampleFlag': qs.SampleFlag,
                    'SampleCount': qs.SampleCount,
                    'SampleMemo': '',
                    'CreateDate': str(qs.LRTime)[:10],
                    'GroupFlag': '',
                    'SalerName': qs.SalerName,
                    'SellCount': '',
                    'SellDays': qs.SellDays,
                    'PackFee': qs.InnerPrice,
                    'PackName': qs.PackingID,
                    'GoodsStatus': qs.GoodsStatus,
                    'DevDate': str(qs.LRTime)[:10],
                    'SalerName2': qs.SalerName2,
                    'BatchPrice': qs.BatchPrice,
                    'MaxSalePrice': qs.MaxSalePrice,
                    'RetailPrice': qs.RetailPrice,
                    'MarketPrice': qs.MarketPrice,
                    'PackageCount': qs.MinPackNum,
                    'ChangeStatusTime': '',
                    'StockDays': qs.StockDays,
                    'StoreID': '',
                    'Purchaser': qs.Purchaser,
                    'LinkUrl': qs.LinkUrl,
                    'LinkUrl2': qs.LinkUrl2,
                    'LinkUrl3': qs.LinkUrl3,
                    'StockMinAmount': qs.StockMinAmount,
                    'MinPrice': qs.MinPrice,
                    'HSCODE': qs.HSCODE,
                    'ViewUser': '',
                    'InLong': qs.InLong,
                    'InWide': qs.InWide,
                    'InHigh': qs.InHigh,
                    'InGrossweight': qs.InGrossweight,
                    'InNetweight': qs.InNetweight,
                    'OutLong': qs.OutLong,
                    'OutWide': qs.OutWide,
                    'OutHigh': qs.OutHigh,
                    'OutGrossweight': qs.OutGrossweight,
                    'OutNetweight': qs.OutNetweight,
                    'ShopCarryCost': qs.ShopFreight,
                    'ExchangeRate': qs.ExchangeRate,
                    'WebCost': '',
                    'PackWeight': qs.PackWeight,
                    'LogisticsCost': '',
                    'GrossRate': '',
                    'CalSalePrice': '',
                    'CalYunFei': '',
                    'CalSaleAllPrice': '',
                    'PackMsg': qs.PackMsg,
                    'ItemUrl': qs.ItemUrl,
                    'IsCharged': qs.Electrification,
                    'DelInFile': '',
                    'Season': qs.Season,
                    'IsPowder': qs.Powder,
                    'IsLiquid': qs.Liquid,
                    'possessMan1': qs.possessMan1,
                    'possessMan2': qs.possessMan2,
                    'LinkUrl4': qs.LinkUrl4,
                    'LinkUrl5': qs.LinkUrl5,
                    'LinkUrl6': qs.LinkUrl6,
                    'isMagnetism': '',
                    'NoSalesDate': '',
                    'NotUsedReason': '',
                    'PackingRatio': qs.DegreeOfDifficulty,
                    'shippingType': '',
                    'FreightRate': qs.LogisticsPrice,
                    'USEDueDate': '',
                    'SupplierName': qs.SupplierName,
                    'LargeCategoryName': qs.LargeCategory,
                    'SmallCategoryName': qs.SmallCategory,
                    'Storehouse': qs.Storehouse,
                    'ProductAttr': qs.ContrabandAttribute
                }
                strAllSKU = strAllSKU + qs.SKU + ","
                data_list.append(b_goods_data)

            from brick.table.t_operation_log_online_syn_py import t_operation_log_online_syn_py
            from django.db import connection
            operation_log_obj = t_operation_log_online_syn_py(
                DBConn=connection)
            param = {}  # 操作日志的参数
            param['OpNum'] = 'add_fbasku_%s_%s' % (fbaDateTime.now().strftime(
                '%Y%m%d%H%M%S'), request.user.username)
            param['OpKey'] = [
                'FBA_Main',
            ]
            param['OpType'] = 'FBA'
            param['Status'] = 'runing'
            param['ErrorInfo'] = "sucess syn_SKU:" + str(
                queryset.values_list("SKU", flat=True))
            param['OpPerson'] = request.user.first_name
            param['OpTime'] = fbaDateTime.now()
            param['OpStartTime'] = fbaDateTime.now()
            param['OpEndTime'] = fbaDateTime.now()
            param['aNum'] = len(queryset)
            param['rNum'] = 0
            param['eNum'] = 0
            param['SKU'] = strAllSKU
            iResult = operation_log_obj.createLog(param)

            # 写入普源
            public_obj = public()
            result = public_obj.sku_info_to_pydb(b_goods_data_list=data_list,
                                                 sqlserverInfo=sqlserverinfo,
                                                 mainsku=qs.MainSKU,
                                                 pydb_connect=hqdbconn)

            if result['errorcode'] != 0 and result['errortext'].find(
                    'FBA') == -1:
                error_info = result['errortext']
                messages.error(request,
                               "同步普源错误,请联系开发人员;错误信息:%s" % (error_info))
                operation_log_obj.update_error(
                    param['OpNum'], "errorcode:" + str(result['errorcode']) +
                    ";errortext:" + str(result['errortext']))
            else:
                self.t_product_mainsku_sku_deal(request, queryset)
                if len(result['errortext']) > 0:
                    messages.info(
                        request, "已存在普源SKU:%s,不需要重复做同步,已更新为已录入。" %
                        (result['errortext']))
                else:
                    # 将状态设置为已录入
                    messages.info(request, "选中商品已成功同步普源,并将当前数据更新为已录入。")
                operation_log_obj.update_success(param['OpNum'],
                                                 param['ErrorInfo'],
                                                 param['aNum'], 0)
            pyconn.py_close_conn_database()
        except Exception, ex:
            messages.error(request, "同步普源错误,请联系开发人员:%s,%s" % (Exception, ex))
            operation_log_obj.update_error(
                param['OpNum'],
                str(Exception) + str(ex) + ";errorcode:" +
                str(result['errorcode']) + ";errortext:" +
                str(result['errortext']))
            pyconn.py_close_conn_database()
def online_sku_binding_modify_puyuan(sku_link_data_list, opnum):
    """修改普源SKU绑定信息"""
    public_obj = public()
    operation_log_obj = t_operation_log_online_syn_py(DBConn=connection)
    pyconn_obj = py_conn()
    conn_result = pyconn_obj.py_conn_database()
    sqlserver_cursor = conn_result['py_cursor']

    for sku_link_data in sku_link_data_list:
        old_sku = sku_link_data['old_sku']
        new_sku = sku_link_data['new_sku']
        shop_sku = sku_link_data['shop_sku']
        person_code = sku_link_data['person_code']
        memo = sku_link_data['memo']
        shop_name = sku_link_data['shop_name']
        if sqlserver_cursor:
            delete_data_dict = {
                'sku': old_sku,
                'shop_sku': shop_sku,
                'person_code': person_code,
                'memo': memo,
                'shop_name': shop_name
            }
            add_data_dict = {
                'sku': new_sku,
                'shop_sku': shop_sku,
                'person_code': person_code,
                'memo': memo,
                'shop_name': shop_name
            }
            b_goodsskulinkshop_data_delete_list = get_param(
                sku_link_data=delete_data_dict, opflag='delete')
            b_goodsskulinkshop_data_add_list = get_param(
                sku_link_data=add_data_dict, opflag='add')

            delete_result = public_obj.goodsskulinkshop_info_to_pydb(
                b_goodsskulinkshop_data_list=
                b_goodsskulinkshop_data_delete_list,
                sqlserverInfo=conn_result)
            if delete_result['errorcode'] == 0:
                add_result = public_obj.goodsskulinkshop_info_to_pydb(
                    b_goodsskulinkshop_data_list=
                    b_goodsskulinkshop_data_add_list,
                    sqlserverInfo=conn_result)
                if add_result['errorcode'] == 0:
                    status = 'over'
                    error_info = str(delete_data_dict) + str(add_data_dict)
                    link_id = sku_link_data['id']
                    b_goodsskulinkshop.objects.filter(NID=link_id).update(
                        Falg=3, SKU=new_sku)

                    shop_code_list = (u'{}'.format(
                        delete_data_dict['memo'])).split('-')
                    if len(shop_code_list) >= 2:
                        shopname = u'{}-{}'.format(shop_code_list[0],
                                                   shop_code_list[1])
                    else:
                        shopname = delete_data_dict['memo']
                    classshopsku_obj = classshopsku(db_conn=None,
                                                    redis_conn=redis_coon,
                                                    shopname=shopname)
                    classshopsku_obj.setSKU(shopsku=shop_sku, sku=new_sku)
                else:
                    status = 'error'
                    error_info = add_result['errortext']
            else:
                status = 'error'
                error_info = delete_result['errortext']
        else:
            status = 'error'
            error_info = u'普源数据库连接失败'
        ooResult = operation_log_obj.updateStatusP(opnum=opnum,
                                                   opkey=shop_sku,
                                                   status=status,
                                                   elogs=error_info)
        assert ooResult['errorcode'] == 0, ooResult['errortext']
    pyconn_obj.py_close_conn_database()
Exemple #7
0
    def _online_tort_syn_puyuan(self, request, queryset):
        from brick.table.t_operation_log_online_syn_py import t_operation_log_online_syn_py
        operation_log_obj = t_operation_log_online_syn_py(DBConn=connection)
        from app_djcelery.tasks import online_tort_syn_to_puyuan_task

        first_name = request.user.first_name
        user_name = request.user.username
        now_time = datetime.now()

        sResult = {'rcode': '0', 'messages': ''}  # 初始状态
        opnum = 'sku_tort_%s_%s' % (now_time.strftime('%Y%m%d%H%M%S'),
                                    user_name)
        try:
            param = {}  # 操作日志的参数
            param['OpNum'] = opnum
            param['OpKey'] = queryset.values_list("MainSKU", flat=True)
            param['OpType'] = 'sku_tort'
            param['Status'] = 'runing'
            param['ErrorInfo'] = ''
            param['OpPerson'] = first_name
            param['OpTime'] = now_time
            param['OpStartTime'] = now_time
            param['OpEndTime'] = None
            param['aNum'] = len(queryset)
            param['rNum'] = 0
            param['eNum'] = 0
            iResult = operation_log_obj.createLog(param)
            assert iResult['errorcode'] == 0, "insert log error."

            all_data_list = []
            non_existent_mainsku = []
            for qs in queryset:
                main_sku = qs.MainSKU
                single_data_list = []
                if qs.Step not in [tort.TORT_LIST, tort.COM_TORT_LIST]:
                    messages.error(request,
                                   u'此主SKU(%s)暂不能导出,非侵权状态!' % (main_sku, ))
                    continue
                sku_objs = t_product_mainsku_sku.objects.filter(
                    MainSKU=qs.MainSKU)
                id_1 = 0
                id_2 = 0
                if sku_objs.exists():
                    for sku_obj in sku_objs:
                        if sku_obj.ProductSKU is not None and sku_obj.ProductSKU.strip(
                        ) != '':
                            sku = sku_obj.ProductSKU
                            if qs.Intellectual == 'CopyRights':
                                link_url3 = '著作权(CopyRights)'
                            elif qs.Intellectual == 'TradeMark':
                                link_url3 = '商标(TradeMark)'
                            elif qs.Intellectual == 'DesignPatent':
                                link_url3 = '外观专利(DesignPatent)'
                            elif qs.Intellectual == 'Patent':
                                link_url3 = '专利(Patent)'
                            else:
                                link_url3 = '其它(Else)'
                            #link_url3 = qs.ComplainReason
                            link_url6 = qs.Site
                            temp_dict_1 = {
                                'SKU': sku,
                                'columnname': 'LinkUrl3',
                                'columnvalue': link_url3
                            }
                            temp_dict_2 = {
                                'SKU': sku,
                                'columnname': 'LinkUrl6',
                                'columnvalue': link_url6
                            }
                            single_data_list.append(temp_dict_1)
                            single_data_list.append(temp_dict_2)

                    if qs.Step in [tort.TORT_LIST]:
                        id_1 = int(qs.ID)
                    else:
                        id_2 = int(qs.ID)
                    all_data_list.append({
                        'main_sku': main_sku,
                        'single_data_list': single_data_list,
                        'id_1': id_1,
                        'id_2': id_2
                    })
                else:
                    all_data_list.append({
                        'main_sku': main_sku,
                        'single_data_list': [],
                        'id_1': id_1,
                        'id_2': id_2
                    })
            online_tort_syn_to_puyuan_task.delay(tort_data_list=all_data_list,
                                                 opnum=opnum,
                                                 now_time=now_time,
                                                 user_name=user_name)
            sResult['rcode'] = 1
            sResult['KEY'] = opnum
        except Exception, e:
            sResult['rcode'] = -1
            sResult['messages'] = '%s:%s' % (Exception, e)