def order_create(request): if request.method == 'POST': form = OrderCreateForm(user=request.user, data=request.POST) if form.is_valid(): order_new = None try: order_new = form.save(request=request) except Order.LockOrderError: print('LockOrderError') person = get_person(request.user) if person: today = datetime.date.today() begin_datetime = datetime.datetime(today.year, today.month, today.day, 0, 0, 0) \ .astimezone(tz=pytz.timezone(settings.TIME_ZONE)) end_datetime = datetime.datetime(today.year, today.month, today.day, 23, 59, 59) \ .astimezone(tz=pytz.timezone(settings.TIME_ZONE)) set_orders = Order.objects.filter(person=person, date__range=(begin_datetime, end_datetime)) \ .order_by('-id') if len(set_orders) > 0: order_new = set_orders[0] if order_new: return render(request, 'orders/order.html', {'order': order_new, 'created': True}) else: return render(request, 'orders/create.html', {'form': form}) else: form = OrderCreateForm(user=request.user, initial={ 'delivery': datetime.datetime.now().astimezone(tz=pytz.timezone(settings.TIME_ZONE)) + datetime.timedelta( days=1), 'receiver_bills': str(request.user.email) } ) return render(request, 'orders/create.html', {'form': form})
def save(self): self.session[settings.CART_SESSION_ID] = self.cart self.session.modified = True self.price_exchange = False person = get_person(self.user) if person: person.lock = False
def our_api(request): person = get_person(request.user) customer = get_customer(request.user) uid = '' if person: if person.uid in ('','xxx'): person.create_uid() uid = person.uid if not customer: files = [] else: files = customer.get_files() for file in files: type_file = file['type'] file['url'] = f'http://b2b.santex.su/api/v1/outside/?uid={uid}&type={type_file}' return render(request, 'files/files_API.html', {'uid': uid, 'files': files})
def get(request): current_customer = get_customer(request.user) current_customer_id = None current_customer_price_id = 0 current_customer_suffix = '' if current_customer: current_customer_id = current_customer.id current_customer_price_id = current_customer.price.id current_customer_suffix = current_customer.suffix if current_customer_id is None: return Response({'error': 'Не удалось авторизовать пользователя'}, status=HTTP_403_FORBIDDEN) current_person = get_person(request.user) current_person_id = 0 if current_person: current_person_id = current_person.id param = [current_customer_id] filter_code = '' for key, value in request.GET.items(): if key.startswith('filter_code'): filter_code += f"{'' if filter_code == '' else ','}{value}" filter_article = '' for key, value in request.GET.items(): if key.startswith('filter_article'): filter_article += f"{'' if filter_article == '' else ','}{value}" filter_barcode = '' for key, value in request.GET.items(): if key.startswith('filter_barcode'): filter_barcode += f"{'' if filter_barcode == '' else ','}{value}" filter_brand = '' for key, value in request.GET.items(): if key.startswith('filter_brand'): filter_brand += f"{'' if filter_brand == '' else ','}{value}" filter_quantity = request.GET.get('filter_quantity', '') str_filter_code = ' TRUE ' if filter_code != '': param += [ list(map(lambda x: x.upper(), filter_code.split(','))), ] str_filter_code = 'UPPER(_product.code::text) = ANY(%s)' str_filter_article = ' TRUE ' if filter_article != '': param += [ list(map(lambda x: x.upper(), filter_article.split(','))), ] str_filter_article = 'UPPER(_product.code_brand::text) = ANY(%s)' str_filter_barcode = ' TRUE ' if filter_barcode != '': param += [ list(map(lambda x: x.upper(), filter_barcode.split(','))), ] str_filter_barcode = 'UPPER(_product.barcode::text) = ANY(%s)' str_filter_brand = ' TRUE ' if filter_brand != '': param += [ list(map(lambda x: x.upper(), filter_brand.split(','))), ] str_filter_brand = 'UPPER(_brand.name::text) = ANY(%s)' str_filter_quantity = ' TRUE ' if filter_quantity != '' and filter_quantity.upper() == 'YES': str_filter_quantity = 'COALESCE(_inventories.quantity, 0) > 0' queryset = Product.objects.raw( f"""WITH result AS ( SELECT _product.id AS id, _product.code AS code_, _product.guid AS guid_, _product.code_brand AS article_, _product.barcode AS barcode_, _product.name AS name_, _product.matrix AS matrix_, _product.image AS image, COALESCE(_brand.name, '') AS brand_name_, COALESCE(_customersprices.discount, COALESCE(_prices.value, 0)) AS price, COALESCE(_customersprices_cur.name, COALESCE(_prices_cur.name, '')) AS currency, COALESCE(_prices.rrp, 0) AS price_rrp, SUM(COALESCE(_inventories.quantity, 0)) AS quantity FROM san_site_product _product LEFT JOIN san_site_prices _prices ON _product.id = _prices.product_id AND _prices.price_id = {current_customer_price_id} LEFT JOIN san_site_currency _prices_cur ON _prices.currency_id = _prices_cur.id LEFT JOIN san_site_customersprices{current_customer_suffix} _customersprices ON _customersprices.customer_id = %s AND _product.id = _customersprices.product_id LEFT JOIN san_site_currency _customersprices_cur ON _customersprices.currency_id = _customersprices_cur.id LEFT JOIN san_site_personstores _personstores ON _personstores.person_id = {current_person_id} LEFT JOIN san_site_inventories _inventories ON _product.id = _inventories.product_id AND _personstores.store_id = _inventories.store_id LEFT JOIN san_site_brand _brand ON _product.brand_id = _brand.id WHERE _product.is_deleted = FALSE AND {str_filter_code} AND {str_filter_article} AND {str_filter_brand} AND {str_filter_barcode} AND {str_filter_quantity} GROUP BY _product.id, _product.code, _product.code_brand, _product.barcode, _product.name, _product.matrix, _product.image, COALESCE(_brand.name, ''), COALESCE(_prices.value, 0), COALESCE(_customersprices.discount, COALESCE(_prices.value, 0)), COALESCE(_customersprices_cur.name, COALESCE(_prices_cur.name, '')), COALESCE(_prices.rrp, 0) ) SELECT * FROM result ORDER BY result.code_;""", param) serializer = ProductSerializer(queryset, many=True) return Response(serializer.data, status=HTTP_200_OK)