Esempio n. 1
0
def redirect_lens_by_vd(request, parameters=''):
    _form_data = {}
    rm = response_message()
    dh = dict_helper()
    try:
        if request.method == 'POST':
            logging.debug('收到请求 ....')

            logging.debug(AUTHOR)
            entity = parameters
            parameters = {}
            vendor = request.POST.get('vendor', '')
            index = request.POST.get('index', '')
            if vendor == '2':
                vendor = '3'

            if vendor == '0':
                vendor = ''

            if vendor == '9':
                vendor = '5'
            parameters['vendor'] = vendor
            parameters['index'] = index

            rm_req = response_message()
            rm_req.obj = parameters

            lc = lens_contoller()
            rm = lc.get_by_vd(rm_req)

            objs = rm.obj
            vendor_lens_list = []

            for obj in objs:
                vendor_lens = {}
                vendor_lens['sku'] = obj.sku
                vendor_lens['name'] = obj.name
                vendor_lens_list.append(vendor_lens)

                logging.debug(obj.sku)

            rm.obj = vendor_lens_list
            json_body = dh.convert_to_dict(rm)
            logging.debug(json_body)
            json_body = json.dumps(json_body, cls=DateEncoder)

            logging.debug(json_body)
            return HttpResponse(json_body)

        lc = lens_contoller()
        rm = lc.get_all(parameters)
        _form_data['list'] = rm.obj
    except Exception as e:
        rm.capture_execption(e)
        json_body = dh.convert_to_dict(rm)
        json_body = json.dumps(json_body, cls=DateEncoder)
        return HttpResponse(json_body)

    return render(request, "lens_all.html", {"form": _form_data})
Esempio n. 2
0
 def get(self, request, pk=None):
     if not pk:
         logger.debug("PollView GET.")
         return response_message(success=True, data=Poll.objects.json_serialize_all())
     try:
         poll = Poll.objects.get(pk=pk)
         return response_message(success=True, data=poll.json_serialize())
     except Poll.DoesNotExist:
         logger.debug("PollView GET. Requested Poll object Does Not Exists. pk=%d" % pk)
         return response_message(success=False, error=True, text='no such poll')
Esempio n. 3
0
 def get(self, request, pk=None):
     if not pk:
         logger.debug("PollView GET.")
         return response_message(success=True,
                                 data=Poll.objects.json_serialize_all())
     try:
         poll = Poll.objects.get(pk=pk)
         return response_message(success=True, data=poll.json_serialize())
     except Poll.DoesNotExist:
         logger.debug(
             "PollView GET. Requested Poll object Does Not Exists. pk=%d" %
             pk)
         return response_message(success=False,
                                 error=True,
                                 text='no such poll')
    def get_pgorder_item(self):
        """获取pgorder下符合is_inlab为False的条目
        更新inventory_struct的reserve_quantity"""
        rm = response_message()
        try:

            logging.info("get_pgorder_item start")
            pgorders = PgOrder.objects.filter(is_inlab=False)
            file = "wms/data/get_pgorder_item.txt"
            file = settings.RUN_DIR + '/get_pgorder_item_log.txt'
            for item in pgorders:
                logging.info("pgorders id " + str(item.id))
                for pgitem in PgOrderItem.objects.filter(pg_order_entity=item):
                    try:
                        #frame = pgitem.frame[1:8]
                        poc = pgorder_frame_controller()
                        res_rm = poc.get_lab_frame({"pg_frame": item.frame})
                        frame = res_rm.obj['lab_frame']
                        logging.info("pgitem frame " + frame)
                        iis = inventory_struct.objects.get(sku=frame)
                        qty = iis.reserve_quantity + pgitem.quantity
                        iis.reserve_quantity = qty
                        iis.save()
                        logging.info("iis id " + str(iis.id))
                    except Exception as e:
                        with codecs.open(file, 'a', 'utf-8') as w:
                            w.write(u"{0}\t{1}\t{2}\n".format(
                                pgitem.id, pgitem.frame, e))
            logging.info("get_pgorder_item end")
        except Exception as e:
            logging.critical(u"错误:" + str(e))
            rm.capture_execption(e)
            rm.message = u'获取pgorder错误'
Esempio n. 5
0
 def get_statment_month_list(self, request):
     rm = response_message()
     try:
         doc_type = request.GET.get('doc_type', '')
         if doc_type == 'LENS':
             vendor = request.GET.get('filter', '')
             begin_date = request.GET.get('begindate', '')
             end_date = request.GET.get('enddate', '')
             lrs = lens_registration.objects.filter(
                 created_at__range=(begin_date, end_date),
                 laborder_entity__vendor=vendor)
             logging.critical(lrs.query)
             rm.obj = lrs
         else:
             workshop = request.GET.get('workshop', '')
             begin_date = request.GET.get('begindate', '')
             end_date = request.GET.get('enddate', '')
             rgs = received_glasses.objects.filter(
                 created_at__range=(begin_date, end_date))
             logging.debug(rgs.query)
             list = []
             for rg in rgs:
                 lbo = LabOrder.objects.get(id=rg.lab_order_entity)
                 if lbo.workshop == workshop:
                     rg.laborder_entity = lbo
                     list.append(rg)
             rm.obj = list
         return rm
     except Exception as e:
         rm.capture_execption(e)
         logging.critical(e.message)
         return rm
Esempio n. 6
0
    def archived(self, parameters):
        rm = response_message()
        logging.debug('job archived ....')
        try:
            lbo = parameters.get('lbo', None)

            if lbo:
                jts = job_archived.objects.filter(entity_id=lbo.id).order_by('-id')

                if jts.count() > 0:
                    jt = jts[0]
                    logging.critical('repeat records ....')
                else:
                    jt = job_archived()
                    jt.status = lbo.status
                    jt.order_number = lbo.order_number
                    jt.entity_id = lbo.id
                    jt.lab_number = lbo.lab_number
                    jt.frame = lbo.frame
                    jt.lens_sku = lbo.lens_sku
                    jt.comments = lbo.comments

                    jt.save()
                    logging.critical('archived ok ....')

            rm.obj = lbo
            return rm
        except Exception as e:
            rm.capture_execption(e)
            logging.debug(str(e))
        return rm
 def get_laborder_item(self):
     """获取laborder下符合status='' or NONE or REQUEST_NOTES的条目
     更新inventory_struct的reserve_quantity"""
     rm = response_message()
     try:
         logging.info("get_laborder_item start")
         file = "wms/data/get_laborder_item.txt"
         file = settings.RUN_DIR + '/get_laborder_item_log.txt'
         laborders = LabOrder.objects.filter(
             status__in=['', None, 'REQUEST_NOTES'])
         for item in laborders:
             try:
                 logging.info("laborders id " + str(item.id))
                 iis = inventory_struct.objects.get(sku=item.frame)
                 qty = iis.reserve_quantity + item.quantity
                 iis.reserve_quantity = qty
                 iis.save()
             except Exception as e:
                 with codecs.open(file, 'a', 'utf-8') as w:
                     w.write(u"{0}\t{1}\t{2}\n".format(
                         item.id, item.frame, e))
         logging.info("get_laborder_item end")
     except Exception as e:
         logging.critical(u"错误:" + str(e))
         rm.capture_execption(e)
         rm.message = u'获取laborder错误'
Esempio n. 8
0
def redirect_distribute_lab_orders(request, parameters=''):
    _form_data = {}
    _items = []
    rm = response_message()
    rm.code = 0
    dh = dict_helper()

    try:
        rm.obj = 'ok'

        lab_number = request.POST.get('lab_number', '')

        paras = {}
        paras['pa'] = parameters

        paras['user'] = request.user

        lbo = LabOrder.objects.get(lab_number=lab_number)
        paras['lbo'] = lbo

        dc = distribute_controller()
        rm = dc.distribute_vendor(lbo, paras)

    except Exception as e:
        _rm.capture_execption(e)

    json_body = dh.convert_to_dict(rm)
    json_body = json.dumps(json_body, cls=DateEncoder)
    return HttpResponse(json_body)
Esempio n. 9
0
 def post(self, request, pk):
     user = request.user
     try:
         poll = Poll.objects.get(pk=pk)
     except Poll.DoesNotExist:
         return response_message(success=False, error=True, text='no such poll')
     name, json = request.POST.get("name"), request.POST.get("json")
     try:
         result = PollResult.objects.create(
             user=user,
             poll=poll,
             poll_result=json
         )
         result.save()
         return response_message(success=True)
     except IntegrityError:
         return response_message(success=False, error=True, text='cannot save poll to db')
Esempio n. 10
0
def redirect_products_list(request):
    _form_data = {}
    items = []
    _form_data['items'] = items
    try:
        page = request.GET.get('page', 1)
        category_id = request.GET.get('category', 6)
        frame = request.GET.get('frame', '')
        currentPage = int(page)

        query_string = re.sub(r'page=[0-9]+[&]?', '',
                              request.META.get('QUERY_STRING', None))

        rm = response_message()

        _form_data["request_module"] = "Merchandising"
        _form_data["request_feature"] = "Web 产品清单"

        from .models import ProductListController
        plc = ProductListController()
        rm = plc.GetAll(category_id, frame)
        items = rm.obj
        _form_data['rm'] = rm
        count = len(items)
        if query_string:
            query_string = '&' + query_string
        if count > 0:
            _form_data['total'] = count
        logging.debug("count: %s" % count)
        _form_data["base_url"] = plc.base_url
        paginator = Paginator(items, count)  # Show 20 contacts per page
        try:
            items = paginator.page(page)
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            items = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999), deliver last page of results.
            items = paginator.page(paginator.num_pages)

        _form_data["items"] = items
        # GET

        return render(
            request, 'products_list.html', {
                'form_data': _form_data,
                'list': items,
                'currentPage': currentPage,
                'paginator': paginator,
                'requestUrl': '/merchandising/products_list/',
                'query_string': query_string,
            })
    except Exception as ex:
        pass
    return render(request, 'products_list.html', {
        'form_data': _form_data,
        'list': items,
    })
Esempio n. 11
0
def redirect_products_list_csv(request):
    # 查询
    try:
        _form_data = {}
        items = []
        _form_data['items'] = items
        category_id = request.GET.get('category', 6)
        frame = request.GET.get('frame', '')
        min_qty = request.GET.get('min_qty', '')
        max_qty = request.GET.get('max_qty', '')
        cate_type = request.GET.get('cate_type', '')
        if category_id == '':
            category_id = 6

        rm = response_message()

        _form_data["request_module"] = "Merchandising"
        _form_data["request_feature"] = "Web 产品清单"

        from .models import ProductListController
        plc = ProductListController()
        rm = plc.GetAll(category_id, frame, min_qty, max_qty, cate_type)
        items = rm.obj
        response = HttpResponse(content_type='text/csv')
        file_name = 'products_list'
        response[
            'Content-Disposition'] = 'attachment;filename=' + file_name + '.csv'
        response.write(codecs.BOM_UTF8)
        writer = csv.writer(response)
        writer.writerow(['产品清单CSV'])
        writer.writerow([
            'Img Url', 'Request Url', 'Name', 'Product ID', 'SKU', 'Frame SKU',
            'Price', 'Shape', 'Material', 'Bridge', 'Temple Length', 'Width',
            'Weight', 'Category Name', 'Position', 'Quantity', 'Stock Status'
        ])
        base_url = plc.base_url
        product_url = plc.product_url
        for item in items:
            if item.image_url != '':
                img_url = base_url + item.image_url
            else:
                img_url = ''
            if item.request_path != '':
                request_url = product_url + item.request_path
            else:
                request_url = ''

            writer.writerow([
                img_url, request_url, item.name, item.product_id, item.sku,
                item.frame_sku, item.price, item.shape, item.material,
                item.bridge, item.temple_length, item.width, item.weight,
                item.category_name, item.position, item.quantity,
                item.is_in_stock
            ])
        return response
    except Exception as e:
        return HttpResponse(e.message)
Esempio n. 12
0
 def post(self, request, pk):
     user = request.user
     try:
         poll = Poll.objects.get(pk=pk)
     except Poll.DoesNotExist:
         return response_message(success=False,
                                 error=True,
                                 text='no such poll')
     name, json = request.POST.get("name"), request.POST.get("json")
     try:
         result = PollResult.objects.create(user=user,
                                            poll=poll,
                                            poll_result=json)
         result.save()
         return response_message(success=True)
     except IntegrityError:
         return response_message(success=False,
                                 error=True,
                                 text='cannot save poll to db')
 def initialization_inventory_struct(self):
     """初始化inventory_struct下的reserve_quantity为0"""
     rm = response_message()
     try:
         logging.info("initialization_inventory_struct start")
         inventory_struct.objects.all().update(reserve_quantity=0)
         logging.info("initialization_inventory_struct end")
     except Exception as e:
         logging.critical(u"错误:" + str(e))
         rm.capture_execption(e)
         rm.message = u'初始化inventory_struct错误'
    def handle(self, *args, **options):
        # 每次读一个EXCEL文件的第一张表
        logging.critical("******开始读取excel库存文件程序******")
        rm = response_message()
        try:
            if options['import']:
                for var in options['filename']:
                    logging.critical('filename=%s' % var)
                    filename = var
            else:
                rm.message = 'filename not found'
                return rm
            # 获取excel对象
            exl = xlrd.open_workbook(filename)
            # 获取第一张表
            sheet = exl.sheet_by_index(0)

            # 获取仓库代码
            warehouse_code = sheet.cell_value(1, 1)  # excel表中是2行B列
            logging.critical('warehouse_code=%s' % warehouse_code)
            # 获取sku
            sku = sheet.cell_value(2, 1)  # excel表中是3行B列
            logging.critical('sku=%s' % sku)
            # 获取最大行和列
            max_row = sheet.nrows
            max_col = sheet.ncols
            # 获取 sph cyl 列表
            cyl_list = sheet.row_values(6)  # 第6行
            sph_list = sheet.col_values(0)  # 第0列
            # 循环遍历数量,并写入初始化表
            for row in range(7, max_row - 3):
                sph = sph_list[row]  # 第3列的第row行
                for col in range(1, max_col):
                    cyl = cyl_list[col]  # 第2行的第col列
                    quantity = sheet.cell_value(row, col)
                    # 数量大于0才写入 初始化表
                    if quantity:
                        logging.critical("SPH=" + str(sph) + ",散光=" +
                                         str(cyl) + ",数量=" + str(quantity) +
                                         ', 开始写入')
                        iilc = inventory_initial_lens_controller()
                        rm = iilc.add(warehouse_code, sku, float(sph), cyl, 0,
                                      quantity, '', 'init')
                        logging.critical("写入结果=%s" % rm.message)
                    else:
                        logging.critical("SPH=" + str(sph) + ",散光=" +
                                         str(cyl) + ",数量=" + str(quantity) +
                                         ', 不写入')
            logging.critical("操作完成,%s" % rm.message)
        except Exception as e:
            logging.critical("错误:" + str(e))
            rm.capture_execption(e)
            rm.message = str(e)
Esempio n. 15
0
def production_operation_log_list(request):
    sku = request.GET.get('sku', '')
    operation_type = request.GET.get('operation_type', '')
    _form_data = {}
    rm = response_message()
    try:
        page = request.GET.get('page', 1)
        currentPage = int(page)

        ots = inventory_operation_log.objects.filter(
            operation_type=operation_type).order_by('-created_at')
        if sku:
            ots = inventory_operation_log.objects.filter(
                operation_type=operation_type, sku=sku)

        items = ots
        _form_data['list'] = items
        _form_data['total'] = ots.count

        paginator = Paginator(items, 20)  # Show 20 contacts per page
        # 获取URL中除page外的其它参数
        import re
        query_string = re.sub(r'page=[0-9]+[&]?', '',
                              request.META.get('QUERY_STRING', None))
        if query_string:
            query_string = '&' + query_string
        try:
            items = paginator.page(page)
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            items = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999), deliver last page of results.
            items = paginator.page(paginator.num_pages)

    except Exception as e:
        logging.debug(e.message)
        rm.message(e)
        # json_body = dh.convert_to_dict(rm)
        # json_body = json.dumps(json_body, cls=DateEncoder)
        # return HttpResponse(json_body)

    return render(
        request, "production_operation_log_list.html", {
            "form": _form_data,
            'list': items,
            'sku': sku,
            'currentPage': currentPage,
            'paginator': paginator,
            'requestUrl': reverse('production_operation_log_list'),
            'query_string': query_string,
        })
Esempio n. 16
0
def redirect_lens(request, parameters=''):
    _form_data = {}
    rm = response_message()
    dh = dict_helper()
    try:
        if request.method == 'POST':
            entity = parameters
            parameters = {}
            parameters['entity'] = entity

            lc = lens_contoller()
            rm = lc.get_all(parameters)
            json_body = dh.convert_to_dict(rm)
            json_body = json.dumps(json_body, cls=DateEncoder)
            return HttpResponse(json_body)

        lc = lens_contoller()
        rm = lc.get_all(parameters)
        _form_data['list'] = rm.obj
        # 获取页码
        page = request.GET.get('page', 1)
        # 获取URL中除page外的其它参数
        import re
        query_string = re.sub(r'page=[0-9]+[&]?', '',
                              request.META.get('QUERY_STRING', None))
        if query_string:
            query_string = '&' + query_string
        # 分页对象,设置每页20条数据
        paginator = Paginator(_form_data['list'], 20)

        try:
            contacts = paginator.page(page)
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            contacts = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999), deliver last page of results.
            contacts = paginator.page(paginator.num_pages)
    except Exception as e:
        rm.capture_execption(e)
        json_body = dh.convert_to_dict(rm)
        json_body = json.dumps(json_body, cls=DateEncoder)
        return HttpResponse(json_body)

    return render(
        request, "lens_all.html", {
            "form": _form_data,
            'list': contacts,
            'paginator': paginator,
            'query_string': query_string,
        })
 def handle(self, *args, **options):
     logging.critical('---')
     rm = response_message()
     try:
         #self.initialization_channel()
         self.initialization_inventory_struct()
         self.get_pgorder_item()
         self.get_laborder_item()
         self.synchronization_inventory_initial_channel()
         self.generate_channel_receipt()
     except Exception as e:
         logging.critical("错误:" + str(e))
         rm.capture_execption(e)
         rm.message = '初始化表导入入库表出错'
Esempio n. 18
0
    def set_last_entity(self, parameters):
        rm = response_message()
        try:
            jl = job_log()
            last_entity_id = parameters.get('last_entity', 0)

            jl.last_entity_id = last_entity_id
            jl.save()

            return rm
        except Exception as e:
            rm.capture_execption(e)
            logging.debug(str(e))
        return rm
Esempio n. 19
0
    def set_priority(self, request, data):
        rm = response_message()
        try:
            user = {
                'id': 0,
                'username': '******'
            }

            if request:
                user = request.user

            order_number = data.get('order_number', 0)
            priority = data.get('priority', 0)
            if not order_number:
                rm.code = -2
                rm.message = "Pg Order Not found!"
                return rm

            po = PgOrder.objects.get(order_number=order_number)

            if po.status in ['complete', 'shipped', 'delivered']:
                rm.code = -3
                rm.message = "Pg Order status [%s] is not validate" % po.status
                return rm

            PgOrder.objects.filter(order_number=order_number).update(priority=priority)
            PgOrderItem.objects.filter(order_number=order_number).update(priority=priority)
            LabOrder.objects.filter(order_number=order_number).update(priority=priority)

            logging.debug('changed priority ....')

            from api.controllers.tracking_controllers import tracking_operation_controller
            tc = tracking_operation_controller()
            tc.tracking(
                po.type, po.id,
                po.order_number,
                'set_priority',
                'priority',
                user,
                po.priority, priority,
                None,
                None,
            )

            logging.debug('logging operation ....')

        except Exception as ex:
            rm.capture_execption(ex)

        return rm
 def initialization_channel(self):
     """初始化channel"""
     rm = response_message()
     try:
         logging.info("initialization_channel start")
         ch = channel()
         ch.code = "WEBSITE"
         ch.name = "Web Site"
         ch.user_id = 0
         ch.user_name = 'system'
         ch.save()
         logging.info("initialization_channel end")
     except Exception as e:
         logging.critical("error:" + str(e))
         rm.capture_execption(e)
         rm.message = '初始化initialization_channel错误'
 def generate_channel_receipt(self):
     """从inventory_initial_channel 生成入库单"""
     rm = response_message()
     try:
         logging.info("generate_channel_receipt start")
         iics = inventory_initial_channel.objects.all()
         for item in iics:
             inventory_receipt_channel_controller().add(
                 None, "20190618", 'WEBSITE', "INIT", item.sku,
                 item.quantity)
             logging.info("generate_channel_receipt sku" + item.sku)
         logging.info("generate_channel_receipt end")
     except Exception as e:
         logging.critical(u"error:" + str(e))
         rm.capture_execption(e)
         rm.message = u'生成入库单错误'
Esempio n. 22
0
    def get_last_entity_id(self, parameters):
        rm = response_message()
        try:
            objs = job_log.objects.all().order_by('-id')[:1]

            if objs.count() > 0:
                obj = objs[0]
                rm.obj = obj.last_entity_id
            else:
                rm.obj = 0

            return rm
        except Exception as e:
            rm.capture_execption(e)
            logging.debug(str(e))
        return rm
Esempio n. 23
0
    def handle(self, *args, **options):
        logging.critical('---')
        rm = response_message()
        try:
            logging.info("calculation_reserve_quantity start")
            inventory_struct.objects.all().update(reserve_quantity=0)
            sql = """SELECT i.frame as frame, 
                            SUM(i.quantity) AS quantity 
                               FROM oms_pgorder AS p 
                                 LEFT JOIN oms_pgorderitem AS i 
                                 ON p.id = i.pg_order_entity_id 
                               WHERE p.is_inlab=FALSE                     
                                    AND p.status <> 'closed'
                                    AND p.status <> 'canceled' GROUP BY i.frame
                        """
            with connections['pg_oms_query'].cursor() as cursor:
                cursor.execute(sql)
                items = namedtuplefetchall(cursor)
                for item in items:
                    try:
                        #frame = item.frame[1:8]
                        poc = pgorder_frame_controller()
                        res_rm = poc.get_lab_frame({"pg_frame": item.frame})
                        iis = inventory_struct.objects.get(
                            sku=res_rm.obj['lab_frame'])
                        qty = iis.reserve_quantity + item.quantity
                        iis.reserve_quantity = qty
                        iis.save()
                    except Exception as e:
                        pass

                lab_sql = """SELECT frame, SUM(quantity) AS quantity FROM oms_laborder  WHERE (`status` in ('', NULL, 'REQUEST_NOTES') OR (`status`='ONHOLD' AND current_status in ('', NULL, 'REQUEST_NOTES'))) GROUP BY frame"""
                cursor.execute(lab_sql)
                laborders = namedtuplefetchall(cursor)
                for item in laborders:
                    try:
                        iis = inventory_struct.objects.get(sku=item.frame)
                        qty = iis.reserve_quantity + item.quantity
                        iis.reserve_quantity = qty
                        iis.save()
                    except Exception as e:
                        pass
            logging.info("calculation_reserve_quantity end")
        except Exception as e:
            logging.critical("错误:" + str(e))
            rm.capture_execption(e)
            rm.message = str(e)
Esempio n. 24
0
    def get_all(self, parameters):
        rm = response_message()
        try:
            logging.debug('########################################')
            try:
                lenss = None
                rm.obj = lenss
                return rm
            except Exception as e:
                rm.capture_execption(e)
                logging.debug(str(e))
            return rm
        except Exception as e:
            rm.capture_execption(e)
            logging.debug(str(e))

            return rm
Esempio n. 25
0
def redirect_refresh_product_index(request):
    '''
     刷新产品索引
    :param request:
    :return:
    '''
    rm = response_message()
    dh = dict_helper()
    if request.method == 'POST':
        try:
            requrl = PG_SYNC_API_BASE_URL + PG_SYNC_COMMANDS_URL + PG_SYNC_COMMAND_REFRESH_PRODUCT_INDEX + '/'
            logging.debug(requrl)
            req_data = {}
            req_data['token'] = PG_SYNC_API_TOKEN
            req_data = json.dumps(req_data)
            headers = {'Content-Type': 'application/json'}
            req = urllib2.Request(url=requrl, data=req_data, headers=headers)

            try:
                res = urllib2.urlopen(req)
                logging.debug(res)
                res_data = res.read()
                logging.debug(res_data)
                return HttpResponse(res_data)
            except Exception as e:
                rm.capture_execption(e)
                logging.debug(e.message)

            json_body = dh.convert_to_dict(rm)
            json_body = json.dumps(json_body, cls=DateEncoder)
            return HttpResponse(json_body)
        except Exception as e:
            rm.capture_execption(e)
            logging.debug(e.message)

            json_body = dh.convert_to_dict(rm)
            json_body = json.dumps(json_body, cls=DateEncoder)
            return HttpResponse(json_body)

    else:
        rm.code = 400
        rm.message = '无效请求'
        json_body = dh.convert_to_dict(rm)
        json_body = json.dumps(json_body, cls=DateEncoder)
        return HttpResponse(json_body)
Esempio n. 26
0
def redirect_lens_orders(request, parameters=''):
    _form_data = {}
    rm = response_message()
    dh = dict_helper()
    try:
        page = request.GET.get('page', 1)
        currentPage = int(page)
        loc = lens_order_contoller()
        rm = loc.get_all(parameters)

        items = rm.obj
        _form_data['list'] = items
        _form_data['total'] = rm.count

        paginator = Paginator(items, 20)  # Show 20 contacts per page
        # 获取URL中除page外的其它参数
        import re
        query_string = re.sub(r'page=[0-9]+[&]?', '',
                              request.META.get('QUERY_STRING', None))
        if query_string:
            query_string = '&' + query_string
        try:
            items = paginator.page(page)
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            items = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999), deliver last page of results.
            items = paginator.page(paginator.num_pages)

    except Exception as e:
        rm.capture_execption(e)
        # json_body = dh.convert_to_dict(rm)
        # json_body = json.dumps(json_body, cls=DateEncoder)
        # return HttpResponse(json_body)

    return render(
        request, "lens_orders.html", {
            "form": _form_data,
            'list': items,
            'currentPage': currentPage,
            'paginator': paginator,
            'requestUrl': reverse('lens_orders'),
            'query_string': query_string,
        })
Esempio n. 27
0
def redirect_tasks(request, parameters=''):
    _form_data = {}
    rm = response_message()
    dh = dict_helper()
    try:
        if request.method == 'POST':
            entity = parameters
            parameters = {}
            parameters['entity'] = entity

        _form_data['list'] = rm.obj
    except Exception as e:
        rm.capture_execption(e)
        json_body = dh.convert_to_dict(rm)
        json_body = json.dumps(json_body, cls=DateEncoder)
        return HttpResponse(json_body)

    return render(request, "tasks.html", {"form": _form_data})
Esempio n. 28
0
    def refund_ra(self, obj):
        nw = datetime.datetime.now()
        rm = response_message()

        data = {}
        data['order_number'] = obj.order_number
        poc = pg_order_controller()
        rm = poc.refund(data)

        if rm.code != 0:
            return rm

        obj.state = '90'
        obj.status = '40'
        obj.is_refund = True
        obj.refund_at = nw

        return rm
Esempio n. 29
0
    def tracking(self, parameters):
        rm = response_message()
        logging.debug('job tracking ....')
        try:
            lbo = parameters.get('lbo', None)

            if lbo:
                status = lbo.status

                if not status:
                    status = 'NEW'

                last_status = None

                jts = job_tracking.objects.filter(entity_id=lbo.id).order_by('-id')
                jt = None

                if jts.count() > 0:
                    jt = jts[0]

                if jt:
                    last_status = jt.status

                if not last_status == status:
                    jt = job_tracking()
                    jt.status = status
                    jt.order_number = lbo.order_number
                    jt.entity_id = lbo.id
                    jt.lab_number = lbo.lab_number
                    jt.frame = lbo.frame
                    jt.lens_sku = lbo.lens_sku
                    jt.comments = lbo.comments

                    jt.save()
                    logging.critical('tracking ok ....')
                else:
                    logging.critical('repeat records ....')

            rm.obj = lbo
            return rm
        except Exception as e:
            rm.capture_execption(e)
            logging.debug(str(e))
        return rm
Esempio n. 30
0
    def handle(self, *args, **options):
        logging.critical('---开始从镜片库存初始化表-》写入-》镜片库存入库表---')
        rm = response_message()
        try:
            if options['startid']:
                for var in options['fileid']:
                    logging.critical('fileid=%s' % var)
                    fileid = var  # 获取输入的ID
            else:
                fileid = 1
            try:
                iils = inventory_initial_lens.objects.filter(
                    id__gte=fileid).order_by("id")
            except Exception as e:
                logging.critical("错误:" + str(e))
                rm.capture_execption(e)
                rm.message = '获取初始化表出错'
            for iil in iils:
                # 写入
                # 通过时间获取编号
                time_now = time.strftime('%Y%m%d', time.localtime(time.time()))

                sku = iil.sku
                quantity = iil.quantity
                cyl = iil.cyl
                sph = iil.sph
                add = iil.add
                entity_id = iil.entity_id
                warehouse_code = iil.warehouse_code
                batch_number = ''  # iil.batch_number 在镜片库存表-批次 里自动生成
                irlc = inventory_receipt_lens_controller()
                # 当前默认上海仓
                rm = irlc.add('', time_now, 'INIT', warehouse_code, sku,
                              float(quantity), float(sph), float(cyl),
                              float(add), 0, '', '', batch_number, 'init')
            logging.critical('---写入-》镜片库存入库表完成---')
        except Exception as e:
            logging.critical("错误:" + str(e))
            rm.capture_execption(e)
            rm.message = '初始化表导入入库表出错'
Esempio n. 31
0
    def handle(self, *args, **options):
        # 每次读一个EXCEL文件的第一张表
        logging.critical("******开始读取文件******")
        rm = response_message()
        try:
            file_name = ""
            if options['import']:
                for var in options['filename']:
                    logging.critical('filename=%s' % var)
                    filename = var
            else:
                rm.message = 'filename not found'
                return rm
            logging.critical('filename: %s' % filename)
            full_name = '%s/%s' % (settings.BASE_DIR, filename)
            logging.debug(full_name)
            sql = """
                select order_number as origin_order_number,item_id as origin_item_id,create_at as created_at,frame from oms_pgorderitem where id in (select base_entity from oms_laborder where date(create_at)>=date('2020.01.01') 
                and lab_number like '%-R%');
            """
            json_data = []
            obj = {}
            with connections['default'].cursor() as cursor:
                cursor.execute(sql)
                items = dictfetchall(cursor)

            json_data = json.dumps(items, cls=DateEncoder)

            logging.debug(json_data)
            fh = FileHelper(full_name)
            fh.write(json_data)

            logging.critical('after 10 seconds will start remake ....')

        except Exception as e:
            logging.critical("错误:" + str(e))
            rm.capture_execption(e)
            rm.message = str(e)
 def synchronization_inventory_initial_channel(self):
     """同步inventory_struct表中 status == IN_STOCK数据到inventory_initial_channel"""
     rm = response_message()
     try:
         logging.info("synchronization_inventory_initial_channel start")
         #iiss = inventory_struct.objects.filter(status='IN_STOCK')
         iiss = inventory_struct.objects.all()
         for item in iiss:
             qty = item.quantity - item.lock_quantity - item.reserve_quantity
             iic = inventory_initial_channel()
             iic.sku = item.sku
             iic.quantity = qty
             iic.channel_code = 'WEBSITE'
             iic.channel_name = 'Web Site'
             iic.user_id = 0
             iic.user_name = 'system'
             iic.save()
             logging.info("inventory_initial_channel id" + str(iic.id))
         logging.info("synchronization_inventory_initial_channel end")
     except Exception as e:
         logging.critical(u"错误:" + str(e))
         rm.capture_execption(e)
         rm.message = u'同步数据错误'
Esempio n. 33
0
 def get(self, request):
     logger.debug('LogoutView GET.')
     logout(request)
     return response_message(success=True)