diff --git a/business_objects/__pycache__/base.cpython-312.pyc b/business_objects/__pycache__/base.cpython-312.pyc index ad5c69b4..bef2ca63 100644 Binary files a/business_objects/__pycache__/base.cpython-312.pyc and b/business_objects/__pycache__/base.cpython-312.pyc differ diff --git a/business_objects/__pycache__/user.cpython-312.pyc b/business_objects/__pycache__/user.cpython-312.pyc index 1e34e0f0..9ca0afc6 100644 Binary files a/business_objects/__pycache__/user.cpython-312.pyc and b/business_objects/__pycache__/user.cpython-312.pyc differ diff --git a/business_objects/base.py b/business_objects/base.py index 6a2ee579..3247da46 100644 --- a/business_objects/base.py +++ b/business_objects/base.py @@ -35,6 +35,8 @@ class Base(): FLAG_CURRENCY_COST: ClassVar[str] = 'currency_cost' FLAG_DESCRIPTION: ClassVar[str] = 'description' FLAG_DISPLAY_ORDER: ClassVar[str] = 'display_order' + FLAG_EMAIL: ClassVar[str] = 'email' + FLAG_FAX: ClassVar[str] = 'fax' FLAG_GUID: ClassVar[str] = 'guid' FLAG_IS_NOT_EMPTY: ClassVar[str] = 'is_not_empty' # FLAG_KEY_PRIMARY: ClassVar[str] = 'key_primary' @@ -43,14 +45,17 @@ class Base(): FLAG_NAME_ATTR_OPTION_VALUE: ClassVar[str] = 'NAME_ATTR_OPTION_VALUE' FLAG_NAME_SINGULAR: ClassVar[str] = 'name_singular' FLAG_NAME_PLURAL: ClassVar[str] = 'name_plural' + FLAG_PHONE_NUMBER: ClassVar[str] = 'phone_number' FLAG_POSTCODE: ClassVar[str] = 'postcode' FLAG_PRIORITY: ClassVar[str] = 'priority' FLAG_REGION: ClassVar[str] = 'region' FLAG_ROWS: ClassVar[str] = 'rows' FLAG_SYMBOL: ClassVar[str] = 'symbol' FLAG_URL: ClassVar[str] = 'url' + FLAG_USER: ClassVar[str] = 'authorisedUser' # 'user' already used FLAG_VALUE_LOCAL_VAT_EXCL: ClassVar[str] = 'value_local_vat_excl' FLAG_VALUE_LOCAL_VAT_INCL: ClassVar[str] = 'value_local_vat_incl' + FLAG_WEBSITE: ClassVar[str] = 'website' """ NAME_ATTR_OPTION_TEXT: ClassVar[str] = 'name-attribute-option-text' NAME_ATTR_OPTION_VALUE: ClassVar[str] = 'name-attribute-option-value' diff --git a/business_objects/store/__pycache__/store_base.cpython-312.pyc b/business_objects/store/__pycache__/store_base.cpython-312.pyc index 531592b9..39c1b30a 100644 Binary files a/business_objects/store/__pycache__/store_base.cpython-312.pyc and b/business_objects/store/__pycache__/store_base.cpython-312.pyc differ diff --git a/business_objects/store/store_base.py b/business_objects/store/store_base.py index 48b52505..856bc18d 100644 --- a/business_objects/store/store_base.py +++ b/business_objects/store/store_base.py @@ -58,9 +58,12 @@ class I_Store_Base(): class Store_Base(Base): # ATTR_ID_CURRENCY_COST: ClassVar[str] = 'id_currency_cost' + ATTR_ID_CUSTOMER: ClassVar[str] = 'id_customer' + ATTR_ID_CUSTOMER_SALES_ORDER: ClassVar[str] = 'id_customer_sales_order' ATTR_ID_DELIVERY_OPTION: ClassVar[str] = 'id_delivery_option' ATTR_ID_DISCOUNT: ClassVar[str] = 'id_discount' ATTR_ID_IMAGE: ClassVar[str] = 'id_image' + ATTR_ID_MANUFACTURING_PURCHASE_ORDER: ClassVar[str] = 'id_manufacturing_purchase_order' ATTR_ID_PLANT: ClassVar[str] = 'id_plant' ATTR_ID_PRODUCT: ClassVar[str] = 'id_product' ATTR_ID_PRODUCT_CATEGORY: ClassVar[str] = 'id_category' @@ -71,13 +74,18 @@ class Store_Base(Base): ATTR_ID_PRODUCT_VARIATION_TYPE: ClassVar[str] = 'id_type' ATTR_ID_STOCK_ITEM: ClassVar[str] = 'id_stock_item' ATTR_ID_STORAGE_LOCATION: ClassVar[str] = 'id_location' + ATTR_ID_SUPPLIER: ClassVar[str] = 'id_supplier' + ATTR_ID_SUPPLIER_PURCHASE_ORDER: ClassVar[str] = 'id_supplier_purchase_order' FLAG_COST_LOCAL: ClassVar[str] = 'cost_local' FLAG_COST_LOCAL_VAT_EXCL: ClassVar[str] = FLAG_COST_LOCAL + '_vat_excl' FLAG_COST_LOCAL_VAT_INCL: ClassVar[str] = FLAG_COST_LOCAL + '_vat_incl' + FLAG_CUSTOMER: ClassVar[str] = 'customer' + FLAG_CUSTOMER_SALES_ORDER: ClassVar[str] = 'customer_sales_order' FLAG_DELIVERY_OPTION: ClassVar[str] = 'delivery_option' FLAG_HAS_VARIATIONS: ClassVar[str] = 'has_variations' FLAG_IS_OUT_OF_STOCK: ClassVar[str] = 'is_out_of_stock' FLAG_DISCOUNT: ClassVar[str] = 'discount' + FLAG_MANUFACTURING_PURCHASE_ORDER: ClassVar[str] = 'manufacturing_purchase_order' FLAG_PLANT: ClassVar[str] = 'plant' FLAG_PRODUCT: ClassVar[str] = 'product' FLAG_PRODUCT_CATEGORY: ClassVar[str] = 'product_category' @@ -91,6 +99,8 @@ class Store_Base(Base): FLAG_QUANTITY_MAX: ClassVar[str] = 'quantity_max' FLAG_STOCK_ITEM: ClassVar[str] = 'stock_item' FLAG_STORAGE_LOCATION: ClassVar[str] = 'storage_location' + FLAG_SUPPLIER: ClassVar[str] = 'supplier' + FLAG_SUPPLIER_PURCHASE_ORDER: ClassVar[str] = 'supplier_purchase_order' FLAG_TEXT: ClassVar[str] = 'text' FLAG_VALUE_TEXT: ClassVar[str] = 'value_text' \ No newline at end of file diff --git a/business_objects/store/supplier.py b/business_objects/store/supplier.py new file mode 100644 index 00000000..7ce5bf23 --- /dev/null +++ b/business_objects/store/supplier.py @@ -0,0 +1,111 @@ +""" +Project: PARTS Website +Author: Edward Middleton-Smith + Precision And Research Technology Systems Limited + +Technology: Business Objects +Feature: Supplier Business Object + +Description: +Business object for supplier +""" + +# internal +import lib.argument_validation as av +from business_objects.store.store_base import Store_Base +from extensions import db +# external +from pydantic import BaseModel +from typing import ClassVar + + +class Supplier(db.Model, Store_Base): + FLAG_DEPARTMENT_CONTACT: ClassVar[str] = 'department_contact' + FLAG_NAME_COMPANY: ClassVar[str] = 'name_company' + FLAG_NAME_CONTACT: ClassVar[str] = 'name_contact' + NAME_ATTR_OPTION_VALUE: ClassVar[str] = Store_Base.ATTR_ID_SUPPLIER + NAME_ATTR_OPTION_TEXT: ClassVar[str] = Store_Base.FLAG_NAME + __tablename__ = 'Shop_Supplier_Temp' + id_supplier = db.Column(db.Integer, primary_key=True) + id_address = db.Column(db.Integer) + id_currency = db.Column(db.Integer) + name_company = db.Column(db.String(255)) + name_contact = db.Column(db.String(255)) + department_contact = db.Column(db.String(255)) + # address + phone_number = db.Column(db.String(50)) + fax = db.Column(db.String(50)) + email = db.Column(db.String(255)) + website = db.Column(db.String(255)) + active = db.Column(db.Boolean) + created_on = db.Column(db.DateTime) + created_by = db.Column(db.Integer) + def __init__(self): + super().__init__() + Store_Base.__init__(self) + @classmethod + def from_DB_supplier(cls, query_row): + supplier = cls() + supplier.id_supplier = query_row[0] + supplier.id_address = query_row[1] + supplier.id_currency = query_row[2] + supplier.name_company = query_row[3] + supplier.name_contact = query_row[4] + supplier.department_contact = query_row[5] + supplier.phone_number = query_row[6] + supplier.fax = query_row[7] + supplier.email = query_row[8] + supplier.website = query_row[9] + supplier.active = query_row[10] + return supplier + + def __repr__(self): + return f''' +id: {self.id_supplier}, +id_address: {self.id_address}, +id_currency: {self.id_currency}, +name_company: {self.name_company}, +name_contact: {self.name_contact}, +department_contact: {self.department_contact}, +phone_number: {self.phone_number}, +fax: {self.fax}, +email: {self.email}, +website: {self.website}, +active: {self.active}, + ''' + def to_json(self): + return { + **self.get_shared_json_attributes(self), + self.ATTR_ID_SUPPLIER: self.id_supplier, + self.ATTR_ID_ADDRESS: self.id_address, + self.ATTR_ID_CURRENCY: self.id_currency, + self.FLAG_NAME_COMPANY: self.name_company, + self.FLAG_NAME_CONTACT: self.name_contact, + self.FLAG_DEPARTMENT_CONTACT: self.department_contact, + self.FLAG_PHONE_NUMBER: self.phone_number, + self.FLAG_FAX: self.fax, + self.FLAG_EMAIL: self.email, + self.FLAG_WEBSITE: self.website, + self.FLAG_ACTIVE: av.input_bool(self.active, self.FLAG_ACTIVE, f'{self.__class__.__name__}.to_json') + } + def to_json_option(self): + return { + 'value': self.id_supplier, + 'text': self.name_company + } + @classmethod + def from_json(cls, json): + print(f'{cls.__name__}.from_json: {json}') + supplier = cls() + supplier.id_supplier = json[cls.ATTR_ID_SUPPLIER] + supplier.id_address = json[cls.ATTR_ID_ADDRESS] + supplier.id_currency = json[cls.ATTR_ID_CURRENCY] + supplier.name_company = json[cls.FLAG_NAME_COMPANY] + supplier.name_contact = json[cls.FLAG_NAME_CONTACT] + supplier.department_contact = json[cls.FLAG_DEPARTMENT_CONTACT] + supplier.phone_number = json[cls.FLAG_PHONE_NUMBER] + supplier.fax = json[cls.FLAG_FAX] + supplier.email = json[cls.FLAG_EMAIL] + supplier.website = json[cls.FLAG_WEBSITE] + supplier.active = json[cls.FLAG_ACTIVE] + return supplier diff --git a/business_objects/user.py b/business_objects/user.py index 8dcbcd71..3674c476 100644 --- a/business_objects/user.py +++ b/business_objects/user.py @@ -18,7 +18,6 @@ from typing import ClassVar class User(db.Model, Base): - KEY_USER: ClassVar[str] = 'authorisedUser' # 'user' already used NAME_ATTR_OPTION_VALUE: ClassVar[str] = Base.ATTR_ID_USER NAME_ATTR_OPTION_TEXT: ClassVar[str] = 'email' @@ -57,6 +56,7 @@ class User(db.Model, Base): user.is_super_user = av.input_bool(query_row[9], 'is_super_user', _m) user.can_admin_store = av.input_bool(query_row[10], 'can_admin_store', _m) user.can_admin_user = av.input_bool(query_row[11], 'can_admin_user', _m) + user.is_logged_in = (user.id_user is not None and user.id_user > 0) return user @staticmethod @@ -101,6 +101,7 @@ class User(db.Model, Base): user.is_included_VAT_default = None user.can_admin_store = None user.can_admin_user = None + user.is_logged_in = (user.id_user_auth0 is not None and user.id_user_auth0 != '') print(f'user: {user}') return user diff --git a/controllers/__pycache__/core.cpython-312.pyc b/controllers/__pycache__/core.cpython-312.pyc index 0840b30c..c17381f0 100644 Binary files a/controllers/__pycache__/core.cpython-312.pyc and b/controllers/__pycache__/core.cpython-312.pyc differ diff --git a/controllers/__pycache__/user.cpython-312.pyc b/controllers/__pycache__/user.cpython-312.pyc index 2d74953b..2ff400bc 100644 Binary files a/controllers/__pycache__/user.cpython-312.pyc and b/controllers/__pycache__/user.cpython-312.pyc differ diff --git a/controllers/core.py b/controllers/core.py index 28a3ef54..f20b4390 100644 --- a/controllers/core.py +++ b/controllers/core.py @@ -36,7 +36,6 @@ routes_core = Blueprint('routes_core', __name__) def home(): try: model = Model_View_Home() - print('nips') html_body = render_template('pages/core/_home.html', model = model) except Exception as e: return jsonify(error=str(e)), 403 diff --git a/controllers/store/__pycache__/product.cpython-312.pyc b/controllers/store/__pycache__/product.cpython-312.pyc index cd9eeaf2..4424096f 100644 Binary files a/controllers/store/__pycache__/product.cpython-312.pyc and b/controllers/store/__pycache__/product.cpython-312.pyc differ diff --git a/controllers/store/__pycache__/product_category.cpython-312.pyc b/controllers/store/__pycache__/product_category.cpython-312.pyc index 4474aca8..a807b8c2 100644 Binary files a/controllers/store/__pycache__/product_category.cpython-312.pyc and b/controllers/store/__pycache__/product_category.cpython-312.pyc differ diff --git a/controllers/store/__pycache__/product_permutation.cpython-312.pyc b/controllers/store/__pycache__/product_permutation.cpython-312.pyc index bbc800b5..a212c572 100644 Binary files a/controllers/store/__pycache__/product_permutation.cpython-312.pyc and b/controllers/store/__pycache__/product_permutation.cpython-312.pyc differ diff --git a/controllers/store/__pycache__/stock_item.cpython-312.pyc b/controllers/store/__pycache__/stock_item.cpython-312.pyc index b46f8a1e..1528b16a 100644 Binary files a/controllers/store/__pycache__/stock_item.cpython-312.pyc and b/controllers/store/__pycache__/stock_item.cpython-312.pyc differ diff --git a/controllers/store/__pycache__/supplier.cpython-312.pyc b/controllers/store/__pycache__/supplier.cpython-312.pyc index bb02e2ea..70dc4c56 100644 Binary files a/controllers/store/__pycache__/supplier.cpython-312.pyc and b/controllers/store/__pycache__/supplier.cpython-312.pyc differ diff --git a/controllers/store/product.py b/controllers/store/product.py index 94d06d8a..9c51ebf0 100644 --- a/controllers/store/product.py +++ b/controllers/store/product.py @@ -61,12 +61,12 @@ def filter(): # ToDo: manually validate category, product filters_form = Parameters_Product.from_form_filters_product(form_filters) model = Model_View_Store_Product(filters = filters_form) - return jsonify({Model_View_Store_Product.FLAG_STATUS: Model_View_Store_Product.FLAG_SUCCESS, 'Success': True, Model_View_Store_Product.KEY_DATA: model.category_list.to_json()}) + return jsonify({Model_View_Store_Product.FLAG_STATUS: Model_View_Store_Product.FLAG_SUCCESS, 'Success': True, Model_View_Store_Product.FLAG_DATA: model.category_list.to_json()}) except Exception as e: return jsonify({Model_View_Store_Product.FLAG_STATUS: Model_View_Store_Product.FLAG_FAILURE, Model_View_Store_Product.FLAG_MESSAGE: f'Bad data received by controller.\n{e}'}) def get_Filters_Product(data_request): - data_form = data_request[Model_View_Store_Product.KEY_FORM] + data_form = data_request[Model_View_Store_Product.FLAG_FORM] form_filters = Filters_Product(**data_form) form_filters.is_not_empty.data = av.input_bool(data_form['is_not_empty'], 'is_not_empty', 'filter') form_filters.active.data = av.input_bool(data_form['active'], 'active', 'filter') @@ -95,7 +95,7 @@ def save(): model_return = Model_View_Store_Product(filters=filters_form) print('nips') - return jsonify({Model_View_Store_Product.FLAG_STATUS: Model_View_Store_Product.FLAG_SUCCESS, 'Success': True, Model_View_Store_Product.KEY_DATA: model_return.category_list.to_json()}) + return jsonify({Model_View_Store_Product.FLAG_STATUS: Model_View_Store_Product.FLAG_SUCCESS, 'Success': True, Model_View_Store_Product.FLAG_DATA: model_return.category_list.to_json()}) except Exception as e: return jsonify({Model_View_Store_Product.FLAG_STATUS: Model_View_Store_Product.FLAG_FAILURE, Model_View_Store_Product.FLAG_MESSAGE: f'Bad data received by controller.\n{e}'}) """ @@ -112,7 +112,7 @@ def products(): print(f'form_filters={form_filters}') model = Model_View_Store_Product(form_filters) if not model.is_user_logged_in: - # return redirect(url_for('routes_user.login', data = jsonify({ Model_View_Store_Product.KEY_CALLBACK: Model_View_Store_Product.HASH_PAGE_STORE_PRODUCTS }))) + # return redirect(url_for('routes_user.login', data = jsonify({ Model_View_Store_Product.FLAG_CALLBACK: Model_View_Store_Product.HASH_PAGE_STORE_PRODUCTS }))) return redirect(url_for('routes_core.home')) return render_template('pages/store/_products.html', model = model) @@ -131,7 +131,7 @@ def filter_product(): raise Exception('User not logged in') return jsonify({ Model_View_Store_Product.FLAG_STATUS: Model_View_Store_Product.FLAG_SUCCESS, - Model_View_Store_Product.KEY_DATA: model.category_list.to_json() + Model_View_Store_Product.FLAG_DATA: model.category_list.to_json() }) except Exception as e: return jsonify({ @@ -171,7 +171,7 @@ def save_product(): print('nips') return jsonify({ Model_View_Store_Product.FLAG_STATUS: Model_View_Store_Product.FLAG_SUCCESS, - Model_View_Store_Product.KEY_DATA: model_return.category_list.to_json() + Model_View_Store_Product.FLAG_DATA: model_return.category_list.to_json() }) except Exception as e: return jsonify({ diff --git a/controllers/store/product_category.py b/controllers/store/product_category.py index d2b8fae4..9579999a 100644 --- a/controllers/store/product_category.py +++ b/controllers/store/product_category.py @@ -55,7 +55,7 @@ def categories(): """ model = Model_View_Store_Product_Category(form_filters) if not model.is_user_logged_in: - # return redirect(url_for('routes_user.login', data = jsonify({ Model_View_Store_Product_Category.KEY_CALLBACK: Model_View_Store_Product_Category.HASH_PAGE_STORE_PRODUCT_CATEGORIES }))) + # return redirect(url_for('routes_user.login', data = jsonify({ Model_View_Store_Product_Category.FLAG_CALLBACK: Model_View_Store_Product_Category.HASH_PAGE_STORE_PRODUCT_CATEGORIES }))) return redirect(url_for('routes_core.home')) return render_template('pages/store/_product_categories.html', model = model) @@ -77,7 +77,7 @@ def filter_category(): raise Exception('User not logged in') return jsonify({ Model_View_Store_Product_Category.FLAG_STATUS: Model_View_Store_Product_Category.FLAG_SUCCESS, - Model_View_Store_Product_Category.KEY_DATA: model.category_list.to_json() + Model_View_Store_Product_Category.FLAG_DATA: model.category_list.to_json() }) except Exception as e: return jsonify({ @@ -115,7 +115,7 @@ def save_category(): raise Exception('User not logged in') return jsonify({ Model_View_Store_Product_Category.FLAG_STATUS: Model_View_Store_Product_Category.FLAG_SUCCESS, - Model_View_Store_Product_Category.KEY_DATA: model_return.category_list.to_json() + Model_View_Store_Product_Category.FLAG_DATA: model_return.category_list.to_json() }) except Exception as e: return jsonify({ diff --git a/controllers/store/product_permutation.py b/controllers/store/product_permutation.py index 9584d2b1..3b0a9195 100644 --- a/controllers/store/product_permutation.py +++ b/controllers/store/product_permutation.py @@ -48,12 +48,12 @@ def permutation_filter(): # ToDo: manually validate category, product filters_form = Parameters_Product.from_form(form_filters) model = Model_View_Store_Product_Permutation(filters_product=filters_form) - return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_SUCCESS, 'Success': True, Model_View_Base.KEY_DATA: model.category_list.to_permutation_row_list()}) + return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_SUCCESS, 'Success': True, Model_View_Base.FLAG_DATA: model.category_list.to_permutation_row_list()}) except Exception as e: return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_FAILURE, Model_View_Base.FLAG_MESSAGE: f'Bad data received by controller.\n{e}'}) def get_Form_Filters_Permutation(data_request): - data_form = data_request[Model_View_Store_Product_Permutation.KEY_FORM] + data_form = data_request[Model_View_Store_Product_Permutation.FLAG_FORM] form_filters = Filters_Product_Permutation(**data_form) form_filters.is_out_of_stock.data = av.input_bool(data_form['is_out_of_stock'], 'is_out_of_stock', 'permutations_post') return form_filters @@ -80,7 +80,7 @@ def permutation_save(): model_save.save_permutations(data.comment, objsPermutation) model_return = Model_View_Store_Product_Permutation(filters_product=filters_form) - return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_SUCCESS, 'Success': True, Model_View_Base.KEY_DATA: model_return.category_list.to_permutation_row_list()}) + return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_SUCCESS, 'Success': True, Model_View_Base.FLAG_DATA: model_return.category_list.to_permutation_row_list()}) except Exception as e: return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_FAILURE, Model_View_Base.FLAG_MESSAGE: f'Bad data received by controller.\n{e}'}) """ @@ -97,7 +97,7 @@ def permutations(): print(f'form_filters={form_filters}') model = Model_View_Store_Product_Permutation(form_filters) if not model.is_user_logged_in: - # return redirect(url_for('routes_user.login', data = jsonify({ Model_View_Store_Product_Permutation.KEY_CALLBACK: Model_View_Store_Product_Permutation.HASH_PAGE_STORE_PRODUCT_PERMUTATIONS }))) + # return redirect(url_for('routes_user.login', data = jsonify({ Model_View_Store_Product_Permutation.FLAG_CALLBACK: Model_View_Store_Product_Permutation.HASH_PAGE_STORE_PRODUCT_PERMUTATIONS }))) return redirect(url_for('routes_core.home')) return render_template('pages/store/_product_permutations.html', model = model) @@ -116,7 +116,7 @@ def filter_permutation(): raise Exception('User not logged in') return jsonify({ Model_View_Store_Product_Permutation.FLAG_STATUS: Model_View_Store_Product_Permutation.FLAG_SUCCESS, - Model_View_Store_Product_Permutation.KEY_DATA: model.category_list.to_json() + Model_View_Store_Product_Permutation.FLAG_DATA: model.category_list.to_json() }) except Exception as e: return jsonify({ @@ -156,7 +156,7 @@ def save_permutation(): print('nips') return jsonify({ Model_View_Store_Product_Permutation.FLAG_STATUS: Model_View_Store_Product_Permutation.FLAG_SUCCESS, - Model_View_Store_Product_Permutation.KEY_DATA: model_return.category_list.to_json() + Model_View_Store_Product_Permutation.FLAG_DATA: model_return.category_list.to_json() }) except Exception as e: return jsonify({ diff --git a/controllers/store/stock_item.py b/controllers/store/stock_item.py index 82285608..b39a2c84 100644 --- a/controllers/store/stock_item.py +++ b/controllers/store/stock_item.py @@ -39,8 +39,8 @@ def stock_items(): print(f'form_filters={form_filters}') model = Model_View_Store_Stock_Item(form_filters) if not model.is_user_logged_in: - # return redirect(url_for('routes_user.login', data = jsonify({ Model_View_Store_Stock_Item.KEY_CALLBACK: Model_View_Store_Stock_Item.HASH_PAGE_STORE_STOCK_ITEMS }))) - # return requests.post(f"{current_app.config['URL_HOST']}{url_for('routes_user.login')}", json={ Model_View_Store_Stock_Item.KEY_CALLBACK: Model_View_Store_Stock_Item.HASH_PAGE_STORE_STOCK_ITEMS }) + # return redirect(url_for('routes_user.login', data = jsonify({ Model_View_Store_Stock_Item.FLAG_CALLBACK: Model_View_Store_Stock_Item.HASH_PAGE_STORE_STOCK_ITEMS }))) + # return requests.post(f"{current_app.config['URL_HOST']}{url_for('routes_user.login')}", json={ Model_View_Store_Stock_Item.FLAG_CALLBACK: Model_View_Store_Stock_Item.HASH_PAGE_STORE_STOCK_ITEMS }) return redirect(url_for('routes_core.home')) return render_template('pages/store/_stock_items.html', model = model, datetime = datetime) @@ -73,7 +73,7 @@ def filter_stock_item(): raise Exception('User not logged in.') return jsonify({ Model_View_Store_Stock_Item.FLAG_STATUS: Model_View_Store_Stock_Item.FLAG_SUCCESS, - Model_View_Store_Stock_Item.KEY_DATA: model.category_list.to_json() + Model_View_Store_Stock_Item.FLAG_DATA: model.category_list.to_json() }) except Exception as e: return jsonify({ @@ -133,7 +133,7 @@ def save_stock_item(): raise Exception('User not logged in.') return jsonify({ Model_View_Store_Stock_Item.FLAG_STATUS: Model_View_Store_Stock_Item.FLAG_SUCCESS, - Model_View_Store_Stock_Item.KEY_DATA: model_return.category_list.to_json() + Model_View_Store_Stock_Item.FLAG_DATA: model_return.category_list.to_json() }) except Exception as e: return jsonify({ diff --git a/controllers/store/supplier.py b/controllers/store/supplier.py index 07837bb6..63c1aaea 100644 --- a/controllers/store/supplier.py +++ b/controllers/store/supplier.py @@ -54,7 +54,7 @@ def supplier(): try: model = Model_View_Store_Supplier(form) if not model.is_user_logged_in: - # return redirect(url_for('routes_user.login', data = jsonify({ Model_View_Store_Supplier.KEY_CALLBACK: Model_View_Store_Supplier.HASH_PAGE_STORE_SUPPLIERS }))) + # return redirect(url_for('routes_user.login', data = jsonify({ Model_View_Store_Supplier.FLAG_CALLBACK: Model_View_Store_Supplier.HASH_PAGE_STORE_SUPPLIERS }))) return redirect(url_for('routes_core.home')) # print('importing basket') # model.import_JSON_basket(data) diff --git a/controllers/user.py b/controllers/user.py index 08ca818c..8e46d43f 100644 --- a/controllers/user.py +++ b/controllers/user.py @@ -36,14 +36,14 @@ def login(): except: data = {} print(f'data={data}') - # callback_login = F'{Model_View_Base.HASH_CALLBACK_LOGIN}{data.get(Model_View_Base.KEY_CALLBACK, Model_View_Base.HASH_PAGE_HOME)}' + # callback_login = F'{Model_View_Base.HASH_CALLBACK_LOGIN}{data.get(Model_View_Base.FLAG_CALLBACK, Model_View_Base.HASH_PAGE_HOME)}' - # encoded_path = quote(data.get(Model_View_Base.KEY_CALLBACK, Model_View_Base.HASH_PAGE_HOME)) + # encoded_path = quote(data.get(Model_View_Base.FLAG_CALLBACK, Model_View_Base.HASH_PAGE_HOME)) uri_redirect = url_for('routes_user.login_callback', _external=True) # , subpath=encoded_path - # uri_redirect = f'{current_app.URL_HOST}/login_callback?subpath={data.get(Model_View_Base.KEY_CALLBACK, Model_View_Base.HASH_PAGE_HOME)}' + # uri_redirect = f'{current_app.URL_HOST}/login_callback?subpath={data.get(Model_View_Base.FLAG_CALLBACK, Model_View_Base.HASH_PAGE_HOME)}' print(f'redirect uri: {uri_redirect}') - hash_callback = data.get(Model_View_Base.KEY_CALLBACK, Model_View_Base.HASH_PAGE_HOME) + hash_callback = data.get(Model_View_Base.FLAG_CALLBACK, Model_View_Base.HASH_PAGE_HOME) print(f'hash_callback: {hash_callback}') red = oauth.auth0.authorize_redirect( @@ -63,7 +63,7 @@ def login(): Query Parameters: {query_params} """) - return jsonify({'Success': True, Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_SUCCESS, f'{Model_View_Base.KEY_CALLBACK}': headers}) + return jsonify({'Success': True, Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_SUCCESS, f'{Model_View_Base.FLAG_CALLBACK}': headers}) @routes_user.route("/login_callback") # / def login_callback(): @@ -84,6 +84,7 @@ def login_callback(): print(f"Error: {str(e)}") session[current_app.config['ID_TOKEN_USER']] = token # import user id + """ print(f'str(type(token)) = {str(type(token))}') print(f'token = {token}') userinfo = token.get('userinfo') @@ -91,18 +92,18 @@ def login_callback(): # id_user = token.get('sub') id_user = userinfo.get('sub') print(f'user ID: {id_user}') - - datastore_user = DataStore_User() - user = datastore_user.get_user_auth0() + """ + user = User.from_json_auth0(token) # datastore_user.get_user_auth0() user_filters = User_Filters.from_user(user) + datastore_user = DataStore_User() users, errors = datastore_user.get_many_user(user_filters, user) try: user = users[0] print('User logged in') print(f'user ({str(type(user))}): {user}') - print(f'user key: {Model_View_Base.KEY_USER}') + print(f'user key: {Model_View_Base.FLAG_USER}') user_json = user.to_json() - session[Model_View_Base.KEY_USER] = user_json + session[Model_View_Base.FLAG_USER] = user_json print(f'user stored on session') except: print(f'User not found: {user_filters}\nDatabase query error: {errors}') @@ -121,7 +122,7 @@ def login_callback(): # add user to database # DataStore_Store().add_new_user(id_user) # this is part of get basket - should occur on page load - print(f'user session: {session[Model_View_Base.KEY_USER]}') + print(f'user session: {session[Model_View_Base.FLAG_USER]}') return redirect(f"{current_app.config['URL_HOST']}{hash_callback}") except Exception as e: return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_FAILURE, Model_View_Base.FLAG_MESSAGE: f'Controller error.\n{e}'}) @@ -160,7 +161,7 @@ def logout_callback(): # add user to database # DataStore_Store().add_new_user(id_user) # this is part of get basket - should occur on page load - print(f'user session: {session[Model_View_Base.KEY_USER]}') + print(f'user session: {session[Model_View_Base.FLAG_USER]}') return redirect(f'{current_app.URL_HOST}{hash_callback}') except Exception as e: return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_FAILURE, Model_View_Base.FLAG_MESSAGE: f'Controller error.\n{e}'}) @@ -171,7 +172,7 @@ def user(): try: model = Model_View_User(current_app, db) if not model.is_user_logged_in: - # return redirect(url_for('routes_user.login', data = jsonify({ Model_View_User.KEY_CALLBACK: Model_View_User.HASH_PAGE_USER_ACCOUNT }))) + # return redirect(url_for('routes_user.login', data = jsonify({ Model_View_User.FLAG_CALLBACK: Model_View_User.HASH_PAGE_USER_ACCOUNT }))) return redirect(url_for('routes_core.home')) html_body = render_template('pages/user/_user.html', model = model) except Exception as e: diff --git a/datastores/__pycache__/datastore_base.cpython-312.pyc b/datastores/__pycache__/datastore_base.cpython-312.pyc index 4037a563..bd525007 100644 Binary files a/datastores/__pycache__/datastore_base.cpython-312.pyc and b/datastores/__pycache__/datastore_base.cpython-312.pyc differ diff --git a/datastores/datastore_base.py b/datastores/datastore_base.py index 8e6e85a7..ea45fddd 100644 --- a/datastores/datastore_base.py +++ b/datastores/datastore_base.py @@ -154,7 +154,8 @@ class DataStore_Base(BaseModel): return regions, currencies @staticmethod def get_user_session(): - return User.from_json(session.get(User.KEY_USER)) + print('DataStore_Base.get_user_session') + return User.from_json(session.get(User.FLAG_USER)) user = User.get_default() try: print(f'user session: {session[self.app.ID_TOKEN_USER]}') @@ -166,9 +167,11 @@ class DataStore_Base(BaseModel): except: print('get user login failed') return user + """ @staticmethod def get_user_auth0(): return User.from_json_auth0(session.get(current_app.config['ID_TOKEN_USER'])) + """ @staticmethod def upload_bulk(permanent_table_name, records, batch_size): _m = 'DataStore_Base.upload_bulk' diff --git a/datastores/datastore_store_supplier.py b/datastores/datastore_store_supplier.py new file mode 100644 index 00000000..e0f2aeaa --- /dev/null +++ b/datastores/datastore_store_supplier.py @@ -0,0 +1,150 @@ +""" +Project: PARTS Website +Author: Edward Middleton-Smith + Precision And Research Technology Systems Limited + +Technology: DataStores +Feature: Store Stock Item DataStore + +Description: +Datastore for Store Stock Items +""" + +# internal +# from routes import bp_home +import lib.argument_validation as av +from business_objects.sql_error import SQL_Error +from business_objects.store.supplier import Supplier, Parameters_Supplier, Supplier_Temp +from datastores.datastore_store_base import DataStore_Store_Base +from helpers.helper_db_mysql import Helper_DB_MySQL +# from models.model_view_store_checkout import Model_View_Store_Checkout # circular! +from extensions import db +# external +# from abc import ABC, abstractmethod, abstractproperty +from flask_sqlalchemy import SQLAlchemy +from sqlalchemy import text +import stripe +import os +from flask import Flask, session, current_app +from pydantic import BaseModel, ConfigDict +from typing import ClassVar +from datetime import datetime + +# db = SQLAlchemy() + + +class DataStore_Store_Supplier(DataStore_Store_Base): + # Global constants + # Attributes + + def __init__(self): + super().__init__() + + # Stock Items + def get_many_supplier(self, parameters_supplier, category_list): + # redundant argument validation? + _m = 'DataStore_Store_Supplier.get_many_supplier' + av.val_instance(parameters_supplier, 'parameters_supplier', _m, Parameters_Supplier) + argument_dict = parameters_supplier.to_json() + user = self.get_user_session() + """ + argument_dict['a_id_user'] = user.id_user # 'auth0|6582b95c895d09a70ba10fef' # id_user + argument_dict['a_debug'] = 0 + """ + argument_dict = { + 'a_id_user': user.id_user + , **argument_dict + , 'a_debug': 0 + } + ids_permutation = category_list.get_csv_ids_permutation() + print(f'ids_permutation: {ids_permutation}') + argument_dict['a_ids_product_permutation'] = ids_permutation + print(f'argument_dict: {argument_dict}') + print('executing p_shop_get_many_supplier') + result = self.db_procedure_execute('p_shop_get_many_supplier', argument_dict) + cursor = result.cursor + print('data received') + # categories, category_index = DataStore_Store_Supplier.input_many_product(cursor) + category_list, errors = DataStore_Store_Supplier.input_many_supplier(cursor, category_list) + DataStore_Store_Supplier.db_cursor_clear(cursor) + + return category_list, errors # categories, category_index + + + def input_many_supplier(cursor, category_list): + _m = 'DataStore_Store_Supplier.input_many_supplier' + result_set_1 = cursor.fetchall() + print(f'raw categories: {result_set_1}') + for row in result_set_1: + new_supplier = Supplier.from_DB_supplier(row) + category_list.add_supplier(new_supplier) # , row) + + # Errors + cursor.nextset() + result_set_e = cursor.fetchall() + print(f'raw errors: {result_set_e}') + errors = [] + if len(result_set_e) > 0: + errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1]) + for error in errors: + print(f"Error [{error.code}]: {error.msg}") + """ + if len(errors) > 0: + for error in errors: + if error.code == 'PRODUCT_AVAILABILITY': + ids_permutation_unavailable = DataStore_Store_Supplier.get_ids_permutation_from_error_availability(error.msg) + for id_permutation in ids_permutation_unavailable: + index_category = category_list.get_index_category_from_id_permutation(id_permutation) + category = category_list.categories[index_category] + index_product = category.get_index_product_from_id_permutation(id_permutation) + product = category.products[index_product] + index_permutation = product.get_index_permutation_from_id(id_permutation) + permutation = product.permutations[index_permutation] + permutation.is_available = False + if 'region' in error.msg or 'currency' in error.msg: + permutation.is_unavailable_in_currency_or_region = True + """ + DataStore_Store_Supplier.db_cursor_clear(cursor) + return category_list, errors # categories, category_index + + @classmethod + def save_suppliers(cls, comment, suppliers): + _m = 'DataStore_Store_Supplier.save_suppliers' + av.val_str(comment, 'comment', _m) + + guid = Helper_DB_MySQL.create_guid_str() + now = datetime.now() + user = cls.get_user_session() + rows = [] + for supplier in suppliers: + # row = permutation.to_temporary_record() + row = Supplier_Temp.from_supplier(supplier) + row.guid = guid + rows.append(row) + + print(f'rows: {rows}') + + DataStore_Store_Base.upload_bulk(Supplier_Temp.__tablename__, rows, 1000) + print('bulk uploaded') + + argument_dict_list = { + 'a_comment': comment, + 'a_guid': guid, + 'a_id_user': user.id_user, + 'a_debug': 0 + } + result = cls.db_procedure_execute('p_shop_save_supplier', argument_dict_list) + print('saved product permutations') + + # Errors + cursor = result.cursor + cursor.nextset() + result_set_e = cursor.fetchall() + print(f'raw errors: {result_set_e}') + errors = [] + if len(result_set_e) > 0: + errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1]) + for error in errors: + print(f"Error [{error.code}]: {error.msg}") + DataStore_Store_Supplier.db_cursor_clear(cursor) + return errors diff --git a/env_web/Lib/site-packages/pip-24.0.dist-info/RECORD b/env_web/Lib/site-packages/pip-24.0.dist-info/RECORD index f5dfd32b..6d6a0857 100644 --- a/env_web/Lib/site-packages/pip-24.0.dist-info/RECORD +++ b/env_web/Lib/site-packages/pip-24.0.dist-info/RECORD @@ -1,6 +1,6 @@ -../../Scripts/pip.exe,sha256=klaXm9Us0xLs-F4HRXu23Q9DlGgpERohNDOIkxFyrus,108466 -../../Scripts/pip3.12.exe,sha256=klaXm9Us0xLs-F4HRXu23Q9DlGgpERohNDOIkxFyrus,108466 -../../Scripts/pip3.exe,sha256=klaXm9Us0xLs-F4HRXu23Q9DlGgpERohNDOIkxFyrus,108466 +../../Scripts/pip.exe,sha256=c7HuPbTodA03BZskKpysGLwtwFjgKiS0ReMoKwJgZMQ,108466 +../../Scripts/pip3.12.exe,sha256=c7HuPbTodA03BZskKpysGLwtwFjgKiS0ReMoKwJgZMQ,108466 +../../Scripts/pip3.exe,sha256=c7HuPbTodA03BZskKpysGLwtwFjgKiS0ReMoKwJgZMQ,108466 pip-24.0.dist-info/AUTHORS.txt,sha256=SwXm4nkwRkmtnO1ZY-dLy7EPeoQNXMNLby5CN3GlNhY,10388 pip-24.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 pip-24.0.dist-info/LICENSE.txt,sha256=Y0MApmnUmurmWxLGxIySTFGkzfPR_whtw0VtyLyqIQQ,1093 diff --git a/env_web/Lib/site-packages/pip/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/__pycache__/__init__.cpython-312.pyc index e8a631ab..21d921fe 100644 Binary files a/env_web/Lib/site-packages/pip/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/__pycache__/__main__.cpython-312.pyc b/env_web/Lib/site-packages/pip/__pycache__/__main__.cpython-312.pyc index 09366793..b5688910 100644 Binary files a/env_web/Lib/site-packages/pip/__pycache__/__main__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/__pycache__/__main__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/__pycache__/__pip-runner__.cpython-312.pyc b/env_web/Lib/site-packages/pip/__pycache__/__pip-runner__.cpython-312.pyc index 59ad49b9..c18dee6a 100644 Binary files a/env_web/Lib/site-packages/pip/__pycache__/__pip-runner__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/__pycache__/__pip-runner__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/__pycache__/__init__.cpython-312.pyc index c68332e7..09b64d9f 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/__pycache__/build_env.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/__pycache__/build_env.cpython-312.pyc index 984b5e04..20228ebd 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/__pycache__/build_env.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/__pycache__/build_env.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/__pycache__/cache.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/__pycache__/cache.cpython-312.pyc index a24aa7d3..89b62923 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/__pycache__/cache.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/__pycache__/cache.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/__pycache__/configuration.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/__pycache__/configuration.cpython-312.pyc index 82239ff1..d46d1ced 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/__pycache__/configuration.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/__pycache__/configuration.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/__pycache__/exceptions.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/__pycache__/exceptions.cpython-312.pyc index 676bce4a..807ca344 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/__pycache__/exceptions.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/__pycache__/exceptions.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/__pycache__/main.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/__pycache__/main.cpython-312.pyc index 3e74e905..5edf4a75 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/__pycache__/main.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/__pycache__/main.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/__pycache__/pyproject.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/__pycache__/pyproject.cpython-312.pyc index 7157a4e5..3f7d9da7 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/__pycache__/pyproject.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/__pycache__/pyproject.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-312.pyc index 12683191..53da38b0 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-312.pyc index 1a08d527..9f4385cd 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-312.pyc index 5cb47bfb..0f92eb2b 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-312.pyc index 40dbb4b9..4e09a574 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-312.pyc index d230b7ee..89545269 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-312.pyc index fa2309b8..46a27c7a 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-312.pyc index 86cb3b6d..21b51076 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/main.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/main.cpython-312.pyc index 0b7a7c11..4e90e969 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/main.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/main.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-312.pyc index f854332c..5a1daa1d 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/parser.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/parser.cpython-312.pyc index b8f7ea99..6dfc375b 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/parser.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/parser.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-312.pyc index 5647c1b3..81a99045 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-312.pyc index 6f89d423..aad5aa13 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-312.pyc index c2d12e3e..98b0cb98 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-312.pyc index 1ef46a78..78a4f98a 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-312.pyc index 3fcc265c..a8e2d6f3 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/cache.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/cache.cpython-312.pyc index 83ae6363..a85e995e 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/cache.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/cache.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/check.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/check.cpython-312.pyc index 2c58f3db..c318ee49 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/check.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/check.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/completion.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/completion.cpython-312.pyc index 35e8d03c..24232eee 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/completion.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/completion.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-312.pyc index 2687d659..de33495a 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/debug.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/debug.cpython-312.pyc index ecf69f0c..18f6742b 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/debug.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/debug.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/download.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/download.cpython-312.pyc index 2822a904..fe6274d1 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/download.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/download.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-312.pyc index 4b9672b4..d137b8c5 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/hash.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/hash.cpython-312.pyc index fe9a790f..a84ca294 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/hash.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/hash.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/help.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/help.cpython-312.pyc index 948d3fa8..437d9d9e 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/help.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/help.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/index.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/index.cpython-312.pyc index 584326a4..4555707e 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/index.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/index.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/inspect.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/inspect.cpython-312.pyc index 2c22f355..a888d818 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/inspect.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/inspect.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/install.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/install.cpython-312.pyc index 705d835e..c03a7880 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/install.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/install.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/list.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/list.cpython-312.pyc index 880b27f0..297f5924 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/list.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/list.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/search.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/search.cpython-312.pyc index a7ebe24b..3d8b53d0 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/search.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/search.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/show.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/show.cpython-312.pyc index 91735541..c1057b68 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/show.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/show.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-312.pyc index 60bc1963..e7a0511c 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-312.pyc index fd302859..7fe8eb32 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-312.pyc index f73cf7e9..d3980da9 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/distributions/__pycache__/base.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/distributions/__pycache__/base.cpython-312.pyc index 8f72de12..0534f418 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/distributions/__pycache__/base.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/distributions/__pycache__/base.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-312.pyc index aad50556..a90af55c 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-312.pyc index 25263dc1..26f7414c 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-312.pyc index ca93b08d..16af4ae7 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/index/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/index/__pycache__/__init__.cpython-312.pyc index b96fe972..847c87ca 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/index/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/index/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/index/__pycache__/collector.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/index/__pycache__/collector.cpython-312.pyc index 9b7e3ed9..82d5d962 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/index/__pycache__/collector.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/index/__pycache__/collector.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-312.pyc index bc2d7526..81da8c38 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/index/__pycache__/sources.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/index/__pycache__/sources.cpython-312.pyc index 405cb9e8..e81f3a91 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/index/__pycache__/sources.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/index/__pycache__/sources.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-312.pyc index aeeca347..2b1830af 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-312.pyc index ccbac81b..b69538e9 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-312.pyc index 4d3b39b8..3af3a696 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/locations/__pycache__/base.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/locations/__pycache__/base.cpython-312.pyc index e798a481..3f739a1b 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/locations/__pycache__/base.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/locations/__pycache__/base.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-312.pyc index 8eb521c8..fdc23095 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-312.pyc index c6b3a682..64c623d6 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/metadata/__pycache__/base.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/metadata/__pycache__/base.cpython-312.pyc index 65300bae..acbaeca9 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/metadata/__pycache__/base.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/metadata/__pycache__/base.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-312.pyc index 7bd9805e..07277f8d 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-312.pyc index fe41cc02..9e9be4de 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/_compat.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/_compat.cpython-312.pyc index e92e65f7..776da64b 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/_compat.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/_compat.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-312.pyc index 9a17814f..2a0be473 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/_envs.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/_envs.cpython-312.pyc index c8b0c42d..f0853a85 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/_envs.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/_envs.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/__init__.cpython-312.pyc index 346e789a..25999d99 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/candidate.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/candidate.cpython-312.pyc index d2ef6df9..a88fb0c0 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/candidate.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/candidate.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-312.pyc index 1902adc2..8744b585 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/format_control.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/format_control.cpython-312.pyc index 70e3b36d..10c5ebd1 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/format_control.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/format_control.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/index.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/index.cpython-312.pyc index 7f5f971c..d40ca567 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/index.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/index.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/installation_report.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/installation_report.cpython-312.pyc index dd9835b2..49ff1066 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/installation_report.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/installation_report.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/link.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/link.cpython-312.pyc index 5d7326a0..6f638780 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/link.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/link.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/scheme.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/scheme.cpython-312.pyc index f7cc9918..17a8503b 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/scheme.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/scheme.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-312.pyc index e5331616..aa958c20 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-312.pyc index 7ab3a684..25d0eb12 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/target_python.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/target_python.cpython-312.pyc index 69d911eb..3c06d2c3 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/target_python.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/target_python.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/wheel.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/wheel.cpython-312.pyc index 6f47059c..0bdf2542 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/models/__pycache__/wheel.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/models/__pycache__/wheel.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/network/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/network/__pycache__/__init__.cpython-312.pyc index 7f7fdd40..4f8fae80 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/network/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/network/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/network/__pycache__/auth.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/network/__pycache__/auth.cpython-312.pyc index 0dd7658e..92720f9a 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/network/__pycache__/auth.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/network/__pycache__/auth.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/network/__pycache__/cache.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/network/__pycache__/cache.cpython-312.pyc index b0c7ba03..45397e85 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/network/__pycache__/cache.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/network/__pycache__/cache.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/network/__pycache__/download.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/network/__pycache__/download.cpython-312.pyc index bb696a82..d851e32e 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/network/__pycache__/download.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/network/__pycache__/download.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-312.pyc index bf0b6104..eb7e29d7 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/network/__pycache__/session.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/network/__pycache__/session.cpython-312.pyc index 03f2ef92..1fbcfbe0 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/network/__pycache__/session.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/network/__pycache__/session.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/network/__pycache__/utils.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/network/__pycache__/utils.cpython-312.pyc index aaf73106..86948a88 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/network/__pycache__/utils.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/network/__pycache__/utils.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-312.pyc index ba4cd959..3f2d597c 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-312.pyc index 67e960e0..0afd669f 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/operations/__pycache__/check.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/operations/__pycache__/check.cpython-312.pyc index ba36e0aa..b73fe488 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/operations/__pycache__/check.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/operations/__pycache__/check.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-312.pyc index b2bb4a1f..0c092681 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-312.pyc index 80269855..a62b6b0a 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-312.pyc index 12568e51..22d987ba 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/build_tracker.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/build_tracker.cpython-312.pyc index 39d6c960..de10125a 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/build_tracker.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/build_tracker.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-312.pyc index f07d473e..3b62c7fb 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-312.pyc index 0859adab..71c3faee 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-312.pyc index 99af5c2a..7fce0629 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-312.pyc index fa63c8d8..9894664b 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-312.pyc index 2286b798..39aff8d0 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-312.pyc index efaccb07..ed68a00a 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-312.pyc index ad5208f8..8d9dd42f 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-312.pyc index 2dc0fe1e..fdc310b4 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-312.pyc index ccd48bf1..2caf388d 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/req/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/req/__pycache__/__init__.cpython-312.pyc index d9072a94..556b7ef3 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/req/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/req/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/req/__pycache__/constructors.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/req/__pycache__/constructors.cpython-312.pyc index a9aa3fce..cc4908cd 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/req/__pycache__/constructors.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/req/__pycache__/constructors.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/req/__pycache__/req_file.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/req/__pycache__/req_file.cpython-312.pyc index c96b28df..4e814aa0 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/req/__pycache__/req_file.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/req/__pycache__/req_file.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/req/__pycache__/req_install.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/req/__pycache__/req_install.cpython-312.pyc index c376e20e..5e5ade34 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/req/__pycache__/req_install.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/req/__pycache__/req_install.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/req/__pycache__/req_set.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/req/__pycache__/req_set.cpython-312.pyc index d9623c69..740e9723 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/req/__pycache__/req_set.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/req/__pycache__/req_set.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-312.pyc index 838eca96..70331a0b 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-312.pyc index f46868f4..73e9b45c 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/resolution/__pycache__/base.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/resolution/__pycache__/base.cpython-312.pyc index b1d1b9fe..d19f005b 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/resolution/__pycache__/base.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/resolution/__pycache__/base.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-312.pyc index 8e7f4022..b1721d5b 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-312.pyc index 562ca515..03fa200d 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-312.pyc index 469aead8..8a182c1d 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-312.pyc index aea48752..006c0d4c 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-312.pyc index 857a3d4d..fd804384 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-312.pyc index feaf7311..adef7042 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-312.pyc index f4fe213d..192925a4 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-312.pyc index 2bb090bd..cd0b7eb4 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-312.pyc index 9b703475..dd90e706 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-312.pyc index b065d3a9..952f4066 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-312.pyc index 0b38af7b..328af322 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-312.pyc index 77b23682..1940a446 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-312.pyc index 868a8c3e..f0b0b873 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/_log.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/_log.cpython-312.pyc index 490522f7..decfa03c 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/_log.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/_log.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-312.pyc index c88ae0a9..cee3d1ff 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/compat.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/compat.cpython-312.pyc index 3e5b362a..72032253 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/compat.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/compat.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-312.pyc index fce28d46..95697ce6 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-312.pyc index 51a1224e..823ec0e3 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-312.pyc index 398c5f24..48cee4db 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-312.pyc index 0c65669d..32a14b4b 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-312.pyc index 49c9f97e..887eda56 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-312.pyc index 9927ec91..3cfc0153 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-312.pyc index 70bd8dfb..17c6d790 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-312.pyc index af354c74..28e2ce7d 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-312.pyc index 76f751c6..56310949 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-312.pyc index a4a54a4c..8c820f40 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-312.pyc index bb63ea22..d0a5205f 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/logging.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/logging.cpython-312.pyc index 69bd189b..6b789afb 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/logging.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/logging.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/misc.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/misc.cpython-312.pyc index d66ea9ff..057b0870 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/misc.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/misc.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/models.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/models.cpython-312.pyc index 43606c65..e17016cb 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/models.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/models.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-312.pyc index ee7ecd47..116e7653 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-312.pyc index 60e1f34a..6a507f41 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-312.pyc index d4d0b4cb..48b5685b 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-312.pyc index 180ff288..11623ea3 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-312.pyc index 09f9790c..4bf2e384 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/urls.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/urls.cpython-312.pyc index 5870a307..9a542820 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/urls.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/urls.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-312.pyc index 7cfe0b8f..d0609fe3 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-312.pyc index f5cf0852..1c7fc52a 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-312.pyc index 9ea3b28e..18984b1e 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-312.pyc index 6663faa9..54548b4a 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/git.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/git.cpython-312.pyc index b7049942..97f8230b 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/git.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/git.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-312.pyc index 1b9e341d..31f5d496 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-312.pyc index f178517c..4f1b477f 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-312.pyc b/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-312.pyc index 7aa81a6e..1e7f9868 100644 Binary files a/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/__pycache__/__init__.cpython-312.pyc index 701b3030..6f1ca225 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/__pycache__/six.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/__pycache__/six.cpython-312.pyc index 575ca976..37e3f957 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/__pycache__/six.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/__pycache__/six.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/__pycache__/typing_extensions.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/__pycache__/typing_extensions.cpython-312.pyc index 29c1d8fb..2b823bc9 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/__pycache__/typing_extensions.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/__pycache__/typing_extensions.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-312.pyc index 8d0d9a94..4446491e 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-312.pyc index 50c0e094..fbf2599d 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-312.pyc index 5ee1e8ec..36ffa3c6 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-312.pyc index 0bf55fc8..0a600c34 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-312.pyc index fc0d37d9..154ba135 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-312.pyc index 78829645..c1184545 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-312.pyc index 5c1e9a1c..db7bfab8 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-312.pyc index b7e18f55..9781359f 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-312.pyc index 218bfe8e..b823d6bf 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-312.pyc index 0a81ef5b..ff7e6655 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-312.pyc index 03b48723..43f1ea2b 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-312.pyc index ba72821f..aa3519a8 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-312.pyc index b462565f..62400c81 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-312.pyc index 56351a46..2f35371b 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-312.pyc index 10342995..42116c2e 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-312.pyc index 9e84de02..a9d8ae52 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-312.pyc index de86c69c..b3357757 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-312.pyc index 57fb2f88..71cf8781 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-312.pyc index b9709a2f..b0768752 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-312.pyc index 40ce572b..7b10d1ce 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-312.pyc index cae9ad87..ea13f315 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-312.pyc index a14e65bd..839ea38b 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachinedict.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachinedict.cpython-312.pyc index 1ba0b9c8..7ed945e4 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachinedict.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachinedict.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-312.pyc index f9e40166..f1ed8e8e 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-312.pyc index bcd1feed..a1aa9576 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-312.pyc index 913078f3..7b9a937a 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-312.pyc index 1f6c1ead..7b49b3fd 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-312.pyc index 7df8a4ef..41dd6596 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-312.pyc index 66780b97..a7827c32 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-312.pyc index 1d154f6c..44ddecca 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-312.pyc index 357a65bc..3ccee5d8 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-312.pyc index 9859ef98..d01f11bc 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-312.pyc index d45c48cb..ce95cec7 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-312.pyc index d26f501c..765aea73 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-312.pyc index 0f2b0025..d3352762 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-312.pyc index 8ed321ec..ab8808f6 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/johabfreq.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/johabfreq.cpython-312.pyc index 5e74f24b..a8e52f1b 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/johabfreq.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/johabfreq.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/johabprober.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/johabprober.cpython-312.pyc index 96239d12..6437ed29 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/johabprober.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/johabprober.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-312.pyc index e64dc4c6..c2bed173 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-312.pyc index 0a3349e2..d32d1d9b 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-312.pyc index 91a524f5..5ea0fd0b 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-312.pyc index 3b388e20..c119af1b 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-312.pyc index c938ebcd..995fbbdf 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-312.pyc index 80145332..9db91c66 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-312.pyc index 449bf374..cc24af81 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-312.pyc index 41117333..6c226015 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-312.pyc index 4b12f183..77f195a4 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/macromanprober.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/macromanprober.cpython-312.pyc index ece5a542..6a19b494 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/macromanprober.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/macromanprober.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-312.pyc index b82ae5ab..4fef0aab 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-312.pyc index 1f78c63d..24e8e069 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-312.pyc index 9f66b3ea..cb3c1b19 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/resultdict.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/resultdict.cpython-312.pyc index 502fc87d..1136b953 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/resultdict.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/resultdict.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-312.pyc index a7e11e04..f81ba647 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-312.pyc index b5174788..d04c6e58 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-312.pyc index b2929bf2..f4b25252 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-312.pyc index d3592592..bde40e29 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/utf1632prober.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/utf1632prober.cpython-312.pyc index 84cd2faa..2f440369 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/utf1632prober.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/utf1632prober.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-312.pyc index f28cdafe..ffe2756d 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-312.pyc index 5e6f57ae..644639b9 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-312.pyc index 99daf7c1..c6eb4168 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-312.pyc index 4917c106..3bdfd650 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-312.pyc index 83494f5a..51dc4399 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/chardet/metadata/__pycache__/languages.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/chardet/metadata/__pycache__/languages.cpython-312.pyc index 551177e8..4e97df22 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/chardet/metadata/__pycache__/languages.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/chardet/metadata/__pycache__/languages.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-312.pyc index 40740a03..66a079b0 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-312.pyc index 0546eb50..2efbb3a1 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-312.pyc index dc4e3a14..adbce921 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-312.pyc index be5dd65a..d20c40f0 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-312.pyc index bbfbc94a..9ed531e0 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-312.pyc index 4ea75035..a6017876 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/__init__.cpython-312.pyc index 8a6abfc3..ca433bf6 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/ansi_test.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/ansi_test.cpython-312.pyc index ab555bb0..e71c952d 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/ansi_test.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/ansi_test.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/ansitowin32_test.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/ansitowin32_test.cpython-312.pyc index 70145830..8bad27e8 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/ansitowin32_test.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/ansitowin32_test.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/initialise_test.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/initialise_test.cpython-312.pyc index 911e8306..7a0cc803 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/initialise_test.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/initialise_test.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/isatty_test.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/isatty_test.cpython-312.pyc index 0f4fdb19..9228c234 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/isatty_test.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/isatty_test.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/utils.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/utils.cpython-312.pyc index 52548ed2..405d5a21 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/utils.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/utils.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/winterm_test.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/winterm_test.cpython-312.pyc index 7efc0120..819b8ec3 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/winterm_test.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/colorama/tests/__pycache__/winterm_test.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-312.pyc index 9684c5ac..e6c15bf4 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-312.pyc index b77610a2..6b83dc0a 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-312.pyc index 33cf587b..7fe3fc8c 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-312.pyc index 2932d09e..11e9a407 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-312.pyc index 0d8ff94e..912ca577 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-312.pyc index d7fcafd5..e0fb4ea6 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-312.pyc index c324ccf1..337aa1c9 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-312.pyc index c0b22705..1d3774e5 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-312.pyc index 4e5a0491..a3650807 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-312.pyc index 2758cea7..18d942be 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-312.pyc index dbd7fc1e..ed7735a1 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-312.pyc index f0ae554a..12c7e97c 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-312.pyc index 29a32a29..e6d8a198 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/distro/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/distro/__pycache__/__init__.cpython-312.pyc index 5dc3b534..6f4e89ba 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/distro/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/distro/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/distro/__pycache__/__main__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/distro/__pycache__/__main__.cpython-312.pyc index f2967131..a321278b 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/distro/__pycache__/__main__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/distro/__pycache__/__main__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/distro/__pycache__/distro.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/distro/__pycache__/distro.cpython-312.pyc index 7420cd4f..65424f5e 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/distro/__pycache__/distro.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/distro/__pycache__/distro.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-312.pyc index 3315d148..4c9230ce 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-312.pyc index a0232369..d992f75d 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-312.pyc index b52bc97d..4cc7cc22 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/core.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/core.cpython-312.pyc index 1ff3129d..cde8d0e3 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/core.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/core.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-312.pyc index cff2a887..f5144076 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-312.pyc index d2f29d3b..dd786938 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-312.pyc index 109bdc41..e065f024 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-312.pyc index 4a57ef40..21d2fbf4 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-312.pyc index 96fa4016..bf7b8c1d 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-312.pyc index 54117e0d..20ba6444 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-312.pyc index 302f2114..ce5bd1bd 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-312.pyc index 43aa349d..23815d77 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-312.pyc index 63d1ad48..7dc291f6 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-312.pyc index 625e4843..42ffcd88 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-312.pyc index 70c5168d..3f782684 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-312.pyc index 52f10544..8ed3ed37 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-312.pyc index b542ae9d..aa39b60d 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-312.pyc index dfc3feb8..573b37c2 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-312.pyc index 209128af..3ca19123 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-312.pyc index e2a0bc88..c37a7e8e 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-312.pyc index 7827fc7a..dca1c64d 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-312.pyc index 0deffee5..b9799cf6 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-312.pyc index 398d3447..db0269d0 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-312.pyc index 95e59a76..c53f6c7e 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-312.pyc index 8b87615f..11737993 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-312.pyc index 2ed234f9..8a4e227c 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/android.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/android.cpython-312.pyc index 1bc74b2f..05523190 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/android.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/android.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-312.pyc index 1321cf0a..3edeb86c 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-312.pyc index d9a336a8..d211ee79 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/unix.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/unix.cpython-312.pyc index 419f843f..582c5ce0 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/unix.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/unix.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-312.pyc index 589dcf19..0e8b7f33 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-312.pyc index 809f2b28..76b8d5f7 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-312.pyc index a4ec55e6..c77f1730 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/__main__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/__main__.cpython-312.pyc index 498f4b8c..b0d8b829 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/__main__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/__main__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/cmdline.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/cmdline.cpython-312.pyc index 782de4fd..684323f8 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/cmdline.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/cmdline.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/console.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/console.cpython-312.pyc index 388b8f58..37d99fc1 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/console.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/console.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/filter.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/filter.cpython-312.pyc index a7bf0bac..a1a54301 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/filter.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/filter.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-312.pyc index 4174b143..6324c3ab 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-312.pyc index 7e306c1a..88712cd2 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-312.pyc index 886150cc..1a002da6 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-312.pyc index b90e696c..c29f9e53 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-312.pyc index 1891425b..3ece0571 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/scanner.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/scanner.cpython-312.pyc index 003de1d7..b2f1f965 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/scanner.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/scanner.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-312.pyc index 7e4d61d3..876ea9e3 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-312.pyc index a24d2133..4e340f5b 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-312.pyc index 56a7f262..3f7f9d86 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/unistring.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/unistring.cpython-312.pyc index 48616437..7aab5be4 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/unistring.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/unistring.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-312.pyc index c313a301..8957c964 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-312.pyc index f8754833..a2d312e0 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-312.pyc index 813ace8f..d21bbda4 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-312.pyc index 46aee6cd..77d4e7f7 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-312.pyc index fdf2d728..61fbfb2e 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/groff.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/groff.cpython-312.pyc index 06aa7b60..5e6b842c 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/groff.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/groff.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/html.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/html.cpython-312.pyc index 1fe6fe23..9aa202c1 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/html.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/html.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-312.pyc index adad9a4d..9fdb019d 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/irc.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/irc.cpython-312.pyc index b1fa2d02..f0a597b0 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/irc.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/irc.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/latex.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/latex.cpython-312.pyc index fe95f4d5..f2597709 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/latex.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/latex.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-312.pyc index 6b8ab38e..a061b7cf 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-312.pyc index 0234b3e8..1776891b 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-312.pyc index f7ad2ee8..b6b04472 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/svg.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/svg.cpython-312.pyc index ba53f3d0..c5f38179 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/svg.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/svg.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-312.pyc index 0175f7b4..67a454e3 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-312.pyc index 6f49ecb4..41946636 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-312.pyc index a33fa9fb..db43fe30 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-312.pyc index e223a02d..709725ba 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/lexers/__pycache__/python.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/lexers/__pycache__/python.cpython-312.pyc index 89d372d6..9c491374 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/lexers/__pycache__/python.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/lexers/__pycache__/python.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-312.pyc index 63792087..31e3124d 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/__init__.cpython-312.pyc index dd1b1411..8431192b 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/actions.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/actions.cpython-312.pyc index dc435e32..78f391e2 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/actions.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/actions.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/common.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/common.cpython-312.pyc index 38f0dfe3..8b6e3e6b 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/common.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/common.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/core.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/core.cpython-312.pyc index d919c44f..c9e46e1b 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/core.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/core.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/exceptions.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/exceptions.cpython-312.pyc index c5fa838e..fd0eb942 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/exceptions.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/exceptions.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/helpers.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/helpers.cpython-312.pyc index 9f78318d..10c96e5f 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/helpers.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/helpers.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/results.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/results.cpython-312.pyc index 142d0304..63fab669 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/results.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/results.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/testing.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/testing.cpython-312.pyc index 0cfc2a33..b67d3821 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/testing.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/testing.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/unicode.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/unicode.cpython-312.pyc index e5098c31..547df72d 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/unicode.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/unicode.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/util.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/util.cpython-312.pyc index 17a656d1..98cbb4bb 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/util.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pyparsing/__pycache__/util.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-312.pyc index 714834a8..7be328f4 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-312.pyc index aa69e3ce..6568e463 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-312.pyc index bb0796fe..339cb2a8 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-312.pyc index f52ad832..76dc833d 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-312.pyc index 99746acd..1e435afc 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-312.pyc index 74681a92..a4a53b1b 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-312.pyc index f286a4a0..4912ed4e 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-312.pyc index af49ec1a..c13986e3 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-312.pyc index 62e448cb..0ff93ea2 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-312.pyc index 78006113..6d73b0ad 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/api.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/api.cpython-312.pyc index 79c5ed55..83246ece 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/api.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/api.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-312.pyc index 01a0e4f3..f4c97550 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-312.pyc index 1cb3fcfb..b38878aa 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-312.pyc index cdc1231a..34ef42d9 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-312.pyc index 9abf1ac8..55ba0776 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-312.pyc index a33fc729..aae22639 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/help.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/help.cpython-312.pyc index 8b674539..fe97e42c 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/help.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/help.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-312.pyc index cf8419e2..e4ef6748 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/models.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/models.cpython-312.pyc index c9c27272..9a9e274f 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/models.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/models.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-312.pyc index 33caa1d1..591638b2 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-312.pyc index b5063cfb..3720642f 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-312.pyc index bb25268c..f05ea878 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-312.pyc index e6b73c87..b16b17da 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-312.pyc index c6379ffd..1a776617 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-312.pyc index 6172f3cf..2f128402 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-312.pyc index cf298d93..23a8bdc0 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-312.pyc index 56ba6724..6f71cde1 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-312.pyc index 71995065..0af39586 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-312.pyc index 8f101ba8..4890a409 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-312.pyc index 2060cdde..5b82f887 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-312.pyc index 84354479..be66046f 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-312.pyc index 55124aa4..4a6e10da 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/__main__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/__main__.cpython-312.pyc index 4741f70e..761bf700 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/__main__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/__main__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_cell_widths.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_cell_widths.cpython-312.pyc index 8972ac7c..9a8d7067 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_cell_widths.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_cell_widths.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-312.pyc index da888a98..adaf9e16 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_emoji_replace.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_emoji_replace.cpython-312.pyc index cb40f3ea..1580a61b 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_emoji_replace.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_emoji_replace.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-312.pyc index f98245de..3eda337d 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-312.pyc index 78eef93b..f14a4a31 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-312.pyc index 7f993605..ae819ca5 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_inspect.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_inspect.cpython-312.pyc index 937ae9b6..37532164 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_inspect.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_inspect.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-312.pyc index 1f182e9b..75154caf 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_loop.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_loop.cpython-312.pyc index 7f29f993..c5b354ee 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_loop.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_loop.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_null_file.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_null_file.cpython-312.pyc index 06d4f18f..9b8dd0b4 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_null_file.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_null_file.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-312.pyc index ec6bf097..e5d83d64 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-312.pyc index 5cd80093..96f3eaa6 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-312.pyc index 5fcd735a..b4c40600 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-312.pyc index f19bad2d..09aa44db 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_stack.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_stack.cpython-312.pyc index cc287f0d..3ac04438 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_stack.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_stack.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_timer.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_timer.cpython-312.pyc index 8d7a47c9..fe7458de 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_timer.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_timer.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_win32_console.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_win32_console.cpython-312.pyc index d55b1f4c..a18225d1 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_win32_console.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_win32_console.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-312.pyc index b9c3553c..fc9f2ae3 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_windows_renderer.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_windows_renderer.cpython-312.pyc index 345fb5a8..890ccc82 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_windows_renderer.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_windows_renderer.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-312.pyc index e0ecf357..7eaa96f7 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-312.pyc index 50cce9d1..e5a65050 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/align.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/align.cpython-312.pyc index 74c1d0b5..a32483e6 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/align.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/align.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-312.pyc index 5a57e3c7..8cbd0643 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/bar.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/bar.cpython-312.pyc index 276a3985..bd3a51c4 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/bar.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/bar.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/box.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/box.cpython-312.pyc index 52066b16..d4506255 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/box.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/box.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-312.pyc index eb62b127..7d4ddc2c 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/color.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/color.cpython-312.pyc index 554becbc..fc47df2f 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/color.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/color.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-312.pyc index d128cae7..d86e94bb 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-312.pyc index 8f11bca3..4b069774 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/console.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/console.cpython-312.pyc index 59f45ab0..e87fb271 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/console.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/console.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-312.pyc index 365a151b..d42eb709 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-312.pyc index d74fb3bd..e9fbb90d 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/control.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/control.cpython-312.pyc index 7af77094..9fddfa23 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/control.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/control.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/default_styles.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/default_styles.cpython-312.pyc index ecdbae88..de4f4927 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/default_styles.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/default_styles.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/diagnose.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/diagnose.cpython-312.pyc index 75619fd4..94376d76 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/diagnose.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/diagnose.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-312.pyc index 84439aa2..b1755582 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-312.pyc index c4531078..bd0dc3fd 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-312.pyc index 20732988..1c1e1c02 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-312.pyc index f35c02df..3155ad4f 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-312.pyc index 15e8d77b..bf6e8f94 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/json.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/json.cpython-312.pyc index f1deadcf..24edcb6f 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/json.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/json.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-312.pyc index 1872b7fb..9fc966df 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-312.pyc index 4aa504aa..40151636 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/live.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/live.cpython-312.pyc index 29024c55..bbc7f66c 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/live.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/live.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/live_render.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/live_render.cpython-312.pyc index 14cdfb32..80c129af 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/live_render.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/live_render.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/logging.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/logging.cpython-312.pyc index 872db042..9eea1323 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/logging.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/logging.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-312.pyc index 07776a1c..35f1c2d3 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/measure.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/measure.cpython-312.pyc index 23c52dc0..27fcd71b 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/measure.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/measure.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-312.pyc index 84c391c7..cef76801 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/pager.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/pager.cpython-312.pyc index b4caa04f..fd1a8763 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/pager.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/pager.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/palette.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/palette.cpython-312.pyc index 77c4181d..72c7917b 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/palette.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/palette.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-312.pyc index 60ee7d8b..e6f78f42 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-312.pyc index bde3df3e..445de400 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-312.pyc index ce32562a..ab390bce 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-312.pyc index 4d6a9ed5..be9dcd48 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-312.pyc index 2852e11a..81efd854 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-312.pyc index 7ad698b9..37512211 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/region.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/region.cpython-312.pyc index 2e6ead9c..1276dbaf 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/region.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/region.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-312.pyc index cde3879a..f9fe8889 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-312.pyc index 22f40ef1..0b41be65 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-312.pyc index 0e2eed6f..2081fc8b 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-312.pyc index d8c7060e..d6214afb 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-312.pyc index 17a71b04..fe936c66 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-312.pyc index 87360f21..06ad88a3 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/status.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/status.cpython-312.pyc index 237797bf..a5459519 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/status.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/status.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/style.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/style.cpython-312.pyc index b3ac0d4f..c1ef483b 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/style.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/style.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-312.pyc index 2582aa4d..cc92aaab 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/syntax.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/syntax.cpython-312.pyc index 42eaf92c..50b801a0 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/syntax.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/syntax.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/table.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/table.cpython-312.pyc index 69d45aa3..c8f9dfda 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/table.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/table.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-312.pyc index 9df79e58..f66736b6 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/text.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/text.cpython-312.pyc index 691cedac..de092427 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/text.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/text.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-312.pyc index d25bbb1a..d7104e1f 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/themes.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/themes.cpython-312.pyc index 52f42e31..1413fe1a 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/themes.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/themes.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-312.pyc index 094c0af4..b216c229 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/tree.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/tree.cpython-312.pyc index f7af7c19..87f5c8dc 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/tree.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/rich/__pycache__/tree.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/__init__.cpython-312.pyc index ab7a9e81..a2ed4d0a 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/_asyncio.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/_asyncio.cpython-312.pyc index 53d09f73..7f6e8805 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/_asyncio.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/_asyncio.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/_utils.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/_utils.cpython-312.pyc index 27fbdddf..208e6783 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/_utils.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/_utils.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-312.pyc index 883a5799..445126ee 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-312.pyc index d19e6625..3be0d3b4 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/before_sleep.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/before_sleep.cpython-312.pyc index 7382c217..dc7c0418 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/before_sleep.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/before_sleep.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/nap.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/nap.cpython-312.pyc index d12164a9..463f4872 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/nap.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/nap.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/retry.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/retry.cpython-312.pyc index dc9807fb..901fdab0 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/retry.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/retry.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/stop.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/stop.cpython-312.pyc index 34824641..877933df 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/stop.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/stop.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-312.pyc index c9f46424..c32fb278 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/wait.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/wait.cpython-312.pyc index c67fe974..8a82c8a9 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/wait.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/tenacity/__pycache__/wait.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-312.pyc index 17e025c4..f4f205ae 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-312.pyc index 0888212a..8ca15f62 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-312.pyc index 8722acfb..91af1e96 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/tomli/__pycache__/_types.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/tomli/__pycache__/_types.cpython-312.pyc index 3c302536..b41ce807 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/tomli/__pycache__/_types.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/tomli/__pycache__/_types.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/__init__.cpython-312.pyc index 78b12e43..7b50a050 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/_api.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/_api.cpython-312.pyc index b053e9ca..aeebdcb2 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/_api.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/_api.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/_macos.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/_macos.cpython-312.pyc index 91eb5941..df6ad74a 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/_macos.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/_macos.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/_openssl.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/_openssl.cpython-312.pyc index 823ad888..d2576fc5 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/_openssl.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/_openssl.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-312.pyc index 67b10bee..38281831 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/_windows.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/_windows.cpython-312.pyc index d16ca582..15d36e45 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/_windows.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/truststore/__pycache__/_windows.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-312.pyc index 5b1d727d..852b7897 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-312.pyc index 7837e814..49978d22 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-312.pyc index ff26bd0d..09826bee 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-312.pyc index 458a0e76..c007f22c 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-312.pyc index 01cfac54..b189e04e 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-312.pyc index 9ad241c2..1c48079c 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-312.pyc index 41cd313c..6c069bd3 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-312.pyc index 51f03713..cf945040 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-312.pyc index a01c350a..e78cf25b 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-312.pyc index c60a4c12..d9c14660 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-312.pyc index 92075f9d..efde5b73 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-312.pyc index 135e23a1..cbb86359 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-312.pyc index 231a2305..48bd2697 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-312.pyc index 71391ca2..f68f0f81 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-312.pyc index e9b7bee1..ce0d77dd 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc index 6451db48..dacad15a 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-312.pyc index d20f49ee..07421636 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-312.pyc index 1bd9216f..4cd6ad64 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-312.pyc index d4928de3..e19f6405 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-312.pyc index 3b79412f..75bf2520 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-312.pyc index 8737b01b..1853dc95 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-312.pyc index 586aa818..ec7606b2 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-312.pyc index d8233f81..8302dd2c 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-312.pyc index 6047e444..b1544f02 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-312.pyc index 4eb6c076..eb381d21 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-312.pyc index 8998325d..1613a7a7 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-312.pyc index ba630ec1..beed0269 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-312.pyc index e200b68a..4b230332 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-312.pyc index b0ad2b63..ebecfbeb 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-312.pyc index 3dab745a..d0d47e45 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-312.pyc index 92e41dc8..88181c93 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-312.pyc index 25e0d195..c89b1129 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-312.pyc index 7330d27b..11db9c55 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-312.pyc index 8d672568..53f122d2 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc index 6ddaed52..5c5553e9 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-312.pyc index cae36cae..dfbdbee9 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-312.pyc index cffd5d5e..adae17d6 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-312.pyc index 0d974f12..f39f1f7c 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-312.pyc index 7a5035b4..16b0917a 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-312.pyc index 484ea28c..a14c1a56 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-312.pyc index 88e469cc..f7478f59 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-312.pyc index 433d8afd..742c2e10 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-312.pyc index e3941175..31552b02 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-312.pyc differ diff --git a/env_web/Lib/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-312.pyc b/env_web/Lib/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-312.pyc index 42794df9..05542f47 100644 Binary files a/env_web/Lib/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-312.pyc and b/env_web/Lib/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-312.pyc differ diff --git a/env_web/Scripts/pip.exe b/env_web/Scripts/pip.exe index 53489587..2d816dfa 100644 Binary files a/env_web/Scripts/pip.exe and b/env_web/Scripts/pip.exe differ diff --git a/env_web/Scripts/pip3.12.exe b/env_web/Scripts/pip3.12.exe index 53489587..2d816dfa 100644 Binary files a/env_web/Scripts/pip3.12.exe and b/env_web/Scripts/pip3.12.exe differ diff --git a/env_web/Scripts/pip3.exe b/env_web/Scripts/pip3.exe index 53489587..2d816dfa 100644 Binary files a/env_web/Scripts/pip3.exe and b/env_web/Scripts/pip3.exe differ diff --git a/forms/__pycache__/base.cpython-312.pyc b/forms/__pycache__/base.cpython-312.pyc index 4fd011ac..fc8bd539 100644 Binary files a/forms/__pycache__/base.cpython-312.pyc and b/forms/__pycache__/base.cpython-312.pyc differ diff --git a/forms/base.py b/forms/base.py index 32f8829d..567803a0 100644 --- a/forms/base.py +++ b/forms/base.py @@ -48,7 +48,7 @@ class Form_Base(FlaskForm, metaclass=Form_Base_Meta): pass def get_Filters_Product_Category(data_request): - data_form = data_request[Model_View_Store_Product_Category.KEY_FORM] + data_form = data_request[Model_View_Store_Product_Category.FLAG_FORM] form_filters = Filters_Product_Category(**data_form) form_filters.is_not_empty.data = av.input_bool(data_form['is_not_empty'], 'is_not_empty', 'filter_category') form_filters.active.data = av.input_bool(data_form['active'], 'active', 'filter_category') diff --git a/models/__pycache__/model_view_base.cpython-312.pyc b/models/__pycache__/model_view_base.cpython-312.pyc index 914d4d6b..ff19d858 100644 Binary files a/models/__pycache__/model_view_base.cpython-312.pyc and b/models/__pycache__/model_view_base.cpython-312.pyc differ diff --git a/models/__pycache__/model_view_store.cpython-312.pyc b/models/__pycache__/model_view_store.cpython-312.pyc index 550a7117..07edb8d5 100644 Binary files a/models/__pycache__/model_view_store.cpython-312.pyc and b/models/__pycache__/model_view_store.cpython-312.pyc differ diff --git a/models/model_view_base.py b/models/model_view_base.py index bd3187e8..80c1d5ec 100644 --- a/models/model_view_base.py +++ b/models/model_view_base.py @@ -54,6 +54,7 @@ class Model_View_Base(BaseModel, ABC): FLAG_CANCEL: ClassVar[str] = 'button-cancel' # FLAG_CONTACT_US: ClassVar[str] = 'button-contact' FLAG_CLOSE_TEMPORARY_ELEMENT: ClassVar[str] = 'button-temporary-element-close' + FLAG_CALLBACK: ClassVar[str] = 'callback' FLAG_CARD: ClassVar[str] = 'card' FLAG_CODE: ClassVar[str] = Base.FLAG_CODE FLAG_COLLAPSED: ClassVar[str] = 'collapsed' @@ -63,6 +64,7 @@ class Model_View_Base(BaseModel, ABC): FLAG_CONTAINER: ClassVar[str] = 'container' FLAG_CONTAINER_INPUT: ClassVar[str] = FLAG_CONTAINER + '-input' FLAG_CURRENCY: ClassVar[str] = 'currency' + FLAG_DATA: ClassVar[str] = 'data' FLAG_DELETE: ClassVar[str] = 'delete' FLAG_DESCRIPTION: ClassVar[str] = Base.FLAG_DESCRIPTION FLAG_DETAIL: ClassVar[str] = 'detail' @@ -73,6 +75,7 @@ class Model_View_Base(BaseModel, ABC): FLAG_EXPANDED: ClassVar[str] = 'expanded' FLAG_FAILURE: ClassVar[str] = 'failure' FLAG_FILTER: ClassVar[str] = 'filter' + FLAG_FORM: ClassVar[str] = 'form' FLAG_FORM_FILTERS: ClassVar[str] = 'form-filters' FLAG_HAMBURGER: ClassVar[str] = 'hamburger' FLAG_IMAGE_LOGO: ClassVar[str] = 'image-logo' @@ -113,6 +116,7 @@ class Model_View_Base(BaseModel, ABC): FLAG_SUBMITTED: ClassVar[str] = 'submitted' FLAG_SUCCESS: ClassVar[str] = 'success' FLAG_TEMPORARY_ELEMENT: ClassVar[str] = 'temporary-element' + FLAG_USER: ClassVar[str] = User.FLAG_USER # flagIsDatePicker: ClassVar[str] = 'is-date-picker' HASH_APPLY_FILTERS_STORE_PRODUCT_PERMUTATION: ClassVar[str] = '/store/permutation_filter' HASH_CALLBACK_LOGIN: ClassVar[str] = '/callback-login' @@ -180,10 +184,6 @@ class Model_View_Base(BaseModel, ABC): ID_PAGE_BODY: ClassVar[str] = 'pageBody' ID_TABLE_MAIN: ClassVar[str] = 'tableMain' ID_TEXTAREA_CONFIRM: ClassVar[str] = 'textareaConfirm' - KEY_CALLBACK: ClassVar[str] = 'callback' - # KEY_CSRF_TOKEN: ClassVar[str] = 'X-CSRFToken' - KEY_DATA: ClassVar[str] = 'data' - KEY_FORM: ClassVar[str] = 'form' NAME_COMPANY: ClassVar[str] = 'Precision And Research Technology Systems Limited' NAME_CSRF_TOKEN: ClassVar[str] = 'csrf-token' # URL_HOST: ClassVar[str] = os.env() 'http://127.0.0.1:5000' # 'https://www.partsltd.co.uk' @@ -256,9 +256,9 @@ class Model_View_Base(BaseModel, ABC): print(f'session: {self.session}') datastore_user = DataStore_User() - user = datastore_user.get_user_session() - self.user = user - self.is_user_logged_in = user.is_logged_in + self.user = datastore_user.get_user_session() + self.is_user_logged_in = self.user.is_logged_in + print(f'model_view_base init end - model.user: {self.user}') def output_bool(self, boolean): return str(boolean).lower() diff --git a/models/model_view_store.py b/models/model_view_store.py index 1509f051..421fc860 100644 --- a/models/model_view_store.py +++ b/models/model_view_store.py @@ -140,7 +140,6 @@ class Model_View_Store(Model_View_Base): """ KEY_BASKET : ClassVar[str] = Basket.KEY_BASKET # 'basket' # KEY_CODE_CURRENCY : ClassVar[str] = 'code_currency' - # KEY_FORM : ClassVar[str] = 'form' KEY_ID_CURRENCY : ClassVar[str] = Basket.KEY_ID_CURRENCY # 'id_currency' KEY_ID_PRODUCT : ClassVar[str] = 'product_id' KEY_ID_PERMUTATION : ClassVar[str] = 'permutation_id' diff --git a/static/MySQL/0000_combine.sql b/static/MySQL/0000_combine.sql index 8e50d762..c6747853 100644 --- a/static/MySQL/0000_combine.sql +++ b/static/MySQL/0000_combine.sql @@ -305,7 +305,7 @@ SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning CREATE TABLE Shop_Product_Change_Set ( id_change_set INT NOT NULL AUTO_INCREMENT PRIMARY KEY, comment VARCHAR(500), - updated_last_on TIMESTAMP, + updated_last_on DATETIME, updated_last_by VARCHAR(100) ); # Split Staging @@ -329,7 +329,7 @@ SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning CREATE TABLE IF NOT EXISTS Shop_User_Change_Set ( id_change_set INT NOT NULL AUTO_INCREMENT PRIMARY KEY, comment VARCHAR(500), - updated_last_on TIMESTAMP, + updated_last_on DATETIME, updated_last_by VARCHAR(100) ); # Split Key Value Pair CSV Staging @@ -354,7 +354,7 @@ SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning CREATE TABLE Shop_Sales_And_Purchasing_Change_Set ( id_change_set INT NOT NULL AUTO_INCREMENT PRIMARY KEY, comment VARCHAR(500), - updated_last_on TIMESTAMP, + updated_last_on DATETIME, updated_last_by VARCHAR(100) ); # Access Levels @@ -370,7 +370,7 @@ CREATE TABLE IF NOT EXISTS Shop_Access_Level ( priority INT NOT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Access_Level_id_change_set @@ -425,9 +425,9 @@ CREATE TABLE IF NOT EXISTS File_Type ( code VARCHAR(50), name VARCHAR(100), extension VARCHAR(50), - created_on TIMESTAMP, + created_on DATETIME, created_by INT, - updated_last_on TIMESTAMP, + updated_last_on DATETIME, updated_last_by VARCHAR(100) ); @@ -447,9 +447,9 @@ CREATE TABLE IF NOT EXISTS File_Type_Audit ( name_field VARCHAR(50), value_prev VARCHAR(500), value_new VARCHAR(500), - created_on TIMESTAMP, + created_on DATETIME, created_by INT, - updated_last_on TIMESTAMP, + updated_last_on DATETIME, updated_last_by VARCHAR(100) ); # Generic / shared properties @@ -461,7 +461,7 @@ SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning CREATE TABLE IF NOT EXISTS Shop_General ( id_general INT NOT NULL AUTO_INCREMENT PRIMARY KEY, quantity_max FLOAT, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT CHK_Shop_General_id_change_set @@ -508,7 +508,7 @@ CREATE TABLE IF NOT EXISTS Shop_Image_Type ( name_plural VARCHAR(256), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Image_Type_id_change_set @@ -547,7 +547,7 @@ CREATE TABLE IF NOT EXISTS Shop_Region ( name VARCHAR(200) NOT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Region_id_change_set @@ -587,7 +587,7 @@ CREATE TABLE IF NOT EXISTS Shop_Region_Temp ( name VARCHAR(200) NOT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Region_Temp_id_change_set @@ -615,7 +615,7 @@ CREATE TABLE IF NOT EXISTS Shop_Region_Branch ( -- depth INT NOT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Region_Branch_id_change_set @@ -671,7 +671,7 @@ CREATE TABLE Shop_Address ( city VARCHAR(256) NOT NULL, county VARCHAR(256) NOT NULL, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Address_id_change_set @@ -692,7 +692,7 @@ CREATE TABLE IF NOT EXISTS Shop_Plant ( REFERENCES Shop_Address(id_address), id_user_manager INT NOT NULL, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Plant_id_change_set @@ -775,7 +775,7 @@ CREATE TABLE IF NOT EXISTS Shop_Storage_Location ( code VARCHAR(50) NOT NULL, name VARCHAR(500) NOT NULL, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Storage_Location_id_change_set @@ -839,7 +839,7 @@ CREATE TABLE IF NOT EXISTS Shop_Storage_Location_Branch ( -- depth INT NOT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Storage_Location_Branch_id_change_set @@ -896,7 +896,7 @@ CREATE TABLE IF NOT EXISTS Shop_Currency ( factor_from_GBP FLOAT NOT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Currency_id_change_set @@ -971,7 +971,7 @@ CREATE TABLE Shop_Tax_Or_Surcharge ( quantity_max FLOAT NOT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Tax_Or_Surcharge_id_change_set @@ -1041,7 +1041,7 @@ CREATE TABLE IF NOT EXISTS Shop_Unit_Measurement ( is_unit_of_time BIT NOT NULL DEFAULT 0, is_unit_of_volume BIT NOT NULL DEFAULT 0, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Unit_Measurement_id_change_set @@ -1085,7 +1085,7 @@ CREATE TABLE IF NOT EXISTS Shop_Unit_Measurement_Conversion ( multiplier_unit_base FLOAT NOT NULL, increment_unit_base FLOAT NOT NULL, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Unit_Measurement_Conversion_id_change_set @@ -1131,7 +1131,7 @@ CREATE TABLE IF NOT EXISTS Shop_Product_Category ( , CONSTRAINT FK_Shop_Product_Category_id_access_level_required FOREIGN KEY (id_access_level_required) REFERENCES Shop_Access_Level(id_access_level) - , created_on TIMESTAMP + , created_on DATETIME , created_by INT NOT NULL , id_change_set INT , CONSTRAINT FK_Shop_Product_Category_id_change_set @@ -1221,7 +1221,7 @@ CREATE TABLE IF NOT EXISTS Shop_Product ( # id_stripe_price VARCHAR(100) NOT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP NOT NULL, + created_on DATETIME NOT NULL, created_by INT NOT NULL, id_change_set INT, CONSTRAINT FK_Shop_Product_id_change_set @@ -1321,7 +1321,7 @@ CREATE TABLE IF NOT EXISTS Shop_Product_Permutation ( count_interval_expiration_unsealed INT, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Product_Permutation_id_change_set @@ -1399,7 +1399,7 @@ CREATE TABLE IF NOT EXISTS Shop_Variation_Type ( name_plural VARCHAR(256), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Variation_Type_id_change_set @@ -1445,7 +1445,7 @@ CREATE TABLE Shop_Variation ( name VARCHAR(255), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Variation_id_change_set @@ -1495,7 +1495,7 @@ CREATE TABLE IF NOT EXISTS Shop_Product_Permutation_Variation_Link ( ON UPDATE RESTRICT, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Product_Permutation_Variation_Link_id_change_set @@ -1637,7 +1637,7 @@ CREATE TABLE IF NOT EXISTS Shop_Product_Price ( price_local_VAT_excl FLOAT NULL, id_stripe_price VARCHAR(200), active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Product_Price_id_change_set @@ -1701,7 +1701,7 @@ CREATE TABLE IF NOT EXISTS Shop_Product_Image ( url VARCHAR(255), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Product_Image_id_change_set @@ -1747,7 +1747,7 @@ CREATE TABLE IF NOT EXISTS Shop_Delivery_Option ( */ active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Delivery_Option_Type_id_change_set @@ -1814,7 +1814,7 @@ CREATE TABLE IF NOT EXISTS Shop_Product_Permutation_Delivery_Option_Link ( quantity_max FLOAT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Permutation_Delivery_Option_Link_id_change_set @@ -1878,11 +1878,11 @@ CREATE TABLE Shop_Discount ( apply_multiplier_first BIT DEFAULT 1, quantity_min FLOAT NOT NULL DEFAULT 0, quantity_max FLOAT NOT NULL, - date_start TIMESTAMP NOT NULL, - date_end TIMESTAMP NOT NULL, + date_start DATETIME NOT NULL, + date_end DATETIME NOT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Discount_id_change_set @@ -1936,7 +1936,7 @@ CREATE TABLE IF NOT EXISTS Shop_Discount_Region_Currency_Link ( REFERENCES Shop_Currency(id_currency) ON UPDATE RESTRICT, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Discount_Region_Currency_Link_id_change_set @@ -1977,7 +1977,7 @@ CREATE TABLE IF NOT EXISTS Shop_Permission_Group ( name VARCHAR(255), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Permission_Group_id_change_set @@ -2028,7 +2028,7 @@ CREATE TABLE IF NOT EXISTS Shop_Permission ( REFERENCES Shop_Access_Level(id_access_level), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Permission_id_change_set @@ -2069,7 +2069,7 @@ CREATE TABLE IF NOT EXISTS Shop_Role ( name VARCHAR(255), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Role_id_change_set @@ -2121,7 +2121,7 @@ CREATE TABLE IF NOT EXISTS Shop_Role_Permission_Link ( FOREIGN KEY (id_access_level) REFERENCES Shop_Access_Level(id_access_level), active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Role_Permission_Link_id_change_set @@ -2167,7 +2167,7 @@ CREATE TABLE IF NOT EXISTS Shop_User ( id_region_default INT NULL, is_included_VAT_default BIT NOT NULL DEFAULT 1, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_User_id_change_set @@ -2215,7 +2215,7 @@ CREATE TABLE IF NOT EXISTS Shop_User_Role_Link ( FOREIGN KEY (id_role) REFERENCES Shop_Role(id_role), active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_User_Role_Link_id_change_set @@ -2265,7 +2265,7 @@ CREATE TABLE Shop_User_Address ( city VARCHAR(256) NOT NULL, county VARCHAR(256) NOT NULL, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_User_Address_id_change_set @@ -2317,7 +2317,7 @@ CREATE TABLE IF NOT EXISTS Shop_User_Basket ( ON UPDATE RESTRICT, quantity INT NOT NULL, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set_user INT, CONSTRAINT FK_Shop_User_Basket_id_change_set_user @@ -2371,7 +2371,7 @@ CREATE TABLE IF NOT EXISTS Shop_User_Order_Status ( name_plural VARCHAR(256), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_User_Order_Status_id_change_set @@ -2424,7 +2424,7 @@ CREATE TABLE IF NOT EXISTS Shop_Supplier ( FOREIGN KEY (id_currency) REFERENCES Shop_Currency(id_currency), active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Supplier_id_change_set @@ -2485,9 +2485,9 @@ CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order ( display_order INT NOT NULL, */ active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, - updated_last_on TIMESTAMP NULL, + updated_last_on DATETIME NULL, created_last_by VARCHAR(100) NULL, id_change_set INT NULL, CONSTRAINT FK_Shop_Supplier_Purchase_Order_id_change_set @@ -2544,9 +2544,9 @@ CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order_Product_Link ( latency_delivery_days INT NOT NULL, display_order INT NOT NULL, active BIT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, - updated_last_on TIMESTAMP NULL, + updated_last_on DATETIME NULL, created_last_by VARCHAR(100) NULL, id_change_set INT NULL, CONSTRAINT FK_Shop_Supplier_Purchase_Order_Product_Link_id_change_set @@ -2633,9 +2633,9 @@ CREATE TABLE IF NOT EXISTS Shop_Manufacturing_Purchase_Order ( display_order INT NOT NULL, */ active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, - updated_last_on TIMESTAMP NULL, + updated_last_on DATETIME NULL, created_last_by VARCHAR(100) NULL, id_change_set INT NULL, CONSTRAINT FK_Shop_Manufacturing_Purchase_Order_id_change_set @@ -2693,9 +2693,9 @@ CREATE TABLE IF NOT EXISTS Shop_Manufacturing_Purchase_Order_Product_Link ( quantity_produced FLOAT NOT NULL, display_order INT NOT NULL, active BIT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, - updated_last_on TIMESTAMP NULL, + updated_last_on DATETIME NULL, created_last_by VARCHAR(100) NULL, id_change_set INT NULL, CONSTRAINT FK_Manufacturing_Purchase_Order_id_change_set @@ -2781,7 +2781,7 @@ CREATE TABLE IF NOT EXISTS Shop_Customer ( FOREIGN KEY (id_currency) REFERENCES Shop_Currency(id_currency), active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Customer_id_change_set @@ -2836,9 +2836,9 @@ CREATE TABLE IF NOT EXISTS Shop_Customer_Sales_Order ( display_order INT NOT NULL, */ active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, - updated_last_on TIMESTAMP NULL, + updated_last_on DATETIME NULL, created_last_by VARCHAR(100) NULL, id_change_set INT NULL, CONSTRAINT FK_Shop_Customer_Sales_Order_id_change_set @@ -2896,9 +2896,9 @@ CREATE TABLE IF NOT EXISTS Shop_Customer_Sales_Order_Product_Link ( display_order INT NOT NULL, active BIT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, - updated_last_on TIMESTAMP NULL, + updated_last_on DATETIME NULL, created_last_by VARCHAR(100) NULL, id_change_set INT NULL, CONSTRAINT FK_Shop_Customer_Sales_Order_Product_Link_id_change_set @@ -5999,19 +5999,19 @@ BEGIN SET v_time_end := CURRENT_TIMESTAMP(6); SELECT a_time_start - , UNIX_TIMESTAMP(a_time_start) + , UNIX_DATETIME(a_time_start) , MICROSECOND(a_time_start) / 1000 , v_time_end - , UNIX_TIMESTAMP(v_time_end) + , UNIX_DATETIME(v_time_end) , MICROSECOND(v_time_end) / 1000 , v_time_end - a_time_start AS timestamp_delta - , UNIX_TIMESTAMP(v_time_end - a_time_start) AS UNIX_TIMESTAMP_timestamp_delta + , UNIX_DATETIME(v_time_end - a_time_start) AS UNIX_DATETIME_timestamp_delta , MICROSECOND(v_time_end - a_time_start) AS MICROSECOND_timestamp_delta -- , TIME_FORMAT(TIMEDIFF(v_time_end, a_time_start), '%H:%i:%s') AS time_difference , CONCAT( TIME_FORMAT(TIMEDIFF(v_time_end, a_time_start), '%H hours, %i minutes, %s seconds'), ', ', - TIMESTAMPDIFF(MICROSECOND, a_time_start, v_time_end) % 1000000 / 1000, ' milliseconds' + DATETIMEDIFF(MICROSECOND, a_time_start, v_time_end) % 1000000 / 1000, ' milliseconds' ) AS time_difference ; @@ -7258,7 +7258,7 @@ BEGIN DECLARE v_ids_product_permission LONGTEXT; DECLARE v_id_change_set INT; DECLARE v_id_access_level_edit INT; - DECLARE v_now TIMESTAMP; + DECLARE v_now DATETIME; DECLARE exit handler for SQLEXCEPTION BEGIN @@ -7441,7 +7441,7 @@ BEGIN END IF; END IF; - SET v_now := CURRENT_TIMESTAMP(); + SET v_now := CURRENT_DATETIME(); IF NOT EXISTS (SELECT * FROM tmp_Msg_Error LIMIT 1) THEN START TRANSACTION; @@ -8950,7 +8950,7 @@ BEGIN DECLARE v_ids_product_permission VARCHAR(4000); -- DECLARE v_ids_permutation_permission VARCHAR(4000); DECLARE v_id_access_level_view INT; - -- DECLARE v_now TIMESTAMP; + -- DECLARE v_now DATETIME; DECLARE v_id_minimum INT; DECLARE v_ids_product_invalid VARCHAR(4000); DECLARE v_time_start TIMESTAMP(6); @@ -9754,7 +9754,7 @@ BEGIN DECLARE v_ids_product_permission LONGTEXT; DECLARE v_id_change_set INT; DECLARE v_id_access_level_edit INT; - DECLARE v_now TIMESTAMP; + DECLARE v_now DATETIME; DECLARE exit handler for SQLEXCEPTION BEGIN @@ -10112,7 +10112,7 @@ BEGIN END IF; END IF; - SET v_now := CURRENT_TIMESTAMP(); + SET v_now := CURRENT_DATETIME(); IF NOT EXISTS (SELECT * FROM tmp_Msg_Error LIMIT 1) THEN START TRANSACTION; @@ -10956,7 +10956,7 @@ CREATE PROCEDURE p_shop_get_many_stock_item ( IN a_get_all_location_storage BIT, IN a_get_inactive_location_storage BIT, IN a_ids_location_storage TEXT, - IN a_date_received_to TIMESTAMP, + IN a_date_received_to DATETIME, IN a_get_sealed_stock_item_only BIT, IN a_get_unsealed_stock_item_only BIT, IN a_get_expired_stock_item_only BIT, @@ -10977,7 +10977,7 @@ BEGIN DECLARE v_ids_product_permission LONGTEXT; -- DECLARE v_ids_permutation_permission VARCHAR(4000); DECLARE v_id_access_level_view INT; - -- DECLARE v_now TIMESTAMP; + -- DECLARE v_now DATETIME; -- DECLARE v_id_minimum INT; DECLARE v_time_start TIMESTAMP(6); @@ -11728,7 +11728,7 @@ BEGIN DECLARE v_id_change_set INT; DECLARE v_id_access_level_edit INT; DECLARE v_time_start TIMESTAMP(6); - DECLARE v_time_expire TIMESTAMP; + DECLARE v_time_expire DATETIME; DECLARE exit handler for SQLEXCEPTION BEGIN @@ -12514,7 +12514,7 @@ BEGIN DECLARE v_ids_product_permission VARCHAR(4000); -- DECLARE v_ids_permutation_permission VARCHAR(4000); DECLARE v_id_access_level_view INT; - -- DECLARE v_now TIMESTAMP; + -- DECLARE v_now DATETIME; DECLARE v_id_minimum INT; DECLARE v_time_start TIMESTAMP(6); @@ -13747,7 +13747,7 @@ BEGIN -- Argument redeclaration -- Variable declaration DECLARE v_has_filter_user BIT; - -- DECLARE v_now TIMESTAMP; + -- DECLARE v_now DATETIME; -- Argument validation + default values @@ -13921,7 +13921,7 @@ BEGIN DECLARE v_id_permission_user INT; DECLARE v_id_permission_user_admin INT; DECLARE v_ids_permission_required VARCHAR(4000); - DECLARE v_now TIMESTAMP; + DECLARE v_now DATETIME; DECLARE v_id_minimum INT; DECLARE v_code_error_bad_data VARCHAR(50); DECLARE v_id_type_error_bad_data INT; @@ -14457,7 +14457,7 @@ BEGIN # DECLARE v_id_user VARCHAR(100); DECLARE v_id_permission_product INT; DECLARE v_ids_permutation_permission VARCHAR(4000); - DECLARE v_now TIMESTAMP; + DECLARE v_now DATETIME; # DECLARE v_quantity_new INT; DECLARE v_change_set_used BIT; DECLARE v_id_change_set INT; @@ -15560,7 +15560,7 @@ BEGIN # DECLARE v_ids_product_permission VARCHAR(4000); # DECLARE v_ids_permutation_permission VARCHAR(4000); DECLARE v_id_access_level_view INT; - DECLARE v_now TIMESTAMP; + DECLARE v_now DATETIME; DECLARE v_id_minimum INT; DECLARE v_code_error_data VARCHAR(50); @@ -16367,8 +16367,8 @@ CREATE PROCEDURE p_shop_get_many_supplier_purchase_order ( IN a_ids_product VARCHAR(4000), IN a_get_inactive_permutation BIT, IN a_ids_permutation VARCHAR(4000), - IN a_date_from TIMESTAMP, - IN a_date_to TIMESTAMP + IN a_date_from DATETIME, + IN a_date_to DATETIME ) BEGIN -- Argument redeclaration @@ -16387,7 +16387,7 @@ BEGIN DECLARE v_ids_product_permission VARCHAR(4000); # DECLARE v_ids_permutation_permission VARCHAR(4000); DECLARE v_id_access_level_view INT; - -- DECLARE v_now TIMESTAMP; + -- DECLARE v_now DATETIME; -- DECLARE v_id_minimum INT; DECLARE v_code_error_data VARCHAR(50); DECLARE v_id_type_error_data INT; @@ -17733,8 +17733,8 @@ CREATE PROCEDURE p_shop_get_many_manufacturing_purchase_order ( IN a_ids_product VARCHAR(4000), IN a_get_inactive_permutation BIT, IN a_ids_permutation VARCHAR(4000), - IN a_date_from TIMESTAMP, - IN a_date_to TIMESTAMP + IN a_date_from DATETIME, + IN a_date_to DATETIME ) BEGIN -- Argument redeclaration @@ -17752,7 +17752,7 @@ BEGIN DECLARE v_ids_product_permission VARCHAR(4000); # DECLARE v_ids_permutation_permission VARCHAR(4000); DECLARE v_id_access_level_view INT; - -- DECLARE v_now TIMESTAMP; + -- DECLARE v_now DATETIME; -- DECLARE v_id_minimum INT; DECLARE v_code_error_data VARCHAR(50); DECLARE v_id_type_error_data INT; @@ -18711,7 +18711,7 @@ BEGIN # DECLARE v_ids_product_permission VARCHAR(4000); # DECLARE v_ids_permutation_permission VARCHAR(4000); DECLARE v_id_access_level_view INT; - DECLARE v_now TIMESTAMP; + DECLARE v_now DATETIME; DECLARE v_id_minimum INT; SET v_code_error_type_bad_data = 'BAD_DATA'; @@ -19523,8 +19523,8 @@ CREATE PROCEDURE p_shop_get_many_customer_sales_order ( IN a_ids_product VARCHAR(4000), IN a_get_inactive_permutation BIT, IN a_ids_permutation VARCHAR(4000), - IN a_date_from TIMESTAMP, - IN a_date_to TIMESTAMP + IN a_date_from DATETIME, + IN a_date_to DATETIME ) BEGIN -- Argument redeclaration @@ -19543,7 +19543,7 @@ BEGIN DECLARE v_ids_product_permission VARCHAR(4000); # DECLARE v_ids_permutation_permission VARCHAR(4000); DECLARE v_id_access_level_view INT; - -- DECLARE v_now TIMESTAMP; + -- DECLARE v_now DATETIME; -- DECLARE v_id_minimum INT; DECLARE v_code_error_data VARCHAR(50); DECLARE v_id_type_error_data INT; diff --git a/static/MySQL/1000_tbl_Shop_Product_Change_Set.sql b/static/MySQL/1000_tbl_Shop_Product_Change_Set.sql index ccc6f3bb..831dae2d 100644 --- a/static/MySQL/1000_tbl_Shop_Product_Change_Set.sql +++ b/static/MySQL/1000_tbl_Shop_Product_Change_Set.sql @@ -8,6 +8,6 @@ SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning CREATE TABLE Shop_Product_Change_Set ( id_change_set INT NOT NULL AUTO_INCREMENT PRIMARY KEY, comment VARCHAR(500), - updated_last_on TIMESTAMP, + updated_last_on DATETIME, updated_last_by VARCHAR(100) ); \ No newline at end of file diff --git a/static/MySQL/1001_tbl_Shop_User_Change_Set.sql b/static/MySQL/1001_tbl_Shop_User_Change_Set.sql index 01849100..ac34c635 100644 --- a/static/MySQL/1001_tbl_Shop_User_Change_Set.sql +++ b/static/MySQL/1001_tbl_Shop_User_Change_Set.sql @@ -8,6 +8,6 @@ SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning CREATE TABLE IF NOT EXISTS Shop_User_Change_Set ( id_change_set INT NOT NULL AUTO_INCREMENT PRIMARY KEY, comment VARCHAR(500), - updated_last_on TIMESTAMP, + updated_last_on DATETIME, updated_last_by VARCHAR(100) ); \ No newline at end of file diff --git a/static/MySQL/1002_tbl_Shop_Sales_And_Purchasing_Change_Set.sql b/static/MySQL/1002_tbl_Shop_Sales_And_Purchasing_Change_Set.sql index 184ea4b7..4e6630a4 100644 --- a/static/MySQL/1002_tbl_Shop_Sales_And_Purchasing_Change_Set.sql +++ b/static/MySQL/1002_tbl_Shop_Sales_And_Purchasing_Change_Set.sql @@ -8,6 +8,6 @@ SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning CREATE TABLE Shop_Sales_And_Purchasing_Change_Set ( id_change_set INT NOT NULL AUTO_INCREMENT PRIMARY KEY, comment VARCHAR(500), - updated_last_on TIMESTAMP, + updated_last_on DATETIME, updated_last_by VARCHAR(100) ); \ No newline at end of file diff --git a/static/MySQL/1003_tbl_Shop_Access_Level.sql b/static/MySQL/1003_tbl_Shop_Access_Level.sql index 21094a5d..18c0ce7f 100644 --- a/static/MySQL/1003_tbl_Shop_Access_Level.sql +++ b/static/MySQL/1003_tbl_Shop_Access_Level.sql @@ -12,7 +12,7 @@ CREATE TABLE IF NOT EXISTS Shop_Access_Level ( priority INT NOT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Access_Level_id_change_set diff --git a/static/MySQL/1010_tbl_File_Type.sql b/static/MySQL/1010_tbl_File_Type.sql index 81dbf0c6..7063b499 100644 --- a/static/MySQL/1010_tbl_File_Type.sql +++ b/static/MySQL/1010_tbl_File_Type.sql @@ -10,8 +10,8 @@ CREATE TABLE IF NOT EXISTS File_Type ( code VARCHAR(50), name VARCHAR(100), extension VARCHAR(50), - created_on TIMESTAMP, + created_on DATETIME, created_by INT, - updated_last_on TIMESTAMP, + updated_last_on DATETIME, updated_last_by VARCHAR(100) ); diff --git a/static/MySQL/1011_tbl_File_Type_Audit.sql b/static/MySQL/1011_tbl_File_Type_Audit.sql index e21dd2e5..50939b7c 100644 --- a/static/MySQL/1011_tbl_File_Type_Audit.sql +++ b/static/MySQL/1011_tbl_File_Type_Audit.sql @@ -15,8 +15,8 @@ CREATE TABLE IF NOT EXISTS File_Type_Audit ( name_field VARCHAR(50), value_prev VARCHAR(500), value_new VARCHAR(500), - created_on TIMESTAMP, + created_on DATETIME, created_by INT, - updated_last_on TIMESTAMP, + updated_last_on DATETIME, updated_last_by VARCHAR(100) ); \ No newline at end of file diff --git a/static/MySQL/1012_tbl_Shop_General.sql b/static/MySQL/1012_tbl_Shop_General.sql index e587dece..77ebee36 100644 --- a/static/MySQL/1012_tbl_Shop_General.sql +++ b/static/MySQL/1012_tbl_Shop_General.sql @@ -8,7 +8,7 @@ SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning CREATE TABLE IF NOT EXISTS Shop_General ( id_general INT NOT NULL AUTO_INCREMENT PRIMARY KEY, quantity_max FLOAT, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT CHK_Shop_General_id_change_set diff --git a/static/MySQL/1014_tbl_Shop_Image_Type.sql b/static/MySQL/1014_tbl_Shop_Image_Type.sql index 658c6489..485ef555 100644 --- a/static/MySQL/1014_tbl_Shop_Image_Type.sql +++ b/static/MySQL/1014_tbl_Shop_Image_Type.sql @@ -18,7 +18,7 @@ CREATE TABLE IF NOT EXISTS Shop_Image_Type ( name_plural VARCHAR(256), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Image_Type_id_change_set diff --git a/static/MySQL/1100_tbl_Shop_Region.sql b/static/MySQL/1100_tbl_Shop_Region.sql index 6ce12b78..23295e43 100644 --- a/static/MySQL/1100_tbl_Shop_Region.sql +++ b/static/MySQL/1100_tbl_Shop_Region.sql @@ -9,7 +9,7 @@ CREATE TABLE IF NOT EXISTS Shop_Region ( name VARCHAR(200) NOT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Region_id_change_set diff --git a/static/MySQL/1102_tbl_Shop_Region_Temp.sql b/static/MySQL/1102_tbl_Shop_Region_Temp.sql index 587373fa..94c3d12e 100644 --- a/static/MySQL/1102_tbl_Shop_Region_Temp.sql +++ b/static/MySQL/1102_tbl_Shop_Region_Temp.sql @@ -11,7 +11,7 @@ CREATE TABLE IF NOT EXISTS Shop_Region_Temp ( name VARCHAR(200) NOT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Region_Temp_id_change_set diff --git a/static/MySQL/1103_tbl_Shop_Region_Branch.sql b/static/MySQL/1103_tbl_Shop_Region_Branch.sql index 0910966a..d2dc7944 100644 --- a/static/MySQL/1103_tbl_Shop_Region_Branch.sql +++ b/static/MySQL/1103_tbl_Shop_Region_Branch.sql @@ -20,7 +20,7 @@ CREATE TABLE IF NOT EXISTS Shop_Region_Branch ( -- depth INT NOT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Region_Branch_id_change_set diff --git a/static/MySQL/1106_tbl_Shop_Address.sql b/static/MySQL/1106_tbl_Shop_Address.sql index 0c66b3d8..37f3dfe7 100644 --- a/static/MySQL/1106_tbl_Shop_Address.sql +++ b/static/MySQL/1106_tbl_Shop_Address.sql @@ -13,7 +13,7 @@ CREATE TABLE Shop_Address ( city VARCHAR(256) NOT NULL, county VARCHAR(256) NOT NULL, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Address_id_change_set diff --git a/static/MySQL/1106_tbl_Shop_Plant.sql b/static/MySQL/1106_tbl_Shop_Plant.sql index 7ebc467d..6c2a668c 100644 --- a/static/MySQL/1106_tbl_Shop_Plant.sql +++ b/static/MySQL/1106_tbl_Shop_Plant.sql @@ -13,7 +13,7 @@ CREATE TABLE IF NOT EXISTS Shop_Plant ( REFERENCES Shop_Address(id_address), id_user_manager INT NOT NULL, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Plant_id_change_set diff --git a/static/MySQL/1109_tbl_Shop_Storage_Location.sql b/static/MySQL/1109_tbl_Shop_Storage_Location.sql index 8a0a18a3..adbab96a 100644 --- a/static/MySQL/1109_tbl_Shop_Storage_Location.sql +++ b/static/MySQL/1109_tbl_Shop_Storage_Location.sql @@ -14,7 +14,7 @@ CREATE TABLE IF NOT EXISTS Shop_Storage_Location ( code VARCHAR(50) NOT NULL, name VARCHAR(500) NOT NULL, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Storage_Location_id_change_set diff --git a/static/MySQL/1112_tbl_Shop_Storage_Location_Branch.sql b/static/MySQL/1112_tbl_Shop_Storage_Location_Branch.sql index 6bcaeb0b..b0d87f5b 100644 --- a/static/MySQL/1112_tbl_Shop_Storage_Location_Branch.sql +++ b/static/MySQL/1112_tbl_Shop_Storage_Location_Branch.sql @@ -20,7 +20,7 @@ CREATE TABLE IF NOT EXISTS Shop_Storage_Location_Branch ( -- depth INT NOT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Storage_Location_Branch_id_change_set diff --git a/static/MySQL/1115_tbl_Shop_Currency.sql b/static/MySQL/1115_tbl_Shop_Currency.sql index 90cda8d6..2ae8aa5f 100644 --- a/static/MySQL/1115_tbl_Shop_Currency.sql +++ b/static/MySQL/1115_tbl_Shop_Currency.sql @@ -13,7 +13,7 @@ CREATE TABLE IF NOT EXISTS Shop_Currency ( factor_from_GBP FLOAT NOT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Currency_id_change_set diff --git a/static/MySQL/1118_tbl_Shop_Tax_Or_Surcharge.sql b/static/MySQL/1118_tbl_Shop_Tax_Or_Surcharge.sql index af8a20f3..1db28da6 100644 --- a/static/MySQL/1118_tbl_Shop_Tax_Or_Surcharge.sql +++ b/static/MySQL/1118_tbl_Shop_Tax_Or_Surcharge.sql @@ -29,7 +29,7 @@ CREATE TABLE Shop_Tax_Or_Surcharge ( quantity_max FLOAT NOT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Tax_Or_Surcharge_id_change_set diff --git a/static/MySQL/1121_tbl_Shop_Unit_Measurement.sql b/static/MySQL/1121_tbl_Shop_Unit_Measurement.sql index 44c3eb0c..4082ed2e 100644 --- a/static/MySQL/1121_tbl_Shop_Unit_Measurement.sql +++ b/static/MySQL/1121_tbl_Shop_Unit_Measurement.sql @@ -17,7 +17,7 @@ CREATE TABLE IF NOT EXISTS Shop_Unit_Measurement ( is_unit_of_time BIT NOT NULL DEFAULT 0, is_unit_of_volume BIT NOT NULL DEFAULT 0, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Unit_Measurement_id_change_set diff --git a/static/MySQL/1124_tbl_Shop_Unit_Measurement_Conversion.sql b/static/MySQL/1124_tbl_Shop_Unit_Measurement_Conversion.sql index 249da5fd..903dacb0 100644 --- a/static/MySQL/1124_tbl_Shop_Unit_Measurement_Conversion.sql +++ b/static/MySQL/1124_tbl_Shop_Unit_Measurement_Conversion.sql @@ -13,7 +13,7 @@ CREATE TABLE IF NOT EXISTS Shop_Unit_Measurement_Conversion ( multiplier_unit_base FLOAT NOT NULL, increment_unit_base FLOAT NOT NULL, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Unit_Measurement_Conversion_id_change_set diff --git a/static/MySQL/1200_tbl_Shop_Product_Category.sql b/static/MySQL/1200_tbl_Shop_Product_Category.sql index c92f7def..5ca48963 100644 --- a/static/MySQL/1200_tbl_Shop_Product_Category.sql +++ b/static/MySQL/1200_tbl_Shop_Product_Category.sql @@ -15,7 +15,7 @@ CREATE TABLE IF NOT EXISTS Shop_Product_Category ( , CONSTRAINT FK_Shop_Product_Category_id_access_level_required FOREIGN KEY (id_access_level_required) REFERENCES Shop_Access_Level(id_access_level) - , created_on TIMESTAMP + , created_on DATETIME , created_by INT NOT NULL , id_change_set INT , CONSTRAINT FK_Shop_Product_Category_id_change_set diff --git a/static/MySQL/1203_tbl_Shop_Product.sql b/static/MySQL/1203_tbl_Shop_Product.sql index f0dc160a..1d243698 100644 --- a/static/MySQL/1203_tbl_Shop_Product.sql +++ b/static/MySQL/1203_tbl_Shop_Product.sql @@ -39,7 +39,7 @@ CREATE TABLE IF NOT EXISTS Shop_Product ( # id_stripe_price VARCHAR(100) NOT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP NOT NULL, + created_on DATETIME NOT NULL, created_by INT NOT NULL, id_change_set INT, CONSTRAINT FK_Shop_Product_id_change_set diff --git a/static/MySQL/1206_tbl_Shop_Product_Permutation.sql b/static/MySQL/1206_tbl_Shop_Product_Permutation.sql index 49302982..8421a391 100644 --- a/static/MySQL/1206_tbl_Shop_Product_Permutation.sql +++ b/static/MySQL/1206_tbl_Shop_Product_Permutation.sql @@ -50,7 +50,7 @@ CREATE TABLE IF NOT EXISTS Shop_Product_Permutation ( count_interval_expiration_unsealed INT, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Product_Permutation_id_change_set diff --git a/static/MySQL/1209_tbl_Shop_Variation_Type.sql b/static/MySQL/1209_tbl_Shop_Variation_Type.sql index aa911b67..6624b7e2 100644 --- a/static/MySQL/1209_tbl_Shop_Variation_Type.sql +++ b/static/MySQL/1209_tbl_Shop_Variation_Type.sql @@ -12,7 +12,7 @@ CREATE TABLE IF NOT EXISTS Shop_Variation_Type ( name_plural VARCHAR(256), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Variation_Type_id_change_set diff --git a/static/MySQL/1212_tbl_Shop_Variation.sql b/static/MySQL/1212_tbl_Shop_Variation.sql index e36294e3..3dbcf817 100644 --- a/static/MySQL/1212_tbl_Shop_Variation.sql +++ b/static/MySQL/1212_tbl_Shop_Variation.sql @@ -16,7 +16,7 @@ CREATE TABLE Shop_Variation ( name VARCHAR(255), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Variation_id_change_set diff --git a/static/MySQL/1215_tbl_Shop_Product_Permutation_Variation_Link.sql b/static/MySQL/1215_tbl_Shop_Product_Permutation_Variation_Link.sql index c2ed9a4a..4f615265 100644 --- a/static/MySQL/1215_tbl_Shop_Product_Permutation_Variation_Link.sql +++ b/static/MySQL/1215_tbl_Shop_Product_Permutation_Variation_Link.sql @@ -19,7 +19,7 @@ CREATE TABLE IF NOT EXISTS Shop_Product_Permutation_Variation_Link ( ON UPDATE RESTRICT, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Product_Permutation_Variation_Link_id_change_set diff --git a/static/MySQL/1221_tbl_Shop_Product_Price.sql b/static/MySQL/1221_tbl_Shop_Product_Price.sql index 42bd70b2..fa3d8694 100644 --- a/static/MySQL/1221_tbl_Shop_Product_Price.sql +++ b/static/MySQL/1221_tbl_Shop_Product_Price.sql @@ -23,7 +23,7 @@ CREATE TABLE IF NOT EXISTS Shop_Product_Price ( price_local_VAT_excl FLOAT NULL, id_stripe_price VARCHAR(200), active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Product_Price_id_change_set diff --git a/static/MySQL/1224_tbl_Shop_Product_Image.sql b/static/MySQL/1224_tbl_Shop_Product_Image.sql index 54a788fd..e3488d26 100644 --- a/static/MySQL/1224_tbl_Shop_Product_Image.sql +++ b/static/MySQL/1224_tbl_Shop_Product_Image.sql @@ -18,7 +18,7 @@ CREATE TABLE IF NOT EXISTS Shop_Product_Image ( url VARCHAR(255), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Product_Image_id_change_set diff --git a/static/MySQL/1227_tbl_Shop_Delivery_Option.sql b/static/MySQL/1227_tbl_Shop_Delivery_Option.sql index 0c8ff919..263b0a90 100644 --- a/static/MySQL/1227_tbl_Shop_Delivery_Option.sql +++ b/static/MySQL/1227_tbl_Shop_Delivery_Option.sql @@ -18,7 +18,7 @@ CREATE TABLE IF NOT EXISTS Shop_Delivery_Option ( */ active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Delivery_Option_Type_id_change_set diff --git a/static/MySQL/1230_tbl_Shop_Product_Permutation_Delivery_Option_Link.sql b/static/MySQL/1230_tbl_Shop_Product_Permutation_Delivery_Option_Link.sql index 61840b0a..3278cdad 100644 --- a/static/MySQL/1230_tbl_Shop_Product_Permutation_Delivery_Option_Link.sql +++ b/static/MySQL/1230_tbl_Shop_Product_Permutation_Delivery_Option_Link.sql @@ -37,7 +37,7 @@ CREATE TABLE IF NOT EXISTS Shop_Product_Permutation_Delivery_Option_Link ( quantity_max FLOAT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Permutation_Delivery_Option_Link_id_change_set diff --git a/static/MySQL/1233_tbl_Shop_Discount.sql b/static/MySQL/1233_tbl_Shop_Discount.sql index 7094da71..29643329 100644 --- a/static/MySQL/1233_tbl_Shop_Discount.sql +++ b/static/MySQL/1233_tbl_Shop_Discount.sql @@ -35,11 +35,11 @@ CREATE TABLE Shop_Discount ( apply_multiplier_first BIT DEFAULT 1, quantity_min FLOAT NOT NULL DEFAULT 0, quantity_max FLOAT NOT NULL, - date_start TIMESTAMP NOT NULL, - date_end TIMESTAMP NOT NULL, + date_start DATETIME NOT NULL, + date_end DATETIME NOT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Discount_id_change_set diff --git a/static/MySQL/1236_tbl_Shop_Discount_Region_Currency_Link.sql b/static/MySQL/1236_tbl_Shop_Discount_Region_Currency_Link.sql index b9d60556..7d6f4b8a 100644 --- a/static/MySQL/1236_tbl_Shop_Discount_Region_Currency_Link.sql +++ b/static/MySQL/1236_tbl_Shop_Discount_Region_Currency_Link.sql @@ -23,7 +23,7 @@ CREATE TABLE IF NOT EXISTS Shop_Discount_Region_Currency_Link ( REFERENCES Shop_Currency(id_currency) ON UPDATE RESTRICT, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Discount_Region_Currency_Link_id_change_set diff --git a/static/MySQL/1300_tbl_Shop_Permission_Group.sql b/static/MySQL/1300_tbl_Shop_Permission_Group.sql index 5a4a6ff7..8de32e14 100644 --- a/static/MySQL/1300_tbl_Shop_Permission_Group.sql +++ b/static/MySQL/1300_tbl_Shop_Permission_Group.sql @@ -11,7 +11,7 @@ CREATE TABLE IF NOT EXISTS Shop_Permission_Group ( name VARCHAR(255), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Permission_Group_id_change_set diff --git a/static/MySQL/1303_tbl_Shop_Permission.sql b/static/MySQL/1303_tbl_Shop_Permission.sql index 7a682ab1..9ad88867 100644 --- a/static/MySQL/1303_tbl_Shop_Permission.sql +++ b/static/MySQL/1303_tbl_Shop_Permission.sql @@ -20,7 +20,7 @@ CREATE TABLE IF NOT EXISTS Shop_Permission ( REFERENCES Shop_Access_Level(id_access_level), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Permission_id_change_set diff --git a/static/MySQL/1306_tbl_Shop_Role.sql b/static/MySQL/1306_tbl_Shop_Role.sql index 22da3b74..6fab3546 100644 --- a/static/MySQL/1306_tbl_Shop_Role.sql +++ b/static/MySQL/1306_tbl_Shop_Role.sql @@ -11,7 +11,7 @@ CREATE TABLE IF NOT EXISTS Shop_Role ( name VARCHAR(255), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Role_id_change_set diff --git a/static/MySQL/1309_tbl_Shop_Role_Permission_Link.sql b/static/MySQL/1309_tbl_Shop_Role_Permission_Link.sql index 42faddd2..cd09785d 100644 --- a/static/MySQL/1309_tbl_Shop_Role_Permission_Link.sql +++ b/static/MySQL/1309_tbl_Shop_Role_Permission_Link.sql @@ -22,7 +22,7 @@ CREATE TABLE IF NOT EXISTS Shop_Role_Permission_Link ( FOREIGN KEY (id_access_level) REFERENCES Shop_Access_Level(id_access_level), active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Role_Permission_Link_id_change_set diff --git a/static/MySQL/1312_tbl_Shop_User.sql b/static/MySQL/1312_tbl_Shop_User.sql index 7df32a6e..629ac72c 100644 --- a/static/MySQL/1312_tbl_Shop_User.sql +++ b/static/MySQL/1312_tbl_Shop_User.sql @@ -17,7 +17,7 @@ CREATE TABLE IF NOT EXISTS Shop_User ( id_region_default INT NULL, is_included_VAT_default BIT NOT NULL DEFAULT 1, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_User_id_change_set diff --git a/static/MySQL/1315_tbl_Shop_User_Role_Link.sql b/static/MySQL/1315_tbl_Shop_User_Role_Link.sql index f75b63a6..879ed9bc 100644 --- a/static/MySQL/1315_tbl_Shop_User_Role_Link.sql +++ b/static/MySQL/1315_tbl_Shop_User_Role_Link.sql @@ -17,7 +17,7 @@ CREATE TABLE IF NOT EXISTS Shop_User_Role_Link ( FOREIGN KEY (id_role) REFERENCES Shop_Role(id_role), active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_User_Role_Link_id_change_set diff --git a/static/MySQL/1318_tbl_Shop_User_Address.sql b/static/MySQL/1318_tbl_Shop_User_Address.sql index a18c999e..d36739ae 100644 --- a/static/MySQL/1318_tbl_Shop_User_Address.sql +++ b/static/MySQL/1318_tbl_Shop_User_Address.sql @@ -20,7 +20,7 @@ CREATE TABLE Shop_User_Address ( city VARCHAR(256) NOT NULL, county VARCHAR(256) NOT NULL, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_User_Address_id_change_set diff --git a/static/MySQL/1321_tbl_Shop_User_Basket.sql b/static/MySQL/1321_tbl_Shop_User_Basket.sql index 122a183e..02ada954 100644 --- a/static/MySQL/1321_tbl_Shop_User_Basket.sql +++ b/static/MySQL/1321_tbl_Shop_User_Basket.sql @@ -24,7 +24,7 @@ CREATE TABLE IF NOT EXISTS Shop_User_Basket ( ON UPDATE RESTRICT, quantity INT NOT NULL, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set_user INT, CONSTRAINT FK_Shop_User_Basket_id_change_set_user diff --git a/static/MySQL/1397_tbl_Shop_Order_Status.sql b/static/MySQL/1397_tbl_Shop_Order_Status.sql index 76495f1b..e5ae3f8a 100644 --- a/static/MySQL/1397_tbl_Shop_Order_Status.sql +++ b/static/MySQL/1397_tbl_Shop_Order_Status.sql @@ -12,7 +12,7 @@ CREATE TABLE IF NOT EXISTS Shop_User_Order_Status ( name_plural VARCHAR(256), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_User_Order_Status_id_change_set diff --git a/static/MySQL/1400_tbl_Shop_Supplier.sql b/static/MySQL/1400_tbl_Shop_Supplier.sql index c632c74e..99f6e81a 100644 --- a/static/MySQL/1400_tbl_Shop_Supplier.sql +++ b/static/MySQL/1400_tbl_Shop_Supplier.sql @@ -1,8 +1,6 @@ # Supplier - - SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier'; CREATE TABLE IF NOT EXISTS Shop_Supplier ( @@ -12,21 +10,21 @@ CREATE TABLE IF NOT EXISTS Shop_Supplier ( department_contact VARCHAR(255) NULL, id_address INT NOT NULL, CONSTRAINT FK_Shop_Supplier_id_address - FOREIGN KEY (id_address) + FOREIGN KEY (id_address) REFERENCES Shop_Address(id_address), - phone_number VARCHAR(50) NULL, + phone_number VARCHAR(50) NULL, fax VARCHAR(50) NULL, email VARCHAR(255) NOT NULL, website VARCHAR(255) NULL, id_currency INT NOT NULL, CONSTRAINT FK_Shop_Supplier_id_currency - FOREIGN KEY (id_currency) + FOREIGN KEY (id_currency) REFERENCES Shop_Currency(id_currency), active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Supplier_id_change_set - FOREIGN KEY (id_change_set) + FOREIGN KEY (id_change_set) REFERENCES Shop_User_Change_Set(id_change_set) ); diff --git a/static/MySQL/1402_tbl_Shop_Supplier_Temp.sql b/static/MySQL/1402_tbl_Shop_Supplier_Temp.sql new file mode 100644 index 00000000..7e474daf --- /dev/null +++ b/static/MySQL/1402_tbl_Shop_Supplier_Temp.sql @@ -0,0 +1,18 @@ + +# Supplier Staging + +SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier_Temp'; + +CREATE TABLE IF NOT EXISTS Shop_Supplier_Temp ( + id_supplier INT NOT NULL, + name_company VARCHAR(255) NOT NULL, + name_contact VARCHAR(255) NULL, + department_contact VARCHAR(255) NULL, + id_address INT NOT NULL, + phone_number VARCHAR(50) NULL, + fax VARCHAR(50) NULL, + email VARCHAR(255) NOT NULL, + website VARCHAR(255) NULL, + id_currency INT NOT NULL, + active BIT NULL +); diff --git a/static/MySQL/1409_tbl_Shop_Supplier_Purchase_Order.sql b/static/MySQL/1409_tbl_Shop_Supplier_Purchase_Order.sql index ee419866..a0b30786 100644 --- a/static/MySQL/1409_tbl_Shop_Supplier_Purchase_Order.sql +++ b/static/MySQL/1409_tbl_Shop_Supplier_Purchase_Order.sql @@ -17,8 +17,9 @@ CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order ( FOREIGN KEY (id_supplier_fulfilled) REFERENCES Shop_Supplier(id_supplier), */ - cost_total_local FLOAT NOT NULL, id_currency_cost INT NOT NULL, + cost_total_local_VAT_excl FLOAT NOT NULL, + cost_total_local_VAT_incl FLOAT NOT NULL, /* latency_delivery INT NOT NULL, quantity_ordered FLOAT NOT NULL, @@ -30,9 +31,9 @@ CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order ( display_order INT NOT NULL, */ active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, - updated_last_on TIMESTAMP NULL, + updated_last_on DATETIME NULL, created_last_by VARCHAR(100) NULL, id_change_set INT NULL, CONSTRAINT FK_Shop_Supplier_Purchase_Order_id_change_set diff --git a/static/MySQL/1411_tbl_Shop_Supplier_Purchase_Order_Temp.sql b/static/MySQL/1411_tbl_Shop_Supplier_Purchase_Order_Temp.sql new file mode 100644 index 00000000..95c2af27 --- /dev/null +++ b/static/MySQL/1411_tbl_Shop_Supplier_Purchase_Order_Temp.sql @@ -0,0 +1,11 @@ + +# Supplier Purchase Order Staging + +SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier_Purchase_Order_Temp'; + +CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order_Temp ( + id_order INT NOT NULL, + id_supplier_ordered INT NOT NULL, + id_currency_cost INT NOT NULL, + active BIT NULL +); diff --git a/static/MySQL/1412_tbl_Shop_Supplier_Purchase_Order_Product_Link.sql b/static/MySQL/1412_tbl_Shop_Supplier_Purchase_Order_Product_Link.sql index c8dd884b..73d5890e 100644 --- a/static/MySQL/1412_tbl_Shop_Supplier_Purchase_Order_Product_Link.sql +++ b/static/MySQL/1412_tbl_Shop_Supplier_Purchase_Order_Product_Link.sql @@ -15,20 +15,23 @@ CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order_Product_Link ( CONSTRAINT FK_Shop_Supplier_Purchase_Order_Product_Link_id_permutation FOREIGN KEY (id_permutation) REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local FLOAT NOT NULL, id_currency_cost INT NOT NULL, - quantity_ordered FLOAT NOT NULL, id_unit_quantity INT NOT NULL, CONSTRAINT FK_Shop_Supplier_Purchase_Order_Product_Link_id_unit_quantity FOREIGN KEY (id_unit_quantity) REFERENCES Shop_Unit_Measurement(id_unit_measurement), + quantity_ordered FLOAT NOT NULL, quantity_received FLOAT NULL, latency_delivery_days INT NOT NULL, display_order INT NOT NULL, active BIT NOT NULL, - created_on TIMESTAMP, + cost_total_local_VAT_excl FLOAT NOT NULL, + cost_total_local_VAT_incl FLOAT NOT NULL, + cost_unit_local_VAT_excl FLOAT NOT NULL, + cost_unit_local_VAT_incl FLOAT NOT NULL, + created_on DATETIME, created_by INT, - updated_last_on TIMESTAMP NULL, + updated_last_on DATETIME NULL, created_last_by VARCHAR(100) NULL, id_change_set INT NULL, CONSTRAINT FK_Shop_Supplier_Purchase_Order_Product_Link_id_change_set diff --git a/static/MySQL/1414_tbl_Shop_Supplier_Purchase_Order_Product_Link_Temp.sql b/static/MySQL/1414_tbl_Shop_Supplier_Purchase_Order_Product_Link_Temp.sql index 45979730..82948379 100644 --- a/static/MySQL/1414_tbl_Shop_Supplier_Purchase_Order_Product_Link_Temp.sql +++ b/static/MySQL/1414_tbl_Shop_Supplier_Purchase_Order_Product_Link_Temp.sql @@ -8,27 +8,17 @@ SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier_Purchase_Order_Product_Link_Temp'; CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order_Product_Link_Temp ( - id_link INT NOT NULL PRIMARY KEY, - GUID BINARY(36) NOT NULL, - id_order INT NOT NULL, - /* - CONSTRAINT FK_Supplier_Purchase_Order_Product_Link_Temp_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Supplier_Purchase_Order(id_order), - */ - id_permutation INT NOT NULL, - CONSTRAINT FK_Supplier_Purchase_Order_Product_Link_Temp_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local FLOAT NOT NULL, - id_currency_cost INT NOT NULL, - quantity_ordered FLOAT NOT NULL, - id_unit_quantity INT NOT NULL, - CONSTRAINT FK_Supplier_Purchase_Order_Product_Link_Temp_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_received FLOAT NULL, - latency_delivery_days INT NOT NULL, - display_order INT NOT NULL, - active BIT NOT NULL + id_link INT NOT NULL PRIMARY KEY + , id_order INT NOT NULL + , id_permutation INT NOT NULL + , id_currency_cost INT NOT NULL + , id_unit_quantity INT NOT NULL + , quantity_ordered FLOAT NOT NULL + , quantity_received FLOAT NULL + , latency_delivery_days INT NOT NULL + , display_order INT NOT NULL + , active BIT NOT NULL + , cost_total_local_VAT_excl FLOAT NOT NULL + , cost_total_local_VAT_incl FLOAT NOT NULL + , GUID BINARY(36) NOT NULL ); diff --git a/static/MySQL/1415_tbl_Shop_Manufacturing_Purchase_Order.sql b/static/MySQL/1415_tbl_Shop_Manufacturing_Purchase_Order.sql index 4b8dd49a..b66e4d25 100644 --- a/static/MySQL/1415_tbl_Shop_Manufacturing_Purchase_Order.sql +++ b/static/MySQL/1415_tbl_Shop_Manufacturing_Purchase_Order.sql @@ -22,9 +22,9 @@ CREATE TABLE IF NOT EXISTS Shop_Manufacturing_Purchase_Order ( display_order INT NOT NULL, */ active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, - updated_last_on TIMESTAMP NULL, + updated_last_on DATETIME NULL, created_last_by VARCHAR(100) NULL, id_change_set INT NULL, CONSTRAINT FK_Shop_Manufacturing_Purchase_Order_id_change_set diff --git a/static/MySQL/1418_tbl_Shop_Manufacturing_Purchase_Order_Product_Link.sql b/static/MySQL/1418_tbl_Shop_Manufacturing_Purchase_Order_Product_Link.sql index aa5c21b8..3f92002b 100644 --- a/static/MySQL/1418_tbl_Shop_Manufacturing_Purchase_Order_Product_Link.sql +++ b/static/MySQL/1418_tbl_Shop_Manufacturing_Purchase_Order_Product_Link.sql @@ -27,9 +27,9 @@ CREATE TABLE IF NOT EXISTS Shop_Manufacturing_Purchase_Order_Product_Link ( quantity_produced FLOAT NOT NULL, display_order INT NOT NULL, active BIT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, - updated_last_on TIMESTAMP NULL, + updated_last_on DATETIME NULL, created_last_by VARCHAR(100) NULL, id_change_set INT NULL, CONSTRAINT FK_Manufacturing_Purchase_Order_id_change_set diff --git a/static/MySQL/1421_tbl_Shop_Customer.sql b/static/MySQL/1421_tbl_Shop_Customer.sql index fd8785ce..0443b81b 100644 --- a/static/MySQL/1421_tbl_Shop_Customer.sql +++ b/static/MySQL/1421_tbl_Shop_Customer.sql @@ -20,7 +20,7 @@ CREATE TABLE IF NOT EXISTS Shop_Customer ( FOREIGN KEY (id_currency) REFERENCES Shop_Currency(id_currency), active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Customer_id_change_set diff --git a/static/MySQL/1424_tbl_Shop_Customer_Sales_Order.sql b/static/MySQL/1424_tbl_Shop_Customer_Sales_Order.sql index 537d21ce..1d22b588 100644 --- a/static/MySQL/1424_tbl_Shop_Customer_Sales_Order.sql +++ b/static/MySQL/1424_tbl_Shop_Customer_Sales_Order.sql @@ -24,9 +24,9 @@ CREATE TABLE IF NOT EXISTS Shop_Customer_Sales_Order ( display_order INT NOT NULL, */ active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, - updated_last_on TIMESTAMP NULL, + updated_last_on DATETIME NULL, created_last_by VARCHAR(100) NULL, id_change_set INT NULL, CONSTRAINT FK_Shop_Customer_Sales_Order_id_change_set diff --git a/static/MySQL/1427_tbl_Shop_Customer_Sales_Order_Product_Link.sql b/static/MySQL/1427_tbl_Shop_Customer_Sales_Order_Product_Link.sql index b17f7e16..46814584 100644 --- a/static/MySQL/1427_tbl_Shop_Customer_Sales_Order_Product_Link.sql +++ b/static/MySQL/1427_tbl_Shop_Customer_Sales_Order_Product_Link.sql @@ -27,9 +27,9 @@ CREATE TABLE IF NOT EXISTS Shop_Customer_Sales_Order_Product_Link ( display_order INT NOT NULL, active BIT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, - updated_last_on TIMESTAMP NULL, + updated_last_on DATETIME NULL, created_last_by VARCHAR(100) NULL, id_change_set INT NULL, CONSTRAINT FK_Shop_Customer_Sales_Order_Product_Link_id_change_set diff --git a/static/MySQL/6000_p_debug_timing_reporting.sql b/static/MySQL/6000_p_debug_timing_reporting.sql index 41ad7bba..45eaf32b 100644 --- a/static/MySQL/6000_p_debug_timing_reporting.sql +++ b/static/MySQL/6000_p_debug_timing_reporting.sql @@ -17,19 +17,19 @@ BEGIN SET v_time_end := CURRENT_TIMESTAMP(6); SELECT a_time_start - , UNIX_TIMESTAMP(a_time_start) + , UNIX_DATETIME(a_time_start) , MICROSECOND(a_time_start) / 1000 , v_time_end - , UNIX_TIMESTAMP(v_time_end) + , UNIX_DATETIME(v_time_end) , MICROSECOND(v_time_end) / 1000 , v_time_end - a_time_start AS timestamp_delta - , UNIX_TIMESTAMP(v_time_end - a_time_start) AS UNIX_TIMESTAMP_timestamp_delta + , UNIX_DATETIME(v_time_end - a_time_start) AS UNIX_DATETIME_timestamp_delta , MICROSECOND(v_time_end - a_time_start) AS MICROSECOND_timestamp_delta -- , TIME_FORMAT(TIMEDIFF(v_time_end, a_time_start), '%H:%i:%s') AS time_difference , CONCAT( TIME_FORMAT(TIMEDIFF(v_time_end, a_time_start), '%H hours, %i minutes, %s seconds'), ', ', - TIMESTAMPDIFF(MICROSECOND, a_time_start, v_time_end) % 1000000 / 1000, ' milliseconds' + DATETIMEDIFF(MICROSECOND, a_time_start, v_time_end) % 1000000 / 1000, ' milliseconds' ) AS time_difference ; diff --git a/static/MySQL/7210_fn_shop_get_id_product_permutation_from_variation_csv_list.sql b/static/MySQL/6210_fn_shop_get_id_product_permutation_from_variation_csv_list.sql similarity index 100% rename from static/MySQL/7210_fn_shop_get_id_product_permutation_from_variation_csv_list.sql rename to static/MySQL/6210_fn_shop_get_id_product_permutation_from_variation_csv_list.sql diff --git a/static/MySQL/7200_p_shop_save_product_category.sql b/static/MySQL/7200_p_shop_save_product_category.sql index 6e4d5d39..1643b6c4 100644 --- a/static/MySQL/7200_p_shop_save_product_category.sql +++ b/static/MySQL/7200_p_shop_save_product_category.sql @@ -19,7 +19,7 @@ BEGIN DECLARE v_ids_product_permission LONGTEXT; DECLARE v_id_change_set INT; DECLARE v_id_access_level_edit INT; - DECLARE v_now TIMESTAMP; + DECLARE v_now DATETIME; DECLARE exit handler for SQLEXCEPTION BEGIN @@ -202,7 +202,7 @@ BEGIN END IF; END IF; - SET v_now := CURRENT_TIMESTAMP(); + SET v_now := CURRENT_DATETIME(); IF NOT EXISTS (SELECT * FROM tmp_Msg_Error LIMIT 1) THEN START TRANSACTION; diff --git a/static/MySQL/7204_p_shop_calc_product_permutation.sql b/static/MySQL/7204_p_shop_calc_product_permutation.sql index 6d7cf0ff..9ee160db 100644 --- a/static/MySQL/7204_p_shop_calc_product_permutation.sql +++ b/static/MySQL/7204_p_shop_calc_product_permutation.sql @@ -166,6 +166,10 @@ BEGIN WHERE ISNULL(t_S.as_int) OR ISNULL(PC.id_category) + OR ( + PC.active = 0 + AND a_get_inactive_product_category = 0 + ) ) THEN INSERT INTO tmp_Msg_Error ( -- guid, @@ -183,7 +187,10 @@ BEGIN WHERE ISNULL(t_S.as_int) OR ISNULL(PC.id_category) - -- OR PC.active = 0 + OR ( + PC.active = 0 + AND a_get_inactive_product_category = 0 + ) ; ELSE INSERT INTO tmp_Category_calc ( @@ -197,7 +204,7 @@ BEGIN a_get_all_product_category = 1 OR ( v_has_filter_product_category = 1 - AND FIND_IN_SET(PC.id_category, a_ids_product_category) > 0 + AND NOT ISNULL(t_S.as_int) ) ) AND ( @@ -239,6 +246,10 @@ BEGIN WHERE ISNULL(t_S.as_int) OR ISNULL(P.id_product) + OR ( + P.active = 0 + AND a_get_inactive_product = 0 + ) ) THEN INSERT INTO tmp_Msg_Error ( -- guid, @@ -256,7 +267,10 @@ BEGIN WHERE ISNULL(t_S.as_int) OR ISNULL(P.id_product) - -- OR PC.active = 0 + OR ( + P.active = 0 + AND a_get_inactive_product = 0 + ) ; ELSE INSERT INTO tmp_Product_calc ( @@ -273,7 +287,7 @@ BEGIN a_get_all_product = 1 OR ( v_has_filter_product = 1 - AND FIND_IN_SET(P.id_product, a_ids_product) > 0 + AND NOT ISNULL(t_S.as_int) ) ) AND ( @@ -332,7 +346,10 @@ BEGIN WHERE ISNULL(t_S.as_int) OR ISNULL(PP.id_permutation) - -- OR PC.active = 0 + OR ( + PP.active = 0 + AND a_get_inactive_product_permutation = 0 + ) ; ELSE INSERT INTO tmp_Permutation_calc ( @@ -347,17 +364,18 @@ BEGIN FROM tmp_Split t_S RIGHT JOIN partsltd_prod.Shop_Product_Permutation PP ON t_S.as_int = PP.id_permutation INNER JOIN tmp_Product_calc t_P ON PP.id_product = t_P.id_product - WHERE ( + WHERE 1=1 + AND ( a_get_all_product_permutation = 1 OR ( v_has_filter_permutation = 1 - AND FIND_IN_SET(PP.id_permutation, a_ids_permutation) > 0 - ) - OR ( - a_get_products_quantity_stock_below_min = 1 - AND PP.quantity_stock < PP.quantity_min + AND NOT ISNULL(t_S.as_int) ) ) + AND ( + a_get_products_quantity_stock_below_min = 1 + AND PP.quantity_stock < PP.quantity_min + ) AND ( a_get_inactive_permutation = 1 OR PP.active = 1 diff --git a/static/MySQL/7204_p_shop_get_many_product.sql b/static/MySQL/7204_p_shop_get_many_product.sql index 783d2273..b2d803d3 100644 --- a/static/MySQL/7204_p_shop_get_many_product.sql +++ b/static/MySQL/7204_p_shop_get_many_product.sql @@ -37,7 +37,7 @@ BEGIN DECLARE v_ids_product_permission VARCHAR(4000); -- DECLARE v_ids_permutation_permission VARCHAR(4000); DECLARE v_id_access_level_view INT; - -- DECLARE v_now TIMESTAMP; + -- DECLARE v_now DATETIME; DECLARE v_id_minimum INT; DECLARE v_ids_product_invalid VARCHAR(4000); DECLARE v_time_start TIMESTAMP(6); diff --git a/static/MySQL/7206_p_shop_save_product_permutation.sql b/static/MySQL/7206_p_shop_save_product_permutation.sql index e56d960b..cfb59e1a 100644 --- a/static/MySQL/7206_p_shop_save_product_permutation.sql +++ b/static/MySQL/7206_p_shop_save_product_permutation.sql @@ -18,7 +18,7 @@ BEGIN DECLARE v_ids_product_permission LONGTEXT; DECLARE v_id_change_set INT; DECLARE v_id_access_level_edit INT; - DECLARE v_now TIMESTAMP; + DECLARE v_now DATETIME; DECLARE exit handler for SQLEXCEPTION BEGIN @@ -376,7 +376,7 @@ BEGIN END IF; END IF; - SET v_now := CURRENT_TIMESTAMP(); + SET v_now := CURRENT_DATETIME(); IF NOT EXISTS (SELECT * FROM tmp_Msg_Error LIMIT 1) THEN START TRANSACTION; diff --git a/static/MySQL/7219_p_shop_get_many_stock_item.sql b/static/MySQL/7219_p_shop_get_many_stock_item.sql index 20443aff..06bd6d32 100644 --- a/static/MySQL/7219_p_shop_get_many_stock_item.sql +++ b/static/MySQL/7219_p_shop_get_many_stock_item.sql @@ -22,7 +22,7 @@ CREATE PROCEDURE p_shop_get_many_stock_item ( IN a_get_all_location_storage BIT, IN a_get_inactive_location_storage BIT, IN a_ids_location_storage TEXT, - IN a_date_received_to TIMESTAMP, + IN a_date_received_to DATETIME, IN a_get_sealed_stock_item_only BIT, IN a_get_unsealed_stock_item_only BIT, IN a_get_expired_stock_item_only BIT, @@ -43,7 +43,7 @@ BEGIN DECLARE v_ids_product_permission LONGTEXT; -- DECLARE v_ids_permutation_permission VARCHAR(4000); DECLARE v_id_access_level_view INT; - -- DECLARE v_now TIMESTAMP; + -- DECLARE v_now DATETIME; -- DECLARE v_id_minimum INT; DECLARE v_time_start TIMESTAMP(6); diff --git a/static/MySQL/7220_p_shop_save_stock_item.sql b/static/MySQL/7220_p_shop_save_stock_item.sql index 97195ef2..cf6c2abe 100644 --- a/static/MySQL/7220_p_shop_save_stock_item.sql +++ b/static/MySQL/7220_p_shop_save_stock_item.sql @@ -13,11 +13,11 @@ CREATE PROCEDURE p_shop_save_stock_item ( BEGIN DECLARE v_code_type_error_bad_data VARCHAR(100); - DECLARE v_id_type_error_bad_data INT; - DECLARE v_id_permission_product INT; - DECLARE v_ids_product_permission LONGTEXT; - DECLARE v_id_change_set INT; DECLARE v_id_access_level_edit INT; + DECLARE v_id_change_set INT; + DECLARE v_id_permission_product INT; + DECLARE v_id_type_error_bad_data INT; + DECLARE v_ids_product_permission LONGTEXT; DECLARE v_time_start TIMESTAMP(6); DECLARE v_time_expire DATETIME; @@ -63,7 +63,7 @@ BEGIN SET v_id_type_error_bad_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_type_error_bad_data LIMIT 1); SET v_id_access_level_edit := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'EDIT' LIMIT 1); - SET a_guid := IFNULL(a_guid, UUID()); + CALL partsltd_prod.p_validate_guid ( a_guid ); DROP TEMPORARY TABLE IF EXISTS tmp_Stock_Item; DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error; @@ -191,7 +191,41 @@ BEGIN END IF; -- Validation - -- Missing mandatory fields + -- id_stock + IF EXISTS ( + SELECT * + FROM tmp_Stock_Item t_SI + LEFT JOIN partsltd_prod.Shop_Stock_Item SI ON t_SI.id_stock = SI.id_stock + WHERE 1=1 + AND t_SI.id_stock > 0 + AND ISNULL(SI.id_stock) + LIMIT 1 + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type + , code + , msg + ) + SELECT + v_id_type_error_bad_data + , v_code_type_error_bad_data + , CONCAT( + 'Invalid stock item(s): ' + , GROUP_CONCAT( + CONCAT( + IFNULL(t_SI.id_stock, '(No Stock Item)') + , ' - ' + , IFNULL(t_SI.name_error, '(No Product)') + ) SEPARATOR ', ' + ) + ) AS msg + FROM tmp_Stock_Item t_SI + LEFT JOIN partsltd_prod.Shop_Product_Permutation PP ON t_SI.id_permutation = PP.id_permutation + WHERE 1=1 + AND t_SI.id_stock > 0 + AND ISNULL(SI.id_stock) + ; + END IF; -- id_product IF EXISTS (SELECT * FROM tmp_Stock_Item t_SI WHERE t_SI.id_product = 0 LIMIT 1) THEN INSERT INTO tmp_Msg_Error ( @@ -483,8 +517,14 @@ BEGIN START TRANSACTION; IF NOT ISNULL(v_ids_product_permission) THEN - INSERT INTO Shop_Product_Change_Set ( comment ) - VALUES ( a_comment ) + INSERT INTO Shop_Product_Change_Set ( + comment + , updated_last_by + ) + VALUES ( + a_comment, + a_id_user + ) ; SET v_id_change_set := LAST_INSERT_ID(); @@ -556,10 +596,22 @@ BEGIN COMMIT; END IF; - SELECT * FROM tmp_Msg_Error; + # Errors + SELECT * + FROM tmp_Msg_Error t_ME + INNER JOIN partsltd_prod.Shop_Msg_Error_Type MET ON t_ME.id_type = MET.id_type + ; + + IF a_debug = 1 THEN + SELECT * from tmp_Stock_Item; + END IF; DROP TEMPORARY TABLE IF EXISTS tmp_Stock_Item; DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error; + + IF a_debug = 1 THEN + CALL partsltd_prod.p_debug_timing_reporting ( v_time_start ); + END IF; END // DELIMITER ;; diff --git a/static/MySQL/7221_p_get_many_shop_product_price_and_discount_and_delivery_option.sql b/static/MySQL/7221_p_get_many_shop_product_price_and_discount_and_delivery_option.sql index 87606e83..40174c26 100644 --- a/static/MySQL/7221_p_get_many_shop_product_price_and_discount_and_delivery_option.sql +++ b/static/MySQL/7221_p_get_many_shop_product_price_and_discount_and_delivery_option.sql @@ -44,7 +44,7 @@ BEGIN DECLARE v_ids_product_permission VARCHAR(4000); -- DECLARE v_ids_permutation_permission VARCHAR(4000); DECLARE v_id_access_level_view INT; - -- DECLARE v_now TIMESTAMP; + -- DECLARE v_now DATETIME; DECLARE v_id_minimum INT; DECLARE v_time_start TIMESTAMP(6); diff --git a/static/MySQL/7312_p_shop_save_user.sql b/static/MySQL/7312_p_shop_save_user.sql index 5a06a5ef..fe964f7b 100644 --- a/static/MySQL/7312_p_shop_save_user.sql +++ b/static/MySQL/7312_p_shop_save_user.sql @@ -28,7 +28,7 @@ BEGIN -- Argument redeclaration -- Variable declaration DECLARE v_has_filter_user BIT; - -- DECLARE v_now TIMESTAMP; + -- DECLARE v_now DATETIME; -- Argument validation + default values diff --git a/static/MySQL/7313_p_get_many_user.sql b/static/MySQL/7313_p_get_many_user.sql index 27b730eb..4bac0863 100644 --- a/static/MySQL/7313_p_get_many_user.sql +++ b/static/MySQL/7313_p_get_many_user.sql @@ -22,7 +22,7 @@ BEGIN DECLARE v_id_permission_user INT; DECLARE v_id_permission_user_admin INT; DECLARE v_ids_permission_required VARCHAR(4000); - DECLARE v_now TIMESTAMP; + DECLARE v_now DATETIME; DECLARE v_id_minimum INT; DECLARE v_code_error_bad_data VARCHAR(50); DECLARE v_id_type_error_bad_data INT; diff --git a/static/MySQL/7321_p_shop_save_user_basket.sql b/static/MySQL/7321_p_shop_save_user_basket.sql index e4715085..0f29cfe6 100644 --- a/static/MySQL/7321_p_shop_save_user_basket.sql +++ b/static/MySQL/7321_p_shop_save_user_basket.sql @@ -47,7 +47,7 @@ BEGIN # DECLARE v_id_user VARCHAR(100); DECLARE v_id_permission_product INT; DECLARE v_ids_permutation_permission VARCHAR(4000); - DECLARE v_now TIMESTAMP; + DECLARE v_now DATETIME; # DECLARE v_quantity_new INT; DECLARE v_change_set_used BIT; DECLARE v_id_change_set INT; diff --git a/static/MySQL/7400_p_shop_save_supplier.sql b/static/MySQL/7400_p_shop_save_supplier.sql index 64f88225..98cfcea6 100644 --- a/static/MySQL/7400_p_shop_save_supplier.sql +++ b/static/MySQL/7400_p_shop_save_supplier.sql @@ -8,273 +8,367 @@ DROP PROCEDURE IF EXISTS p_shop_save_supplier; DELIMITER // CREATE PROCEDURE p_shop_save_supplier ( - IN a_guid VARCHAR(500), - IN a_id_user INT, - IN a_comment VARCHAR(500), - IN a_id_supplier INT, - IN a_name_company VARCHAR(256), - IN a_name_contact VARCHAR(256), - IN a_department_contact VARCHAR(256), - IN a_id_address INT, - IN a_phone_number VARCHAR(20), - IN a_fax VARCHAR(20), - IN a_email VARCHAR(515), - IN a_website VARCHAR(300), - IN a_id_currency INT, - IN a_active BIT + IN a_comment VARCHAR(500) + , IN a_guid BINARY(36) + , IN a_id_user INT + , IN a_debug BIT ) BEGIN - DECLARE v_id_error_type_bad_data INT; - DECLARE v_id_error_type_no_permission INT; - DECLARE v_guid_permission BINARY(36); - DECLARE v_id_user VARCHAR(100); - DECLARE v_id_permission_supplier INT; - -- DECLARE v_id_access_level_EDIT INT; - DECLARE v_has_permission BIT; + DECLARE v_code_type_error_bad_data VARCHAR(50); + DECLARE v_code_type_error_no_permission VARCHAR(50); + DECLARE v_id_access_level_edit INT; DECLARE v_id_change_set INT; - DECLARE v_is_new_supplier BIT; + DECLARE v_id_permission_supplier INT; + DECLARE v_id_type_error_bad_data INT; + DECLARE v_id_type_error_no_permission INT; + DECLARE v_time_start TIMESTAMP(6); + + DECLARE exit handler for SQLEXCEPTION + BEGIN + GET DIAGNOSTICS CONDITION 1 + @sqlstate = RETURNED_SQLSTATE + , @errno = MYSQL_ERRNO + , @text = MESSAGE_TEXT + ; + + ROLLBACK; + + CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error ( + display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT + , id_type INT NULL + , code VARCHAR(50) NOT NULL + , msg VARCHAR(4000) NOT NULL + ); + INSERT INTO tmp_Msg_Error ( + id_type + , code + , msg + ) + SELECT + NULL + , @errno + , @text + ; + SELECT * + FROM tmp_Msg_Error; + DROP TABLE IF EXISTS tmp_Msg_Error; + END; + + SET v_time_start := CURRENT_TIMESTAMP(6); + SET v_code_type_error_bad_data := (SELECT code FROM partsltd_prod.Shop_Msg_Error_Type WHERE code = 'BAD_DATA'); + SET v_id_type_error_bad_data := (SELECT id_type FROM partsltd_prod.Shop_Msg_Error_Type WHERE code = v_code_type_error_bad_data); + SET v_code_type_error_no_permission := (SELECT code FROM partsltd_prod.Shop_Msg_Error_Type WHERE code = 'NO_PERMISSION'); + SET v_id_type_error_no_permission := (SELECT id_type FROM partsltd_prod.Shop_Msg_Error_Type WHERE code = v_code_type_error_no_permission); + SET v_id_permission_supplier = (SELECT id_permission FROM partsltd_prod.Shop_Permission WHERE code = 'STORE_SUPPLIER' LIMIT 1); + SET v_id_access_level_EDIT = (SELECT id_access_level FROM partsltd_prod.Shop_Access_Level WHERE code = 'EDIT'); - SET v_id_error_type_bad_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA'); - SET v_guid_permission = UUID(); - SET v_id_user = CURRENT_USER(); - SET v_id_permission_supplier = (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_SUPPLIER' LIMIT 1); - -- SET v_id_access_level_EDIT = (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'EDIT'); + CALL p_validate_guid ( a_guid ); + SET a_comment := TRIM(IFNULL(a_comment, '')); - -- Argument default values - IF a_guid IS NULL THEN - SET a_guid = UUID(); - END IF; - - - -- Temporary tables - /* - CREATE TABLE tmp_Shop_Supplier ( - id_supplier INT NOT NULL, - name_company VARCHAR(255) NOT NULL, - name_contact VARCHAR(255) NULL, - department_contact VARCHAR(255) NULL, - id_address INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Supplier_id_address - FOREIGN KEY (id_address) - REFERENCES Shop_Address(id_address), - phone_number VARCHAR(50) NULL, - fax VARCHAR(50) NULL, - email VARCHAR(255) NOT NULL, - website VARCHAR(255) NULL, - id_currency INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Supplier_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency), - active BIT NOT NULL, - can_view BIT NOT NULL, - can_edit BIT NOT NULL, - can_admin BIT NOT NULL + DROP TEMPORARY TABLE IF EXISTS tmp_Supplier; + DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error; + + CREATE TEMPORARY TABLE tmp_Supplier ( + id_supplier INT NOT NULL + , id_address INT NOT NULL + , id_currency INT NOT NULL + , name_company VARCHAR(255) NOT NULL + , name_contact VARCHAR(255) NULL + , department_contact VARCHAR(255) NULL + , phone_number VARCHAR(50) NULL + , fax VARCHAR(50) NULL + , email VARCHAR(255) NOT NULL + , website VARCHAR(255) NULL + , active BIT NOT NULL + , name_error VARCHAR(1000) NOT NULL + , is_new BIT NOT NULL ); - */ - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - guid BINARY(36) NOT NULL, - id_type INT NOT NULL, - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type (id_type), - code VARCHAR(50) NOT NULL, - msg VARCHAR(4000) NOT NULL + CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error ( + display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT + , id_type INT NOT NULL + , code VARCHAR(50) NOT NULL + , msg VARCHAR(4000) NOT NULL ); - -- Argument validation - IF a_id_supplier IS NULL THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, msg - ) - VALUES - (a_guid, v_id_error_type_bad_data, 'Supplier ID must not be null') - ; - END IF; - IF a_name_company IS NULL THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, msg - ) - VALUES - (a_guid, v_id_error_type_bad_data, 'Supplier company name must not be null') - ; - END IF; - IF a_id_address IS NULL THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, msg - ) - VALUES - (a_guid, v_id_error_type_bad_data, 'Address ID must not be null') - ; - END IF; - IF a_email IS NULL THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, msg - ) - VALUES - (a_guid, v_id_error_type_bad_data, 'Email must not be null') - ; - END IF; - IF a_active IS NULL THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, msg - ) - VALUES - (a_guid, v_id_error_type_bad_data, 'Active must not be null') - ; - END IF; + INSERT INTO tmp_Supplier ( + id_supplier + , id_address + , id_currency + , name_company + , name_contact + , department_contact + , phone_number + , fax + , email + , website + , active + , name_error + , is_new + ) + SELECT + S_T.id_supplier + , S_T.id_address + , S_T.id_currency + , S_T.name_company + , S_T.name_contact + , S_T.department_contact + , S_T.phone_number + , S_T.fax + , S_T.email + , S_T.website + , S_T.active + , IFNULL(S_T.name_company, IFNULL(S_T.email, IFNULL(S_T.website, IFNULL(S_T.name_contact, '(No Supplier)')))) + , IFNULL(S_T.id_supplier, 0) < 1 + FROM partsltd_prod.Shop_Supplier_Temp S_T + WHERE GUID = a_guid + ; - - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - SET v_is_new_supplier := CASE WHEN a_id_supplier <= 0 THEN 1 ELSE 0 END; - - IF (v_is_new_supplier = 0 AND NOT EXISTS (SELECT * FROM Shop_Supplier S WHERE S.id_supplier = a_id_supplier)) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, msg + -- Validation + # id_address + IF EXISTS ( + SELECT * + FROM tmp_Supplier t_S + LEFT JOIN partsltd_prod.Shop_Address A ON t_S.id_address = A.id_address + WHERE 1=1 + AND ( + t_S.id_address = 0 + OR A.active = 0 ) - VALUES - (a_guid, v_id_error_type_bad_data, CONCAT('Invalid supplier ID: ', a_id_supplier)) - ; - END IF; - END IF; - - /* - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - INSERT INTO tmp_Shop_Supplier ( - id_supplier, name_company, name_contact, department_contact, id_address, phone_number, fax, email, website, id_currency, active + LIMIT 1 + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type + , code + , msg ) - VALUES - (a_id_supplier, a_name_company, a_name_contact, a_department_contact, a_id_address, a_phone_number, a_fax, a_email, a_website, a_id_currency, a_active) - /* - FROM Shop_Supplier S - WHERE (NOT v_has_filter_category OR C.id_category LIKE '%' || a_ids_category || '%') - AND (a_get_inactive_categories OR C.active) - * - ; + SELECT + v_id_type_error_bad_data + , v_code_type_error_bad_data + , CONCAT( + 'The following supplier(s) have an invalid or inactive Address: ' + , GROUP_CONCAT(t_S.name_error SEPARATOR ', ') + ) AS msg + FROM tmp_Supplier t_S + LEFT JOIN partsltd_prod.Shop_Address A ON t_S.id_address = A.id_address + WHERE 1=1 + AND ( + t_S.id_address = 0 + OR A.active = 0 + ) + ; END IF; - */ - + # id_currency + IF EXISTS ( + SELECT * + FROM tmp_Supplier t_S + LEFT JOIN partsltd_prod.Shop_Currency C ON t_S.id_currency = C.id_currency + WHERE 1=1 + AND ( + t_S.id_currency = 0 + OR C.active = 0 + ) + LIMIT 1 + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type + , code + , msg + ) + SELECT + v_id_type_error_bad_data + , v_code_type_error_bad_data + , CONCAT( + 'The following supplier(s) have an invalid or inactive Currency: ' + , GROUP_CONCAT(t_S.name_error SEPARATOR ', ') + ) AS msg + FROM tmp_Supplier t_S + LEFT JOIN partsltd_prod.Shop_Currency C ON t_S.id_currency = C.id_currency + WHERE 1=1 + AND ( + t_S.id_currency = 0 + OR C.active = 0 + ) + ; + END IF; + # name_company + IF EXISTS (SELECT * FROM tmp_Supplier t_S WHERE ISNULL(t_S.name_company) LIMIT 1) THEN + INSERT INTO tmp_Msg_Error ( + id_type + , code + , msg + ) + SELECT + v_id_type_error_bad_data + , v_code_type_error_bad_data + , CONCAT('The following supplier(s) do not have a name: ', GROUP_CONCAT(IFNULL(t_S.name_error, 'NULL') SEPARATOR ', ')) AS msg + FROM tmp_Supplier t_S + WHERE ISNULL(t_S.name_company) + ; + END IF; + # email + IF EXISTS (SELECT * FROM tmp_Supplier t_S WHERE ISNULL(t_S.email) LIMIT 1) THEN + INSERT INTO tmp_Msg_Error ( + id_type + , code + , msg + ) + SELECT + v_id_type_error_bad_data + , v_code_type_error_bad_data + , CONCAT('The following supplier(s) do not have an email: ', GROUP_CONCAT(IFNULL(t_S.name_error, 'NULL') SEPARATOR ', ')) AS msg + FROM tmp_Supplier t_S + WHERE ISNULL(t_S.email) + ; + END IF; + -- Permissions - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - CALL p_shop_calc_user(v_guid_permission, v_id_user, v_id_permission_supplier, ''); - - /* - UPDATE tmp_Shop_Supplier t_S - INNER JOIN Shop_Calc_User_Temp TP - ON TP.GUID = v_guid_permission - SET tP.can_view = TP.can_view, - tP.can_edit = TP.can_edit, - tP.can_admin = TP.can_admin; - */ - SET v_has_permission := (SELECT can_edit FROM Shop_Calc_User_Temp WHERE GUID = v_guid_permission); - - IF v_has_permission = 0 THEN - SET v_id_error_type_no_permission := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'NO_PERMISSION'); - INSERT INTO tmp_Msg_Error ( - guid, id_type, msg - ) - SELECT - a_guid, - v_id_error_type_no_permission, - CONCAT('You do not have ', name, ' permissions.') - FROM Shop_Permission - WHERE id_permission = v_id_permission_supplier - ; - END IF; - - -- CALL p_shop_clear_calc_user(v_guid_permission); - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = a_guid; - END IF; + IF a_debug = 1 THEN + SELECT + v_guid + , a_id_user + , FALSE -- get inactive users + , v_id_permission_supplier + , v_id_access_level_edit + , '' -- ids_product + , 0 -- a_debug + ; + SELECT * from partsltd_prod.Shop_Calc_User_Temp; + END IF; + + CALL p_shop_calc_user( + v_guid + , a_id_user + , FALSE -- get inactive users + , v_id_permission_supplier + , v_id_access_level_edit + , '' -- ids_product + , 0 -- a_debug + ); + + IF a_debug = 1 THEN + SELECT * from partsltd_prod.Shop_Calc_User_Temp WHERE GUID = a_guid; + END IF; + + IF NOT EXISTS (SELECT can_view FROM partsltd_prod.Shop_Calc_User_Temp UE_T WHERE UE_T.GUID = v_guid) THEN + DELETE FROM tmp_Msg_Error; + + INSERT INTO tmp_Msg_Error ( + id_type + , code + , msg + ) + VALUES ( + v_id_type_error_no_permission + , v_code_type_error_no_permission + CONCAT('You do not have view permissions for ', (SELECT name FROM partsltd_prod.Shop_Permission WHERE id_permission = v_id_permission_supplier LIMIT 1)) + ) + ; + END IF; + + CALL partsltd_prod.p_shop_clear_calc_user( a_guid ); + + IF EXISTS ( SELECT * FROM tmp_Msg_Error LIMIT 1 ) THEN + DELETE FROM tmp_Supplier; + END IF; -- Transaction - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - INSERT INTO Shop_Sales_And_Purchasing_Change_Set ( - comment, - updated_last_by, - updated_last_on - ) - VALUES ( - CONCAT( - 'Save ', - CASE WHEN v_is_new_supplier = 1 THEN 'new ' ELSE '' END, - 'Supplier - ', - a_comment - ), - a_id_user, - CURRENT_TIME() - ); - - SET v_id_change_set := (SELECT id_change_set FROM Shop_Sales_And_Purchasing_Change_Set ORDER BY id_change_set DESC LIMIT 1); - + IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN START TRANSACTION; - IF (v_is_new_supplier = 1) THEN - INSERT INTO Shop_Supplier ( - -- id_supplier, - name_company, name_contact, department_contact, id_address, phone_number, fax, email, website, id_currency, active, id_change_set - ) - VALUES - ( - -- a_id_supplier, - a_name_company, a_name_contact, a_department_contact, a_id_address, a_phone_number, a_fax, a_email, a_website, a_id_currency, a_active, v_id_change_set - ) + INSERT INTO partsltd_prod.Shop_Sales_And_Purchasing_Change_Set ( + comment + , updated_last_by + , updated_last_on + ) + VALUES ( + a_comment + , a_id_user + , v_time_start + ); + + SET v_id_change_set := LAST_INSERT_ID(); + + INSERT INTO partsltd_prod.Shop_Supplier ( + -- id_supplier, + id_address + , id_currency + , name_company + , name_contact + , department_contact + , phone_number + , fax + , email + , website + , active + , id_change_set + ) + SELECT + t_S.id_address + , t_S.id_currency + , t_S.name_company + , t_S.name_contact + , t_S.department_contact + , t_S.phone_number + , t_S.fax + , t_S.email + , t_S.website + , t_S.active + v_id_change_set + FROM tmp_Supplier t_S + WHERE t_S.is_new = 1 + ; + + UPDATE partsltd_prod.Shop_Supplier S + INNER JOIN tmp_Supplier t_S + ON S.id_supplier = t_S.id_supplier + AND t_S.is_new = 0 + SET + S.id_address = t_S.id_address + , S.id_currency = t_S.id_currency + , S.name_company = t_S.name_company + , S.name_contact = t_S.name_contact + , S.department_contact = t_S.department_contact + , S.phone_number = t_S.phone_number + , S.fax = t_S.fax + , S.email = t_S.email + , S.website = t_S.website + , S.active = t_S.active + , S.id_change_set = v_id_change_set /* - FROM Shop_Supplier S - WHERE (NOT v_has_filter_category OR C.id_category LIKE '%' || a_ids_category || '%') - AND (a_get_inactive_categories OR C.active) + S.name_company = a_name_company, + S.name_contact = a_name_contact, + S.department_contact = a_department_contact, + S.id_address = a_id_address, + S.phone_number = a_phone_number, + S.fax = a_fax, + S.email = a_email, + S.website = a_website, + S.id_currency = a_id_currency, + S.active = a_active, + S.id_change_set = v_id_change_set */ - ; - ELSE - UPDATE Shop_Supplier S - -- INNER JOIN tmp_Shop_Supplier t_S ON S.id_supplier = t_S.id_supplier - SET - /* - S.name_company = t_S.name_company, - S.name_contact = t_S.name_contact, - S.department_contact = t_S.department_contact, - S.id_address = t_S.id_address, - S.phone_number = t_S.phone_number, - S.fax = t_S.fax, - S.email = t_S.email, - S.website = t_S.website, - S.id_currency = t_S.id_currency, - S.active = t_S.active - */ - S.name_company = a_name_company, - S.name_contact = a_name_contact, - S.department_contact = a_department_contact, - S.id_address = a_id_address, - S.phone_number = a_phone_number, - S.fax = a_fax, - S.email = a_email, - S.website = a_website, - S.id_currency = a_id_currency, - S.active = a_active, - S.id_change_set = v_id_change_set - ; - END IF; - - IF EXISTS (SELECT * FROM tmp_Msg_Error) THEN - ROLLBACK; - ELSE - COMMIT; - END IF; + ; + COMMIT; END IF; - -- Returns - -- SET v_now = NOW(); - # Errors SELECT * - FROM tmp_Msg_Error + FROM tmp_Msg_Error t_ME + INNER JOIN partsltd_prod.Shop_Msg_Error_Type MET ON t_ME.id_type = MET.id_type ; - DROP TABLE tmp_Shop_Supplier; - DROP TABLE tmp_Msg_Error; + IF a_debug = 1 THEN + SELECT * from tmp_Supplier; + END IF; + + DROP TEMPORARY TABLE tmp_Supplier; + DROP TEMPORARY TABLE tmp_Msg_Error; + + IF a_debug = 1 THEN + CALL partsltd_prod.p_debug_timing_reporting ( v_time_start ); + END IF; END // DELIMITER ;; diff --git a/static/MySQL/7401_p_shop_get_many_supplier.sql b/static/MySQL/7401_p_shop_get_many_supplier.sql index 71876de4..b854cf55 100644 --- a/static/MySQL/7401_p_shop_get_many_supplier.sql +++ b/static/MySQL/7401_p_shop_get_many_supplier.sql @@ -1,266 +1,241 @@ - -/* - -CALL p_shop_get_many_supplier ( - '', # a_id_user - 1, # a_get_all_supplier - 0, # a_get_inactive_supplier - 0, # a_get_first_supplier_only - '', # a_ids_supplier -); - -*/ - - --- Clear previous proc DROP PROCEDURE IF EXISTS p_shop_get_many_supplier; - DELIMITER // CREATE PROCEDURE p_shop_get_many_supplier ( - IN a_id_user INT, - IN a_get_all_supplier BIT, - IN a_get_inactive_supplier BIT, - IN a_get_first_supplier_only BIT, - IN a_ids_supplier VARCHAR(4000) + IN a_id_user INT + , IN a_get_all_supplier BIT + , IN a_get_inactive_supplier BIT + , IN a_ids_supplier TEXT + , IN a_debug BIT ) BEGIN - -- Argument redeclaration - -- Variable declaration - DECLARE v_has_filter_supplier BIT; + DECLARE v_code_type_error_bad_data VARCHAR(50); + DECLARE v_code_type_error_no_permission VARCHAR(50); DECLARE v_guid BINARY(36); - # DECLARE v_id_user VARCHAR(100); - # DECLARE v_ids_permutation_unavailable VARCHAR(4000); - DECLARE v_id_permission_supplier INT; - # DECLARE v_ids_product_permission VARCHAR(4000); - # DECLARE v_ids_permutation_permission VARCHAR(4000); + DECLARE v_has_filter_supplier BIT; DECLARE v_id_access_level_view INT; - DECLARE v_now TIMESTAMP; - DECLARE v_id_minimum INT; - DECLARE v_code_error_data VARCHAR(50); - + DECLARE v_id_permission_supplier INT; + DECLARE v_id_type_error_bad_data INT; + DECLARE v_id_type_error_no_permission INT; + DECLARE v_time_start TIMESTAMP(6); + SET v_time_start := CURRENT_TIMESTAMP(6); SET v_guid := UUID(); SET v_id_access_level_view := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW' LIMIT 1); - SET v_code_error_data := (SELECT code FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1); + SET v_code_type_error_bad_data := (SELECT code FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1); + SET v_id_type_error_bad_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_type_error_bad_data LIMIT 1); + SET v_code_type_error_no_permission := (SELECT code FROM Shop_Msg_Error_Type WHERE code = 'NO_PERMISSION'); + SET v_id_type_error_no_permission := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_type_error_no_permission); + SET v_id_permission_supplier := (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_SUPPLIER' LIMIT 1); - -- Argument validation + default values - IF a_id_user IS NULL THEN - SET a_id_user = ''; - ELSE - SET a_id_user = TRIM(a_id_user); - END IF; - IF a_get_all_supplier IS NULL THEN - SET a_get_all_supplier = 1; - END IF; - IF a_get_inactive_supplier IS NULL THEN - SET a_get_inactive_supplier = 0; - END IF; - IF a_get_first_supplier_only IS NULL THEN - SET a_get_first_supplier_only = 0; - END IF; - IF a_ids_supplier IS NULL THEN - SET a_ids_supplier = ''; - ELSE - SET a_ids_supplier = TRIM(REPLACE(a_ids_supplier, '|', ',')); - END IF; + SET a_get_all_supplier := IFNULL(a_get_all_supplier, 0); + SET a_get_inactive_supplier := IFNULL(a_get_inactive_supplier, 0); + SET a_ids_supplier := TRIM(IFNULL(a_ids_supplier, '')); - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Supplier; + DROP TEMPORARY TABLE IF EXISTS tmp_Supplier; - CREATE TABLE tmp_Shop_Supplier ( - id_supplier INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Supplier_id_supplier - FOREIGN KEY (id_supplier) - REFERENCES Shop_Supplier(id_supplier), - active BIT NOT NULL, - rank_supplier INT NULL + CREATE TEMPORARY TABLE tmp_Supplier ( + id_supplier INT NOT NULL ); CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - guid BINARY(36) NOT NULL, id_type INT NOT NULL, - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type (id_type), code VARCHAR(50) NOT NULL, msg VARCHAR(4000) NOT NULL ); + CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split ( + substring VARCHAR(4000) NOT NULL + , as_int INT NULL + ); + DELETE FROM tmp_Split; + -- Parse filters SET v_has_filter_supplier = CASE WHEN a_ids_supplier = '' THEN 0 ELSE 1 END; - -- select v_has_filter_product, v_has_filter_permutation; - - IF v_has_filter_supplier = 1 OR a_get_all_supplier = 1 THEN - CALL p_split(a_guid, a_ids_supplier, ','); - - IF EXISTS (SELECT * FROM Split_Temp S_T LEFT JOIN Shop_Supplier S ON S_T.substring = S.id_supplier WHERE ISNULL(S.id_supplier)) THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_data, - CONCAT('Invalid supplier IDs: ', (SELECT GROUP_CONCAT(S.id_supplier) FROM Temp_Split TS LEFT JOIN Shop_Supplier S ON TS.substring = S.id_supplier WHERE ISNULL(S.id_supplier))) - ) - ; - ELSE - INSERT INTO tmp_Shop_Supplier ( - id_supplier, - active, - rank_supplier - ) - SELECT - S.id_supplier, - S.active, - RANK() OVER (ORDER BY id_supplier ASC) AS rank_supplier - FROM Shop_Supplier S - LEFT JOIN Split_Temp S_T ON S.id_supplier = S_T.substring - WHERE - ( - a_get_all_supplier = 1 - OR NOT ISNULL(S_T.substring) - ) - AND ( - a_get_inactive_supplier - OR S.active = 1 - ) - ; - END IF; - - DROP TABLE Split_Temp; - - IF a_get_first_supplier_only THEN - DELETE t_S - FROM tmp_Shop_Supplier t_S - WHERE t_S.rank_supplier > 1 /*( - SELECT MIN(t_S.rank_supplier) - FROM tmp_Shop_Supplier t_S - ) */ - ; - END IF; + IF a_debug = 1 THEN + SELECT + v_has_filter_supplier + ; END IF; - - -- Permissions - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error LIMIT 1) THEN - # SET v_id_user := (SELECT id_user FROM Shop_User WHERE name = CURRENT_USER()); - SET v_id_permission_supplier := (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_SUPPLIER' LIMIT 1); - - -- SELECT v_guid, a_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_permutation_permission; - -- select * from Shop_Calc_User_Temp; - - CALL p_shop_calc_user(v_guid, a_id_user, FALSE, v_id_permission_supplier, v_id_access_level_view, ''); - - -- select * from Shop_Calc_User_Temp; - - IF NOT EXISTS (SELECT can_view FROM Shop_Calc_User_Temp UE_T WHERE UE_T.GUID = v_guid) THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_data, - CONCAT('You do not have view permissions for ', (SELECT name FROM Shop_Permission WHERE id_permission = v_id_permission_supplier LIMIT 1)) - ) - ; - END IF; + + -- Suppliers + IF v_has_filter_supplier = 1 THEN + CALL partsltd_prod.p_split(a_guid, a_ids_supplier, ',', a_debug); + + INSERT INTO tmp_Split ( + substring + , as_int + ) + SELECT + substring + , CONVERT(substring, DECIMAL(10,0)) AS as_int + FROM partsltd_prod.Split_Temp + WHERE 1=1 + AND GUID = a_guid + AND NOT ISNULL(substring) + AND substring != '' + ; + + CALL partsltd_prod.p_clear_split_temp( a_guid ); END IF; + IF NOT EXISTS (SELECT * FROM tmp_Msg_Error LIMIT 1) THEN + IF EXISTS ( + SELECT * + FROM tmp_Split t_S + LEFT JOIN partsltd_prod.Shop_Supplier S ON t_S.as_int = S.id_supplier + WHERE + ISNULL(t_S.as_int) + OR ISNULL(S.id_supplier) + OR ( + S.active = 0 + AND v_get_inactive_supplier = 0 + ) + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type, + code, + msg + ) + SELECT + v_id_type_error_bad_data, + v_code_type_error_bad_data, + CONCAT('Invalid or inactive Supplier IDs: ', IFNULL(GROUP_CONCAT(t_S.substring SEPARATOR ', '), 'NULL')) + FROM tmp_Split t_S + LEFT JOIN partsltd_prod.Shop_Supplier S ON t_S.as_int = S.id_supplier + WHERE + ISNULL(t_S.as_int) + OR ISNULL(S.id_supplier) + OR ( + S.active = 0 + AND v_get_inactive_supplier = 0 + ) + ; + ELSE + INSERT INTO tmp_Supplier ( + id_supplier + ) + SELECT + S.id_supplier + FROM tmp_Split t_S + RIGHT JOIN partsltd_prod.Shop_Supplier S ON t_S.as_int = S.id_supplier + WHERE ( + a_get_all_supplier = 1 + OR ( + v_has_filter_supplier = 1 + AND NOT ISNULL(t_S.as_int) + ) + ) + AND ( + a_get_inactive_supplier = 1 + OR S.active = 1 + ) + ; + END IF; + END IF; - -- select * from tmp_Shop_Product; + DELETE FROM tmp_Split; + + -- Permissions + IF a_debug = 1 THEN + SELECT + v_guid + , a_id_user + , FALSE -- get inactive users + , v_id_permission_supplier + , v_id_access_level_view + , '' -- ids_product + , 0 -- a_debug + ; + SELECT * from Shop_Calc_User_Temp; + END IF; + + CALL p_shop_calc_user( + v_guid + , a_id_user + , FALSE -- get inactive users + , v_id_permission_supplier + , v_id_access_level_view + , '' -- ids_product + , 0 -- a_debug + ); + + IF a_debug = 1 THEN + SELECT * from Shop_Calc_User_Temp; + END IF; + + IF NOT EXISTS (SELECT can_view FROM Shop_Calc_User_Temp UE_T WHERE UE_T.GUID = v_guid) THEN + DELETE FROM tmp_Msg_Error; + + INSERT INTO tmp_Msg_Error ( + , id_type + , code + , msg + ) + VALUES ( + v_id_type_error_no_permission + , v_code_type_error_no_permission + CONCAT('You do not have view permissions for ', (SELECT name FROM Shop_Permission WHERE id_permission = v_id_permission_supplier LIMIT 1)) + ) + ; + END IF; - -- Returns - SET v_now := NOW(); + IF EXISTS ( SELECT * FROM tmp_Msg_Error LIMIT 1 ) THEN + DELETE FROM tmp_Supplier; + END IF; + -- Returns # Suppliers SELECT t_S.id_supplier, + S.id_address, + S.id_currency, S.name_company, - name_contact, - department_contact, - id_address, - phone_number, - fax, - email, - website, - id_currency, - t_S.active - FROM tmp_Shop_Supplier t_S + S.name_contact, + S.department_contact, + S.phone_number, + S.fax, + S.email, + S.website, + S.active + FROM tmp_Supplier t_S INNER JOIN Shop_Supplier S ON t_S.id_supplier = S.id_supplier ; # Errors - SELECT - /* - t_ME.display_order, - t_ME.guid, - t_ME.id_type, - t_ME.msg, - MET.code, - MET.name, - MET.description - */ - * + SELECT * FROM tmp_Msg_Error t_ME - INNER JOIN Shop_Msg_Error_Type MET - ON t_ME.id_type = MET.id_type - WHERE guid = v_guid + INNER JOIN Shop_Msg_Error_Type MET ON t_ME.id_type = MET.id_type ; - /* - # Return arguments for test - SELECT - a_ids_category, - a_get_inactive_category, - a_ids_product, - a_get_inactive_product, - a_get_first_product_only, - a_get_all_product, - a_ids_image, - a_get_inactive_image, - a_get_first_image_only, - a_get_all_image - ; - */ - - # select 'other outputs'; - # select * from tmp_Shop_Product; - - -- Clean up - DROP TABLE IF EXISTS tmp_Supplier; + IF a_debug = 1 THEN + SELECT * from tmp_Supplier; + END IF; + + DROP TEMPORARY TABLE IF EXISTS tmp_Supplier; + DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error; + + IF a_debug = 1 THEN + CALL p_debug_timing_reporting( v_time_start ); + END IF; END // DELIMITER ;; -/* CALL p_shop_get_many_supplier ( - 'auth0|6582b95c895d09a70ba10fef', # a_id_user - 1, # a_get_all_supplier - 0, # a_get_inactive_supplier - 0, # a_get_first_supplier_only - '' # a_ids_supplier + 1 -- 'auth0|6582b95c895d09a70ba10fef' # a_id_user + , 1 # a_get_all_supplier + , 0 # a_get_inactive_supplier + , '' # a_ids_supplier + , 0 # a_debug ); -select * from shop_supplier; -select * from shop_product; -select * from TMP_MSG_ERROR; -DROP TABLE TMP_MSG_ERROR; - -insert into shop_product_change_set (comment) - values ('set product not subscription - test bool output to python'); - update shop_product - set is_subscription = 0, - id_change_set = (select id_change_set from shop_product_change_set order by id_change_set desc limit 1) - where id_product = 1 +/* */ \ No newline at end of file diff --git a/static/MySQL/7403_p_save_supplier_purchase_order.sql b/static/MySQL/7403_p_save_supplier_purchase_order.sql index 6723c648..b8d660cc 100644 --- a/static/MySQL/7403_p_save_supplier_purchase_order.sql +++ b/static/MySQL/7403_p_save_supplier_purchase_order.sql @@ -5,491 +5,651 @@ -- Clear previous proc DROP PROCEDURE IF EXISTS p_shop_save_supplier_purchase_order; -DROP TABLE IF EXISTS tmp_Shop_Supplier_Purchase_Order_Product_Link; +DROP TABLE IF EXISTS tmp_Supplier_Purchase_Order_Product_Link; DROP TABLE IF EXISTS tmp_Msg_Error; DELIMITER // CREATE PROCEDURE p_shop_save_supplier_purchase_order ( - IN a_guid VARCHAR(500), - IN a_id_user INT, - IN a_comment VARCHAR(500), - IN a_id_order INT, - IN a_id_supplier_ordered INT, - IN a_id_currency_cost INT - -- IN a_active BIT + IN a_comment VARCHAR(500) + , IN a_guid BINARY(36) + , IN a_id_user INT + , IN a_debug BIT ) BEGIN - DECLARE v_id_error_type_bad_data INT; - DECLARE v_code_error_type_bad_data VARCHAR(50); - DECLARE v_id_error_type_no_permission INT; - DECLARE v_code_error_type_no_permission VARCHAR(50); - DECLARE v_guid_permission BINARY(36); - -- DECLARE v_id_user VARCHAR(100); - DECLARE v_id_permission_supplier_purchase_order INT; - DECLARE v_id_access_level_EDIT INT; - DECLARE v_ids_product VARCHAR(4000); - DECLARE v_ids_product_no_permission VARCHAR(4000); - -- DECLARE v_id_order_new INT; + DECLARE v_code_type_error_bad_data VARCHAR(50); + DECLARE v_code_type_error_no_permission VARCHAR(50); + DECLARE v_code_type_error_warning VARCHAR(50); + DECLARE v_id_access_level_edit INT; DECLARE v_id_change_set INT; - DECLARE v_is_new_supplier_purchase_order BIT; + DECLARE v_id_permission_supplier_purchase_order INT; + DECLARE v_id_type_error_bad_data INT; + DECLARE v_id_type_error_no_permission INT; + DECLARE v_id_type_error_warning INT; + DECLARE v_ids_product_permission TEXT; + DECLARE v_time_start TIMESTAMP(6); + + DECLARE exit handler for SQLEXCEPTION + BEGIN + GET DIAGNOSTICS CONDITION 1 + @sqlstate = RETURNED_SQLSTATE + , @errno = MYSQL_ERRNO + , @text = MESSAGE_TEXT + ; + + ROLLBACK; + + CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error ( + display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT + , id_type INT NULL + , code VARCHAR(50) NOT NULL + , msg VARCHAR(4000) NOT NULL + ); + INSERT INTO tmp_Msg_Error ( + id_type + , code + , msg + ) + SELECT + NULL + , @errno + , @text + ; + SELECT * + FROM tmp_Msg_Error; + DROP TABLE IF EXISTS tmp_Msg_Error; + END; - -- SET SESSION sql_mode = sys.list_drop(@@session.sql_mode, 'ONLY_FULL_GROUP_BY'); + SET v_time_start := CURRENT_TIMESTAMP(6); + SET v_code_type_error_bad_data := (SELECT code FROM partsltd_prod.Shop_Msg_Error_Type WHERE code = 'BAD_DATA'); + SET v_id_type_error_bad_data := (SELECT id_type FROM partsltd_prod.Shop_Msg_Error_Type WHERE code = v_code_type_error_bad_data); + SET v_code_type_error_no_permission := (SELECT code FROM partsltd_prod.Shop_Msg_Error_Type WHERE code = 'NO_PERMISSION'); + SET v_id_type_error_no_permission := (SELECT id_type FROM partsltd_prod.Shop_Msg_Error_Type WHERE code = v_code_type_error_no_permission); + SET v_code_type_error_warning := (SELECT code FROM partsltd_prod.Shop_Msg_Error_Type WHERE code = 'WARNING'); + SET v_id_type_error_warning := (SELECT id_type FROM partsltd_prod.Shop_Msg_Error_Type WHERE code = v_code_type_error_warning); + SET v_id_permission_supplier_purchase_order = (SELECT id_permission FROM partsltd_prod.Shop_Permission WHERE code = 'STORE_SUPPLIER_PURCHASE_ORDER' LIMIT 1); + SET v_id_access_level_edit = (SELECT id_access_level FROM partsltd_prod.Shop_Access_Level WHERE code = 'EDIT'); - SET v_code_error_type_bad_data = 'BAD_DATA'; - SET v_id_error_type_bad_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_type_bad_data LIMIT 1); - SET v_code_error_type_no_permission = 'NO_PERMISSION'; - SET v_id_error_type_no_permission := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_type_no_permission LIMIT 1); - SET v_guid_permission = UUID(); - -- SET v_id_user = CURRENT_USER(); - SET v_id_permission_supplier_purchase_order := (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_SUPPLIER_PURCHASE_ORDER' LIMIT 1); - SET v_id_access_level_EDIT := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'EDIT'); - - -- Argument default values - IF a_guid IS NULL THEN - SET a_guid = UUID(); - END IF; - /* - IF a_active IS NULL THEN - SET a_active = 0; - END IF; - */ + CALL p_validate_guid ( a_guid ); + SET a_comment := TRIM(IFNULL(a_comment, '')); + DROP TEMPORARY TABLE IF EXISTS tmp_Supplier; + DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error; + -- Temporary tables - /* - CREATE TABLE tmp_Shop_Supplier_Purchase_Order ( - id_order INT NOT NULL PRIMARY KEY, - id_supplier_ordered INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Supplier_Purchase_Order_id_supplier_ordered - FOREIGN KEY (id_supplier_ordered) - REFERENCES Shop_Supplier(id_supplier), - cost_total_local FLOAT NOT NULL, - id_currency_cost INT NOT NULL - ); - */ - - CREATE TABLE tmp_Shop_Supplier_Purchase_Order_Product_Link ( - id_link INT NOT NULL PRIMARY KEY, - id_order INT NOT NULL, - /* - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Supplier_Purchase_Order(id_order), - */ - id_permutation INT NOT NULL, - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local FLOAT NOT NULL, - id_currency_cost INT NOT NULL, - quantity_ordered FLOAT NOT NULL, - id_unit_quantity INT NOT NULL, - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_received FLOAT NULL, - latency_delivery_days INT NOT NULL, - display_order INT NOT NULL, - active BIT NOT NULL, - name_error VARCHAR(200) NOT NULL + CREATE TEMPORARY TABLE tmp_Supplier_Purchase_Order ( + id_order INT NOT NULL PRIMARY KEY + , id_supplier_ordered INT NOT NULL + , id_currency_cost INT NOT NULL + -- , cost_total_local FLOAT NOT NULL ); - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - guid BINARY(36) NOT NULL, - id_type INT NOT NULL, - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type (id_type), - code VARCHAR(50) NOT NULL, - msg VARCHAR(4000) NOT NULL + CREATE TEMPORARY TABLE tmp_Supplier_Purchase_Order_Product_Link ( + id_link INT NOT NULL PRIMARY KEY + , id_order INT NOT NULL + , id_permutation INT NOT NULL + , id_currency_cost INT NOT NULL + , quantity_ordered FLOAT NOT NULL + , id_unit_quantity INT NOT NULL + , quantity_received FLOAT NULL + , latency_delivery_days INT NOT NULL + , display_order INT NOT NULL + , active BIT NOT NULL + , name_error VARCHAR(200) NOT NULL + , cost_total_local_VAT_excl FLOAT NOT NULL + , cost_total_local_VAT_incl FLOAT NOT NULL + , cost_unit_local_VAT_excl FLOAT NOT NULL + , cost_unit_local_VAT_incl FLOAT NOT NULL + , has_order BIT NULL + ); + + CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error ( + display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT + , id_type INT NOT NULL + , code VARCHAR(50) NOT NULL + , msg VARCHAR(4000) NOT NULL ); - - -- Argument validation - # User ID - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF ISNULL(a_id_user) OR NOT EXISTS (SELECT * FROM Shop_User WHERE id_user = a_id_user) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (a_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, CONCAT('Invalid User ID: ', IFNULL(a_id_user, 'NULL'))) - ; - END IF; - END IF; - - # Order ID - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF ISNULL(a_id_order) OR ((a_id_order > 0) AND NOT EXISTS (SELECT * FROM Shop_Supplier_Purchase_Order WHERE id_order = a_id_order)) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (a_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, CONCAT('Invalid Supplier Purchase Order ID: ', IFNULL(a_id_order, 'NULL'))) - ; - END IF; - END IF; - - # Supplier ID - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF ISNULL(a_id_supplier_ordered) OR NOT EXISTS (SELECT * FROM Shop_Supplier WHERE id_supplier = a_id_supplier_ordered) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (a_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, CONCAT('Invalid Supplier ID: ', IFNULL(a_id_supplier_ordered, 'NULL'))) - ; - END IF; - END IF; - - # Currency ID - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF ISNULL(a_id_currency_cost) OR NOT EXISTS (SELECT * FROM Shop_Currency WHERE id_currency = a_id_currency_cost) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (a_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, CONCAT('Invalid currency ID: ', IFNULL(a_id_currency, 'NULL'))) - ; - END IF; - END IF; - - # Comment - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF ISNULL(a_comment) OR TRIM(a_comment) = '' THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (a_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, 'A comment must be provided.') - ; - END IF; - END IF; - + INSERT INTO tmp_Supplier_Purchase_Order ( + id_order + , id_supplier_ordered + , id_currency_cost + ) + SELECT + SPO_T.id_order + , IFNULL(IFNULL(SPO_T.id_supplier_ordered, SPO.id_supplier_ordered), 0) AS id_supplier_ordered + , IFNULL(IFNULL(SPO_T.id_currency_cost, SPO.id_currency_cost), 0) AS id_currency_cost + FROM partsltd_prod.Shop_Supplier_Purchase_Order_Temp SPO_T + LEFT JOIN partsltd_prod.Shop_Supplier_Purchase_Order SPO ON SPO_T.id_order = SPO.id_order + WHERE SPO_T.GUID = a_guid + ; - -- Get data from Temp table - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - SET v_is_new_supplier_purchase_order := CASE WHEN a_id_order <= 0 THEN 1 ELSE 0 END; - - INSERT INTO tmp_Shop_Supplier_Purchase_Order_Product_Link ( - id_link, - id_order, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_ordered, - id_unit_quantity, - quantity_received, - latency_delivery_days, - display_order, - active, - name_error + INSERT INTO tmp_Supplier_Purchase_Order_Product_Link ( + id_link + , id_order + , id_permutation + , id_currency_cost + , quantity_ordered + , id_unit_quantity + , quantity_received + , latency_delivery_days + , display_order + , active + , name_error + , is_new + , cost_total_local_VAT_excl + , cost_total_local_VAT_incl + , cost_unit_local_VAT_excl + , cost_unit_local_VAT_incl + , has_order + ) + SELECT + IFNULL(SPOPL_T.id_link, 0) AS id_link + , IFNULL(IFNULL(SPOPL_T.id_order, SPOPL.id_order) 0) AS id_order + , IFNULL(IFNULL(SPOPL_T.id_permutation, SPOPL.id_permutation), 0) AS id_permutation + , IFNULL(IFNULL(SPOPL_T.id_currency_cost, SPOPL.id_currency_cost) 0) AS id_currency_cost + , IFNULL(IFNULL(SPOPL_T.quantity_ordered, SPOPL.quantity_ordered), 0) AS quantity_ordered + , IFNULL(IFNULL(SPOPL_T.id_unit_quantity, SPOPL.id_unit_quantity), 0) AS id_unit_quantity + , IFNULL(SPOPL_T.quantity_received, SPOPL.quantity_received) AS quantity_received + , IFNULL(SPOPL_T.latency_delivery_days, SPOPL.latency_delivery_days) AS latency_delivery_days + , RANK() OVER (PARTITION BY IFNULL(IFNULL(SPOPL_T.id_order, SPOPL.id_order) 0) ORDER BY IFNULL(IFNULL(SPOPL_T.display_order, SPOPL.display_order), 0)) AS display_order + , IFNULL(IFNULL(SPOPL_T.active, SPOPL.active), 1) AS active + , CONCAT( + fn_shop_get_product_permutation_name(SPOPL_T.id_permutation) + , ' - x' + , IFNULL(SPOPL_T.quantity_ordered, '(No Quantity)') + ) AS name_error + , IFNULL(SPOPL_T.id_link, 0) < 1 AS is_new + , IFNULL(IFNULL(SPOPL_T.cost_total_local_VAT_excl, SPOPL.cost_total_local_VAT_excl), 0) AS cost_total_local_VAT_excl + , IFNULL(IFNULL(SPOPL_T.cost_total_local_VAT_incl, SPOPL.cost_total_local_VAT_incl), 0) AS cost_total_local_VAT_incl + , IFNULL(SPOPL_T.cost_total_local_VAT_excl / SPOPL_T.quantity_ordered, SPOPL.cost_unit_local_VAT_excl) AS cost_unit_local_VAT_excl + , IFNULL(SPOPL_T.cost_total_local_VAT_incl / SPOPL_T.quantity_ordered, SPOPL.cost_unit_local_VAT_incl) AS cost_unit_local_VAT_incl + , NOT ISNULL(t_SPO.id_order) AS has_order + FROM partsltd_prod.Shop_Supplier_Purchase_Order_Product_Link_Temp SPOPL_T + LEFT JOIN partsltd_prod.Shop_Supplier_Purchase_Order_Product_Link SPOPL ON SPOPL_T.id_link = SPOPL.id_link + LEFT JOIN tmp_Supplier_Purchase_Order t_SPO ON SPOPL_T.id_order = t_SPO.id_order + WHERE SPOPL_T.GUID = a_guid + ; + + INSERT INTO tmp_Supplier_Purchase_Order ( + id_order + , id_supplier_ordered + , id_currency_cost + ) + SELECT + SPO_T.id_order + , IFNULL(IFNULL(SPO_T.id_supplier_ordered, SPO.id_supplier_ordered), 0) AS id_supplier_ordered + , IFNULL(IFNULL(SPO_T.id_currency_cost, SPO.id_currency_cost), 0) AS id_currency_cost + FROM partsltd_prod.Shop_Supplier_Purchase_Order SPO + INNER JOIN tmp_Supplier_Purchase_Order_Product_Link t_SPOPL + ON SPO.id_order = t_SPOPL.id_order + AND t_SPOPL.has_order = 0 + ; + + -- Validation + -- Supplier Purchase Order + # id_order + IF EXISTS ( + SELECT * + FROM tmp_Supplier_Purchase_Order t_SPO + LEFT JOIN partsltd_prod.Shop_Supplier_Purchase_Order SPO ON t_SPO.id_order = SPO.id_order + WHERE 1=1 + AND t_SPO.id_order > 0 + AND ISNULL(SPO.id_order) + LIMIT 1 + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type + , code + , msg ) - /* - VALUES - (a_id_supplier, a_name_company, a_name_contact, a_department_contact, a_id_address, a_phone_number, a_fax, a_email, a_website, a_id_currency, a_active) - */ - SELECT - SPOPL_T.id_link, - SPOPL_T.id_order, - SPOPL_T.id_permutation, - PP.cost_local * quantity_ordered AS cost_total_local, - SPOPL_T.id_currency_cost, - SPOPL_T.quantity_ordered, - SPOPL_T.id_unit_quantity, - SPOPL_T.quantity_received, - SPOPL_T.latency_delivery_days, - SPOPL_T.display_order, - SPOPL_T.active, - CONCAT(PP.id_permutation, ' - ', IFNULL(PP.name ,'')) AS name_error - FROM Shop_Supplier_Purchase_Order_Product_Link_Temp SPOPL_T - INNER JOIN Shop_Product_Permutation PP ON SPOPL_T.id_permutation = PP.id_permutation - WHERE SPOPL_T.GUID = a_guid - ; - DELETE SPOPL_T - FROM Shop_Supplier_Purchase_Order_Product_Link_Temp SPOPL_T - WHERE SPOPL_T.GUID = a_guid - ; - - /* - UPDATE tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL - SET - cost_total_local - */ + SELECT + v_id_type_error_bad_data + , v_code_type_error_bad_data + , CONCAT( + 'A valid ID is required for the following Supplier Purchase Order(s): ' + , GROUP_CONCAT(CONCAT(IFNULL(t_SPO.id_stock, '(No Supplier Purchase Order)')) SEPARATOR ', ') + ) AS msg + FROM tmp_Stock_Item t_SPO + LEFT JOIN partsltd_prod.Shop_Supplier_Purchase_Order SPO ON t_SPO.id_order = SPO.id_order + WHERE 1=1 + AND t_SPO.id_stock > 0 + AND ISNULL(SPO.id_stock) + ; END IF; - - -- Invalid quantity ordered - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF EXISTS ( - SELECT * - FROM tmp_Shop_Supplier_Purchase_Order_Product_Link - WHERE - NOT ISNULL(quantity_ordered) - AND quantity_ordered < 0 - ) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg + # id_supplier_ordered + IF EXISTS ( + SELECT * + FROM tmp_Supplier_Purchase_Order t_SPO + LEFT JOIN partsltd_prod.Shop_Supplier S ON t_SPO.id_supplier_ordered = S.id_supplier + WHERE 1=1 + AND ( + ISNULL(S.id_supplier) + OR S.active = 0 ) - SELECT - a_guid, - v_id_error_type_bad_data, - v_code_error_type_bad_data, - CONCAT('Invalid quantity ordered property for the following permutations: ', GROUP_CONCAT(t_SPOPL.name_error SEPARATOR ', ')) - FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL - -- INNER JOIN Shop_Product_Permutation PP ON t_SPOPL.id_permutation = PP.id_permutation - WHERE t_SPOPL.quantity_ordered < 0 - ; - END IF; + LIMIT 1 + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type + , code + , msg + ) + SELECT + v_id_type_error_bad_data + , v_code_type_error_bad_data + , CONCAT( + 'A valid supplier is required for the following Supplier Purchase Order(s): ' + , GROUP_CONCAT(CONCAT(IFNULL(t_SPO.id_stock, '(No Supplier Purchase Order)'), ' - ', t_SPO.id_supplier_ordered) SEPARATOR ', ') + ) AS msg + FROM tmp_Stock_Item t_SPO + LEFT JOIN partsltd_prod.Shop_Supplier S ON t_SPO.id_supplier_ordered = S.id_supplier + WHERE 1=1 + AND ( + ISNULL(S.id_supplier) + OR S.active = 0 + ) + ; END IF; - - -- Duplicates - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF EXISTS (SELECT id_permutation, name_error, COUNT(*) FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL GROUP BY id_permutation HAVING COUNT(*) > 1) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg + # id_currency_cost + IF EXISTS ( + SELECT * + FROM tmp_Supplier_Purchase_Order t_SPO + LEFT JOIN partsltd_prod.Shop_Currency C ON t_SPO.id_currency_cost = C.id_currency + WHERE 1=1 + AND ( + ISNULL(C.id_currency) + OR C.active = 0 ) - SELECT - a_guid, - v_id_error_type_bad_data, - v_code_error_type_bad_data, - CONCAT('Duplicate records: ', GROUP_CONCAT(t_SPOPLC.name_error SEPARATOR ', ')) - FROM (SELECT id_permutation, name_error, COUNT(*) FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL GROUP BY id_permutation HAVING COUNT(*) > 1) t_SPOPLC - ; - END IF; + LIMIT 1 + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type + , code + , msg + ) + SELECT + v_id_type_error_bad_data + , v_code_type_error_bad_data + , CONCAT( + 'A valid currency is required for the following Supplier Purchase Order(s): ' + , GROUP_CONCAT(CONCAT(IFNULL(t_SPO.id_stock, '(No Supplier Purchase Order)'), ' - ', t_SPO.id_currency_cost) SEPARATOR ', ') + ) AS msg + FROM tmp_Stock_Item t_SPO + LEFT JOIN partsltd_prod.Shop_Currency C ON t_SPO.id_currency_cost = C.id_currency + WHERE 1=1 + AND ( + ISNULL(C.id_currency) + OR C.active = 0 + ) + ; + END IF; + # id_unit_quantity + IF EXISTS ( + SELECT * + FROM tmp_Supplier_Purchase_Order t_SPO + LEFT JOIN partsltd_prod.Shop_Unit_Measurement UM ON t_SPO.id_unit_quantity = UM.id_unit_measurement + WHERE 1=1 + AND ( + ISNULL(UM.id_unit_measurement) + OR UM.active = 0 + ) + LIMIT 1 + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type + , code + , msg + ) + SELECT + v_id_type_error_bad_data + , v_code_type_error_bad_data + , CONCAT( + 'A valid unit measurement of quantity is required for the following Supplier Purchase Order(s): ' + , GROUP_CONCAT(CONCAT(IFNULL(t_SPO.id_stock, '(No Supplier Purchase Order)'), ' - ', t_SPO.id_currency_cost) SEPARATOR ', ') + ) AS msg + FROM tmp_Stock_Item t_SPO + LEFT JOIN partsltd_prod.Shop_Unit_Measurement UM ON t_SPO.id_unit_quantity = UM.id_unit_measurement + WHERE 1=1 + AND ( + ISNULL(UM.id_unit_measurement) + OR UM.active = 0 + ) + ; + END IF; + # Invalid quantity ordered + IF EXISTS ( + SELECT * + FROM tmp_Supplier_Purchase_Order_Product_Link + WHERE + ISNULL(t_SPOPL.quantity_ordered) + OR t_SPOPL.quantity_ordered <= 0 + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type, code, msg + ) + SELECT + v_id_error_type_bad_data, + v_code_error_type_bad_data, + CONCAT( + 'A valid quantity ordered is required for the following Supplier Purchase Order Item(s): ' + , GROUP_CONCAT(t_SPOPL.name_error SEPARATOR ', ') + ) + FROM tmp_Supplier_Purchase_Order_Product_Link t_SPOPL + WHERE + ISNULL(t_SPOPL.quantity_ordered) + OR t_SPOPL.quantity_ordered <= 0 + ; + END IF; + # Invalid quantity received + IF EXISTS ( + SELECT * + FROM tmp_Supplier_Purchase_Order_Product_Link + WHERE t_SPOPL.quantity_received < 0 + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type, code, msg + ) + SELECT + v_id_error_type_bad_data, + v_code_error_type_bad_data, + CONCAT( + 'A valid quantity received is required for the following Supplier Purchase Order Item(s): ' + , GROUP_CONCAT(t_SPOPL.name_error, ' - ', t_SPOPL.quantity_received SEPARATOR ', ') + ) + FROM tmp_Supplier_Purchase_Order_Product_Link t_SPOPL + WHERE t_SPOPL.quantity_received < 0 + ; + END IF; + # Invalid delivery latency + IF EXISTS ( + SELECT * + FROM tmp_Supplier_Purchase_Order_Product_Link + WHERE t_SPOPL.latency_delivery_days < 0 + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type, code, msg + ) + SELECT + v_id_error_type_bad_data, + v_code_error_type_bad_data, + CONCAT( + 'A valid delivery latency is required for the following Supplier Purchase Order Item(s): ' + , GROUP_CONCAT(t_SPOPL.name_error, ' - ', t_SPOPL.latency_delivery_days SEPARATOR ', ') + ) + FROM tmp_Supplier_Purchase_Order_Product_Link t_SPOPL + WHERE t_SPOPL.latency_delivery_days < 0 + ; END IF; - + -- Duplicates + IF EXISTS ( + SELECT + id_permutation + , name_error + , COUNT(*) + FROM tmp_Supplier_Purchase_Order_Product_Link t_SPOPL + GROUP BY id_permutation + HAVING COUNT(*) > 1 + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type, code, msg + ) + SELECT + v_id_error_type_bad_data, + v_code_error_type_bad_data, + CONCAT('Duplicate records: ', GROUP_CONCAT(t_SPOPLC.name_error SEPARATOR ', ')) + FROM ( + SELECT + id_permutation + , name_error + , COUNT(*) + FROM tmp_Supplier_Purchase_Order_Product_Link t_SPOPL + GROUP BY id_permutation + HAVING COUNT(*) > 1 + ) t_SPOPLC + ; + END IF; + -- Empty Supplier Purchase Order + IF EXISTS ( SELECT * FROM tmp_Supplier_Purchase_Order t_SPO LEFT JOIN tmp_Supplier_Purchase_Order_Product_Link t_SPOPL ON t_SPO.id_order = t_SPOPL.id_order WHERE ISNULL(t_SPOPL.id_order) ) THEN + INSERT INTO tmp_Msg_Error ( + id_type, code, msg + ) + SELECT + v_id_error_type_bad_data, + v_code_error_type_bad_data, + CONCAT( + 'There are no items in the following Supplier Purchase Order(s): ' + , GROUP_CONCAT(t_SPO.name_error SEPARATOR ', ') + ) AS msg + FROM tmp_Supplier_Purchase_Order t_SPO + LEFT JOIN tmp_Supplier_Purchase_Order_Product_Link t_SPOPL ON t_SPO.id_order = t_SPOPL.id_order + WHERE ISNULL(t_SPOPL.id_order) + ; + END IF; + + -- Supplier Purchase Order Items without Order + IF EXISTS ( + SELECT * + FROM tmp_Supplier_Purchase_Order_Product_Link t_SPOPL + LEFT JOIN tmp_Supplier_Purchase_Order t_SPO ON t_SPOPL.id_order = t_SPO.id_order + WHERE ISNULL(t_SPO.id_order) + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type, code, msg + ) + SELECT + v_id_error_type_bad_data, + v_code_error_type_bad_data, + CONCAT( + 'There is no order for the following Supplier Purchase Order Item(s): ' + , GROUP_CONCAT(t_SPOPL.name_error SEPARATOR ', ') + ) AS msg + FROM tmp_Supplier_Purchase_Order_Product_Link t_SPOPL + LEFT JOIN tmp_Supplier_Purchase_Order t_SPO ON t_SPOPL.id_order = t_SPO.id_order + WHERE ISNULL(t_SPO.id_order) + ; + END IF; -- Permissions - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - SET v_ids_product := ( - SELECT GROUP_CONCAT(G.id_product SEPARATOR ',') - FROM ( - SELECT DISTINCT PP.id_product - FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPO - INNER JOIN Shop_Product_Permutation PP ON t_SPO.id_permutation = PP.id_permutation - ) G - ); - - CALL p_shop_calc_user(v_guid_permission, a_id_user, 0, v_id_permission_supplier_purchase_order, v_id_access_level_edit, v_ids_product); - - /* - UPDATE tmp_Shop_Supplier t_S - INNER JOIN Shop_Calc_User_Temp TP - ON TP.GUID = v_guid_permission - SET tP.can_view = TP.can_view, - tP.can_edit = TP.can_edit, - tP.can_admin = TP.can_admin; - */ - /* - SET v_has_permission := ( - SELECT can_edit - FROM Shop_Calc_User_Temp - WHERE - GUID = v_guid_permission - AND can_edit = 0 - ); - - IF v_has_permission = 0 THEN - SET v_id_error_type_no_permission := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'NO_PERMISSION'); - INSERT INTO tmp_Msg_Error ( - guid, id_type, msg - ) - SELECT - a_guid, - v_id_error_type_no_permission, - CONCAT('You do not have ', name, ' permissions.') - FROM Shop_Permission - WHERE id_permission = v_id_permission_supplier_purchase_order - ; - END IF; - */ - SET v_ids_product_no_permission := ( - SELECT GROUP_CONCAT(PT.id_product SEPARATOR ',') - FROM Shop_Calc_User_Temp PT - WHERE - PT.can_edit = 0 - AND NOT ISNULL(PT.id_product) - ); - IF NOT ISNULL(v_ids_product_no_permission) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES ( - a_guid, - v_id_error_type_no_permission, - v_code_error_type_no_permission, - CONCAT('You do not have permission to edit the following product IDs: ', v_ids_product_no_permission) - ) - ; - END IF; - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = a_guid; - END IF; + SET v_ids_product_permission := ( + SELECT + GROUP_CONCAT(DISTINCT PP.id_product SEPARATOR ',') + FROM tmp_Supplier_Purchase_Order_Product_Link t_SPOPL + INNER JOIN partsltd_prod.Shop_Product_Permutation PP ON t_SPOPL.id_permutation = PP.id_permutation + ); + IF a_debug = 1 THEN + SELECT + v_guid + , a_id_user + , FALSE -- get inactive users + , v_id_permission_supplier_purchase_order + , v_id_access_level_edit + , v_ids_product_permission -- ids_product + , 0 -- a_debug + ; + SELECT * from partsltd_prod.Shop_Calc_User_Temp; + END IF; + + CALL p_shop_calc_user( + v_guid + , a_id_user + , FALSE -- get inactive users + , v_id_permission_supplier_purchase_order + , v_id_access_level_edit + , v_ids_product_permission -- ids_product + , 0 -- a_debug + ); + + IF a_debug = 1 THEN + SELECT * from partsltd_prod.Shop_Calc_User_Temp WHERE GUID = a_guid; + END IF; + + IF NOT EXISTS (SELECT can_view FROM partsltd_prod.Shop_Calc_User_Temp UE_T WHERE UE_T.GUID = v_guid) THEN + DELETE FROM tmp_Msg_Error; + + INSERT INTO tmp_Msg_Error ( + id_type + , code + , msg + ) + VALUES ( + v_id_type_error_no_permission + , v_code_type_error_no_permission + CONCAT('You do not have view permissions for ', (SELECT name FROM partsltd_prod.Shop_Permission WHERE id_permission = v_id_permission_supplier LIMIT 1)) + ) + ; + END IF; + + CALL partsltd_prod.p_shop_clear_calc_user( a_guid ); + IF EXISTS ( SELECT * FROM tmp_Msg_Error LIMIT 1 ) THEN + DELETE FROM tmp_Supplier_Purchase_Order; + DELETE FROM tmp_Supplier_Purchase_Order_Product_Link; + END IF; + + IF EXISTS ( + SELECT * + FROM tmp_Supplier_Purchase_Order_Product_Link t_SPOPL + INNER JOIN partsltd_prod.Shop_Supplier_Purchase_Order_Product_Link SPOPL ON t_SPOPL.id_link = SPOPL.id_link + INNER JOIN partsltd_prod.Shop_Stock_Item SI ON SPOPL.id_permutation = SI.id_permutation + WHERE + t_SPOPL.is_new = 0 + AND t_SPOPL.quantity_received < SPOPL.quantity_received + ) + -- Transaction IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN START TRANSACTION; INSERT INTO Shop_Sales_And_Purchasing_Change_Set ( - comment, - updated_last_by, - updated_last_on + comment + , updated_last_by + , updated_last_on ) VALUES ( - CONCAT( - 'Save ', - CASE WHEN v_is_new_supplier_purchase_order = 1 THEN 'new ' ELSE '' END, - 'Supplier Purchase Order - ', - a_comment - ), - a_id_user, - CURRENT_TIME() + a_comment + , a_id_user + , v_time_start ); - SET v_id_change_set := (SELECT id_change_set FROM Shop_Sales_And_Purchasing_Change_Set ORDER BY id_change_set DESC LIMIT 1); - - IF (v_is_new_supplier_purchase_order = 1) THEN - INSERT INTO Shop_Supplier_Purchase_Order ( - id_supplier_ordered, - cost_total_local, - id_currency_cost, - created_by, - id_change_set, - active - ) - SELECT - a_id_supplier_ordered, - SUM(t_SPOPL.cost_total_local), - a_id_currency_cost, - a_id_user, - v_id_change_set, - a_active - FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL - ; - -- SET v_id_order_new - SET a_id_order := (SELECT id_order FROM Shop_Supplier_Purchase_Order ORDER BY id_order DESC LIMIT 1); - INSERT INTO Shop_Supplier_Purchase_Order_Product_Link ( - id_order, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_ordered, - id_unit_quantity, - quantity_received, - latency_delivery_days, - display_order, - active, - created_by, - id_change_set - ) - SELECT - a_id_order, -- v_id_order_new, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_ordered, - id_unit_quantity, - quantity_received, - latency_delivery_days, - display_order, - active, - a_id_user, - v_id_change_set - FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL - ; - ELSE - UPDATE Shop_Supplier_Purchase_Order SPO - INNER JOIN tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL ON SPO.id_order = t_SPOPL.id_order - SET - SPO.id_supplier_ordered = a_id_supplier_ordered, - SPO.cost_total_local = SUM(t_SPOPL.cost_total_local), - SPO.id_currency = a_id_currency_cost, - SPO.id_change_set = v_id_change_set, - SPO.active = a_active - WHERE SPO.id_order = a_id_order - ; - IF EXISTS (SELECT * FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL INNER JOIN Shop_Supplier_Purchase_Order_Product_Link SPOPL ON t_SPOPL.id_link = SPOPL.id_link) THEN - UPDATE Shop_Supplier_Purchase_Order_Product_Link SPOPL - INNER JOIN tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL - ON SPOPL.id_link = t_SPOPL.id_link - SET - SPOPL.id_order = t_SPOPL.id_order, - SPOPL.id_permutation = t_SPOPL.id_permutation, - SPOPL.cost_total_local = t_SPOPL.cost_total_local, - SPOPL.id_currency_cost = t_SPOPL.id_currency_cost, - SPOPL.quantity_ordered = t_SPOPL.quantity_ordered, - SPOPL.id_unit_quantity = t_SPOPL.id_unit_quantity, - SPOPL.quantity_received = t_SPOPL.quantity_received, - SPOPL.latency_delivery_days = t_SPOPL.latency_delivery_days, - SPOPL.display_order = t_SPOPL.display_order, - SPOPL.active = t_SPOPL.active, - SPOPL.id_change_set = v_id_change_set - ; - ELSE - INSERT INTO Shop_Supplier_Purchase_Order_Product_Link ( - id_order, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_ordered, - id_unit_quantity, - quantity_received, - latency_delivery_days, - display_order, - active, - created_by, - id_change_set - ) - SELECT - id_order, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_ordered, - id_unit_quantity, - quantity_received, - latency_delivery_days, - display_order, - active, - a_id_user, - v_id_change_set - FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL - WHERE t_SPOPL.id_link < 0 - ; - END IF; - END IF; + SET v_id_change_set := LAST_INSERT_ID(); - IF EXISTS (SELECT * FROM tmp_Msg_Error) THEN - ROLLBACK; - ELSE - COMMIT; - END IF; - END IF; - - -- Returns - # SET v_now = NOW(); - - # Supplier Purchase Orders - SELECT * - FROM Shop_Supplier_Purchase_Order - WHERE id_order = a_id_order - ; - - # Supplier Purchase Order Product Links - SELECT * - FROM Shop_Supplier_Purchase_Order_Product_Link - WHERE id_order = a_id_order - ; + INSERT INTO partsltd_prod.Shop_Supplier_Purchase_Order ( + id_supplier_ordered + , id_currency_cost + , cost_total_local_VAT_excl + , cost_total_local_VAT_incl + , created_by + , created_on + , id_change_set + , active + ) + SELECT + t_SPO.id_supplier_ordered + , t_SPO.id_currency_cost + , SUM(t_SPOPL.cost_total_local_VAT_excl) + , SUM(t_SPOPL.cost_total_local_VAT_incl) + , t_SPO.active + , a_id_user + , v_time_start + , v_id_change_set + FROM tmp_Supplier_Purchase_Order t_SPO + INNER JOIN tmp_Supplier_Purchase_Order_Product_Link t_SPOPL ON t_SPO.id_order = t_SPOPL.id_order + WHERE t_SPOPL.is_new = 1 + ; + + INSERT INTO Shop_Supplier_Purchase_Order_Product_Link ( + id_order + , id_permutation + , id_currency_cost + , id_unit_quantity + , quantity_ordered + , quantity_received + , latency_delivery_days + , display_order + , active + , cost_total_local_VAT_excl + , cost_total_local_VAT_incl + , created_by + , id_change_set + ) + SELECT + t_SPOPL.id_order + , t_SPOPL.id_permutation + , t_SPOPL.id_currency_cost + , t_SPOPL.id_unit_quantity + , t_SPOPL.quantity_ordered + , t_SPOPL.quantity_received + , t_SPOPL.latency_delivery_days + , t_SPOPL.display_order + , t_SPOPL.active + , t_SPOPL.cost_total_local_VAT_excl + , t_SPOPL.cost_total_local_VAT_incl + a_id_user + v_id_change_set + FROM tmp_Supplier_Purchase_Order_Product_Link t_SPOPL + WHERE t_SPOPL.is_new = 1 + ; + + UPDATE partsltd_prod.Shop_Supplier_Purchase_Order SPO + INNER JOIN tmp_Supplier_Purchase_Order t_SPO + ON SPO.id_order = t_SPO.id_order + AND t_SPO.is_new = 0 + INNER JOIN tmp_Supplier_Purchase_Order_Product_Link t_SPOPL ON t_SPO.id_order = t_SPOPL.id_order + SET + SPO.id_supplier_ordered = t_SPO.id_supplier_ordered + , SPO.id_currency_cost = id_currency_cost + , SPO.cost_total_local_VAT_excl = SUM(t_SPOPL.cost_total_local_VAT_excl) + , SPO.cost_total_local_VAT_incl = SUM(t_SPOPL.cost_total_local_VAT_incl) + , SPO.active = a_active + , SPO.id_change_set = v_id_change_set + ; + + UPDATE partsltd_prod.Shop_Supplier_Purchase_Order_Product_Link SPOPL + INNER JOIN tmp_Supplier_Purchase_Order_Product_Link t_SPOPL + ON SPOPL.id_link = t_SPOPL.id_link + AND t_SPOPL.is_new = 0 + SET + SPOPL.id_order = t_SPOPL.id_order, + SPOPL.id_permutation = t_SPOPL.id_permutation, + SPOPL.id_currency_cost = t_SPOPL.id_currency_cost, + SPOPL.id_unit_quantity = t_SPOPL.id_unit_quantity, + SPOPL.quantity_ordered = t_SPOPL.quantity_ordered, + SPOPL.quantity_received = t_SPOPL.quantity_received, + SPOPL.latency_delivery_days = t_SPOPL.latency_delivery_days, + SPOPL.display_order = t_SPOPL.display_order, + SPOPL.active = t_SPOPL.active, + SPOPL.cost_total_local_VAT_excl = t_SPOPL.cost_total_local_VAT_excl, + SPOPL.cost_total_local_VAT_incl = t_SPOPL.cost_total_local_VAT_incl, + SPOPL.id_change_set = v_id_change_set + ; + + DELETE SPO_T + FROM Shop_Supplier_Purchase_Order_Temp SPO_T + WHERE SPO_T.GUID = a_guid + ; + DELETE SPOPL_T + FROM Shop_Supplier_Purchase_Order_Product_Link_Temp SPOPL_T + WHERE SPOPL_T.GUID = a_guid + ; + + COMMIT; # Errors SELECT * - FROM tmp_Msg_Error + FROM tmp_Msg_Error t_ME + INNER JOIN partsltd_prod.Shop_Msg_Error_Type MET ON t_ME.id_type = MET.id_type ; - # DROP TABLE tmp_Shop_Supplier_Purchase_Order; - DROP TABLE tmp_Shop_Supplier_Purchase_Order_Product_Link; - DROP TABLE tmp_Msg_Error; + IF a_debug = 1 THEN + SELECT * from tmp_Supplier; + END IF; + + DROP TEMPORARY TABLE tmp_Supplier_Purchase_Order; + DROP TEMPORARY TABLE tmp_Supplier_Purchase_Order_Product_Link; + DROP TEMPORARY TABLE tmp_Msg_Error; + + IF a_debug = 1 THEN + CALL partsltd_prod.p_debug_timing_reporting ( v_time_start ); + END IF; END // DELIMITER ;; diff --git a/static/MySQL/7404_p_shop_get_many_supplier_purchase_order.sql b/static/MySQL/7404_p_shop_get_many_supplier_purchase_order.sql index c945e1b7..2d235460 100644 --- a/static/MySQL/7404_p_shop_get_many_supplier_purchase_order.sql +++ b/static/MySQL/7404_p_shop_get_many_supplier_purchase_order.sql @@ -1,633 +1,390 @@ - - --- Clear previous proc DROP PROCEDURE IF EXISTS p_shop_get_many_supplier_purchase_order; - DELIMITER // CREATE PROCEDURE p_shop_get_many_supplier_purchase_order ( IN a_id_user INT, IN a_get_all_supplier BIT, IN a_get_inactive_supplier BIT, - IN a_get_first_supplier_only BIT, - IN a_ids_supplier VARCHAR(4000), + IN a_ids_supplier TEXT, IN a_get_all_order BIT, - -- IN a_get_inactive_order BIT, - IN a_get_first_order_only BIT, - IN a_ids_order VARCHAR(4000), - IN a_get_inactive_category BIT, - IN a_ids_category VARCHAR(4000), - IN a_get_inactive_product BIT, - IN a_ids_product VARCHAR(4000), - IN a_get_inactive_permutation BIT, - IN a_ids_permutation VARCHAR(4000), - IN a_date_from TIMESTAMP, - IN a_date_to TIMESTAMP + IN a_get_inactive_order BIT, + IN a_ids_order TEXT, + IN a_ids_permutation TEXT, + IN a_date_from DATETIME, + IN a_date_to DATETIME, + IN a_debug BIT ) BEGIN - -- Argument redeclaration - -- Variable declaration + DECLARE v_code_type_error_bad_data VARCHAR(50); + DECLARE v_code_type_error_no_permission VARCHAR(50); + DECLARE v_guid BINARY(36); DECLARE v_has_filter_supplier BIT; DECLARE v_has_filter_order BIT; - DECLARE v_has_filter_category BIT; - DECLARE v_has_filter_product BIT; DECLARE v_has_filter_permutation BIT; DECLARE v_has_filter_date_from BIT; DECLARE v_has_filter_date_to BIT; - DECLARE v_guid BINARY(36); - # DECLARE v_id_user VARCHAR(100); - # DECLARE v_ids_permutation_unavailable VARCHAR(4000); - DECLARE v_ids_permission_supplier_purchase_order VARCHAR(4000); - DECLARE v_ids_product_permission VARCHAR(4000); - # DECLARE v_ids_permutation_permission VARCHAR(4000); DECLARE v_id_access_level_view INT; - -- DECLARE v_now TIMESTAMP; - -- DECLARE v_id_minimum INT; - DECLARE v_code_error_data VARCHAR(50); - DECLARE v_id_type_error_data INT; + DECLARE v_ids_permission_supplier_purchase_order INT; + DECLARE v_id_type_error_bad_data INT; + DECLARE v_id_type_error_no_permission INT; + DECLARE v_time_start TIMESTAMP(6); + SET v_time_start := CURRENT_TIMESTAMP(6); SET v_guid := UUID(); SET v_id_access_level_view := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW' LIMIT 1); - -- SET v_ids_permission_supplier_purchase_order := (SELECT id_permission FROM Shop_Permission WHERE code = 'SHOP_SUPPLIER_PURCHASE_ORDER' LIMIT 1); - SET v_code_error_data = 'BAD_DATA'; - SET v_id_type_error_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_data); + SET v_code_type_error_bad_data := (SELECT code FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1); + SET v_id_type_error_bad_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_type_error_bad_data LIMIT 1); + SET v_code_type_error_no_permission := (SELECT code FROM Shop_Msg_Error_Type WHERE code = 'NO_PERMISSION'); + SET v_id_type_error_no_permission := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_type_error_no_permission); + SET v_ids_permission_supplier_purchase_order := (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_SUPPLIER_PURCHASE_ORDER' LIMIT 1); + + SET a_get_all_supplier := IFNULL(a_get_all_supplier, 1); + SET a_get_inactive_supplier := IFNULL(a_get_inactive_supplier, 0); + SET a_ids_supplier := TRIM(IFNULL(a_ids_supplier, '')); + SET a_get_all_order := IFNULL(a_get_all_order, 1); + SET a_get_inactive_order := IFNULL(a_get_inactive_order, 0); + SET a_ids_order := TRIM(IFNULL(a_ids_order, '')); + SET a_ids_permutation := TRIM(IFNULL(a_ids_permutation, '')); + SET a_date_from := IFNULL(a_date_from, NULL); + SET a_date_to := IFNULL(a_date_to, NULL); + SET a_debug := IFNULL(a_debug, 0); - -- Argument validation + default values - IF a_id_user IS NULL THEN - SET a_id_user = ''; - ELSE - SET a_id_user = TRIM(a_id_user); - END IF; - IF a_get_all_supplier IS NULL THEN - SET a_get_all_supplier = 1; - END IF; - IF a_get_inactive_supplier IS NULL THEN - SET a_get_inactive_supplier = 0; - END IF; - IF a_get_first_supplier_only IS NULL THEN - SET a_get_first_supplier_only = 0; - END IF; - IF a_ids_supplier IS NULL THEN - SET a_ids_supplier = ''; - ELSE - SET a_ids_supplier = TRIM(REPLACE(a_ids_supplier, '|', ',')); - END IF; - IF a_get_all_order IS NULL THEN - SET a_get_all_order = 1; - END IF; - /* - IF a_get_inactive_order IS NULL THEN - SET a_get_inactive_order = 0; - END IF; - */ - IF a_get_first_order_only IS NULL THEN - SET a_get_first_order_only = 0; - END IF; - IF a_ids_order IS NULL THEN - SET a_ids_order = ''; - ELSE - SET a_ids_order = TRIM(REPLACE(a_ids_order, '|', ',')); - END IF; - IF a_get_inactive_category IS NULL THEN - SET a_get_inactive_category = 0; - END IF; - IF a_ids_category IS NULL THEN - SET a_ids_category = ''; - ELSE - SET a_ids_category = TRIM(REPLACE(a_ids_category, '|', ',')); - END IF; - IF a_get_inactive_product IS NULL THEN - SET a_get_inactive_product = 0; - END IF; - IF a_ids_product IS NULL THEN - SET a_ids_product = ''; - ELSE - SET a_ids_product = TRIM(REPLACE(a_ids_product, '|', ',')); - END IF; - IF a_get_inactive_permutation IS NULL THEN - SET a_get_inactive_permutation = 0; - END IF; - IF a_ids_permutation IS NULL THEN - SET a_ids_permutation = ''; - ELSE - SET a_ids_permutation = TRIM(REPLACE(a_ids_permutation, '|', ',')); - END IF; + DROP TABLE IF EXISTS tmp_Supplier_Purchase_Order_Product_Link; + DROP TABLE IF EXISTS tmp_Supplier_Purchase_Order; + DROP TABLE IF EXISTS tmp_Supplier; + DROP TABLE IF EXISTS tmp_Product; - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Supplier_Purchase_Order_Product_Link; - DROP TABLE IF EXISTS tmp_Shop_Supplier_Purchase_Order; - DROP TABLE IF EXISTS tmp_Shop_Supplier; - DROP TABLE IF EXISTS tmp_Shop_Product; - - CREATE TABLE tmp_Shop_Supplier ( - id_supplier INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Supplier_id_supplier - FOREIGN KEY (id_supplier) - REFERENCES Shop_Supplier(id_supplier), - active BIT NOT NULL, - rank_supplier INT NULL, - can_view BIT, - can_edit BIT, - can_admin BIT + CREATE TABLE tmp_Supplier ( + id_supplier INT NOT NULL PRIMARY KEY ); - CREATE TABLE tmp_Shop_Supplier_Purchase_Order ( - id_order INT NOT NULL PRIMARY KEY, - id_supplier_ordered INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Supplier_Purchase_Order_id_supplier_ordered - FOREIGN KEY (id_supplier_ordered) - REFERENCES Shop_Supplier(id_supplier), - cost_total_local FLOAT NOT NULL, - id_currency_cost INT NOT NULL, - active BIT NOT NULL, - rank_order INT NOT NULL + CREATE TABLE tmp_Supplier_Purchase_Order ( + id_order INT NOT NULL PRIMARY KEY ); - /* - CREATE TABLE tmp_Shop_Supplier_Purchase_Order_Product_Link ( + CREATE TABLE tmp_Supplier_Purchase_Order_Product_Link ( id_link INT NOT NULL PRIMARY KEY, id_order INT NOT NULL, - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Supplier_Purchase_Order(id_order), - id_permutation INT NOT NULL, - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local FLOAT NOT NULL, - id_currency_cost INT NOT NULL, - quantity_ordered FLOAT NOT NULL, - id_unit_quantity INT NOT NULL, - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_received FLOAT NULL, - latency_delivery_days INT NOT NULL, - display_order INT NOT NULL - ); - */ - - CREATE TABLE tmp_Shop_Product ( - id_category INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category), - id_product INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - -- product_has_variations BIT NOT NULL, - id_permutation INT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - active_category BIT NOT NULL, - active_product BIT NOT NULL, - active_permutation BIT NULL, - display_order_category INT NOT NULL, - display_order_product INT NOT NULL, - display_order_permutation INT NULL, - rank_permutation INT NOT NULL, # _in_category - name VARCHAR(255) NOT NULL, - description VARCHAR(4000) NOT NULL, - /* - price_GBP_full FLOAT NOT NULL, - price_GBP_min FLOAT NOT NULL, - */ - latency_manufacture_days INT NOT NULL, - quantity_min FLOAT NOT NULL, - quantity_max FLOAT NOT NULL, - quantity_step FLOAT NOT NULL, - quantity_stock FLOAT NOT NULL, - is_subscription BIT NOT NULL, - id_unit_measurement_interval_recurrence INT, - CONSTRAINT FK_tmp_Shop_Product_id_unit_measurement_interval_recurrence - FOREIGN KEY (id_unit_measurement_interval_recurrence) - REFERENCES Shop_Interval_Recurrence(id_interval), - count_interval_recurrence INT, - id_stripe_product VARCHAR(100), - product_has_variations INT NOT NULL, - can_view BIT, - can_edit BIT, - can_admin BIT + id_permutation INT NOT NULL ); CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - guid BINARY(36) NOT NULL, id_type INT NOT NULL, - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type (id_type), code VARCHAR(50) NOT NULL, msg VARCHAR(4000) NOT NULL ); - - -- Parse filters SET v_has_filter_supplier = CASE WHEN a_ids_supplier = '' THEN 0 ELSE 1 END; SET v_has_filter_order = CASE WHEN a_ids_order = '' THEN 0 ELSE 1 END; - SET v_has_filter_category = CASE WHEN a_ids_category = '' THEN 0 ELSE 1 END; - SET v_has_filter_product = CASE WHEN a_ids_product = '' THEN 0 ELSE 1 END; SET v_has_filter_permutation = CASE WHEN a_ids_permutation = '' THEN 0 ELSE 1 END; SET v_has_filter_date_from = CASE WHEN ISNULL(a_date_from) THEN 0 ELSE 1 END; SET v_has_filter_date_to = CASE WHEN ISNULL(a_date_to) THEN 0 ELSE 1 END; - -- select v_has_filter_product, v_has_filter_permutation; + IF a_debug = 1 THEN + SELECT + v_has_filter_supplier, + v_has_filter_order, + v_has_filter_permutation, + v_has_filter_date_from, + v_has_filter_date_to + ; + END IF; - IF v_has_filter_supplier THEN - CALL p_split(a_guid, a_ids_supplier, ','); - - IF EXISTS (SELECT * FROM Split_Temp TS LEFT JOIN Shop_Supplier S ON TS.substring = S.id_supplier WHERE ISNULL(S.id_supplier)) THEN + -- Permutations + IF v_has_filter_permutation = 1 THEN + CALL partsltd_prod.p_split(a_guid, a_ids_permutation, ',', a_debug); + + INSERT INTO tmp_Split ( + substring + , as_int + ) + SELECT + substring + , CONVERT(substring, DECIMAL(10,0)) AS as_int + FROM partsltd_prod.Split_Temp + WHERE 1=1 + AND GUID = a_guid + AND NOT ISNULL(substring) + AND substring != '' + ; + + CALL partsltd_prod.p_clear_split_temp( a_guid ); + END IF; + + IF NOT EXISTS (SELECT * FROM tmp_Msg_Error LIMIT 1) THEN + IF EXISTS ( + SELECT * + FROM tmp_Split t_S + LEFT JOIN partsltd_prod.Shop_Product_Permutation PP ON t_S.as_int = PP.id_permutation + WHERE + ISNULL(t_S.as_int) + OR ISNULL(PP.id_permutation) + OR PP.active = 0 + ) THEN INSERT INTO tmp_Msg_Error ( - guid, - id_type, + id_type, code, msg ) SELECT - v_guid, - v_id_type_error_data, - v_code_error_data, - CONCAT('Invalid supplier IDs: ', IFNULL(GROUP_CONCAT(TS.substring SEPARATOR ', '), 'NULL')) - FROM Split_Temp TS - LEFT JOIN Shop_Supplier S ON TS.substring = S.id_supplier - WHERE ISNULL(S.id_supplier) + v_id_type_error_bad_data, + v_code_type_error_bad_data, + CONCAT('Invalid or inactive permutation IDs: ', IFNULL(GROUP_CONCAT(t_S.substring SEPARATOR ', '), 'NULL')) + FROM tmp_Split t_S + LEFT JOIN partsltd_prod.Shop_Product_Permutation PP ON t_S.as_int = PP.id_permutation + WHERE + ISNULL(t_S.as_int) + OR ISNULL(PP.id_permutation) + OR PP.active = 0 ; ELSE - INSERT INTO tmp_Shop_Supplier ( - id_supplier, - active, - rank_supplier + INSERT INTO tmp_Permutation ( + id_permutation ) SELECT - S.id_supplier, - S.active, - RANK() OVER (ORDER BY id_supplier ASC) AS rank_supplier - FROM Shop_Supplier S - INNER JOIN Split_Temp TS ON S.id_supplier = TS.substring - WHERE - ( - a_get_inactive_supplier - OR S.active = 1 - ) + PP.id_permutation + FROM tmp_Split t_S + RIGHT JOIN partsltd_prod.Shop_Product_Permutation PP ON t_S.as_int = PP.id_permutation + WHERE ( + v_has_filter_permutation = 0 + OR NOT ISNULL(t_S.as_int) + ) ; - END IF; - - DROP TABLE Split_Temp; + END IF; + END IF; + + DELETE FROM tmp_Split; + + -- Suppliers + IF v_has_filter_supplier = 1 THEN + CALL partsltd_prod.p_split(a_guid, a_ids_supplier, ',', a_debug); - IF a_get_first_supplier_only THEN - DELETE t_S - FROM tmp_Shop_Supplier t_S - WHERE t_S.rank_supplier > ( - SELECT MIN(t_S.rank_supplier) - FROM tmp_Shop_Supplier t_S - ) - ; - END IF; - END IF; - - IF v_has_filter_category = 1 THEN - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - CALL p_split(a_guid, a_ids_category, ','); - - IF EXISTS (SELECT * FROM Split_Temp TS LEFT JOIN Shop_Product_Category C ON TS.substring = C.id_category WHERE ISNULL(C.id_category)) THEN - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - SELECT - v_guid, - v_id_type_error_data, - v_code_error_data, - CONCAT('Invalid category IDs: ', IFNULL(GROUP_CONCAT(TS.substring SEPARATOR ', ') ,'NULL')) - FROM Split_Temp TS - LEFT JOIN Shop_Product_Category C ON TS.substring = C.id_category - WHERE ISNULL(C.id_category) - ; - END IF; - - DROP TABLE Split_Temp; - END IF; + INSERT INTO tmp_Split ( + substring + , as_int + ) + SELECT + substring + , CONVERT(substring, DECIMAL(10,0)) AS as_int + FROM partsltd_prod.Split_Temp + WHERE 1=1 + AND GUID = a_guid + AND NOT ISNULL(substring) + AND substring != '' + ; + + CALL partsltd_prod.p_clear_split_temp( a_guid ); END IF; - IF v_has_filter_product = 1 THEN - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - CALL p_split(a_guid, a_ids_product, ','); - - IF EXISTS (SELECT * FROM Split_Temp TS LEFT JOIN Shop_Product ON TS.substring = P.id_product WHERE ISNULL(P.id_product)) THEN - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg + IF NOT EXISTS (SELECT * FROM tmp_Msg_Error LIMIT 1) THEN + IF EXISTS ( + SELECT * + FROM tmp_Split t_S + LEFT JOIN partsltd_prod.Shop_Supplier S ON t_S.as_int = S.id_supplier + WHERE + ISNULL(t_S.as_int) + OR ISNULL(S.id_supplier) + OR ( + S.active = 0 + AND v_get_inactive_supplier = 0 ) - SELECT - v_guid, - v_id_type_error_data, - v_code_error_data, - CONCAT('Invalid product IDs: ', IFNULL(GROUP_CONCAT(TS.substring SEPARATOR ', ') ,'NULL')) - FROM Split_Temp TS - LEFT JOIN Shop_Product ON TS.substring = P.id_product - WHERE ISNULL(P.id_product) - ; - END IF; - - DROP TABLE Split_Temp; - END IF; - END IF; - - IF v_has_filter_permutation = 1 THEN - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - CALL p_split(a_guid, a_ids_permutation, ','); - - IF EXISTS (SELECT * FROM Split_Temp TS LEFT JOIN Shop_Product_Permutation PP ON TS.substring = PP.id_permutation WHERE ISNULL(PP.id_permutation)) THEN - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - SELECT - v_guid, - v_id_type_error_data, - v_code_error_data, - CONCAT('Invalid permutation IDs: ', IFNULL(GROUP_CONCAT(TS.substring SEPARATOR ', ') ,'NULL')) - FROM Split_Temp TS - LEFT JOIN Shop_Product_Permutation PP ON TS.substring = PP.id_permutation - WHERE ISNULL(PP.id_permutation) - ; - END IF; - - DROP TABLE Split_Temp; - END IF; - END IF; - - IF v_has_filter_category = 1 OR v_has_filter_product = 1 OR v_has_filter_permutation = 1 THEN - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - INSERT INTO tmp_Shop_Product ( - id_category, - id_product, - id_permutation, - active_category, - active_product, - active_permutation, - display_order_category, - display_order_product, - display_order_permutation - -- rank_permutation, - /* - name, - description, - /* - price_GBP_VAT_incl, - price_GBP_VAT_excl, - price_GBP_min, - * - latency_manufacture_days, - quantity_min, - quantity_max, - quantity_step, - quantity_stock, - is_subscription, - id_unit_measurement_interval_recurrence, - count_interval_recurrence, - id_stripe_product, - product_has_variations - */ - ) - SELECT - P.id_category, - P.id_product, - -- P.has_variations AS product_has_variations, - PP.id_permutation, - C.active AS active_category, - P.active AS active_product, - PP.active AS active_permutation, - C.display_order AS display_order_category, - P.display_order AS display_order_product, - PP.display_order AS display_order_permutation - -- RANK() OVER (ORDER BY C.display_order, P.display_order, PP.display_order) AS rank_permutation, #PARTITION BY P.id_category # _in_category - /* - P.name, - PP.description, - /* - PP.price_GBP_VAT_incl, - PP.price_GBP_VAT_excl, - PP.price_GBP_min, - * - PP.latency_manufacture_days, - PP.quantity_min, - PP.quantity_max, - PP.quantity_step, - PP.quantity_stock, - PP.is_subscription, - PP.id_unit_measurement_interval_recurrence, - PP.count_interval_recurrence, - PP.id_stripe_product, - P.has_variations - */ - FROM Shop_Product P - INNER JOIN Shop_Product_Permutation PP - ON P.id_product = PP.id_product - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - WHERE - # permutations - ( - ( - NOT v_has_filter_permutation - OR FIND_IN_SET(PP.id_permutation, a_ids_permutation) > 0 - ) - AND ( - a_get_inactive_permutation - OR PP.active = 1 - ) - ) - # categories - AND ( - ( - NOT v_has_filter_category - OR FIND_IN_SET(P.id_category, a_ids_category) > 0 - ) - AND ( - a_get_inactive_category - OR C.active = 1 - ) - ) - # products - AND ( - ( - NOT v_has_filter_product - OR FIND_IN_SET(P.id_product, a_ids_product) > 0 - ) - AND ( - a_get_inactive_product - OR P.active = 1 - ) - ) - ; - END IF; - END IF; - - -- Get orders - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - CALL p_split(a_guid, a_ids_order, ','); - - IF v_has_filter_order AND EXISTS (SELECT * FROM Split_Temp TS LEFT JOIN Shop_Supplier_Purchase_Order SPO ON TS.substring = SPO.id_order WHERE ISNULL(SPO.id_order)) THEN + ) THEN INSERT INTO tmp_Msg_Error ( - guid, - id_type, + id_type, code, msg ) SELECT - v_guid, - v_id_type_error_data, - v_code_error_data, - CONCAT('Invalid order IDs: ', IFNULL(GROUP_CONCAT(TS.substring SEPARATOR ', '), 'NULL')) - FROM Split_Temp TS - LEFT JOIN Shop_Supplier_Purchase_Order SPO ON TS.substring = SPO.id_order - WHERE ISNULL(SPO.id_order) + v_id_type_error_bad_data, + v_code_type_error_bad_data, + CONCAT('Invalid or inactive Supplier IDs: ', IFNULL(GROUP_CONCAT(t_S.substring SEPARATOR ', '), 'NULL')) + FROM tmp_Split t_S + LEFT JOIN partsltd_prod.Shop_Supplier S ON t_S.as_int = S.id_supplier + WHERE + ISNULL(t_S.as_int) + OR ISNULL(S.id_supplier) + OR ( + S.active = 0 + AND v_get_inactive_supplier = 0 + ) ; - END IF; - - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - INSERT INTO tmp_Shop_Supplier_Purchase_Order ( -- _Product_Link - id_order, - -- active, - rank_order + ELSE + INSERT INTO tmp_Supplier ( + id_supplier ) SELECT - SPO.id_order, - -- SPO.active, - RANK() OVER (ORDER BY SPO.id_order ASC) AS rank_order - FROM Shop_Supplier_Purchase_Order SPO - INNER JOIN Split_Temp TS ON SPO.id_order = TS.substring - INNER JOIN Shop_Supplier_Purchase_Order_Product_Link SPOPL ON SPO.id_order = SPOPL.id_order - INNER JOIN Shop_Supplier S ON SPO.id_supplier_ordered = S.id_supplier - INNER JOIN Shop_Product_Permutation PP ON SPOPL.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C ON P.id_category = C.id_category - LEFT JOIN tmp_Shop_Product t_P ON SPOPL.id_permutation = t_P.id_permutation - LEFT JOIN tmp_Shop_Supplier t_S ON SPO.id_supplier_ordered = t_S.id_supplier - WHERE - # supplier - ( - v_has_filter_supplier = 0 - OR NOT ISNULL(t_S.id_supplier) -- SPO.id_supplier_ordered IN (SELECT DISTINCT id_supplier FROM tmp_Shop_Supplier) + S.id_supplier + FROM tmp_Split t_S + RIGHT JOIN partsltd_prod.Shop_Supplier S ON t_S.as_int = S.id_supplier + WHERE ( + a_get_all_supplier = 1 + OR ( + v_has_filter_supplier = 1 + AND NOT ISNULL(t_S.as_int) + ) ) - # order AND ( - ( - v_has_filter_order = 0 - OR ( - # ID - FIND_IN_SET(SPO.id_order, a_ids_order) > 0 - # date - AND ( - ( - v_has_filter_date_from = 0 - OR SPO.created_on > a_date_from - ) - AND ( - v_has_filter_date_to = 0 - OR SPO.created_on < a_date_to - ) - ) - ) - ) - # active - /* - AND ( - a_get_inactive_order - OR SPO.active = 1 - ) - */ - ) - # permutations - AND ( - ( - v_has_filter_category = 0 - AND v_has_filter_product = 0 - AND v_has_filter_permutation = 0 - ) - OR NOT ISNULL(t_P.id_permutation) -- SPO.id_permutation IN (SELECT DISTINCT id_permutation FROM tmp_Shop_Product) + a_get_inactive_supplier = 1 + OR S.active = 1 ) ; END IF; - - DROP TABLE Split_Temp; + END IF; + + DELETE FROM tmp_Split; + + -- Supplier Purchase Orders + IF v_has_filter_order = 1 THEN + CALL partsltd_prod.p_split(a_guid, a_ids_order, ',', a_debug); - IF a_get_first_order_only THEN - DELETE t_SPO - FROM tmp_Shop_Supplier_Purchase_Order t_SPO - WHERE t_SPO.rank_order > ( - SELECT MIN(t_SPO.rank_order) - FROM tmp_Shop_Supplier_Purchase_Order t_SPO + INSERT INTO tmp_Split ( + substring + , as_int + ) + SELECT + substring + , CONVERT(substring, DECIMAL(10,0)) AS as_int + FROM partsltd_prod.Split_Temp + WHERE 1=1 + AND GUID = a_guid + AND NOT ISNULL(substring) + AND substring != '' + ; + + CALL partsltd_prod.p_clear_split_temp( a_guid ); + END IF; + + IF NOT EXISTS (SELECT * FROM tmp_Msg_Error LIMIT 1) THEN + IF EXISTS ( + SELECT * + FROM tmp_Split t_S + LEFT JOIN partsltd_prod.Shop_Supplier_Purchase_Order SPO ON t_S.as_int = SPO.id_order + WHERE + ISNULL(t_S.as_int) + OR ISNULL(SPO.id_order) + OR ( + SPO.active = 0 + AND v_get_inactive_order = 0 + ) + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type, + code, + msg ) + SELECT + v_id_type_error_bad_data, + v_code_type_error_bad_data, + CONCAT('Invalid or inactive Supplier Purchase Order IDs: ', IFNULL(GROUP_CONCAT(t_S.substring SEPARATOR ', '), 'NULL')) + FROM tmp_Split t_S + LEFT JOIN partsltd_prod.Shop_Supplier_Purchase_Order SPO ON t_S.as_int = SPO.id_order + WHERE + ISNULL(t_S.as_int) + OR ISNULL(SPO.id_order) + OR ( + SPO.active = 0 + AND v_get_inactive_order = 0 + ) + ; + ELSE + INSERT INTO tmp_Supplier_Purchase_Order ( + id_order + ) + SELECT + SPO.id_order + FROM tmp_Split t_S + RIGHT JOIN partsltd_prod.Shop_Supplier_Purchase_Order SPO ON t_S.as_int = SPO.id_order + INNER JOIN tmp_Supplier t_SUPP ON SPO.id_supplier_ordered = t_SUPP.id_supplier + INNER JOIN partsltd_prod.Shop_Supplier_Purchase_Order_Product_Link SPOPL ON SPO.id_order = SPOPL.id_order + INNER JOIN tmp_Permutation t_PP ON SPOPL.id_permutation = t_PP.id_permutation + WHERE ( + a_get_all_order = 1 + OR ( + v_has_filter_order = 1 + AND NOT ISNULL(t_S.as_int) + ) + OR ( + v_has_filter_supplier = 1 + AND NOT ISNULL(t_SUPP.id_supplier) + ) + OR ( + v_has_filter_permutation = 1 + AND NOT ISNULL(t_PP.id_permutation) + ) + ) + AND ( + a_get_inactive_order = 1 + OR SPO.active = 1 + ) + AND ( + v_has_filter_date_from = 0 + OR SPO.created_on > a_date_from + ) + AND ( + v_has_filter_date_to = 0 + OR SPO.created_on < a_date_to + ) + ; END IF; - END IF; + END IF; + + DELETE FROM tmp_Split; -- Permissions - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - # SET v_id_user := (SELECT id_user FROM Shop_User WHERE name = CURRENT_USER()); - SET v_ids_permission_supplier_purchase_order := (SELECT GROUP_CONCAT(id_permission SEPARATOR ',') FROM Shop_Permission WHERE code IN ('STORE_SUPPLIER', 'STORE_SUPPLIER_PURCHASE_ORDER')); - -- SET v_ids_permutation_permission := (SELECT GROUP_CONCAT(id_permutation SEPARATOR ',') FROM tmp_Shop_Product WHERE NOT ISNULL(id_permutation)); - SET v_ids_product_permission := (SELECT GROUP_CONCAT(P.id_product SEPARATOR ',') FROM (SELECT DISTINCT id_product FROM tmp_Shop_Product WHERE NOT ISNULL(id_product)) P); - - -- SELECT v_guid, a_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_permutation_permission; - -- select * from Shop_Calc_User_Temp; - - CALL p_shop_calc_user(v_guid, a_id_user, FALSE, v_ids_permission_supplier_purchase_order, v_id_access_level_view, v_ids_product_permission); - - -- select * from Shop_Calc_User_Temp; - - IF NOT EXISTS (SELECT can_view FROM Shop_Calc_User_Temp UE_T WHERE UE_T.GUID = v_guid) THEN - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - SELECT - v_guid, - v_id_type_error_data, - v_code_error_data, - CONCAT('You do not have view permissions for ', GROUP_CONCAT(name SEPARATOR ', ')) - FROM Shop_Permission - WHERE id_permission = v_ids_permission_supplier_purchase_order - ; - END IF; - - - UPDATE tmp_Shop_Product t_P - INNER JOIN Shop_Calc_User_Temp UE_T - ON t_P.id_product = UE_T.id_product -- t_P.id_permutation = UE_T.id_permutation - AND UE_T.GUID = v_guid - SET t_P.can_view = UE_T.can_view, - t_P.can_edit = UE_T.can_edit, - t_P.can_admin = UE_T.can_admin + IF a_debug = 1 THEN + SELECT + v_guid + , a_id_user + , FALSE -- get inactive users + , v_id_permission_supplier_purchase_order + , v_id_access_level_view + , '' -- ids_product + , 0 -- a_debug + ; + SELECT * from Shop_Calc_User_Temp; + END IF; + + CALL p_shop_calc_user( + v_guid + , a_id_user + , FALSE -- get inactive users + , v_id_permission_supplier_purchase_order + , v_id_access_level_view + , '' -- ids_product + , 0 -- a_debug + ); + + IF a_debug = 1 THEN + SELECT * from Shop_Calc_User_Temp; + END IF; + + IF NOT EXISTS (SELECT can_view FROM Shop_Calc_User_Temp UE_T WHERE UE_T.GUID = v_guid) THEN + DELETE FROM tmp_Msg_Error; + + INSERT INTO tmp_Msg_Error ( + , id_type + , code + , msg + ) + VALUES ( + v_id_type_error_no_permission + , v_code_type_error_no_permission + CONCAT('You do not have view permissions for ', (SELECT name FROM Shop_Permission WHERE id_permission = v_id_permission_supplier LIMIT 1)) + ) ; - - # CALL p_shop_clear_calc_user(v_guid); - # DROP TABLE IF EXISTS Shop_Calc_User_Temp; - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; END IF; - - -- select * from tmp_Shop_Product; - + IF EXISTS ( SELECT * FROM tmp_Msg_Error LIMIT 1 ) THEN + DELETE FROM tmp_Supplier_Purchase_Order_Product_Link; + DELETE FROM tmp_Supplier_Purchase_Order; + END IF; + -- Returns - -- SET v_now := NOW(); - + /* # Suppliers SELECT t_S.id_supplier, @@ -641,90 +398,63 @@ BEGIN S.website, S.id_currency, t_S.active - FROM tmp_Shop_Supplier t_S + FROM tmp_Supplier t_S INNER JOIN Shop_Supplier S ON t_S.id_supplier = S.id_supplier ; - + */ + # Supplier Purchase Order - SELECT # * - t_SPO.id_order, - SPO.id_supplier_ordered, - SPO.cost_total_local, - SPO.id_currency_cost, - t_SPO.active - FROM Shop_Supplier_Purchase_Order SPO - INNER JOIN tmp_Shop_Supplier_Purchase_Order t_SPO ON SPO.id_order = t_SPO.id_order + SELECT + t_SPO.id_order + , SPO.id_supplier_ordered + , SPO.id_currency_cost + , SPO.cost_total_local_VAT_excl + , SPO.cost_total_local_VAT_incl + , SPO.active + FROM tmp_Supplier_Purchase_Order t_SPO + INNER JOIN partsltd_prod.Shop_Supplier_Purchase_Order SPO ON SPO.id_order = t_SPO.id_order ; # Supplier Purchase Order Product Link SELECT - SPOPL.id_link, - SPOPL.id_order, - SPOPL.id_permutation, - P.name as name_product, - SPOPL.cost_total_local, - SPOPL.id_currency_cost, - SPOPL.quantity_ordered, - SPOPL.id_unit_quantity, - SPOPL.quantity_received, - SPOPL.latency_delivery_days, - SPOPL.display_order - FROM Shop_Supplier_Purchase_Order_Product_Link SPOPL - -- INNER JOIN tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL ON SPOPL.id_link = t_SPOPL.id_link - INNER JOIN tmp_Shop_Supplier_Purchase_Order t_SPO ON SPOPL.id_order = t_SPO.id_order - INNER JOIN Shop_Product_Permutation PP ON SPOPL.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C ON P.id_category = C.id_category - ORDER BY SPOPL.id_order, C.display_order, P.display_order, PP.display_order + SPOPL.id_link + , SPOPL.id_order + , SPOPL.id_permutation + , fn_shop_get_product_permutation_name(SPOPL.id_permutation) AS name_permutation + , SPOPL.id_currency_cost + , SPOPL.id_unit_quantity + , SPOPL.quantity_ordered + , SPOPL.quantity_received + , SPOPL.latency_delivery_days + , SPOPL.display_order + , SPO.cost_total_local_VAT_excl + , SPO.cost_total_local_VAT_incl + FROM tmp_Supplier_Purchase_Order_Product_Link t_SPOPL + INNER JOIN partsltd_prod.Shop_Supplier_Purchase_Order_Product_Link SPOPL ON t_SPOPL.id_link = SPOPL.id_link + INNER JOIN tmp_Supplier_Purchase_Order t_SPO ON SPOPL.id_order = t_SPO.id_order ; # Errors - SELECT - /* - t_ME.display_order, - t_ME.guid, - t_ME.id_type, - t_ME.msg, - MET.code, - MET.name, - MET.description - */ - * + SELECT * FROM tmp_Msg_Error t_ME - INNER JOIN Shop_Msg_Error_Type MET - ON t_ME.id_type = MET.id_type - WHERE guid = v_guid + INNER JOIN Shop_Msg_Error_Type MET ON t_ME.id_type = MET.id_type ; - /* - # Return arguments for test - SELECT - a_ids_category, - a_get_inactive_category, - a_ids_product, - a_get_inactive_product, - a_get_first_product_only, - a_get_all_product, - a_ids_image, - a_get_inactive_image, - a_get_first_image_only, - a_get_all_image - ; - */ - - # select 'other outputs'; - # select * from tmp_Shop_Product; - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_Supplier_Purchase_Order_Product_Link; - DROP TABLE IF EXISTS tmp_Shop_Supplier_Purchase_Order; - DROP TABLE IF EXISTS tmp_Shop_Supplier; - DROP TABLE IF EXISTS tmp_Shop_Product; - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; + IF a_debug = 1 THEN + SELECT * from tmp_Supplier_Purchase_Order_Product_Link; + SELECT * from tmp_Supplier_Purchase_Order; + SELECT * from tmp_Supplier; + END IF; + + DROP TEMPORARY TABLE IF EXISTS tmp_Supplier_Purchase_Order_Product_Link; + DROP TEMPORARY TABLE IF EXISTS tmp_Supplier_Purchase_Order; + DROP TEMPORARY TABLE IF EXISTS tmp_Supplier; + DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error; + + IF a_debug = 1 THEN + CALL p_debug_timing_reporting( v_time_start ); + END IF; END // DELIMITER ;; @@ -735,31 +465,14 @@ CALL p_shop_get_many_supplier_purchase_order ( '', # a_id_user 1, # a_get_all_supplier 0, # a_get_inactive_supplier - 0, # a_get_first_supplier_only '', # a_ids_supplier 1, # a_get_all_order -- 0, # a_get_inactive_order - 0, # a_get_first_order_only '', # a_ids_order - 0, # a_get_inactive_category - '', # a_ids_category - 0, # a_get_inactive_product - '', # a_ids_product - 0, # a_get_inactive_permutation '', # a_ids_permutation NULL, # a_date_from NULL # a_date_to + , 0 # a_debug ); -select * from shop_image; -select * from shop_product; -select * from TMP_MSG_ERROR; -DROP TABLE TMP_MSG_ERROR; - -insert into shop_product_change_set (comment) - values ('set product not subscription - test bool output to python'); - update shop_product - set is_subscription = 0, - id_change_set = (select id_change_set from shop_product_change_set order by id_change_set desc limit 1) - where id_product = 1 */ diff --git a/static/MySQL/7415_p_shop_save_manufacturing_purchase_order.sql b/static/MySQL/7415_p_shop_save_manufacturing_purchase_order.sql index a2a5b3cb..c29eee63 100644 --- a/static/MySQL/7415_p_shop_save_manufacturing_purchase_order.sql +++ b/static/MySQL/7415_p_shop_save_manufacturing_purchase_order.sql @@ -5,539 +5,594 @@ -- Clear previous proc DROP PROCEDURE IF EXISTS p_shop_save_manufacturing_purchase_order; -DROP TABLE IF EXISTS tmp_Shop_Manufacturing_Purchase_Order_Product_Link; +DROP TABLE IF EXISTS tmp_Manufacturing_Purchase_Order_Product_Link; DROP TABLE IF EXISTS tmp_Msg_Error; DELIMITER // CREATE PROCEDURE p_shop_save_manufacturing_purchase_order ( - IN a_guid VARCHAR(500), - IN a_id_user INT, - IN a_id_order INT, - -- IN a_id_supplier_ordered INT, - IN a_id_currency_cost INT, - IN a_active BIT, - IN a_comment VARCHAR(500) + IN a_comment VARCHAR(500) + , IN a_guid BINARY(36) + , IN a_id_user INT + , IN a_debug BIT ) BEGIN - DECLARE v_id_error_type_bad_data INT; - DECLARE v_code_error_type_bad_data VARCHAR(50); - DECLARE v_id_error_type_no_permission INT; - DECLARE v_code_error_type_no_permission VARCHAR(50); - DECLARE v_guid_permission BINARY(36); - -- DECLARE v_id_user VARCHAR(100); - DECLARE v_id_permission_manufacturing_purchase_order INT; - DECLARE v_id_access_level_EDIT INT; - DECLARE v_ids_product VARCHAR(4000); - DECLARE v_ids_product_no_permission VARCHAR(4000); - -- DECLARE v_id_order_new INT; + DECLARE v_code_type_error_bad_data VARCHAR(50); + DECLARE v_code_type_error_no_permission VARCHAR(50); + DECLARE v_id_access_level_edit INT; DECLARE v_id_change_set INT; - DECLARE v_is_new_manufacturing_purchase_order BIT; + DECLARE v_id_permission_manufacturing_purchase_order INT; + DECLARE v_id_type_error_bad_data INT; + DECLARE v_id_type_error_no_permission INT; + DECLARE v_ids_product_permission TEXT; + DECLARE v_time_start TIMESTAMP(6); + + DECLARE exit handler for SQLEXCEPTION + BEGIN + GET DIAGNOSTICS CONDITION 1 + @sqlstate = RETURNED_SQLSTATE + , @errno = MYSQL_ERRNO + , @text = MESSAGE_TEXT + ; + + ROLLBACK; + + CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error ( + display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT + , id_type INT NULL + , code VARCHAR(50) NOT NULL + , msg VARCHAR(4000) NOT NULL + ); + INSERT INTO tmp_Msg_Error ( + id_type + , code + , msg + ) + SELECT + NULL + , @errno + , @text + ; + SELECT * + FROM tmp_Msg_Error; + DROP TABLE IF EXISTS tmp_Msg_Error; + END; - SET SESSION sql_mode = sys.list_drop(@@session.sql_mode, 'ONLY_FULL_GROUP_BY'); + SET v_time_start := CURRENT_TIMESTAMP(6); + SET v_code_type_error_bad_data := (SELECT code FROM partsltd_prod.Shop_Msg_Error_Type WHERE code = 'BAD_DATA'); + SET v_id_type_error_bad_data := (SELECT id_type FROM partsltd_prod.Shop_Msg_Error_Type WHERE code = v_code_type_error_bad_data); + SET v_code_type_error_no_permission := (SELECT code FROM partsltd_prod.Shop_Msg_Error_Type WHERE code = 'NO_PERMISSION'); + SET v_id_type_error_no_permission := (SELECT id_type FROM partsltd_prod.Shop_Msg_Error_Type WHERE code = v_code_type_error_no_permission); + SET v_id_permission_manufacturing_purchase_order = (SELECT id_permission FROM partsltd_prod.Shop_Permission WHERE code = 'STORE_SUPPLIER_PURCHASE_ORDER' LIMIT 1); + SET v_id_access_level_edit = (SELECT id_access_level FROM partsltd_prod.Shop_Access_Level WHERE code = 'EDIT'); - SET v_code_error_type_bad_data = 'BAD_DATA'; - SET v_id_error_type_bad_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_type_bad_data LIMIT 1); - SET v_code_error_type_no_permission = 'NO_PERMISSION'; - SET v_id_error_type_no_permission := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_type_no_permission LIMIT 1); - SET v_guid_permission = UUID(); - -- SET v_id_user = CURRENT_USER(); - SET v_id_permission_manufacturing_purchase_order := (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_MANUFACTURING_PURCHASE_ORDER' LIMIT 1); - SET v_id_access_level_EDIT := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'EDIT'); - - -- Argument default values - IF a_guid IS NULL THEN - SET a_guid = UUID(); - END IF; - IF a_active IS NULL THEN - SET a_active = 0; - END IF; + CALL p_validate_guid ( a_guid ); + SET a_comment := TRIM(IFNULL(a_comment, '')); + DROP TEMPORARY TABLE IF EXISTS tmp_Manufacturing; + DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error; + -- Temporary tables - /* - CREATE TABLE tmp_Shop_Supplier_Purchase_Order ( - id_order INT NOT NULL PRIMARY KEY, - id_supplier_ordered INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Supplier_Purchase_Order_id_supplier_ordered - FOREIGN KEY (id_supplier_ordered) - REFERENCES Shop_Supplier(id_supplier), - cost_total_local FLOAT NOT NULL, - id_currency_cost INT NOT NULL - ); - */ - - CREATE TABLE tmp_Shop_Manufacturing_Purchase_Order_Product_Link ( - id_link INT NOT NULL PRIMARY KEY, - id_order INT NOT NULL, - /* - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Manufacturing_Purchase_Order(id_order), - */ - id_permutation INT NOT NULL, - CONSTRAINT FK_tmp_Manuf_Purch_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local FLOAT NOT NULL, - id_currency_cost INT NOT NULL, - value_produced_total_local FLOAT NOT NULL, - quantity_used FLOAT NOT NULL, - id_unit_quantity INT NOT NULL, - CONSTRAINT FK_tmp_Manuf_Purch_Order_Product_Link_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_produced FLOAT NULL, - latency_manufacture_days INT NOT NULL, - display_order INT NOT NULL, - active BIT NOT NULL, - name_error VARCHAR(200) NOT NULL + CREATE TEMPORARY TABLE tmp_Manufacturing_Purchase_Order ( + id_order INT NOT NULL PRIMARY KEY + , id_currency_cost INT NOT NULL ); - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - guid BINARY(36) NOT NULL, - id_type INT NOT NULL, - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type (id_type), - code VARCHAR(50) NOT NULL, - msg VARCHAR(4000) NOT NULL + CREATE TEMPORARY TABLE tmp_Manufacturing_Purchase_Order_Product_Link ( + id_link INT NOT NULL PRIMARY KEY + , id_order INT NOT NULL + , id_permutation INT NOT NULL + , id_currency_cost INT NOT NULL + , quantity_ordered FLOAT NOT NULL + , id_unit_quantity INT NOT NULL + , quantity_received FLOAT NULL + , latency_delivery_days INT NOT NULL + , display_order INT NOT NULL + , active BIT NOT NULL + , name_error VARCHAR(200) NOT NULL + , cost_total_local_VAT_excl FLOAT NOT NULL + , cost_total_local_VAT_incl FLOAT NOT NULL + , cost_unit_local_VAT_excl FLOAT NOT NULL + , cost_unit_local_VAT_incl FLOAT NOT NULL + , has_order BIT NULL + ); + + CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error ( + display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT + , id_type INT NOT NULL + , code VARCHAR(50) NOT NULL + , msg VARCHAR(4000) NOT NULL ); - - -- Argument validation - # User ID - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF ISNULL(a_id_user) OR NOT EXISTS (SELECT * FROM Shop_User WHERE id_user = a_id_user) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (a_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, CONCAT('Invalid User ID: ', IFNULL(a_id_user, 'NULL'))) - ; - END IF; - END IF; - - # Order ID - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF ISNULL(a_id_order) OR ((a_id_order > 0) AND NOT EXISTS (SELECT * FROM Shop_Manufacturing_Purchase_Order WHERE id_order = a_id_order)) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (a_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, CONCAT('Invalid Manufacturing Purchase Order ID: ', IFNULL(a_id_order, 'NULL'))) - ; - END IF; - END IF; - - /* - # Supplier ID - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF ISNULL(a_id_supplier_ordered) OR NOT EXISTS (SELECT * FROM Shop_Supplier WHERE id_supplier = a_id_supplier_ordered) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (a_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, CONCAT('Invalid supplier ID: ', IFNULL(a_id_supplier_ordered, 'NULL'))) - ; - END IF; - END IF; - */ - - # Currency ID - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF ISNULL(a_id_currency_cost) OR NOT EXISTS (SELECT * FROM Shop_Currency WHERE id_currency = a_id_currency_cost) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (a_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, CONCAT('Invalid currency ID: ', IFNULL(a_id_currency, 'NULL'))) - ; - END IF; - END IF; - - # Comment - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF ISNULL(a_comment) OR TRIM(a_comment) = '' THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (a_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, 'A comment must be provided.') - ; - END IF; - END IF; - + INSERT INTO tmp_Manufacturing_Purchase_Order ( + id_order + , id_currency_cost + ) + SELECT + SPO_T.id_order + , IFNULL(IFNULL(SPO_T.id_currency_cost, MPO.id_currency_cost), 0) AS id_currency_cost + FROM partsltd_prod.Shop_Manufacturing_Purchase_Order_Temp SPO_T + LEFT JOIN partsltd_prod.Shop_Manufacturing_Purchase_Order MPO ON SPO_T.id_order = MPO.id_order + WHERE SPO_T.GUID = a_guid + ; - -- Get data from Temp table - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - SET v_is_new_manufacturing_purchase_order := CASE WHEN a_id_order <= 0 THEN 1 ELSE 0 END; - - INSERT INTO tmp_Shop_Manufacturing_Purchase_Order_Product_Link ( - id_link, - id_order, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_used, - id_unit_quantity, - quantity_produced, - value_produced_total_local, - latency_manufacture_days, - display_order, - active, - name_error + INSERT INTO tmp_Manufacturing_Purchase_Order_Product_Link ( + id_link + , id_order + , id_permutation + , id_currency_cost + , quantity_ordered + , id_unit_quantity + , quantity_received + , latency_delivery_days + , display_order + , active + , name_error + , is_new + , cost_total_local_VAT_excl + , cost_total_local_VAT_incl + , cost_unit_local_VAT_excl + , cost_unit_local_VAT_incl + , has_order + ) + SELECT + IFNULL(SPOPL_T.id_link, 0) AS id_link + , IFNULL(IFNULL(SPOPL_T.id_order, MPOPL.id_order) 0) AS id_order + , IFNULL(IFNULL(SPOPL_T.id_permutation, MPOPL.id_permutation), 0) AS id_permutation + , IFNULL(IFNULL(SPOPL_T.id_currency_cost, MPOPL.id_currency_cost) 0) AS id_currency_cost + , IFNULL(IFNULL(SPOPL_T.quantity_ordered, MPOPL.quantity_ordered), 0) AS quantity_ordered + , IFNULL(IFNULL(SPOPL_T.id_unit_quantity, MPOPL.id_unit_quantity), 0) AS id_unit_quantity + , IFNULL(SPOPL_T.quantity_received, MPOPL.quantity_received) AS quantity_received + , IFNULL(SPOPL_T.latency_delivery_days, MPOPL.latency_delivery_days) AS latency_delivery_days + , RANK() OVER (PARTITION BY IFNULL(IFNULL(SPOPL_T.id_order, MPOPL.id_order) 0) ORDER BY IFNULL(IFNULL(SPOPL_T.display_order, MPOPL.display_order), 0)) AS display_order + , IFNULL(IFNULL(SPOPL_T.active, MPOPL.active), 1) AS active + , CONCAT( + fn_shop_get_product_permutation_name(SPOPL_T.id_permutation) + , ' - x' + , IFNULL(SPOPL_T.quantity_ordered, '(No Quantity)') + ) AS name_error + , IFNULL(SPOPL_T.id_link, 0) < 1 AS is_new + , IFNULL(IFNULL(SPOPL_T.cost_total_local_VAT_excl, MPOPL.cost_total_local_VAT_excl), 0) AS cost_total_local_VAT_excl + , IFNULL(IFNULL(SPOPL_T.cost_total_local_VAT_incl, MPOPL.cost_total_local_VAT_incl), 0) AS cost_total_local_VAT_incl + , IFNULL(SPOPL_T.cost_total_local_VAT_excl / SPOPL_T.quantity_ordered, MPOPL.cost_unit_local_VAT_excl) AS cost_unit_local_VAT_excl + , IFNULL(SPOPL_T.cost_total_local_VAT_incl / SPOPL_T.quantity_ordered, MPOPL.cost_unit_local_VAT_incl) AS cost_unit_local_VAT_incl + , NOT ISNULL(t_MPO.id_order) AS has_order + FROM partsltd_prod.Shop_Manufacturing_Purchase_Order_Product_Link_Temp SPOPL_T + LEFT JOIN partsltd_prod.Shop_Manufacturing_Purchase_Order_Product_Link MPOPL ON SPOPL_T.id_link = MPOPL.id_link + LEFT JOIN tmp_Manufacturing_Purchase_Order t_MPO ON SPOPL_T.id_order = t_MPO.id_order + WHERE SPOPL_T.GUID = a_guid + ; + + INSERT INTO tmp_Manufacturing_Purchase_Order ( + id_order + , id_currency_cost + ) + SELECT + SPO_T.id_order + , IFNULL(IFNULL(SPO_T.id_currency_cost, MPO.id_currency_cost), 0) AS id_currency_cost + FROM partsltd_prod.Shop_Manufacturing_Purchase_Order MPO + INNER JOIN tmp_Manufacturing_Purchase_Order_Product_Link t_MPOPL + ON MPO.id_order = t_MPOPL.id_order + AND t_MPOPL.has_order = 0 + ; + + -- Validation + -- Manufacturing Purchase Order + # id_order + IF EXISTS ( + SELECT * + FROM tmp_Manufacturing_Purchase_Order t_MPO + LEFT JOIN partsltd_prod.Shop_Manufacturing_Purchase_Order MPO ON t_MPO.id_order = MPO.id_order + WHERE 1=1 + AND t_MPO.id_order > 0 + AND ISNULL(MPO.id_order) + LIMIT 1 + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type + , code + , msg ) - /* - VALUES - (a_id_supplier, a_name_company, a_name_contact, a_department_contact, a_id_address, a_phone_number, a_fax, a_email, a_website, a_id_currency, a_active) - */ - SELECT - MPOPL_T.id_link, - MPOPL_T.id_order, - MPOPL_T.id_permutation, - PP.cost_local * MPOPL_T.quantity_used AS cost_total_local, - MPOPL_T.id_currency_cost, - MPOPL_T.quantity_used, - MPOPL_T.id_unit_quantity, - MPOPL_T.quantity_produced, - (PP.cost_local + PP.profit_local_min) * MPOPL_T.quantity_produced AS value_produced_total_local, - MPOPL_T.latency_manufacture_days, - MPOPL_T.display_order, - MPOPL_T.active, - CONCAT(PP.id_permutation, ' - ', IFNULL(P.name ,'')) AS name_error - FROM Shop_Manufacturing_Purchase_Order_Product_Link_Temp MPOPL_T - INNER JOIN Shop_Product_Permutation PP ON MPOPL_T.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - WHERE MPOPL_T.GUID = a_guid - -- GROUP BY MPOPL_T.id_order, name_error, MPOPL_T.id_link - /* - group by - MPOPL_T.id_link, - MPOPL_T.id_order, - MPOPL_T.id_permutation, - cost_total_local, - MPOPL_T.id_currency_cost, - MPOPL_T.quantity_used, - MPOPL_T.id_unit_quantity, - MPOPL_T.quantity_produced, - value_produced_total_local, - MPOPL_T.latency_manufacture_days, - MPOPL_T.display_order, - MPOPL_T.active, - name_error - */ - -- GROUP BY id_link, P.id_product, PP.id_permutation - -- GROUP BY name_error, ID_LINK, cost_total_local, value_produced_total_local - ; - DELETE MPOPL_T - FROM Shop_Manufacturing_Purchase_Order_Product_Link_Temp MPOPL_T - WHERE MPOPL_T.GUID = a_guid - ; + SELECT + v_id_type_error_bad_data + , v_code_type_error_bad_data + , CONCAT( + 'A valid ID is required for the following Manufacturing Purchase Order(s): ' + , GROUP_CONCAT(CONCAT(IFNULL(t_MPO.id_stock, '(No Manufacturing Purchase Order)')) SEPARATOR ', ') + ) AS msg + FROM tmp_Stock_Item t_SPO + LEFT JOIN partsltd_prod.Shop_Manufacturing_Purchase_Order MPO ON t_MPO.id_order = MPO.id_order + WHERE 1=1 + AND t_MPO.id_stock > 0 + AND ISNULL(MPO.id_stock) + ; END IF; - - -- Invalid quantity used - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF EXISTS ( - SELECT * - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link - WHERE - NOT ISNULL(quantity_used) - AND quantity_used < 0 - ) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg + # id_currency_cost + IF EXISTS ( + SELECT * + FROM tmp_Manufacturing_Purchase_Order t_MPO + LEFT JOIN partsltd_prod.Shop_Currency C ON t_MPO.id_currency_cost = C.id_currency + WHERE 1=1 + AND ( + ISNULL(C.id_currency) + OR C.active = 0 ) - SELECT - a_guid, - v_id_error_type_bad_data, - v_code_error_type_bad_data, - CONCAT('Invalid quantity used property for the following permutations: ', GROUP_CONCAT(t_MPOPL.name_error SEPARATOR ', ')) - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - WHERE t_MPOPL.quantity_used < 0 - ; - END IF; + LIMIT 1 + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type + , code + , msg + ) + SELECT + v_id_type_error_bad_data + , v_code_type_error_bad_data + , CONCAT( + 'A valid currency is required for the following Manufacturing Purchase Order(s): ' + , GROUP_CONCAT(CONCAT(IFNULL(t_MPO.id_stock, '(No Manufacturing Purchase Order)'), ' - ', t_MPO.id_currency_cost) SEPARATOR ', ') + ) AS msg + FROM tmp_Stock_Item t_SPO + LEFT JOIN partsltd_prod.Shop_Currency C ON t_MPO.id_currency_cost = C.id_currency + WHERE 1=1 + AND ( + ISNULL(C.id_currency) + OR C.active = 0 + ) + ; END IF; - - -- Invalid quantity produced - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF EXISTS ( - SELECT * - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link - WHERE - NOT ISNULL(quantity_produced) - AND quantity_produced < 0 - ) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg + # id_unit_quantity + IF EXISTS ( + SELECT * + FROM tmp_Manufacturing_Purchase_Order t_MPO + LEFT JOIN partsltd_prod.Shop_Unit_Measurement UM ON t_MPO.id_unit_quantity = UM.id_unit_measurement + WHERE 1=1 + AND ( + ISNULL(UM.id_unit_measurement) + OR UM.active = 0 ) - SELECT - a_guid, - v_id_error_type_bad_data, - v_code_error_type_bad_data, - CONCAT('Invalid quantity produced property for the following permutations: ', GROUP_CONCAT(t_MPOPL.name_error SEPARATOR ', ')) - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - WHERE t_MPOPL.quantity_produced < 0 - ; - END IF; + LIMIT 1 + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type + , code + , msg + ) + SELECT + v_id_type_error_bad_data + , v_code_type_error_bad_data + , CONCAT( + 'A valid unit measurement of quantity is required for the following Manufacturing Purchase Order(s): ' + , GROUP_CONCAT(CONCAT(IFNULL(t_MPO.id_stock, '(No Manufacturing Purchase Order)'), ' - ', t_MPO.id_currency_cost) SEPARATOR ', ') + ) AS msg + FROM tmp_Stock_Item t_SPO + LEFT JOIN partsltd_prod.Shop_Unit_Measurement UM ON t_MPO.id_unit_quantity = UM.id_unit_measurement + WHERE 1=1 + AND ( + ISNULL(UM.id_unit_measurement) + OR UM.active = 0 + ) + ; END IF; - - -- Duplicates - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF EXISTS (SELECT id_permutation, name_error, COUNT(*) FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL GROUP BY id_permutation HAVING COUNT(*) > 1) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg + # Invalid quantity ordered + IF EXISTS ( + SELECT * + FROM tmp_Manufacturing_Purchase_Order_Product_Link + WHERE + ISNULL(t_MPOPL.quantity_ordered) + OR t_MPOPL.quantity_ordered <= 0 + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type, code, msg + ) + SELECT + v_id_error_type_bad_data, + v_code_error_type_bad_data, + CONCAT( + 'A valid quantity ordered is required for the following Manufacturing Purchase Order Item(s): ' + , GROUP_CONCAT(t_MPOPL.name_error SEPARATOR ', ') ) - SELECT - a_guid, - v_id_error_type_bad_data, - v_code_error_type_bad_data, - CONCAT('Duplicate records: ', GROUP_CONCAT(t_MPOPLC.name_error SEPARATOR ', ')) - FROM (SELECT id_permutation, name_error, COUNT(*) FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL GROUP BY id_permutation HAVING COUNT(*) > 1) t_MPOPLC - ; - END IF; + FROM tmp_Manufacturing_Purchase_Order_Product_Link t_MPOPL + WHERE + ISNULL(t_MPOPL.quantity_ordered) + OR t_MPOPL.quantity_ordered <= 0 + ; + END IF; + # Invalid quantity received + IF EXISTS ( + SELECT * + FROM tmp_Manufacturing_Purchase_Order_Product_Link + WHERE t_MPOPL.quantity_received < 0 + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type, code, msg + ) + SELECT + v_id_error_type_bad_data, + v_code_error_type_bad_data, + CONCAT( + 'A valid quantity received is required for the following Manufacturing Purchase Order Item(s): ' + , GROUP_CONCAT(t_MPOPL.name_error, ' - ', t_MPOPL.quantity_received SEPARATOR ', ') + ) + FROM tmp_Manufacturing_Purchase_Order_Product_Link t_MPOPL + WHERE t_MPOPL.quantity_received < 0 + ; + END IF; + # Invalid delivery latency + IF EXISTS ( + SELECT * + FROM tmp_Manufacturing_Purchase_Order_Product_Link + WHERE t_MPOPL.latency_delivery_days < 0 + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type, code, msg + ) + SELECT + v_id_error_type_bad_data, + v_code_error_type_bad_data, + CONCAT( + 'A valid delivery latency is required for the following Manufacturing Purchase Order Item(s): ' + , GROUP_CONCAT(t_MPOPL.name_error, ' - ', t_MPOPL.latency_delivery_days SEPARATOR ', ') + ) + FROM tmp_Manufacturing_Purchase_Order_Product_Link t_MPOPL + WHERE t_MPOPL.latency_delivery_days < 0 + ; END IF; + -- Duplicates + IF EXISTS ( + SELECT + id_permutation + , name_error + , COUNT(*) + FROM tmp_Manufacturing_Purchase_Order_Product_Link t_MPOPL + GROUP BY id_permutation + HAVING COUNT(*) > 1 + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type, code, msg + ) + SELECT + v_id_error_type_bad_data, + v_code_error_type_bad_data, + CONCAT('Duplicate records: ', GROUP_CONCAT(t_SPOPLC.name_error SEPARATOR ', ')) + FROM ( + SELECT + id_permutation + , name_error + , COUNT(*) + FROM tmp_Manufacturing_Purchase_Order_Product_Link t_MPOPL + GROUP BY id_permutation + HAVING COUNT(*) > 1 + ) t_SPOPLC + ; + END IF; + -- Empty Manufacturing Purchase Order + IF EXISTS ( SELECT * FROM tmp_Manufacturing_Purchase_Order t_MPO LEFT JOIN tmp_Manufacturing_Purchase_Order_Product_Link t_MPOPL ON t_MPO.id_order = t_MPOPL.id_order WHERE ISNULL(t_MPOPL.id_order) ) THEN + INSERT INTO tmp_Msg_Error ( + id_type, code, msg + ) + SELECT + v_id_error_type_bad_data, + v_code_error_type_bad_data, + CONCAT( + 'There are no items in the following Manufacturing Purchase Order(s): ' + , GROUP_CONCAT(t_MPO.name_error SEPARATOR ', ') + ) AS msg + FROM tmp_Manufacturing_Purchase_Order t_MPO + LEFT JOIN tmp_Manufacturing_Purchase_Order_Product_Link t_MPOPL ON t_MPO.id_order = t_MPOPL.id_order + WHERE ISNULL(t_MPOPL.id_order) + ; + END IF; + + -- Manufacturing Purchase Order Items without Order + IF EXISTS ( + SELECT * + FROM tmp_Manufacturing_Purchase_Order_Product_Link t_MPOPL + LEFT JOIN tmp_Manufacturing_Purchase_Order t_MPO ON t_MPOPL.id_order = t_MPO.id_order + WHERE ISNULL(t_MPO.id_order) + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type, code, msg + ) + SELECT + v_id_error_type_bad_data, + v_code_error_type_bad_data, + CONCAT( + 'There is no order for the following Manufacturing Purchase Order Item(s): ' + , GROUP_CONCAT(t_MPOPL.name_error SEPARATOR ', ') + ) AS msg + FROM tmp_Manufacturing_Purchase_Order_Product_Link t_MPOPL + LEFT JOIN tmp_Manufacturing_Purchase_Order t_MPO ON t_MPOPL.id_order = t_MPO.id_order + WHERE ISNULL(t_MPO.id_order) + ; + END IF; -- Permissions - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - SET v_ids_product := ( - SELECT GROUP_CONCAT(G.id_product SEPARATOR ',') - FROM ( - SELECT DISTINCT PP.id_product - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPO - INNER JOIN Shop_Product_Permutation PP ON t_MPO.id_permutation = PP.id_permutation - ) G - ); - - CALL p_shop_calc_user(v_guid_permission, a_id_user, 0, v_id_permission_manufacturing_purchase_order, v_id_access_level_edit, v_ids_product); - - /* - UPDATE tmp_Shop_Supplier t_S - INNER JOIN Shop_Calc_User_Temp TP - ON TP.GUID = v_guid_permission - SET tP.can_view = TP.can_view, - tP.can_edit = TP.can_edit, - tP.can_admin = TP.can_admin; - */ - /* - SET v_has_permission := ( - SELECT can_edit - FROM Shop_Calc_User_Temp - WHERE - GUID = v_guid_permission - AND can_edit = 0 - ); - - IF v_has_permission = 0 THEN - SET v_id_error_type_no_permission := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'NO_PERMISSION'); - INSERT INTO tmp_Msg_Error ( - guid, id_type, msg - ) - SELECT - a_guid, - v_id_error_type_no_permission, - CONCAT('You do not have ', name, ' permissions.') - FROM Shop_Permission - WHERE id_permission = v_id_permission_manufacturing_purchase_order - ; - END IF; - */ - SET v_ids_product_no_permission := ( - SELECT GROUP_CONCAT(PT.id_product SEPARATOR ',') - FROM Shop_Calc_User_Temp PT - WHERE - PT.can_edit = 0 - AND NOT ISNULL(PT.id_product) - ); - IF NOT ISNULL(v_ids_product_no_permission) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES ( - a_guid, - v_id_error_type_no_permission, - v_code_error_type_no_permission, - CONCAT('You do not have permission to edit the following product IDs: ', v_ids_product_no_permission) - ) - ; - END IF; - END IF; + SET v_ids_product_permission := ( + SELECT + GROUP_CONCAT(DISTINCT PP.id_product SEPARATOR ',') + FROM tmp_Manufacturing_Purchase_Order_Product_Link t_MPOPL + INNER JOIN partsltd_prod.Shop_Product_Permutation PP ON t_MPOPL.id_permutation = PP.id_permutation + ); + IF a_debug = 1 THEN + SELECT + v_guid + , a_id_user + , FALSE -- get inactive users + , v_id_permission_manufacturing_purchase_order + , v_id_access_level_edit + , v_ids_product_permission -- ids_product + , 0 -- a_debug + ; + SELECT * from partsltd_prod.Shop_Calc_User_Temp; + END IF; + + CALL p_shop_calc_user( + v_guid + , a_id_user + , FALSE -- get inactive users + , v_id_permission_manufacturing_purchase_order + , v_id_access_level_edit + , v_ids_product_permission -- ids_product + , 0 -- a_debug + ); + + IF a_debug = 1 THEN + SELECT * from partsltd_prod.Shop_Calc_User_Temp WHERE GUID = a_guid; + END IF; + + IF NOT EXISTS (SELECT can_view FROM partsltd_prod.Shop_Calc_User_Temp UE_T WHERE UE_T.GUID = v_guid) THEN + DELETE FROM tmp_Msg_Error; + + INSERT INTO tmp_Msg_Error ( + id_type + , code + , msg + ) + VALUES ( + v_id_type_error_no_permission + , v_code_type_error_no_permission + CONCAT('You do not have view permissions for ', (SELECT name FROM partsltd_prod.Shop_Permission WHERE id_permission = v_id_permission_manufacturing LIMIT 1)) + ) + ; + END IF; + + CALL partsltd_prod.p_shop_clear_calc_user( a_guid ); + IF EXISTS ( SELECT * FROM tmp_Msg_Error LIMIT 1 ) THEN + DELETE FROM tmp_Manufacturing; + END IF; + -- Transaction IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN START TRANSACTION; INSERT INTO Shop_Sales_And_Purchasing_Change_Set ( - comment, - updated_last_by, - updated_last_on + comment + , updated_last_by + , updated_last_on ) VALUES ( - CONCAT( - 'Save ', - CASE WHEN v_is_new_manufacturing_purchase_order = 1 THEN 'new ' ELSE '' END, - 'Manufacturing Purchase Order - ', - a_comment - ), - a_id_user, - CURRENT_TIME() + a_comment + , a_id_user + , v_time_start ); - SET v_id_change_set := (SELECT id_change_set FROM Shop_Sales_And_Purchasing_Change_Set ORDER BY id_change_set DESC LIMIT 1); - - IF (v_is_new_manufacturing_purchase_order = 1) THEN - INSERT INTO Shop_Manufacturing_Purchase_Order ( - -- id_supplier_ordered, - cost_total_local, - id_currency_cost, - value_produced_total_local, - created_by, - id_change_set, - active - ) - SELECT - -- a_id_supplier_ordered, - SUM(t_MPOPL.cost_total_local), - a_id_currency_cost, - SUM(t_MPOPL.value_produced_total_local), - a_id_user, - v_id_change_set, - a_active - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - ; - -- SET v_id_order_new - SET a_id_order := (SELECT id_order FROM Shop_Manufacturing_Purchase_Order ORDER BY id_order DESC LIMIT 1); - - INSERT INTO Shop_Manufacturing_Purchase_Order_Product_Link ( - id_order, - id_permutation, - cost_total_local, - value_produced_total_local, - id_currency_cost, - quantity_used, - id_unit_quantity, - quantity_produced, - latency_manufacture_days, - display_order, - active, - created_by, - id_change_set - ) - SELECT - a_id_order, -- v_id_order_new, - id_permutation, - cost_total_local, - value_produced_total_local, - id_currency_cost, - quantity_used, - id_unit_quantity, - quantity_produced, - latency_manufacture_days, - display_order, - active, - a_id_user, - v_id_change_set - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - ; - ELSE - UPDATE Shop_Manufacturing_Purchase_Order MPO - INNER JOIN tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL ON MPO.id_order = t_MPOPL.id_order - SET - -- MPO.id_supplier_ordered = a_id_supplier_ordered, - MPO.cost_total_local = SUM(t_MPOPL.cost_total_local), - MPO.value_produced_total_local = SUM(t_MPOPL.value_produced_total_local), - MPO.id_currency = a_id_currency_cost, - MPO.id_change_set = v_id_change_set, - MPO.active = a_active - WHERE MPO.id_order = a_id_order - ; - IF EXISTS (SELECT * FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL INNER JOIN Shop_Manufacturing_Purchase_Order_Product_Link MPOPL ON t_MPOPL.id_link = MPOPL.id_link) THEN - UPDATE Shop_Manufacturing_Purchase_Order_Product_Link MPOPL - INNER JOIN tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - ON MPOPL.id_link = t_MPOPL.id_link - SET - MPOPL.id_order = t_MPOPL.id_order, - MPOPL.id_permutation = t_MPOPL.id_permutation, - MPOPL.cost_total_local = t_MPOPL.cost_total_local, - MPOPL.value_produced_total_local = t_MPOPL.value_produced_total_local, - MPOPL.id_currency_cost = t_MPOPL.id_currency_cost, - MPOPL.quantity_used = t_MPOPL.quantity_used, - MPOPL.id_unit_quantity = t_MPOPL.id_unit_quantity, - MPOPL.quantity_produced = t_MPOPL.quantity_produced, - MPOPL.latency_manufacture_days = t_MPOPL.latency_manufacture_days, - MPOPL.display_order = t_MPOPL.display_order, - MPOPL.active = t_MPOPL.active, - MPOPL.id_change_set = v_id_change_set - ; - ELSE - INSERT INTO Shop_Manufacturing_Purchase_Order_Product_Link ( - id_order, - id_permutation, - cost_total_local, - value_produced_total_local, - id_currency_cost, - quantity_used, - id_unit_quantity, - quantity_produced, - latency_manufacture_days, - display_order, - active, - created_by, - id_change_set - ) - SELECT - id_order, - id_permutation, - cost_total_local, - value_produced_total_local, - id_currency_cost, - quantity_used, - id_unit_quantity, - quantity_produced, - latency_manufacture_days, - display_order, - active, - a_id_user, - v_id_change_set - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - WHERE t_MPOPL.id_link < 0 - ; - END IF; - END IF; + SET v_id_change_set := LAST_INSERT_ID(); - IF EXISTS (SELECT * FROM tmp_Msg_Error) THEN - ROLLBACK; - ELSE - COMMIT; - END IF; - END IF; - - -- Returns - # SET v_now = NOW(); - - # Manufacturing Purchase Orders - SELECT * - FROM Shop_Manufacturing_Purchase_Order - WHERE - id_order = a_id_order - -- GUID = a_guid - ; - - # Manufacturing Purchase Order Product Links - SELECT * - FROM Shop_Manufacturing_Purchase_Order_Product_Link - WHERE - id_order = a_id_order - -- GUID = a_guid - ; + INSERT INTO partsltd_prod.Shop_Manufacturing_Purchase_Order ( + id_currency_cost + , cost_total_local_VAT_excl + , cost_total_local_VAT_incl + , created_by + , created_on + , id_change_set + , active + ) + SELECT + t_MPO.id_currency_cost + , SUM(t_MPOPL.cost_total_local_VAT_excl) + , SUM(t_MPOPL.cost_total_local_VAT_incl) + , t_MPO.active + , a_id_user + , v_time_start + , v_id_change_set + FROM tmp_Manufacturing_Purchase_Order t_MPO + INNER JOIN tmp_Manufacturing_Purchase_Order_Product_Link t_MPOPL ON t_MPO.id_order = t_MPOPL.id_order + WHERE t_MPOPL.is_new = 1 + ; + + INSERT INTO Shop_Manufacturing_Purchase_Order_Product_Link ( + id_order + , id_permutation + , id_currency_cost + , id_unit_quantity + , quantity_ordered + , quantity_received + , latency_delivery_days + , display_order + , active + , cost_total_local_VAT_excl + , cost_total_local_VAT_incl + , created_by + , id_change_set + ) + SELECT + t_MPOPL.id_order + , t_MPOPL.id_permutation + , t_MPOPL.id_currency_cost + , t_MPOPL.id_unit_quantity + , t_MPOPL.quantity_ordered + , t_MPOPL.quantity_received + , t_MPOPL.latency_delivery_days + , t_MPOPL.display_order + , t_MPOPL.active + , t_MPOPL.cost_total_local_VAT_excl + , t_MPOPL.cost_total_local_VAT_incl + a_id_user + v_id_change_set + FROM tmp_Manufacturing_Purchase_Order_Product_Link t_MPOPL + WHERE t_MPOPL.is_new = 1 + ; + + UPDATE partsltd_prod.Shop_Manufacturing_Purchase_Order MPO + INNER JOIN tmp_Manufacturing_Purchase_Order t_MPO + ON MPO.id_order = t_MPO.id_order + AND t_MPO.is_new = 0 + INNER JOIN tmp_Manufacturing_Purchase_Order_Product_Link t_MPOPL ON t_MPO.id_order = t_MPOPL.id_order + SET + MPO.id_currency_cost = id_currency_cost + , MPO.cost_total_local_VAT_excl = SUM(t_MPOPL.cost_total_local_VAT_excl) + , MPO.cost_total_local_VAT_incl = SUM(t_MPOPL.cost_total_local_VAT_incl) + , MPO.active = a_active + , MPO.id_change_set = v_id_change_set + ; + + UPDATE partsltd_prod.Shop_Manufacturing_Purchase_Order_Product_Link MPOPL + INNER JOIN tmp_Manufacturing_Purchase_Order_Product_Link t_MPOPL + ON MPOPL.id_link = t_MPOPL.id_link + AND t_MPOPL.is_new = 0 + SET + MPOPL.id_order = t_MPOPL.id_order, + MPOPL.id_permutation = t_MPOPL.id_permutation, + MPOPL.id_currency_cost = t_MPOPL.id_currency_cost, + MPOPL.id_unit_quantity = t_MPOPL.id_unit_quantity, + MPOPL.quantity_ordered = t_MPOPL.quantity_ordered, + MPOPL.quantity_received = t_MPOPL.quantity_received, + MPOPL.latency_delivery_days = t_MPOPL.latency_delivery_days, + MPOPL.display_order = t_MPOPL.display_order, + MPOPL.active = t_MPOPL.active, + MPOPL.cost_total_local_VAT_excl = t_MPOPL.cost_total_local_VAT_excl, + MPOPL.cost_total_local_VAT_incl = t_MPOPL.cost_total_local_VAT_incl, + MPOPL.id_change_set = v_id_change_set + ; + + DELETE SPO_T + FROM Shop_Manufacturing_Purchase_Order_Temp SPO_T + WHERE SPO_T.GUID = a_guid + ; + DELETE SPOPL_T + FROM Shop_Manufacturing_Purchase_Order_Product_Link_Temp SPOPL_T + WHERE SPOPL_T.GUID = a_guid + ; + + COMMIT; # Errors SELECT * - FROM tmp_Msg_Error + FROM tmp_Msg_Error t_ME + INNER JOIN partsltd_prod.Shop_Msg_Error_Type MET ON t_ME.id_type = MET.id_type ; - # DROP TABLE tmp_Shop_Manufacturing_Purchase_Order; - DROP TABLE tmp_Shop_Manufacturing_Purchase_Order_Product_Link; - DROP TABLE tmp_Msg_Error; + IF a_debug = 1 THEN + SELECT * from tmp_Manufacturing; + END IF; + + DROP TEMPORARY TABLE tmp_Manufacturing_Purchase_Order; + DROP TEMPORARY TABLE tmp_Manufacturing_Purchase_Order_Product_Link; + DROP TEMPORARY TABLE tmp_Msg_Error; + + IF a_debug = 1 THEN + CALL partsltd_prod.p_debug_timing_reporting ( v_time_start ); + END IF; END // DELIMITER ;; @@ -557,10 +612,10 @@ INSERT INTO Shop_Manufacturing_Purchase_Order_Product_Link_Temp ( id_permutation, cost_total_local, id_currency_cost, - quantity_used, + quantity_ordered, id_unit_quantity, - quantity_produced, - latency_manufacture_days, + quantity_received, + latency_delivery_days, display_order, active ) @@ -572,10 +627,10 @@ VALUES 1, # id_permutation, 100, # cost_total_local, 1, # id_currency_cost, - 1, # quantity_used, + 1, # quantity_ordered, 1, # id_unit_quantity, - 1, # quantity_produced, - 14, # latency_manufacture_days , + 1, # quantity_received, + 14, # latency_delivery_days , 1, # display_order 1 # active ) @@ -584,12 +639,10 @@ VALUES SELECT * FROM Shop_Manufacturing_Purchase_Order_Product_Link_Temp; CALL p_shop_save_manufacturing_purchase_order ( - 'NIPS', # a_guid - 'auth0|6582b95c895d09a70ba10fef', # a_id_user - -1, # a_id_order - 1, # a_id_currency_cost - 1, # a_active - 'Initial data' # a_comment + 'TEST SAVE' + , 'NIPS' # a_guid + , 1 -- 'auth0|6582b95c895d09a70ba10fef', # a_id_user + , 1 -- a_debug ); SELECT * FROM Shop_Manufacturing_Purchase_Order_Product_Link_Temp; diff --git a/static/MySQL/7416_p_shop_get_many_manufacturing_purchase_order.sql b/static/MySQL/7416_p_shop_get_many_manufacturing_purchase_order.sql index 5f55c21c..3c77cb5a 100644 --- a/static/MySQL/7416_p_shop_get_many_manufacturing_purchase_order.sql +++ b/static/MySQL/7416_p_shop_get_many_manufacturing_purchase_order.sql @@ -1,625 +1,368 @@ - - --- Clear previous proc DROP PROCEDURE IF EXISTS p_shop_get_many_manufacturing_purchase_order; - DELIMITER // CREATE PROCEDURE p_shop_get_many_manufacturing_purchase_order ( IN a_id_user INT, + IN a_get_all_manufacturing BIT, + IN a_get_inactive_manufacturing BIT, + IN a_ids_manufacturing TEXT, IN a_get_all_order BIT, - -- IN a_get_inactive_order BIT, - IN a_get_first_order_only BIT, - IN a_ids_order VARCHAR(4000), - IN a_get_inactive_category BIT, - IN a_ids_category VARCHAR(4000), - IN a_get_inactive_product BIT, - IN a_ids_product VARCHAR(4000), - IN a_get_inactive_permutation BIT, - IN a_ids_permutation VARCHAR(4000), - IN a_date_from TIMESTAMP, - IN a_date_to TIMESTAMP + IN a_get_inactive_order BIT, + IN a_ids_order TEXT, + IN a_ids_permutation TEXT, + IN a_date_from DATETIME, + IN a_date_to DATETIME, + IN a_debug BIT ) BEGIN - -- Argument redeclaration - -- Variable declaration + DECLARE v_code_type_error_bad_data VARCHAR(50); + DECLARE v_code_type_error_no_permission VARCHAR(50); + DECLARE v_guid BINARY(36); DECLARE v_has_filter_order BIT; - DECLARE v_has_filter_category BIT; - DECLARE v_has_filter_product BIT; DECLARE v_has_filter_permutation BIT; DECLARE v_has_filter_date_from BIT; DECLARE v_has_filter_date_to BIT; - DECLARE v_guid BINARY(36); - # DECLARE v_id_user VARCHAR(100); - # DECLARE v_ids_permutation_unavailable VARCHAR(4000); - DECLARE v_ids_permission_manufacturing_purchase_order VARCHAR(4000); - DECLARE v_ids_product_permission VARCHAR(4000); - # DECLARE v_ids_permutation_permission VARCHAR(4000); DECLARE v_id_access_level_view INT; - -- DECLARE v_now TIMESTAMP; - -- DECLARE v_id_minimum INT; - DECLARE v_code_error_data VARCHAR(50); - DECLARE v_id_type_error_data INT; + DECLARE v_ids_permission_manufacturing_purchase_order INT; + DECLARE v_id_type_error_bad_data INT; + DECLARE v_id_type_error_no_permission INT; + DECLARE v_time_start TIMESTAMP(6); + SET v_time_start := CURRENT_TIMESTAMP(6); SET v_guid := UUID(); SET v_id_access_level_view := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW' LIMIT 1); - -- SET v_ids_permission_manufacturing_purchase_order := (SELECT id_permission FROM Shop_Permission WHERE code = 'SHOP_manufacturing_PURCHASE_ORDER' LIMIT 1); - SET v_code_error_data = 'BAD_DATA'; - SET v_id_type_error_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_data); + SET v_code_type_error_bad_data := (SELECT code FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1); + SET v_id_type_error_bad_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_type_error_bad_data LIMIT 1); + SET v_code_type_error_no_permission := (SELECT code FROM Shop_Msg_Error_Type WHERE code = 'NO_PERMISSION'); + SET v_id_type_error_no_permission := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_type_error_no_permission); + SET v_ids_permission_manufacturing_purchase_order := (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_SUPPLIER_PURCHASE_ORDER' LIMIT 1); + + SET a_get_all_order := IFNULL(a_get_all_order, 1); + SET a_get_inactive_order := IFNULL(a_get_inactive_order, 0); + SET a_ids_order := TRIM(IFNULL(a_ids_order, '')); + SET a_ids_permutation := TRIM(IFNULL(a_ids_permutation, '')); + SET a_date_from := IFNULL(a_date_from, NULL); + SET a_date_to := IFNULL(a_date_to, NULL); + SET a_debug := IFNULL(a_debug, 0); - -- Argument validation + default values - IF a_id_user IS NULL THEN - SET a_id_user = ''; - ELSE - SET a_id_user = TRIM(a_id_user); - END IF; - IF a_get_all_order IS NULL THEN - SET a_get_all_order = 1; - END IF; - /* - IF a_get_inactive_order IS NULL THEN - SET a_get_inactive_order = 0; - END IF; - */ - IF a_get_first_order_only IS NULL THEN - SET a_get_first_order_only = 0; - END IF; - IF a_ids_order IS NULL THEN - SET a_ids_order = ''; - ELSE - SET a_ids_order = TRIM(REPLACE(a_ids_order, '|', ',')); - END IF; - IF a_get_inactive_category IS NULL THEN - SET a_get_inactive_category = 0; - END IF; - IF a_ids_category IS NULL THEN - SET a_ids_category = ''; - ELSE - SET a_ids_category = TRIM(REPLACE(a_ids_category, '|', ',')); - END IF; - IF a_get_inactive_product IS NULL THEN - SET a_get_inactive_product = 0; - END IF; - IF a_ids_product IS NULL THEN - SET a_ids_product = ''; - ELSE - SET a_ids_product = TRIM(REPLACE(a_ids_product, '|', ',')); - END IF; - IF a_get_inactive_permutation IS NULL THEN - SET a_get_inactive_permutation = 0; - END IF; - IF a_ids_permutation IS NULL THEN - SET a_ids_permutation = ''; - ELSE - SET a_ids_permutation = TRIM(REPLACE(a_ids_permutation, '|', ',')); - END IF; + DROP TABLE IF EXISTS tmp_Manufacturing_Purchase_Order_Product_Link; + DROP TABLE IF EXISTS tmp_Manufacturing_Purchase_Order; + DROP TABLE IF EXISTS tmp_Product; - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Manufacturing_Purchase_Order_Product_Link; - DROP TABLE IF EXISTS tmp_Shop_Manufacturing_Purchase_Order; - DROP TABLE IF EXISTS tmp_Shop_Product; - - CREATE TABLE tmp_Shop_Manufacturing_Purchase_Order ( - id_order INT NOT NULL PRIMARY KEY, - /* - id_supplier_ordered INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Manufacturing_Purchase_Order_id_supplier_ordered - FOREIGN KEY (id_supplier_ordered) - REFERENCES Shop_Supplier(id_supplier), - */ - cost_total_local FLOAT NOT NULL, - id_currency_cost INT NOT NULL, - value_produced_total_local FLOAT NOT NULL, - active BIT NOT NULL, - rank_order INT NOT NULL + CREATE TABLE tmp_Manufacturing_Purchase_Order ( + id_order INT NOT NULL PRIMARY KEY ); - /* - CREATE TABLE tmp_Shop_Manufacturing_Purchase_Order_Product_Link ( + CREATE TABLE tmp_Manufacturing_Purchase_Order_Product_Link ( id_link INT NOT NULL PRIMARY KEY, id_order INT NOT NULL, - CONSTRAINT FK_tmp_manufacturing_Purchase_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_manufacturing_Purchase_Order(id_order), - id_permutation INT NOT NULL, - CONSTRAINT FK_tmp_manufacturing_Purchase_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local FLOAT NOT NULL, - id_currency_cost INT NOT NULL, - quantity_used FLOAT NOT NULL, - id_unit_quantity INT NOT NULL, - CONSTRAINT FK_tmp_manufacturing_Purchase_Order_Product_Link_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_produced FLOAT NULL, - latency_delivery_days INT NOT NULL, - display_order INT NOT NULL - ); - */ - - CREATE TABLE tmp_Shop_Product ( - id_category INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category), - id_product INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - -- product_has_variations BIT NOT NULL, - id_permutation INT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - active_category BIT NOT NULL, - active_product BIT NOT NULL, - active_permutation BIT NULL, - display_order_category INT NOT NULL, - display_order_product INT NOT NULL, - display_order_permutation INT NULL, - rank_permutation INT NOT NULL, # _in_category - # name VARCHAR(255) NOT NULL, - # description VARCHAR(4000) NOT NULL, - /* - price_GBP_full FLOAT NOT NULL, - price_GBP_min FLOAT NOT NULL, - */ - /* - latency_manufacture_days INT NOT NULL, - quantity_min FLOAT NOT NULL, - quantity_max FLOAT NOT NULL, - quantity_step FLOAT NOT NULL, - quantity_stock FLOAT NOT NULL, - is_subscription BIT NOT NULL, - id_unit_measurement_interval_recurrence INT, - CONSTRAINT FK_tmp_Shop_Product_id_unit_measurement_interval_recurrence - FOREIGN KEY (id_unit_measurement_interval_recurrence) - REFERENCES Shop_Interval_Recurrence(id_interval), - count_interval_recurrence INT, - id_stripe_product VARCHAR(100), - product_has_variations INT NOT NULL, - */ - can_view BIT, - can_edit BIT, - can_admin BIT + id_permutation INT NOT NULL ); CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - guid BINARY(36) NOT NULL, id_type INT NOT NULL, - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type (id_type), code VARCHAR(50) NOT NULL, msg VARCHAR(4000) NOT NULL ); - - -- Parse filters SET v_has_filter_order = CASE WHEN a_ids_order = '' THEN 0 ELSE 1 END; - SET v_has_filter_category = CASE WHEN a_ids_category = '' THEN 0 ELSE 1 END; - SET v_has_filter_product = CASE WHEN a_ids_product = '' THEN 0 ELSE 1 END; SET v_has_filter_permutation = CASE WHEN a_ids_permutation = '' THEN 0 ELSE 1 END; SET v_has_filter_date_from = CASE WHEN ISNULL(a_date_from) THEN 0 ELSE 1 END; SET v_has_filter_date_to = CASE WHEN ISNULL(a_date_to) THEN 0 ELSE 1 END; - -- select v_has_filter_product, v_has_filter_permutation; - - IF v_has_filter_category = 1 THEN - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - CALL p_split(a_guid, a_ids_category, ','); - - IF EXISTS (SELECT * FROM Split_Temp TS LEFT JOIN Shop_Product_Category C ON TS.substring = C.id_category WHERE ISNULL(C.id_category)) THEN - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - SELECT - v_guid, - v_id_type_error_data, - v_code_error_data, - CONCAT('Invalid category IDs: ', IFNULL(GROUP_CONCAT(TS.substring SEPARATOR ', ') ,'NULL')) - FROM Split_Temp TS - LEFT JOIN Shop_Product_Category C ON TS.substring = C.id_category - WHERE ISNULL(C.id_category) - ; - END IF; - - DROP TABLE Temp_Split; - END IF; - END IF; - - IF v_has_filter_product = 1 THEN - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - CALL p_split(a_guid, a_ids_product, ','); - - IF EXISTS (SELECT * FROM Split_Temp TS LEFT JOIN Shop_Product ON TS.substring = P.id_product WHERE ISNULL(P.id_product)) THEN - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - SELECT - v_guid, - v_id_type_error_data, - v_code_error_data, - CONCAT('Invalid product IDs: ', IFNULL(GROUP_CONCAT(TS.substring SEPARATOR ', ') ,'NULL')) - FROM Split_Temp TS - LEFT JOIN Shop_Product ON TS.substring = P.id_product - WHERE ISNULL(P.id_product) - ; - END IF; - - DROP TABLE Temp_Split; - END IF; + IF a_debug = 1 THEN + SELECT + v_has_filter_order + , v_has_filter_permutation + , v_has_filter_date_from + , v_has_filter_date_to + ; END IF; + -- Permutations IF v_has_filter_permutation = 1 THEN - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - CALL p_split(a_guid, a_ids_permutation, ','); - - IF EXISTS (SELECT * FROM Split_Temp TS LEFT JOIN Shop_Product_Permutation PP ON TS.substring = PP.id_permutation WHERE ISNULL(PP.id_permutation)) THEN - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - SELECT - v_guid, - v_id_type_error_data, - v_code_error_data, - CONCAT('Invalid permutation IDs: ', IFNULL(GROUP_CONCAT(TS.substring SEPARATOR ', ') ,'NULL')) - FROM Split_Temp TS - LEFT JOIN Shop_Product_Permutation PP ON TS.substring = PP.id_permutation - WHERE ISNULL(PP.id_permutation) - ; - END IF; - - DROP TABLE Temp_Split; - END IF; + CALL partsltd_prod.p_split(a_guid, a_ids_permutation, ',', a_debug); + + INSERT INTO tmp_Split ( + substring + , as_int + ) + SELECT + substring + , CONVERT(substring, DECIMAL(10,0)) AS as_int + FROM partsltd_prod.Split_Temp + WHERE 1=1 + AND GUID = a_guid + AND NOT ISNULL(substring) + AND substring != '' + ; + + CALL partsltd_prod.p_clear_split_temp( a_guid ); END IF; - IF v_has_filter_category = 1 OR v_has_filter_product = 1 OR v_has_filter_permutation = 1 THEN - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - INSERT INTO tmp_Shop_Product ( - id_category, - id_product, - id_permutation, - active_category, - active_product, - active_permutation, - display_order_category, - display_order_product, - display_order_permutation - -- rank_permutation, - /* - name, - description, - /* - price_GBP_VAT_incl, - price_GBP_VAT_excl, - price_GBP_min, - * - latency_manufacture_days, - quantity_min, - quantity_max, - quantity_step, - quantity_stock, - is_subscription, - id_unit_measurement_interval_recurrence, - count_interval_recurrence, - id_stripe_product, - product_has_variations - */ - ) - SELECT - P.id_category, - P.id_product, - -- P.has_variations AS product_has_variations, - PP.id_permutation, - C.active AS active_category, - P.active AS active_product, - PP.active AS active_permutation, - C.display_order AS display_order_category, - P.display_order AS display_order_product, - PP.display_order AS display_order_permutation - -- RANK() OVER (ORDER BY C.display_order, P.display_order, PP.display_order) AS rank_permutation, #PARTITION BY P.id_category # _in_category - /* - P.name, - PP.description, - /* - PP.price_GBP_VAT_incl, - PP.price_GBP_VAT_excl, - PP.price_GBP_min, - * - PP.latency_manufacture_days, - PP.quantity_min, - PP.quantity_max, - PP.quantity_step, - PP.quantity_stock, - PP.is_subscription, - PP.id_unit_measurement_interval_recurrence, - PP.count_interval_recurrence, - PP.id_stripe_product, - P.has_variations - */ - FROM Shop_Product P - INNER JOIN Shop_Product_Permutation PP - ON P.id_product = PP.id_product - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - WHERE - # permutations - ( - ( - NOT v_has_filter_permutation - OR FIND_IN_SET(PP.id_permutation, a_ids_permutation) > 0 - ) - AND ( - a_get_inactive_permutation - OR PP.active = 1 - ) - ) - # categories - AND ( - ( - NOT v_has_filter_category - OR FIND_IN_SET(P.id_category, a_ids_category) > 0 - ) - AND ( - a_get_inactive_category - OR C.active = 1 - ) - ) - # products - AND ( - ( - NOT v_has_filter_product - OR FIND_IN_SET(P.id_product, a_ids_product) > 0 - ) - AND ( - a_get_inactive_product - OR P.active = 1 - ) - ) - ; - END IF; - END IF; - - -- Get orders - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - CALL p_split(a_guid, a_ids_order, ','); - - IF v_has_filter_order AND EXISTS (SELECT * FROM Split_Temp TS LEFT JOIN Shop_Manufacturing_Purchase_Order MPO ON TS.substring = MPO.id_order WHERE ISNULL(MPO.id_order)) THEN + IF NOT EXISTS (SELECT * FROM tmp_Msg_Error LIMIT 1) THEN + IF EXISTS ( + SELECT * + FROM tmp_Split t_S + LEFT JOIN partsltd_prod.Shop_Product_Permutation PP ON t_S.as_int = PP.id_permutation + WHERE + ISNULL(t_S.as_int) + OR ISNULL(PP.id_permutation) + OR PP.active = 0 + ) THEN INSERT INTO tmp_Msg_Error ( - guid, - id_type, + id_type, code, msg ) SELECT - v_guid, - v_id_type_error_data, - v_code_error_data, - CONCAT('Invalid order IDs: ', IFNULL(GROUP_CONCAT(TS.substring SEPARATOR ', '), 'NULL')) - FROM Split_Temp TS - LEFT JOIN Shop_Manufacturing_Purchase_Order MPO ON TS.substring = MPO.id_order - WHERE ISNULL(MPO.id_order) + v_id_type_error_bad_data, + v_code_type_error_bad_data, + CONCAT('Invalid or inactive permutation IDs: ', IFNULL(GROUP_CONCAT(t_S.substring SEPARATOR ', '), 'NULL')) + FROM tmp_Split t_S + LEFT JOIN partsltd_prod.Shop_Product_Permutation PP ON t_S.as_int = PP.id_permutation + WHERE + ISNULL(t_S.as_int) + OR ISNULL(PP.id_permutation) + OR PP.active = 0 ; - END IF; - - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - INSERT INTO tmp_Shop_Manufacturing_Purchase_Order ( -- _Product_Link - id_order, - -- active, - rank_order + ELSE + INSERT INTO tmp_Permutation ( + id_permutation ) SELECT - MPO.id_order, - -- MPO.active, - RANK() OVER (ORDER BY MPO.id_order ASC) AS rank_order - FROM Shop_Manufacturing_Purchase_Order MPO - INNER JOIN Split_Temp TS ON MPO.id_order = TS.substring - INNER JOIN Shop_manufacturing_Purchase_Order_Product_Link MPOPL ON MPO.id_order = MPOPL.id_order - INNER JOIN Shop_Product_Permutation PP ON MPOPL.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C ON P.id_category = C.id_category - LEFT JOIN tmp_Shop_Product t_P ON MPOPL.id_permutation = t_P.id_permutation - WHERE - # order - ( - ( - v_has_filter_order = 0 - OR ( - # ID - FIND_IN_SET(MPO.id_order, a_ids_order) > 0 - # date - AND ( - ( - v_has_filter_date_from = 0 - OR MPO.created_on > a_date_from - ) - AND ( - v_has_filter_date_to = 0 - OR MPO.created_on < a_date_to - ) - ) - ) - ) - # active - /* - AND ( - a_get_inactive_order - OR MPO.active = 1 - ) - */ - ) - # permutations - AND ( - ( - v_has_filter_category = 0 - AND v_has_filter_product = 0 - AND v_has_filter_permutation = 0 - ) - OR NOT ISNULL(t_P.id_permutation) -- MPO.id_permutation IN (SELECT DISTINCT id_permutation FROM tmp_Shop_Product) + PP.id_permutation + FROM tmp_Split t_S + RIGHT JOIN partsltd_prod.Shop_Product_Permutation PP ON t_S.as_int = PP.id_permutation + WHERE ( + v_has_filter_permutation = 0 + OR NOT ISNULL(t_S.as_int) ) ; END IF; - - DROP TABLE Split_Temp; + END IF; + + DELETE FROM tmp_Split; + + -- Manufacturing Purchase Orders + IF v_has_filter_order = 1 THEN + CALL partsltd_prod.p_split(a_guid, a_ids_order, ',', a_debug); - IF a_get_first_order_only THEN - DELETE t_MPO - FROM tmp_Shop_Manufacturing_Purchase_Order t_MPO - WHERE t_MPO.rank_order > ( - SELECT MIN(t_MPO.rank_order) - FROM tmp_Shop_Manufacturing_Purchase_Order t_MPO + INSERT INTO tmp_Split ( + substring + , as_int + ) + SELECT + substring + , CONVERT(substring, DECIMAL(10,0)) AS as_int + FROM partsltd_prod.Split_Temp + WHERE 1=1 + AND GUID = a_guid + AND NOT ISNULL(substring) + AND substring != '' + ; + + CALL partsltd_prod.p_clear_split_temp( a_guid ); + END IF; + + IF NOT EXISTS (SELECT * FROM tmp_Msg_Error LIMIT 1) THEN + IF EXISTS ( + SELECT * + FROM tmp_Split t_S + LEFT JOIN partsltd_prod.Shop_Manufacturing_Purchase_Order SPO ON t_S.as_int = SPO.id_order + WHERE + ISNULL(t_S.as_int) + OR ISNULL(SPO.id_order) + OR ( + SPO.active = 0 + AND v_get_inactive_order = 0 + ) + ) THEN + INSERT INTO tmp_Msg_Error ( + id_type, + code, + msg ) + SELECT + v_id_type_error_bad_data, + v_code_type_error_bad_data, + CONCAT('Invalid or inactive Manufacturing Purchase Order IDs: ', IFNULL(GROUP_CONCAT(t_S.substring SEPARATOR ', '), 'NULL')) + FROM tmp_Split t_S + LEFT JOIN partsltd_prod.Shop_Manufacturing_Purchase_Order SPO ON t_S.as_int = SPO.id_order + WHERE + ISNULL(t_S.as_int) + OR ISNULL(SPO.id_order) + OR ( + SPO.active = 0 + AND v_get_inactive_order = 0 + ) + ; + ELSE + INSERT INTO tmp_Manufacturing_Purchase_Order ( + id_order + ) + SELECT + SPO.id_order + FROM tmp_Split t_S + RIGHT JOIN partsltd_prod.Shop_Manufacturing_Purchase_Order SPO ON t_S.as_int = SPO.id_order + INNER JOIN partsltd_prod.Shop_Manufacturing_Purchase_Order_Product_Link SPOPL ON SPO.id_order = SPOPL.id_order + INNER JOIN tmp_Permutation t_PP ON SPOPL.id_permutation = t_PP.id_permutation + WHERE ( + a_get_all_order = 1 + OR ( + v_has_filter_order = 1 + AND NOT ISNULL(t_S.as_int) + ) + OR ( + v_has_filter_permutation = 1 + AND NOT ISNULL(t_PP.id_permutation) + ) + ) + AND ( + a_get_inactive_order = 1 + OR SPO.active = 1 + ) + AND ( + v_has_filter_date_from = 0 + OR SPO.created_on > a_date_from + ) + AND ( + v_has_filter_date_to = 0 + OR SPO.created_on < a_date_to + ) + ; END IF; - END IF; + END IF; + + DELETE FROM tmp_Split; -- Permissions - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - # SET v_id_user := (SELECT id_user FROM Shop_User WHERE name = CURRENT_USER()); - SET v_ids_permission_manufacturing_purchase_order := (SELECT GROUP_CONCAT(id_permission SEPARATOR ',') FROM Shop_Permission WHERE code IN ('STORE_manufacturing', 'STORE_manufacturing_PURCHASE_ORDER')); - -- SET v_ids_permutation_permission := (SELECT GROUP_CONCAT(id_permutation SEPARATOR ',') FROM tmp_Shop_Product WHERE NOT ISNULL(id_permutation)); - SET v_ids_product_permission := (SELECT GROUP_CONCAT(P.id_product SEPARATOR ',') FROM (SELECT DISTINCT id_product FROM tmp_Shop_Product WHERE NOT ISNULL(id_product)) P); - - -- SELECT v_guid, a_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_permutation_permission; - -- select * from Shop_Calc_User_Temp; - - CALL p_shop_calc_user(v_guid, a_id_user, FALSE, v_ids_permission_manufacturing_purchase_order, v_id_access_level_view, v_ids_product_permission); - - -- select * from Shop_Calc_User_Temp; - - IF NOT EXISTS (SELECT can_view FROM Shop_Calc_User_Temp UE_T WHERE UE_T.GUID = v_guid) THEN - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - SELECT - v_guid, - v_id_type_error_data, - v_code_error_data, - CONCAT('You do not have view permissions for ', GROUP_CONCAT(name SEPARATOR ', ')) - FROM Shop_Permission - WHERE id_permission = v_ids_permission_manufacturing_purchase_order - ; - END IF; - - - UPDATE tmp_Shop_Product t_P - INNER JOIN Shop_Calc_User_Temp UE_T - ON t_P.id_product = UE_T.id_product -- t_P.id_permutation = UE_T.id_permutation - AND UE_T.GUID = v_guid - SET t_P.can_view = UE_T.can_view, - t_P.can_edit = UE_T.can_edit, - t_P.can_admin = UE_T.can_admin + IF a_debug = 1 THEN + SELECT + v_guid + , a_id_user + , FALSE -- get inactive users + , v_id_permission_manufacturing_purchase_order + , v_id_access_level_view + , '' -- ids_product + , 0 -- a_debug + ; + SELECT * from Shop_Calc_User_Temp; + END IF; + + CALL p_shop_calc_user( + v_guid + , a_id_user + , FALSE -- get inactive users + , v_id_permission_manufacturing_purchase_order + , v_id_access_level_view + , '' -- ids_product + , 0 -- a_debug + ); + + IF a_debug = 1 THEN + SELECT * from Shop_Calc_User_Temp; + END IF; + + IF NOT EXISTS (SELECT can_view FROM Shop_Calc_User_Temp UE_T WHERE UE_T.GUID = v_guid) THEN + DELETE FROM tmp_Msg_Error; + + INSERT INTO tmp_Msg_Error ( + , id_type + , code + , msg + ) + VALUES ( + v_id_type_error_no_permission + , v_code_type_error_no_permission + CONCAT('You do not have view permissions for ', (SELECT name FROM Shop_Permission WHERE id_permission = v_id_permission_manufacturing LIMIT 1)) + ) ; - - # CALL p_shop_clear_calc_user(v_guid); - # DROP TABLE IF EXISTS Shop_Calc_User_Temp; - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; END IF; - - -- select * from tmp_Shop_Product; - + IF EXISTS ( SELECT * FROM tmp_Msg_Error LIMIT 1 ) THEN + DELETE FROM tmp_Manufacturing_Purchase_Order_Product_Link; + DELETE FROM tmp_Manufacturing_Purchase_Order; + END IF; + -- Returns - -- SET v_now := NOW(); - - # manufacturing Purchase Order - SELECT # * - t_MPO.id_order, - MPO.cost_total_local, - MPO.id_currency_cost, - MPO.value_produced_total_local, - t_MPO.active - FROM Shop_Manufacturing_Purchase_Order MPO - INNER JOIN tmp_Shop_Manufacturing_Purchase_Order t_MPO ON MPO.id_order = t_MPO.id_order + /* + # Manufacturings + SELECT + t_S.id_manufacturing, + S.name_company, + S.name_contact, + S.department_contact, + S.id_address, + S.phone_number, + S.fax, + S.email, + S.website, + S.id_currency, + t_S.active + FROM tmp_Manufacturing t_S + INNER JOIN Shop_Manufacturing S + ON t_S.id_manufacturing = S.id_manufacturing + ; + */ + + # Manufacturing Purchase Order + SELECT + t_SPO.id_order + , SPO.id_manufacturing_ordered + , SPO.id_currency_cost + , SPO.cost_total_local_VAT_excl + , SPO.cost_total_local_VAT_incl + , SPO.active + FROM tmp_Manufacturing_Purchase_Order t_SPO + INNER JOIN partsltd_prod.Shop_Manufacturing_Purchase_Order SPO ON SPO.id_order = t_SPO.id_order ; - # manufacturing Purchase Order Product Link + # Manufacturing Purchase Order Product Link SELECT - MPOPL.id_link, - MPOPL.id_order, - MPOPL.id_permutation, - P.name as name_product, - MPOPL.cost_total_local, - MPOPL.id_currency_cost, - MPOPL.value_produced_total_local, - MPOPL.quantity_used, - MPOPL.id_unit_quantity, - MPOPL.quantity_produced, - MPOPL.latency_manufacture_days, - MPOPL.display_order - FROM Shop_manufacturing_Purchase_Order_Product_Link MPOPL - -- INNER JOIN tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL ON MPOPL.id_link = t_MPOPL.id_link - INNER JOIN tmp_Shop_Manufacturing_Purchase_Order t_MPO ON MPOPL.id_order = t_MPO.id_order - INNER JOIN Shop_Product_Permutation PP ON MPOPL.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C ON P.id_category = C.id_category - ORDER BY MPOPL.id_order, C.display_order, P.display_order, PP.display_order + SPOPL.id_link + , SPOPL.id_order + , SPOPL.id_permutation + , fn_shop_get_product_permutation_name(SPOPL.id_permutation) AS name_permutation + , SPOPL.id_currency_cost + , SPOPL.id_unit_quantity + , SPOPL.quantity_ordered + , SPOPL.quantity_received + , SPOPL.latency_delivery_days + , SPOPL.display_order + , SPO.cost_total_local_VAT_excl + , SPO.cost_total_local_VAT_incl + , SPO.cost_unit_local_VAT_excl + , SPO.cost_unit_local_VAT_incl + FROM tmp_Manufacturing_Purchase_Order_Product_Link t_SPOPL + INNER JOIN partsltd_prod.Shop_Manufacturing_Purchase_Order_Product_Link SPOPL ON t_SPOPL.id_link = SPOPL.id_link + INNER JOIN tmp_Manufacturing_Purchase_Order t_SPO ON SPOPL.id_order = t_SPO.id_order ; # Errors - SELECT - /* - t_ME.display_order, - t_ME.guid, - t_ME.id_type, - t_ME.msg, - MET.code, - MET.name, - MET.description - */ - * + SELECT * FROM tmp_Msg_Error t_ME - INNER JOIN Shop_Msg_Error_Type MET - ON t_ME.id_type = MET.id_type - WHERE guid = v_guid + INNER JOIN Shop_Msg_Error_Type MET ON t_ME.id_type = MET.id_type ; - /* - # Return arguments for test - SELECT - a_ids_category, - a_get_inactive_category, - a_ids_product, - a_get_inactive_product, - a_get_first_product_only, - a_get_all_product, - a_ids_image, - a_get_inactive_image, - a_get_first_image_only, - a_get_all_image - ; - */ - - # select 'other outputs'; - # select * from tmp_Shop_Product; - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_Manufacturing_Purchase_Order_Product_Link; - DROP TABLE IF EXISTS tmp_Shop_Manufacturing_Purchase_Order; - DROP TABLE IF EXISTS tmp_Shop_Product; - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; + IF a_debug = 1 THEN + SELECT * from tmp_Manufacturing_Purchase_Order_Product_Link; + SELECT * from tmp_Manufacturing_Purchase_Order; + SELECT * from tmp_Manufacturing; + END IF; + + DROP TEMPORARY TABLE IF EXISTS tmp_Manufacturing_Purchase_Order_Product_Link; + DROP TEMPORARY TABLE IF EXISTS tmp_Manufacturing_Purchase_Order; + DROP TEMPORARY TABLE IF EXISTS tmp_Manufacturing; + DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error; + + IF a_debug = 1 THEN + CALL p_debug_timing_reporting( v_time_start ); + END IF; END // DELIMITER ;; @@ -628,31 +371,16 @@ DELIMITER ;; CALL p_shop_get_many_manufacturing_purchase_order ( '', # a_id_user + 1, # a_get_all_manufacturing + 0, # a_get_inactive_manufacturing + '', # a_ids_manufacturing 1, # a_get_all_order -- 0, # a_get_inactive_order - 0, # a_get_first_order_only '', # a_ids_order - 0, # a_get_inactive_category - '', # a_ids_category - 0, # a_get_inactive_product - '', # a_ids_product - 0, # a_get_inactive_permutation '', # a_ids_permutation NULL, # a_date_from NULL # a_date_to + , 0 # a_debug ); -select * from shop_image; -select * from shop_product; -select * from TMP_MSG_ERROR; -DROP TABLE TMP_MSG_ERROR; - -insert into shop_product_change_set (comment) - values ('set product not subscription - test bool output to python'); - update shop_product - set is_subscription = 0, - id_change_set = (select id_change_set from shop_product_change_set order by id_change_set desc limit 1) - where id_product = 1 - - */ diff --git a/static/MySQL/7422_p_shop_get_many_customer.sql b/static/MySQL/7422_p_shop_get_many_customer.sql index 1baeedb4..a68cdcb7 100644 --- a/static/MySQL/7422_p_shop_get_many_customer.sql +++ b/static/MySQL/7422_p_shop_get_many_customer.sql @@ -39,7 +39,7 @@ BEGIN # DECLARE v_ids_product_permission VARCHAR(4000); # DECLARE v_ids_permutation_permission VARCHAR(4000); DECLARE v_id_access_level_view INT; - DECLARE v_now TIMESTAMP; + DECLARE v_now DATETIME; DECLARE v_id_minimum INT; SET v_code_error_type_bad_data = 'BAD_DATA'; diff --git a/static/MySQL/7425_p_shop_get_many_customer_sales_order.sql b/static/MySQL/7425_p_shop_get_many_customer_sales_order.sql index df3abf91..b74dbcc4 100644 --- a/static/MySQL/7425_p_shop_get_many_customer_sales_order.sql +++ b/static/MySQL/7425_p_shop_get_many_customer_sales_order.sql @@ -23,8 +23,8 @@ CREATE PROCEDURE p_shop_get_many_customer_sales_order ( IN a_ids_product VARCHAR(4000), IN a_get_inactive_permutation BIT, IN a_ids_permutation VARCHAR(4000), - IN a_date_from TIMESTAMP, - IN a_date_to TIMESTAMP + IN a_date_from DATETIME, + IN a_date_to DATETIME ) BEGIN -- Argument redeclaration @@ -43,7 +43,7 @@ BEGIN DECLARE v_ids_product_permission VARCHAR(4000); # DECLARE v_ids_permutation_permission VARCHAR(4000); DECLARE v_id_access_level_view INT; - -- DECLARE v_now TIMESTAMP; + -- DECLARE v_now DATETIME; -- DECLARE v_id_minimum INT; DECLARE v_code_error_data VARCHAR(50); DECLARE v_id_type_error_data INT; diff --git a/static/MySQL/9000_populate.sql b/static/MySQL/9000_populate.sql index 7953450c..3a3a5a19 100644 --- a/static/MySQL/9000_populate.sql +++ b/static/MySQL/9000_populate.sql @@ -37,6 +37,7 @@ VALUES , ('NO_PERMISSION', 'No permission', 'Not authorised') , ('PRODUCT_AVAILABILITY', 'Product not available', 'Product not available') , ('MYSQL_ERROR', 'MySQL error', 'MySQL execution error.') + , ('WARNING', 'Warning', 'Non-breaking error.') ; # File Types diff --git a/static/MySQL/deprecated/000_init_tables_authentication.sql b/static/MySQL/deprecated/000_init_tables_authentication.sql index 72fe463d..6aa48bcf 100644 --- a/static/MySQL/deprecated/000_init_tables_authentication.sql +++ b/static/MySQL/deprecated/000_init_tables_authentication.sql @@ -38,7 +38,7 @@ DROP TABLE IF EXISTS Shop_User_Change_Set; CREATE TABLE Shop_User_Change_Set ( id_change_set INT NOT NULL AUTO_INCREMENT PRIMARY KEY, comment VARCHAR(500), - updated_last_on TIMESTAMP, + updated_last_on DATETIME, updated_last_by VARCHAR(100) ); @@ -68,7 +68,7 @@ CREATE TABLE Shop_Access_Level ( priority INT NOT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Access_Level_id_change_set @@ -158,7 +158,7 @@ CREATE TABLE Shop_Permission_Group ( name VARCHAR(255), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Permission_Group_id_change_set @@ -253,7 +253,7 @@ CREATE TABLE Shop_Permission ( REFERENCES Shop_Access_Level(id_access_level), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Permission_id_change_set @@ -348,7 +348,7 @@ CREATE TABLE Shop_Role ( name VARCHAR(255), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Role_id_change_set @@ -448,7 +448,7 @@ CREATE TABLE Shop_Role_Permission_Link ( REFERENCES Shop_Access_Level(id_access_level) ON UPDATE RESTRICT, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Role_Permission_Link_id_change_set @@ -541,7 +541,7 @@ CREATE TABLE Shop_User ( name VARCHAR(255), is_super_user BIT NOT NULL DEFAULT 0, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_User_id_change_set @@ -635,7 +635,7 @@ CREATE TABLE Shop_User_Role_Link ( REFERENCES Shop_Role(id_role) ON UPDATE RESTRICT, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_User_Role_Link_id_change_set @@ -722,7 +722,7 @@ CREATE TABLE Shop_Address ( city VARCHAR(50) NOT NULL, county VARCHAR(100) NOT NULL, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Address_id_change_set diff --git a/static/MySQL/deprecated/000_init_tables_product.sql b/static/MySQL/deprecated/000_init_tables_product.sql index 8df93a55..214fb6ac 100644 --- a/static/MySQL/deprecated/000_init_tables_product.sql +++ b/static/MySQL/deprecated/000_init_tables_product.sql @@ -56,7 +56,7 @@ DROP TABLE IF EXISTS Shop_Product_Change_Set; CREATE TABLE Shop_Product_Change_Set ( id_change_set INT NOT NULL AUTO_INCREMENT PRIMARY KEY, comment VARCHAR(500), - updated_last_on TIMESTAMP, + updated_last_on DATETIME, updated_last_by VARCHAR(100) ); @@ -84,9 +84,9 @@ CREATE TABLE File_Type ( code VARCHAR(50), name VARCHAR(100), extension VARCHAR(50), - created_on TIMESTAMP, + created_on DATETIME, created_by INT, - updated_last_on TIMESTAMP, + updated_last_on DATETIME, updated_last_by VARCHAR(100) ); @@ -110,9 +110,9 @@ CREATE TABLE File_Type_Audit ( name_field VARCHAR(50), value_prev VARCHAR(500), value_new VARCHAR(500), - created_on TIMESTAMP, + created_on DATETIME, created_by INT, - updated_last_on TIMESTAMP, + updated_last_on DATETIME, updated_last_by VARCHAR(100) ); @@ -181,7 +181,7 @@ SELECT * FROM File_Type_Audit; CREATE TABLE Shop_General ( id_general INT NOT NULL AUTO_INCREMENT PRIMARY KEY, quantity_max FLOAT, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_General_id_change_set @@ -254,7 +254,7 @@ CREATE TABLE Shop_Product_Category ( description VARCHAR(4000), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Product_Category_id_change_set @@ -347,7 +347,7 @@ CREATE TABLE Shop_Interval_Recurrence ( code VARCHAR(50), name VARCHAR(255), name_plural VARCHAR(256), - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Interval_Recurrence_id_change_set @@ -448,7 +448,7 @@ CREATE TABLE Shop_Product ( id_stripe_price VARCHAR(100), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Product_id_change_set @@ -597,7 +597,7 @@ CREATE TABLE Shop_Variation_Type ( name_plural VARCHAR(256), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Variation_Type_id_change_set @@ -690,7 +690,7 @@ CREATE TABLE Shop_Variation ( name VARCHAR(255), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Variation_id_change_set @@ -782,7 +782,7 @@ CREATE TABLE Shop_Product_Variation_Link ( ON UPDATE RESTRICT, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Product_Variation_Link_id_change_set @@ -872,7 +872,7 @@ CREATE TABLE Shop_Image_Type ( name_plural VARCHAR(256), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Image_Type_id_change_set @@ -969,7 +969,7 @@ CREATE TABLE Shop_Image ( url VARCHAR(255), active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Image_id_change_set @@ -1063,7 +1063,7 @@ CREATE TABLE Shop_Product_Image_Link ( REFERENCES Shop_Image(id_image) ON UPDATE RESTRICT, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Product_Image_Link_id_change_set @@ -1154,7 +1154,7 @@ CREATE TABLE Shop_Delivery_Option_Type ( quantity_max INT NOT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Delivery_Option_Type_id_change_set @@ -1263,7 +1263,7 @@ CREATE TABLE Shop_Delivery_Option ( ON UPDATE RESTRICT, price_GBP FLOAT NOT NULL, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Delivery_Option_id_change_set @@ -1352,7 +1352,7 @@ CREATE TABLE Shop_Delivery_Region ( name VARCHAR(200) NOT NULL, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Delivery_Region_id_change_set @@ -1443,7 +1443,7 @@ CREATE TABLE Shop_Product_Delivery_Region_Link ( REFERENCES Shop_Delivery_Region(id_region) ON UPDATE RESTRICT, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Product_Delivery_Region_Link_id_change_set diff --git a/static/MySQL/deprecated/108_tbl_Shop_Recurrence_Interval.sql b/static/MySQL/deprecated/108_tbl_Shop_Recurrence_Interval.sql index 0f0906b5..1a8341db 100644 --- a/static/MySQL/deprecated/108_tbl_Shop_Recurrence_Interval.sql +++ b/static/MySQL/deprecated/108_tbl_Shop_Recurrence_Interval.sql @@ -11,7 +11,7 @@ CREATE TABLE IF NOT EXISTS Shop_Interval_Recurrence ( name VARCHAR(255), name_plural VARCHAR(256), active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Interval_Recurrence_id_change_set diff --git a/static/MySQL/deprecated/113.1_tbl_Shop_Product_Variation_Type_Link.sql b/static/MySQL/deprecated/113.1_tbl_Shop_Product_Variation_Type_Link.sql index 2e733013..38293389 100644 --- a/static/MySQL/deprecated/113.1_tbl_Shop_Product_Variation_Type_Link.sql +++ b/static/MySQL/deprecated/113.1_tbl_Shop_Product_Variation_Type_Link.sql @@ -19,7 +19,7 @@ CREATE TABLE IF NOT EXISTS Shop_Product_Variation_Type_Link ( ON UPDATE RESTRICT, active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Product_Variation_Type_Link_id_change_set diff --git a/static/MySQL/deprecated/116_tbl_Shop_Product_Variation_Link.sql b/static/MySQL/deprecated/116_tbl_Shop_Product_Variation_Link.sql index 70ac6e39..7b5ddbc9 100644 --- a/static/MySQL/deprecated/116_tbl_Shop_Product_Variation_Link.sql +++ b/static/MySQL/deprecated/116_tbl_Shop_Product_Variation_Link.sql @@ -26,7 +26,7 @@ CREATE TABLE IF NOT EXISTS Shop_Product_Variation_Link ( */ active BIT NOT NULL DEFAULT 1, display_order INT NOT NULL, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Product_Variation_Link_id_change_set diff --git a/static/MySQL/deprecated/128_tbl_Shop_Product_Delivery_Region_Link.sql b/static/MySQL/deprecated/128_tbl_Shop_Product_Delivery_Region_Link.sql index 1cb4d874..cc9873b5 100644 --- a/static/MySQL/deprecated/128_tbl_Shop_Product_Delivery_Region_Link.sql +++ b/static/MySQL/deprecated/128_tbl_Shop_Product_Delivery_Region_Link.sql @@ -23,7 +23,7 @@ CREATE TABLE IF NOT EXISTS Shop_Product_Delivery_Region_Link ( REFERENCES Shop_Delivery_Region(id_region) ON UPDATE RESTRICT, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_Product_Delivery_Region_Link_id_change_set diff --git a/static/MySQL/deprecated/170_ish_tbl_ERP_Order.sql b/static/MySQL/deprecated/170_ish_tbl_ERP_Order.sql index 87cd5430..a3855931 100644 --- a/static/MySQL/deprecated/170_ish_tbl_ERP_Order.sql +++ b/static/MySQL/deprecated/170_ish_tbl_ERP_Order.sql @@ -10,7 +10,7 @@ CREATE TABLE IF NOT EXISTS ERP_Order ( code VARCHAR(50), name VARCHAR(100), extension VARCHAR(50), - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_customer INT NOT NULL, CONSTRAINT FK_ERP_Order_id_customer diff --git a/static/MySQL/deprecated/171_tbl_Shop_User_Order.sql b/static/MySQL/deprecated/171_tbl_Shop_User_Order.sql index badaa665..081384ec 100644 --- a/static/MySQL/deprecated/171_tbl_Shop_User_Order.sql +++ b/static/MySQL/deprecated/171_tbl_Shop_User_Order.sql @@ -24,7 +24,7 @@ CREATE TABLE IF NOT EXISTS Shop_User_Order ( REFERENCES Shop_Currency(id_currency) ON UPDATE RESTRICT, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set_user INT, CONSTRAINT FK_Shop_User_Order_id_change_set_user diff --git a/static/MySQL/deprecated/173_tbl_Shop_User_Order_Product_Link.sql b/static/MySQL/deprecated/173_tbl_Shop_User_Order_Product_Link.sql index cd28af28..f2b8c2ed 100644 --- a/static/MySQL/deprecated/173_tbl_Shop_User_Order_Product_Link.sql +++ b/static/MySQL/deprecated/173_tbl_Shop_User_Order_Product_Link.sql @@ -24,7 +24,7 @@ CREATE TABLE IF NOT EXISTS Shop_User_Order_Product_Link ( ON UPDATE RESTRICT, quantity FLOAT NOT NULL, active BIT NOT NULL DEFAULT 1, - created_on TIMESTAMP, + created_on DATETIME, created_by INT, id_change_set INT, CONSTRAINT FK_Shop_User_Order_Product_Link_id_change_set diff --git a/static/MySQL/deprecated/7000_p_shop_get_many_role_permission.sql b/static/MySQL/deprecated/7000_p_shop_get_many_role_permission.sql index 43d0b02f..19ae066a 100644 --- a/static/MySQL/deprecated/7000_p_shop_get_many_role_permission.sql +++ b/static/MySQL/deprecated/7000_p_shop_get_many_role_permission.sql @@ -42,7 +42,7 @@ BEGIN DECLARE v_priority_admin INT; /* DECLARE v_ids_product_permission VARCHAR(500); - DECLARE v_now TIMESTAMP; + DECLARE v_now DATETIME; */ -- Parse arguments + get default values diff --git a/static/MySQL/deprecated/706_p_shop_get_product.sql b/static/MySQL/deprecated/706_p_shop_get_product.sql index 7c034293..6f7c0c86 100644 --- a/static/MySQL/deprecated/706_p_shop_get_product.sql +++ b/static/MySQL/deprecated/706_p_shop_get_product.sql @@ -40,7 +40,7 @@ BEGIN DECLARE v_ids_product_permission VARCHAR(500); DECLARE v_id_access_level_view INT; DECLARE v_has_filter_image BIT; - DECLARE v_now TIMESTAMP; + DECLARE v_now DATETIME; DECLARE v_id_minimum INT; DECLARE v_code_error_data VARCHAR(50); diff --git a/static/MySQL/deprecated/dump.sql b/static/MySQL/deprecated/dump.sql index 86b1b6de..e8d243df 100644 --- a/static/MySQL/deprecated/dump.sql +++ b/static/MySQL/deprecated/dump.sql @@ -4961,7 +4961,7 @@ BEGIN -- Argument redeclaration -- Variable declaration DECLARE v_has_filter_user BIT; - -- DECLARE v_now TIMESTAMP; + -- DECLARE v_now DATETIME; -- Argument validation + default values @@ -5137,7 +5137,7 @@ BEGIN # DECLARE v_id_user VARCHAR(100); DECLARE v_id_permission_product INT; DECLARE v_ids_permutation_permission VARCHAR(4000); - DECLARE v_now TIMESTAMP; + DECLARE v_now DATETIME; # DECLARE v_quantity_new INT; DECLARE v_change_set_used BIT; DECLARE v_id_change_set INT; @@ -5956,7 +5956,7 @@ BEGIN DECLARE v_ids_product_permission VARCHAR(4000); DECLARE v_ids_permutation_permission VARCHAR(4000); DECLARE v_id_access_level_view INT; - DECLARE v_now TIMESTAMP; + DECLARE v_now DATETIME; DECLARE v_id_minimum INT; SET v_guid := UUID(); @@ -7807,7 +7807,7 @@ BEGIN DECLARE v_priority_access_level_admin INT; DECLARE v_id_access_level INT; DECLARE v_priority_access_level INT; - DECLARE v_now TIMESTAMP; + DECLARE v_now DATETIME; DECLARE v_ids_row_delete VARCHAR(500); DECLARE v_code_error_data VARCHAR(200); DECLARE v_id_error_data INT; diff --git a/static/MySQL/deprecated/dump2.sql b/static/MySQL/deprecated/dump2.sql index 3fb5cd83..dead8d8b 100644 --- a/static/MySQL/deprecated/dump2.sql +++ b/static/MySQL/deprecated/dump2.sql @@ -4961,7 +4961,7 @@ BEGIN -- Argument redeclaration -- Variable declaration DECLARE v_has_filter_user BIT; - -- DECLARE v_now TIMESTAMP; + -- DECLARE v_now DATETIME; -- Argument validation + default values @@ -5137,7 +5137,7 @@ BEGIN # DECLARE v_id_user VARCHAR(100); DECLARE v_id_permission_product INT; DECLARE v_ids_permutation_permission VARCHAR(4000); - DECLARE v_now TIMESTAMP; + DECLARE v_now DATETIME; # DECLARE v_quantity_new INT; DECLARE v_change_set_used BIT; DECLARE v_id_change_set INT; @@ -5956,7 +5956,7 @@ BEGIN DECLARE v_ids_product_permission VARCHAR(4000); DECLARE v_ids_permutation_permission VARCHAR(4000); DECLARE v_id_access_level_view INT; - DECLARE v_now TIMESTAMP; + DECLARE v_now DATETIME; DECLARE v_id_minimum INT; SET v_guid := UUID(); @@ -7807,7 +7807,7 @@ BEGIN DECLARE v_priority_access_level_admin INT; DECLARE v_id_access_level INT; DECLARE v_priority_access_level INT; - DECLARE v_now TIMESTAMP; + DECLARE v_now DATETIME; DECLARE v_ids_row_delete VARCHAR(500); DECLARE v_code_error_data VARCHAR(200); DECLARE v_id_error_data INT; diff --git a/static/dist/js/main.bundle.js b/static/dist/js/main.bundle.js index b6ca1f58..4ccc5bf5 100644 --- a/static/dist/js/main.bundle.js +++ b/static/dist/js/main.bundle.js @@ -1,2 +1,2 @@ /*! For license information please see main.bundle.js.LICENSE.txt */ -(()=>{"use strict";(()=>{function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,t){for(var n=0;n0)if(r)t=!1;else if("string"!=typeof e[0])t=!1;else for(var n=0;n0)}},{key:"getDataContentType",value:function(t){var r=null,n="";return e.isEmpty(t)||("string"==typeof t?(r=t,n="application/x-www-form-urlencoded; charset=UTF-8"):(r=JSON.stringify(t),n="application/json; charset=UTF-8")),{Data:r,ContentType:n}}},{key:"arrayContainsItem",value:function(t,r){var n=!1;if(!e.isEmpty(t)&&!e.isEmpty(r))if(t[0]instanceof jQuery){for(var o=0;o=0;--i){var a=this.tryEntries[i],u=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var l=n.call(a,"catchLoc"),c=n.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),F(r),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;F(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:L(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),v}},t}function m(e,t,r,n,o,i,a){try{var u=e[i](a),l=u.value}catch(e){return void r(e)}u.done?t(l):Promise.resolve(l).then(n,o)}function k(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){m(i,n,o,a,u,"next",e)}function u(e){m(i,n,o,a,u,"throw",e)}a(void 0)}))}}function P(e,t){for(var r=0;r1&&void 0!==c[1]?c[1]:"GET",o=c.length>2&&void 0!==c[2]?c[2]:null,i=c.length>3&&void 0!==c[3]?c[3]:null,a=e.getUrlFromHash(r,i),u={method:n,headers:{"Content-Type":"application/json","X-CSRFToken":e.getCsrfToken()}},!o||"POST"!==n&&"PUT"!==n&&"PATCH"!==n||(u.body=JSON.stringify(o)),console.log("API request:",n,a,o),t.prev=7,t.next=10,fetch(a,u);case 10:if((l=t.sent).ok){t.next=13;break}throw new Error("HTTP error! status: ".concat(l.status));case 13:return t.next=15,l.json();case 15:return t.abrupt("return",t.sent);case 18:throw t.prev=18,t.t0=t.catch(7),console.error("API request failed:",t.t0),t.t0;case 22:case"end":return t.stop()}}),t,null,[[7,18]])}))),function(e){return g.apply(this,arguments)})},{key:"getUrlFromHash",value:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;null==t&&(t=hashPageHome),console.log("getUrlFromHash:"),console.log("base url: "+_pathHost+"\nhash: "+t+"\nparams: "+r);var n=e.parameteriseUrl(_pathHost+t,r);return console.log("url: "+n),n}},{key:"parameteriseUrl",value:function(e,t){return t&&(e+="?"+new URLSearchParams(t).toString()),e}},{key:"goToUrl",value:function(e){window.location.href=e}},{key:"goToHash",value:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=e.getUrlFromHash(t,r);e.goToUrl(n)}},{key:"loginUser",value:(v=k(b().mark((function t(){var r;return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(r={})[keyCallback]=l.getHashPageCurrent(),t.next=4,e.request(hashPageUserLogin,"POST",r);case 4:return t.abrupt("return",t.sent);case 5:case"end":return t.stop()}}),t)}))),function(){return v.apply(this,arguments)})},{key:"getCategories",value:(h=k(b().mark((function t(){return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.request(hashGetStoreProductCategory);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)}))),function(){return h.apply(this,arguments)})},{key:"getCategoriesByFilters",value:(y=k(b().mark((function t(r){return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.goToHash(hashPageStoreProductCategories,r);case 1:case"end":return t.stop()}}),t)}))),function(e){return y.apply(this,arguments)})},{key:"saveCategories",value:(d=k(b().mark((function t(r,n,o){var i;return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(i={})[flagFormFilters]=l.convertForm2JSON(n),i[flagProductCategory]=r,i[flagComment]=o,t.next=6,e.request(hashSaveStoreProductCategory,"POST",i);case 6:return t.abrupt("return",t.sent);case 7:case"end":return t.stop()}}),t)}))),function(e,t,r){return d.apply(this,arguments)})},{key:"getProducts",value:(p=k(b().mark((function t(){return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.request(hashGetStoreProduct);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)}))),function(){return p.apply(this,arguments)})},{key:"getProductsByFilters",value:(f=k(b().mark((function t(r){return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.goToHash(hashPageStoreProducts,r);case 1:case"end":return t.stop()}}),t)}))),function(e){return f.apply(this,arguments)})},{key:"saveProducts",value:(s=k(b().mark((function t(r,n,o){var i;return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(i={})[flagFormFilters]=l.convertForm2JSON(n),i[flagProduct]=r,i[flagComment]=o,t.next=6,e.request(hashSaveStoreProduct,"POST",i);case 6:return t.abrupt("return",t.sent);case 7:case"end":return t.stop()}}),t)}))),function(e,t,r){return s.apply(this,arguments)})},{key:"getProductPermutations",value:(c=k(b().mark((function t(){return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.request(hashGetStoreProductPermutation);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)}))),function(){return c.apply(this,arguments)})},{key:"getProductPermutationsByFilters",value:(u=k(b().mark((function t(r){return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.goToHash(hashPageStoreProductPermutations,r);case 1:case"end":return t.stop()}}),t)}))),function(e){return u.apply(this,arguments)})},{key:"saveProductPermutations",value:(a=k(b().mark((function t(r,n,o){var i;return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(i={})[flagFormFilters]=l.convertForm2JSON(n),i[flagProductPermutation]=r,i[flagComment]=o,t.next=6,e.request(hashSaveStoreProductPermutation,"POST",i);case 6:return t.abrupt("return",t.sent);case 7:case"end":return t.stop()}}),t)}))),function(e,t,r){return a.apply(this,arguments)})},{key:"getStockItems",value:(i=k(b().mark((function t(){return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.request(hashGetStoreStockItem);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)}))),function(){return i.apply(this,arguments)})},{key:"getStockItemsByFilters",value:(o=k(b().mark((function t(r){return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.goToHash(hashPageStoreStockItems,r);case 1:case"end":return t.stop()}}),t)}))),function(e){return o.apply(this,arguments)})},{key:"saveStockItems",value:(n=k(b().mark((function t(r,n,o){var i;return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(i={})[flagFormFilters]=l.convertForm2JSON(n),i[flagStockItem]=r,i[flagComment]=o,t.next=6,e.request(hashSaveStoreStockItem,"POST",i);case 6:return t.abrupt("return",t.sent);case 7:case"end":return t.stop()}}),t)}))),function(e,t,r){return n.apply(this,arguments)})}],r&&P(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,r,n,o,i,a,u,c,s,f,p,d,y,h,v,g}();function w(e){return w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},w(e)}function O(e,t){for(var r=0;r at "+r[keyPostcode]+"",document.querySelectorAll(idOverlayInfoBilling).css("display","none"),document.querySelectorAll(idOverlayInfoBilling).querySelector("form").classList.add(flagSubmitted)}else document.querySelectorAll(idContainerInfoDelivery).querySelector("div").innerHTML=""+r[keyNameFull]+" at "+r[keyPostcode]+"",document.querySelectorAll(idOverlayInfoDelivery).css("display","none"),document.querySelectorAll(idOverlayInfoDelivery).querySelector("form").classList.add(flagSubmitted)}},{key:"convertFormBilling2JSON",value:function(e,t){var r;r=document.querySelectorAll(t).querySelector("form"),r=document.querySelectorAll(idOverlayInfoDelivery).querySelector("form"),console.log("converting billing form to json\nform ID: "+r.id),e[keyForm]=convertForm2JSON(r);var n=[keyNameFull,keyPhoneNumber,keyPostcode,keyAddress1,keyAddress2,keyCity,keyCounty];for(var o in console.log("ajaxData:"),console.log(e),e[keyForm][keyInfoIdentical]=getElementValueCurrent(r.querySelector("#"+keyInfoIdentical)),n)t==idOverlayInfoBilling&&e[keyForm][keyInfoIdentical]?e[keyForm][n[o]]=getElementValueCurrent((void 0).querySelector("#"+n[o])):e[keyForm][n[o]]=getElementValueCurrent(r.querySelector("#"+n[o]));return console.log("ajaxData:"),console.log(e),e}},{key:"hookupButtonCheckoutSession",value:function(){var e=document.querySelectorAll(idButtonCheckout);e.classList.remove(flagInitialised),p.initialiseEventHandler(idButtonCheckout,flagInitialised,(function(){e.removeEventListener("click"),e.addEventListener("click",(function(e){var t=v.getLocalStorage(keyBasket),r={};r[keyBasket]=t,r=convertFormBilling2JSON(r,idOverlayInfoDelivery),(r=convertFormBilling2JSON(r,idOverlayInfoBilling))[key_code_currency]=getCurrencySelected(),ajaxJSONData("checkout session",mapHashToController(hashPageStoreCheckout),r,handleResponseCheckout,!1)}))}))}},{key:"handleResponseCheckout",value:function(e){window.location.href=e.data[keyUrlCheckout]}},{key:"hookupButtonFormBillingCopy",value:function(){p.initialiseEventHandler(idButtonFormBillingCopy,flagInitialised,(function(){document.querySelectorAll(idButtonFormBillingCopy).addEventListener("click",(function(e){var t=[keyNameFull,keyPhoneNumber,keyPostcode,keyAddress1,keyAddress2,keyCity,keyCounty],r=document.querySelectorAll(idOverlayInfoBilling).querySelector("form"),n=document.querySelectorAll(idOverlayInfoDelivery).querySelector("form");for(var o in t)r.querySelector("#"+t[o]).value=getElementValueCurrent(n.querySelector("#"+t[o]))}))}))}},{key:"leave",value:function(){!function(e,t,r){var n=Ge(Ke(e.prototype),"leave",r);return"function"==typeof n?function(e){return n.apply(r,e)}:n}(t,0,this)([])}}])}(F);function $e(e){return $e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$e(e)}function Ze(e,t){for(var r=0;r3&&void 0!==arguments[3]?arguments[3]:null;return{text:e[t],value:e[r],selected:e[r]==n}}},{key:"getOptionJsonFromObjectJson",value:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=t[flagNameAttrOptionText],o=t[flagNameAttrOptionValue];return console.log({objectJson:t,keyText:n,keyValue:o}),e.getOptionJsonFromObjectJsonAndKeys(t,n,o,r)}}])}();function ft(e){return ft="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ft(e)}function pt(e,t){for(var r=0;r1&&void 0!==arguments[1]&&arguments[1];if(arguments.length>0&&void 0!==arguments[0]&&arguments[0]){var o=this.getLocalStoragePage()[flagFormFilters],i=this.getFormFilters(),a=l.convertForm2JSON(i);n.areEqualDicts(o,a)||this.callFilterTableContent(o)}else Ot(t,"sharedInitialize",this,3)([]),this.hookupFilters(),this.hookupButtonsAddSaveCancel(),this.hookupTableMain(),T.hookup((function(){r?e.saveRecordsTableDirtySinglePageApp():e.saveRecordsTableDirty()}))}},{key:"hookupFilters",value:function(){if(this.constructor===t)throw new Error("Subclass of TableBasePage must implement method hookupFilters().")}},{key:"sharedHookupFilters",value:function(){this.hookupButtonApplyFilters()}},{key:"hookupFilterActive",value:function(){this.hookupFilter(flagActive)}},{key:"hookupFilter",value:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e,r){return t.isDirtyFilter(r)},n=idFormFilters+" ."+e;this.hookupEventHandler("change",n,r)}},{key:"hookupFilterIsNotEmpty",value:function(){this.hookupFilter(flagIsNotEmpty)}},{key:"hookupButtonApplyFilters",value:function(){var e=this;this.hookupEventHandler("click",idButtonApplyFilters,(function(t,r){t.stopPropagation(),e.getAndLoadFilteredTableContent()}))}},{key:"getAndLoadFilteredTableContent",value:function(){var e=this.getFormFilters(),t=l.convertForm2JSON(e);this.leave(),this.callFilterTableContent(t).catch((function(e){return console.error("Error:",e)}))}},{key:"getFormFilters",value:function(){return document.querySelector(idFormFilters)}},{key:"callbackLoadTableContent",value:function(e){this.getTableMain().querySelector("tbody").querySelectorAll("tr").forEach((function(e){e.remove()}));var t=e.data[flagRows];!n.isEmpty(t)&&t.every((function(e){return e.hasOwnProperty("display_order")}))&&(t=t.sort((function(e,t){return e.display_order-t.display_order}))),t.forEach(this.loadRowTable.bind(this)),this.hookupTableMain()}},{key:"getTableMain",value:function(){return document.querySelector(idTableMain)}},{key:"loadRowTable",value:function(e){throw new Error("Subclass of TableBasePage must implement method loadRowTable().")}},{key:"getAndLoadFilteredTableContentSinglePageApp",value:function(){var e=this,t=this.getFormFilters(),r=l.convertForm2JSON(t);this.callFilterTableContent(r).then((function(t){console.log("Table data received:",t),e.callbackLoadTableContent(t)})).catch((function(e){return console.error("Error:",e)}))}},{key:"hookupButtonsAddSaveCancel",value:function(){this.hookupButtonAddRowTable(),this.hookupButtonSave(),this.hookupButtonCancel(),this.toggleShowButtonsSaveCancel(!1)}},{key:"saveRecordsTableDirty",value:function(){var e=this,t=this.getTableRecords(!0);if(0!=t.length){var r=this.getFormFilters(),n=l.getElementValueCurrent(document.querySelector(idTextareaConfirm));this.callSaveTableContent(t,r,n).then((function(t){t[flagStatus]==flagSuccess?(console.log("Records saved!"),console.log("Data received:",t),e.getAndLoadFilteredTableContent()):(console.log("error: ",t[flagMessage]),bt.show(t[flagMessage]))})).catch((function(e){return console.error("Error:",e)}))}else bt.show("No records to save")}},{key:"getTableRecords",value:function(){var e,t=this,r=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=this.getTableMain(),o=[];return n.querySelectorAll("tbody tr").forEach((function(n){r&&!n.classList.contains(flagDirty)||(e=t.getJsonRow(n),o.push(e))})),o}},{key:"getJsonRow",value:function(e){throw new Error("Subclass of TableBasePage must implement method getJsonRow().")}},{key:"saveRecordsTableDirtySinglePageApp",value:function(){var e=this,t=this.getTableRecords(!0);if(0!=t.length){var r=this.getFormFilters(),n=l.getElementValueCurrent(document.querySelector(idTextareaConfirm));this.callSaveTableContent(t,r,n).then((function(t){t[flagStatus]==flagSuccess?(console.log("Records saved!"),console.log("Data received:",t),e.callbackLoadTableContent(t)):(console.log("error: ",t[flagMessage]),bt.show(t[flagMessage]))})).catch((function(e){return console.error("Error:",e)}))}else bt.show("No records to save")}},{key:"hookupButtonCancel",value:function(){p.initialiseEventHandler(idFormFilters+" button."+flagCancel,flagInitialised,(function(e){e.addEventListener("click",(function(e){e.stopPropagation(),getAndLoadFilteredTableContent()})),e.classList.add(flagCollapsed)}))}},{key:"hookupButtonAddRowTable",value:function(){var e=this;this.hookupEventHandler("click",idFormFilters+" button."+flagAdd,(function(t,r){t.stopPropagation();var n=document.querySelector(idTableMain+" tbody"),o=_rowBlank.cloneNode(!0);o.classList.remove(flagInitialised),o.querySelectorAll("."+flagInitialised).forEach((function(e){e.classList.remove(flagInitialised)})),e.initialiseRowNew(o),n.appendChild(o),e.hookupTableMain()}))}},{key:"initialiseRowNew",value:function(e){if(this.constructor===t)throw new Error("Subclass of TableBasePage must implement method initialiseRowNew().");e.classList.remove(flagRowNew)}},{key:"hookupTableMain",value:function(){var e=this;if(this.constructor===t)throw new Error("Must implement hookupTableMain() method.");p.initialiseEventHandler(idTableMain,flagInitialised,(function(t){e.cacheRowBlank()}))}},{key:"cacheRowBlank",value:function(){var e=idTableMain+" tbody tr."+flagRowNew,t=document.querySelector(e);console.log("row blank temp: ",t),_rowBlank=t.cloneNode(!0),document.querySelectorAll(e).forEach((function(e){e.remove()}))}},{key:"hookupSlidersDisplayOrderTable",value:function(){var e=idTableMain+" tbody tr td."+flagDisplayOrder+" input."+flagSlider+"."+flagDisplayOrder;this.hookupChangeHandlerTableCells(e)}},{key:"hookupChangeHandlerTableCells",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e,r){t.handleChangeElementCellTable(e,r)};p.initialiseEventHandler(e,flagInitialised,(function(e){e.addEventListener("change",(function(t){r(t,e)})),t.handleChangeElementCellTable(null,e)}))}},{key:"handleChangeElementCellTable",value:function(e,t){var r=l.getRowFromElement(t),n=l.getCellFromElement(t),o=l.hasDirtyChildrenContainer(r),i=t.classList.contains(flagDirty),a=l.updateAndCheckIsElementDirty(t);if(a!=i){l.handleDirtyElement(n,a);var u=l.hasDirtyChildrenContainer(r);if(u!=o){l.handleDirtyElement(r,u);var c=this.getTableRecords(!0).length>0;this.toggleShowButtonsSaveCancel(c)}}}},{key:"hookupChangeHandlerTableCellsWhenNotCollapsed",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e,r){r.classList.contains(flagCollapsed)||t.handleChangeElementCellTable(e,r)};this.hookupEventHandler("change",e,r)}},{key:"hookupTextareasCodeTable",value:function(){this.hookupChangeHandlerTableCells(idTableMain+" tbody tr td."+flagCode+" textarea")}},{key:"hookupTextareasNameTable",value:function(){this.hookupChangeHandlerTableCells(idTableMain+" tbody tr td."+flagName+" textarea")}},{key:"hookupTextareasDescriptionTable",value:function(){this.hookupChangeHandlerTableCells(idTableMain+" tbody tr td."+flagDescription+" textarea")}},{key:"hookupInputsActiveTable",value:function(){this.hookupChangeHandlerTableCells(idTableMain+" tbody tr td."+flagActive+' input[type="checkbox"]')}},{key:"hookupTdsAccessLevel",value:function(){var e=idTableMain+" tbody td."+flagAccessLevel;this.hookupTableCellDdlPreviews(e,yt.getListFromDict(accessLevels))}},{key:"hookupTableCellDdlPreviews",value:function(e,t){var r=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(e,t){r.hookupTableCellDdls(e,t)};this.hookupEventHandler("click",e,(function(o,i){r.handleClickTableCellDdlPreview(o,i,t,e,(function(e,t){n(e,t)}))}))}},{key:"hookupTableCellDdls",value:function(e){var t=this;this.hookupEventHandler("change",e,(function(e,r){t.handleChangeTableCellDdl(e,r)}))}},{key:"handleClickTableCellDdlPreview",value:function(e,t,r,n){var o=this,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(e,t){o.hookupTableCellDdls(e,t)};if(!t.querySelector("select")){console.log("click table cell ddl preview");var a=t.cloneNode(!0);t.parentNode.replaceChild(a,t);var u=a.getAttribute(attrValueCurrent);a.innerHTML="";var c,s,f=document.createElement("select");l.setElementValuesCurrentAndPrevious(f,l.getElementAttributeValueCurrent(a)),console.log({optionObjectList:r,cellSelector:n}),r.forEach((function(e){c=st.getOptionJsonFromObjectJson(e,u),s=l.createOption(c),f.appendChild(s)})),a.appendChild(f),i(n+" select")}}},{key:"handleChangeTableCellDdl",value:function(e,t){var r=l.getRowFromElement(t),n=l.getCellFromElement(t);console.log("td: ",n);var o=l.hasDirtyChildrenContainer(r),i=t.classList.contains(flagDirty),a=l.updateAndCheckIsElementDirty(t);if(console.log("isDirtyElement: ",a),console.log("wasDirtyElement: ",i),a!=i){l.handleDirtyElement(n,a);var u=t.options[t.selectedIndex];l.setElementAttributeValueCurrent(n,u.value);var c=l.hasDirtyChildrenContainer(r);if(console.log("isNowDirtyRow: ",c),console.log("wasDirtyRow: ",o),c!=o){l.handleDirtyElement(r,c);var s=this.getTableRecords(!0),f=s.length>0;console.log("dirty records:",s),console.log("existsDirtyRecord:",f),this.toggleShowButtonsSaveCancel(f)}}}},{key:"hookupTableCellDDlPreviewsWhenNotCollapsed",value:function(e,t){var r=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(e,t){r.hookupTableCellDdls(e,t)};this.hookupEventHandler("click",e,(function(o,i){var a=i.querySelector("div");a&&!a.classList.contains(flagCollapsed)&&r.handleClickTableCellDdlPreview(o,i,t,e,(function(e,t){n(e,t)}))}))}},{key:"hookupProductPermutationVariationFields",value:function(){var e=this;this.hookupEventHandler("click",idTableMain+" td."+flagProductVariations,(function(t,r){return e.handleClickProductPermutationVariationsPreview(t,r)}))}},{key:"handleClickProductPermutationVariationsPreview",value:function(e,t){var r=this;console.log("click product permutation variations preview"),this.toggleColumnCollapsed(flagProductVariations,!1);var o=this.getElementProductVariations(t),i=document.createElement("table");i.classList.add(flagProductVariations);var a=document.createElement("thead"),u=document.createElement("tr"),l=document.createElement("th");l.textContent="Type";var c=document.createElement("th");c.textContent="Name";var s=document.createElement("button");s.classList.add(flagAdd),s.textContent="+";var f=document.createElement("th");f.appendChild(s),u.appendChild(l),u.appendChild(c),u.appendChild(f),a.appendChild(u),i.appendChild(a);var p=document.createElement("tbody");console.log("variations:",o),n.isEmpty(o)?o=[PageStoreProductPermutations.createOptionUnselectedProductVariation()]:o.forEach((function(e,t){r.addProductPermutationVariationRow(p,e)})),i.appendChild(p);var d=t.parentElement;d.innerHTML="",d.appendChild(i),console.log("tblVariations: ",i);var y=idTableMain+" td."+flagProductVariations+" button."+flagAdd;this.hookupEventHandler("click",y,this.handleClickButtonProductPermutationVariationsAdd);var h=idTableMain+" td."+flagProductVariations+" button."+flagDelete;this.hookupEventHandler("click",h,this.handleClickButtonProductPermutationVariationsDelete)}},{key:"toggleColumnCollapsed",value:function(e,t){this.toggleColumnHasClassnameFlag(e,t,flagCollapsed)}},{key:"getElementProductVariations",value:function(e){var t,r,o,i=e.getAttribute(attrValueCurrent),a=[];return n.isEmpty(i)||(i=i.split(",")).forEach((function(e){2==(t=e.split(":")).length?(console.log("parts: ",t),o=productVariationTypes[t[0].trim()],r=productVariations[t[1].trim()],a.push(kt(kt({},flagProductVariationType,o),flagProductVariation,r))):console.log("error: invalid variation: ",e)})),a}},{key:"addProductPermutationVariationRow",value:function(e,t){var r,n,o,i,a,u,c=Object.keys(productVariations),s=Object.keys(productVariationTypes);console.log("permutationVariation: ",t);var f=t[flagProductVariation],p=t[flagProductVariationType],d=document.createElement("td");d.classList.add(flagProductVariationType),l.setElementAttributesValuesCurrentAndPrevious(d,p[attrIdProductVariationType]);var y=document.createElement("select");y.classList.add(flagProductVariationType),l.setElementAttributesValuesCurrentAndPrevious(y,p[attrIdProductVariationType]),o=l.createOption(null),console.log("optionProductVariationType: ",o),y.appendChild(o),s.forEach((function(e){r=productVariationTypes[e],n=st.getOptionJsonFromObjectJson(r,p[attrIdProductVariationType]),o=l.createOption(n),console.log("optionProductVariationType: ",o),y.appendChild(o)}));var h=document.createElement("td");h.classList.add(flagProductVariation),l.setElementAttributesValuesCurrentAndPrevious(h,f[attrIdProductVariation]);var v=document.createElement("select");v.classList.add(flagProductVariation),l.setElementAttributesValuesCurrentAndPrevious(v,f[attrIdProductVariation]),u=l.createOption(null),console.log("optionProductVariation: ",u),v.appendChild(u),c.forEach((function(e){i=productVariations[e],a=st.getOptionJsonFromObjectJson(i,f[attrIdProductVariation]),u=l.createOption(a),console.log("optionProductVariation: ",u),v.appendChild(u)}));var g=document.createElement("td");g.classList.add(flagDelete);var b=document.createElement("button");b.classList.add(flagDelete),b.textContent="x";var m=document.createElement("tr");d.appendChild(y),m.appendChild(d),h.appendChild(v),m.appendChild(h),g.appendChild(b),m.appendChild(g),e.appendChild(m)}},{key:"handleClickButtonProductPermutationVariationsDelete",value:function(e,t){var r=getRowFromElement(t),n=r.closest("td."+flagProductVariations);r.remove(),this.updateProductPermutationVariations(n)}},{key:"updateProductPermutationVariations",value:function(e){var t=this.getProductPermutationVariationsText(e);e.setAttribute(attrValueCurrent,t),l.isElementDirty(e)}},{key:"getProductPermutationVariationsText",value:function(e){var t,r,n,o,i=e.querySelectorAll("tr"),a="";return i.forEach((function(e,i){t=e.querySelector("td select."+flagProductVariationType),r=e.querySelector("td select."+flagProductVariation),n=t.getAttribute(attrValueCurrent),o=r.getAttribute(attrValueCurrent),a+=n+":"+o+","})),a}},{key:"leave",value:function(){if(this.constructor===t)throw new Error("Must implement leave() method.");Ot(t,"leave",this,3)([]);var e=this.getFormFilters(),r={};r[flagFormFilters]=l.convertForm2JSON(e),this.setLocalStoragePage(r)}},{key:"toggleColumnHasClassnameFlag",value:function(e,t,r){var n=this.getTableMain(),o=n.querySelector("th."+e),i=o.classList.contains(r);if(t!=i){var a=n.querySelectorAll("td."+e);l.toggleElementHasClassnameFlag(o,t,r),a.forEach((function(e){l.toggleElementHasClassnameFlag(e,t,r)}))}}}],[{key:"isDirtyFilter",value:function(e){var t=l.updateAndCheckIsElementDirty(e);if(t){var r=document.querySelector(idTableMain+" tbody");r.querySelectorAll("tr").remove(),r.appendChild(document.createElement('
Press "Apply Filters" to refresh the table.
'))}return t}},{key:"createOptionUnselectedProductVariation",value:function(){return kt(kt({},flagProductVariationType,kt(kt(kt(kt({},flagNameAttrOptionText,[flagName]),flagNameAttrOptionValue,[attrIdProductVariationType]),flagName,"Select Variation Type"),attrIdProductVariationType,0)),flagProductVariation,kt(kt(kt(kt({},flagNameAttrOptionText,[flagName]),flagNameAttrOptionValue,[attrIdProductVariation]),flagName,"Select Variation"),attrIdProductVariation,0))}}])}(F);function At(e){return At="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},At(e)}function Ft(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return Dt(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Dt(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function Dt(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageHome,e)},this.routes[hashPageContact]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageContact,e)},this.routes[hashPageServices]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageServices,e)},this.routes[hashPageAdminHome]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageAdminHome,e)},this.routes[hashPageAccessibilityStatement]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageAccessibilityStatement,e)},this.routes[hashPageDataRetentionSchedule]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageDataRetentionSchedule,e)},this.routes[hashPageLicense]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageLicense,e)},this.routes[hashPagePrivacyPolicy]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPagePrivacyPolicy,e)},this.routes[hashPageStoreProductCategories]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageStoreProductCategories,e)},this.routes[hashPageStoreProductPermutations]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageStoreProductPermutations,e)},this.routes[hashPageStoreProducts]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageStoreProducts,e)},this.routes[hashPageStoreStockItems]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageStoreStockItems,e)},this.initialize()}),[{key:"loadPage",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.getClassPageFromHash(e);this.currentPage=new n(this),this.currentPage.initialize(r),window.addEventListener("beforeunload",(function(){return t.currentPage.leave()}))}},{key:"getClassPageFromHash",value:function(e){var t=this.pages[e];try{return t.module}catch(t){throw console.log("this.pages: ",this.pages),console.error("Page not found:",e),t}}},{key:"initialize",value:function(){window.addEventListener("popstate",this.handlePopState.bind(this))}},{key:"handlePopState",value:function(e){this.loadPageCurrent()}},{key:"loadPageCurrent",value:function(){var e=l.getHashPageCurrent();this.loadPage(e)}},{key:"navigateToHash",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=C.getUrlFromHash(e,r);history.pushState({data:t,params:r},"",e),C.goToUrl(n,t)}},{key:"navigateToUrl",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;(!(arguments.length>2&&void 0!==arguments[2])||arguments[2])&&history.pushState(t,"",e),e=C.parameteriseUrl(e,t),C.goToUrl(e)}}],[{key:"loadPageBodyFromResponse",value:function(e){console.log(e.data),l.loadPageBody(e.data)}}])}();function un(e){return un="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},un(e)}function ln(e,t){for(var r=0;r{"use strict";(()=>{function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,t){for(var n=0;n0)if(r)t=!1;else if("string"!=typeof e[0])t=!1;else for(var n=0;n0)}},{key:"getDataContentType",value:function(t){var r=null,n="";return e.isEmpty(t)||("string"==typeof t?(r=t,n="application/x-www-form-urlencoded; charset=UTF-8"):(r=JSON.stringify(t),n="application/json; charset=UTF-8")),{Data:r,ContentType:n}}},{key:"arrayContainsItem",value:function(t,r){var n=!1;if(!e.isEmpty(t)&&!e.isEmpty(r))if(t[0]instanceof jQuery){for(var o=0;o=0;--i){var a=this.tryEntries[i],u=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var l=n.call(a,"catchLoc"),c=n.call(a,"finallyLoc");if(l&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),F(r),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;F(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:L(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),v}},t}function m(e,t,r,n,o,i,a){try{var u=e[i](a),l=u.value}catch(e){return void r(e)}u.done?t(l):Promise.resolve(l).then(n,o)}function k(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){m(i,n,o,a,u,"next",e)}function u(e){m(i,n,o,a,u,"throw",e)}a(void 0)}))}}function P(e,t){for(var r=0;r1&&void 0!==c[1]?c[1]:"GET",o=c.length>2&&void 0!==c[2]?c[2]:null,i=c.length>3&&void 0!==c[3]?c[3]:null,a=e.getUrlFromHash(r,i),u={method:n,headers:{"Content-Type":"application/json","X-CSRFToken":e.getCsrfToken()}},!o||"POST"!==n&&"PUT"!==n&&"PATCH"!==n||(u.body=JSON.stringify(o)),console.log("API request:",n,a,o),t.prev=7,t.next=10,fetch(a,u);case 10:if((l=t.sent).ok){t.next=13;break}throw new Error("HTTP error! status: ".concat(l.status));case 13:return t.next=15,l.json();case 15:return t.abrupt("return",t.sent);case 18:throw t.prev=18,t.t0=t.catch(7),console.error("API request failed:",t.t0),t.t0;case 22:case"end":return t.stop()}}),t,null,[[7,18]])}))),function(e){return g.apply(this,arguments)})},{key:"getUrlFromHash",value:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;null==t&&(t=hashPageHome),console.log("getUrlFromHash:"),console.log("base url: "+_pathHost+"\nhash: "+t+"\nparams: "+r);var n=e.parameteriseUrl(_pathHost+t,r);return console.log("url: "+n),n}},{key:"parameteriseUrl",value:function(e,t){return t&&(e+="?"+new URLSearchParams(t).toString()),e}},{key:"goToUrl",value:function(e){window.location.href=e}},{key:"goToHash",value:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=e.getUrlFromHash(t,r);e.goToUrl(n)}},{key:"loginUser",value:(v=k(b().mark((function t(){var r;return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(r={})[flagCallback]=l.getHashPageCurrent(),t.next=4,e.request(hashPageUserLogin,"POST",r);case 4:return t.abrupt("return",t.sent);case 5:case"end":return t.stop()}}),t)}))),function(){return v.apply(this,arguments)})},{key:"getCategories",value:(h=k(b().mark((function t(){return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.request(hashGetStoreProductCategory);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)}))),function(){return h.apply(this,arguments)})},{key:"getCategoriesByFilters",value:(y=k(b().mark((function t(r){return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.goToHash(hashPageStoreProductCategories,r);case 1:case"end":return t.stop()}}),t)}))),function(e){return y.apply(this,arguments)})},{key:"saveCategories",value:(d=k(b().mark((function t(r,n,o){var i;return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(i={})[flagFormFilters]=l.convertForm2JSON(n),i[flagProductCategory]=r,i[flagComment]=o,t.next=6,e.request(hashSaveStoreProductCategory,"POST",i);case 6:return t.abrupt("return",t.sent);case 7:case"end":return t.stop()}}),t)}))),function(e,t,r){return d.apply(this,arguments)})},{key:"getProducts",value:(p=k(b().mark((function t(){return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.request(hashGetStoreProduct);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)}))),function(){return p.apply(this,arguments)})},{key:"getProductsByFilters",value:(f=k(b().mark((function t(r){return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.goToHash(hashPageStoreProducts,r);case 1:case"end":return t.stop()}}),t)}))),function(e){return f.apply(this,arguments)})},{key:"saveProducts",value:(s=k(b().mark((function t(r,n,o){var i;return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(i={})[flagFormFilters]=l.convertForm2JSON(n),i[flagProduct]=r,i[flagComment]=o,t.next=6,e.request(hashSaveStoreProduct,"POST",i);case 6:return t.abrupt("return",t.sent);case 7:case"end":return t.stop()}}),t)}))),function(e,t,r){return s.apply(this,arguments)})},{key:"getProductPermutations",value:(c=k(b().mark((function t(){return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.request(hashGetStoreProductPermutation);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)}))),function(){return c.apply(this,arguments)})},{key:"getProductPermutationsByFilters",value:(u=k(b().mark((function t(r){return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.goToHash(hashPageStoreProductPermutations,r);case 1:case"end":return t.stop()}}),t)}))),function(e){return u.apply(this,arguments)})},{key:"saveProductPermutations",value:(a=k(b().mark((function t(r,n,o){var i;return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(i={})[flagFormFilters]=l.convertForm2JSON(n),i[flagProductPermutation]=r,i[flagComment]=o,t.next=6,e.request(hashSaveStoreProductPermutation,"POST",i);case 6:return t.abrupt("return",t.sent);case 7:case"end":return t.stop()}}),t)}))),function(e,t,r){return a.apply(this,arguments)})},{key:"getStockItems",value:(i=k(b().mark((function t(){return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.request(hashGetStoreStockItem);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)}))),function(){return i.apply(this,arguments)})},{key:"getStockItemsByFilters",value:(o=k(b().mark((function t(r){return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.goToHash(hashPageStoreStockItems,r);case 1:case"end":return t.stop()}}),t)}))),function(e){return o.apply(this,arguments)})},{key:"saveStockItems",value:(n=k(b().mark((function t(r,n,o){var i;return b().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(i={})[flagFormFilters]=l.convertForm2JSON(n),i[flagStockItem]=r,i[flagComment]=o,t.next=6,e.request(hashSaveStoreStockItem,"POST",i);case 6:return t.abrupt("return",t.sent);case 7:case"end":return t.stop()}}),t)}))),function(e,t,r){return n.apply(this,arguments)})}],r&&P(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,r,n,o,i,a,u,c,s,f,p,d,y,h,v,g}();function w(e){return w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},w(e)}function O(e,t){for(var r=0;r at "+r[keyPostcode]+"",document.querySelectorAll(idOverlayInfoBilling).css("display","none"),document.querySelectorAll(idOverlayInfoBilling).querySelector("form").classList.add(flagSubmitted)}else document.querySelectorAll(idContainerInfoDelivery).querySelector("div").innerHTML=""+r[keyNameFull]+" at "+r[keyPostcode]+"",document.querySelectorAll(idOverlayInfoDelivery).css("display","none"),document.querySelectorAll(idOverlayInfoDelivery).querySelector("form").classList.add(flagSubmitted)}},{key:"convertFormBilling2JSON",value:function(e,t){var r;r=document.querySelectorAll(t).querySelector("form"),r=document.querySelectorAll(idOverlayInfoDelivery).querySelector("form"),console.log("converting billing form to json\nform ID: "+r.id),e[flagForm]=convertForm2JSON(r);var n=[keyNameFull,keyPhoneNumber,keyPostcode,keyAddress1,keyAddress2,keyCity,keyCounty];for(var o in console.log("ajaxData:"),console.log(e),e[flagForm][keyInfoIdentical]=getElementValueCurrent(r.querySelector("#"+keyInfoIdentical)),n)t==idOverlayInfoBilling&&e[flagForm][keyInfoIdentical]?e[flagForm][n[o]]=getElementValueCurrent((void 0).querySelector("#"+n[o])):e[flagForm][n[o]]=getElementValueCurrent(r.querySelector("#"+n[o]));return console.log("ajaxData:"),console.log(e),e}},{key:"hookupButtonCheckoutSession",value:function(){var e=document.querySelectorAll(idButtonCheckout);e.classList.remove(flagInitialised),p.initialiseEventHandler(idButtonCheckout,flagInitialised,(function(){e.removeEventListener("click"),e.addEventListener("click",(function(e){var t=v.getLocalStorage(keyBasket),r={};r[keyBasket]=t,r=convertFormBilling2JSON(r,idOverlayInfoDelivery),(r=convertFormBilling2JSON(r,idOverlayInfoBilling))[key_code_currency]=getCurrencySelected(),ajaxJSONData("checkout session",mapHashToController(hashPageStoreCheckout),r,handleResponseCheckout,!1)}))}))}},{key:"handleResponseCheckout",value:function(e){window.location.href=e.data[keyUrlCheckout]}},{key:"hookupButtonFormBillingCopy",value:function(){p.initialiseEventHandler(idButtonFormBillingCopy,flagInitialised,(function(){document.querySelectorAll(idButtonFormBillingCopy).addEventListener("click",(function(e){var t=[keyNameFull,keyPhoneNumber,keyPostcode,keyAddress1,keyAddress2,keyCity,keyCounty],r=document.querySelectorAll(idOverlayInfoBilling).querySelector("form"),n=document.querySelectorAll(idOverlayInfoDelivery).querySelector("form");for(var o in t)r.querySelector("#"+t[o]).value=getElementValueCurrent(n.querySelector("#"+t[o]))}))}))}},{key:"leave",value:function(){!function(e,t,r){var n=Ge(Ke(e.prototype),"leave",r);return"function"==typeof n?function(e){return n.apply(r,e)}:n}(t,0,this)([])}}])}(F);function $e(e){return $e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$e(e)}function Ze(e,t){for(var r=0;r3&&void 0!==arguments[3]?arguments[3]:null;return{text:e[t],value:e[r],selected:e[r]==n}}},{key:"getOptionJsonFromObjectJson",value:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=t[flagNameAttrOptionText],o=t[flagNameAttrOptionValue];return console.log({objectJson:t,keyText:n,keyValue:o}),e.getOptionJsonFromObjectJsonAndKeys(t,n,o,r)}}])}();function ft(e){return ft="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ft(e)}function pt(e,t){for(var r=0;r1&&void 0!==arguments[1]&&arguments[1];if(arguments.length>0&&void 0!==arguments[0]&&arguments[0]){var o=this.getLocalStoragePage()[flagFormFilters],i=this.getFormFilters(),a=l.convertForm2JSON(i);n.areEqualDicts(o,a)||this.callFilterTableContent(o)}else Ot(t,"sharedInitialize",this,3)([]),this.hookupFilters(),this.hookupButtonsAddSaveCancel(),this.hookupTableMain(),T.hookup((function(){r?e.saveRecordsTableDirtySinglePageApp():e.saveRecordsTableDirty()}))}},{key:"hookupFilters",value:function(){if(this.constructor===t)throw new Error("Subclass of TableBasePage must implement method hookupFilters().")}},{key:"sharedHookupFilters",value:function(){this.hookupButtonApplyFilters()}},{key:"hookupFilterActive",value:function(){this.hookupFilter(flagActive)}},{key:"hookupFilter",value:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e,r){return t.isDirtyFilter(r)},n=idFormFilters+" ."+e;this.hookupEventHandler("change",n,r)}},{key:"hookupFilterIsNotEmpty",value:function(){this.hookupFilter(flagIsNotEmpty)}},{key:"hookupButtonApplyFilters",value:function(){var e=this;this.hookupEventHandler("click",idButtonApplyFilters,(function(t,r){t.stopPropagation(),e.getAndLoadFilteredTableContent()}))}},{key:"getAndLoadFilteredTableContent",value:function(){var e=this.getFormFilters(),t=l.convertForm2JSON(e);this.leave(),this.callFilterTableContent(t).catch((function(e){return console.error("Error:",e)}))}},{key:"getFormFilters",value:function(){return document.querySelector(idFormFilters)}},{key:"callbackLoadTableContent",value:function(e){this.getTableMain().querySelector("tbody").querySelectorAll("tr").forEach((function(e){e.remove()}));var t=e.data[flagRows];!n.isEmpty(t)&&t.every((function(e){return e.hasOwnProperty("display_order")}))&&(t=t.sort((function(e,t){return e.display_order-t.display_order}))),t.forEach(this.loadRowTable.bind(this)),this.hookupTableMain()}},{key:"getTableMain",value:function(){return document.querySelector(idTableMain)}},{key:"loadRowTable",value:function(e){throw new Error("Subclass of TableBasePage must implement method loadRowTable().")}},{key:"getAndLoadFilteredTableContentSinglePageApp",value:function(){var e=this,t=this.getFormFilters(),r=l.convertForm2JSON(t);this.callFilterTableContent(r).then((function(t){console.log("Table data received:",t),e.callbackLoadTableContent(t)})).catch((function(e){return console.error("Error:",e)}))}},{key:"hookupButtonsAddSaveCancel",value:function(){this.hookupButtonAddRowTable(),this.hookupButtonSave(),this.hookupButtonCancel(),this.toggleShowButtonsSaveCancel(!1)}},{key:"saveRecordsTableDirty",value:function(){var e=this,t=this.getTableRecords(!0);if(0!=t.length){var r=this.getFormFilters(),n=l.getElementValueCurrent(document.querySelector(idTextareaConfirm));this.callSaveTableContent(t,r,n).then((function(t){t[flagStatus]==flagSuccess?(console.log("Records saved!"),console.log("Data received:",t),e.getAndLoadFilteredTableContent()):(console.log("error: ",t[flagMessage]),bt.show(t[flagMessage]))})).catch((function(e){return console.error("Error:",e)}))}else bt.show("No records to save")}},{key:"getTableRecords",value:function(){var e,t=this,r=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=this.getTableMain(),o=[];return n.querySelectorAll("tbody tr").forEach((function(n){r&&!n.classList.contains(flagDirty)||(e=t.getJsonRow(n),o.push(e))})),o}},{key:"getJsonRow",value:function(e){throw new Error("Subclass of TableBasePage must implement method getJsonRow().")}},{key:"saveRecordsTableDirtySinglePageApp",value:function(){var e=this,t=this.getTableRecords(!0);if(0!=t.length){var r=this.getFormFilters(),n=l.getElementValueCurrent(document.querySelector(idTextareaConfirm));this.callSaveTableContent(t,r,n).then((function(t){t[flagStatus]==flagSuccess?(console.log("Records saved!"),console.log("Data received:",t),e.callbackLoadTableContent(t)):(console.log("error: ",t[flagMessage]),bt.show(t[flagMessage]))})).catch((function(e){return console.error("Error:",e)}))}else bt.show("No records to save")}},{key:"hookupButtonCancel",value:function(){p.initialiseEventHandler(idFormFilters+" button."+flagCancel,flagInitialised,(function(e){e.addEventListener("click",(function(e){e.stopPropagation(),getAndLoadFilteredTableContent()})),e.classList.add(flagCollapsed)}))}},{key:"hookupButtonAddRowTable",value:function(){var e=this;this.hookupEventHandler("click",idFormFilters+" button."+flagAdd,(function(t,r){t.stopPropagation();var n=document.querySelector(idTableMain+" tbody"),o=_rowBlank.cloneNode(!0);o.classList.remove(flagInitialised),o.querySelectorAll("."+flagInitialised).forEach((function(e){e.classList.remove(flagInitialised)})),e.initialiseRowNew(o),n.appendChild(o),e.hookupTableMain()}))}},{key:"initialiseRowNew",value:function(e){if(this.constructor===t)throw new Error("Subclass of TableBasePage must implement method initialiseRowNew().");e.classList.remove(flagRowNew)}},{key:"hookupTableMain",value:function(){var e=this;if(this.constructor===t)throw new Error("Must implement hookupTableMain() method.");p.initialiseEventHandler(idTableMain,flagInitialised,(function(t){e.cacheRowBlank()}))}},{key:"cacheRowBlank",value:function(){var e=idTableMain+" tbody tr."+flagRowNew,t=document.querySelector(e);console.log("row blank temp: ",t),_rowBlank=t.cloneNode(!0),document.querySelectorAll(e).forEach((function(e){e.remove()}))}},{key:"hookupSlidersDisplayOrderTable",value:function(){var e=idTableMain+" tbody tr td."+flagDisplayOrder+" input."+flagSlider+"."+flagDisplayOrder;this.hookupChangeHandlerTableCells(e)}},{key:"hookupChangeHandlerTableCells",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e,r){t.handleChangeElementCellTable(e,r)};p.initialiseEventHandler(e,flagInitialised,(function(e){e.addEventListener("change",(function(t){r(t,e)})),t.handleChangeElementCellTable(null,e)}))}},{key:"handleChangeElementCellTable",value:function(e,t){var r=l.getRowFromElement(t),n=l.getCellFromElement(t),o=l.hasDirtyChildrenContainer(r),i=t.classList.contains(flagDirty),a=l.updateAndCheckIsElementDirty(t);if(a!=i){l.handleDirtyElement(n,a);var u=l.hasDirtyChildrenContainer(r);if(u!=o){l.handleDirtyElement(r,u);var c=this.getTableRecords(!0).length>0;this.toggleShowButtonsSaveCancel(c)}}}},{key:"hookupChangeHandlerTableCellsWhenNotCollapsed",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e,r){r.classList.contains(flagCollapsed)||t.handleChangeElementCellTable(e,r)};this.hookupEventHandler("change",e,r)}},{key:"hookupTextareasCodeTable",value:function(){this.hookupChangeHandlerTableCells(idTableMain+" tbody tr td."+flagCode+" textarea")}},{key:"hookupTextareasNameTable",value:function(){this.hookupChangeHandlerTableCells(idTableMain+" tbody tr td."+flagName+" textarea")}},{key:"hookupTextareasDescriptionTable",value:function(){this.hookupChangeHandlerTableCells(idTableMain+" tbody tr td."+flagDescription+" textarea")}},{key:"hookupInputsActiveTable",value:function(){this.hookupChangeHandlerTableCells(idTableMain+" tbody tr td."+flagActive+' input[type="checkbox"]')}},{key:"hookupTdsAccessLevel",value:function(){var e=idTableMain+" tbody td."+flagAccessLevel;this.hookupTableCellDdlPreviews(e,yt.getListFromDict(accessLevels))}},{key:"hookupTableCellDdlPreviews",value:function(e,t){var r=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(e,t){r.hookupTableCellDdls(e,t)};this.hookupEventHandler("click",e,(function(o,i){r.handleClickTableCellDdlPreview(o,i,t,e,(function(e,t){n(e,t)}))}))}},{key:"hookupTableCellDdls",value:function(e){var t=this;this.hookupEventHandler("change",e,(function(e,r){t.handleChangeTableCellDdl(e,r)}))}},{key:"handleClickTableCellDdlPreview",value:function(e,t,r,n){var o=this,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(e,t){o.hookupTableCellDdls(e,t)};if(!t.querySelector("select")){console.log("click table cell ddl preview");var a=t.cloneNode(!0);t.parentNode.replaceChild(a,t);var u=a.getAttribute(attrValueCurrent);a.innerHTML="";var c,s,f=document.createElement("select");l.setElementValuesCurrentAndPrevious(f,l.getElementAttributeValueCurrent(a)),console.log({optionObjectList:r,cellSelector:n}),r.forEach((function(e){c=st.getOptionJsonFromObjectJson(e,u),s=l.createOption(c),f.appendChild(s)})),a.appendChild(f),i(n+" select")}}},{key:"handleChangeTableCellDdl",value:function(e,t){var r=l.getRowFromElement(t),n=l.getCellFromElement(t);console.log("td: ",n);var o=l.hasDirtyChildrenContainer(r),i=t.classList.contains(flagDirty),a=l.updateAndCheckIsElementDirty(t);if(console.log("isDirtyElement: ",a),console.log("wasDirtyElement: ",i),a!=i){l.handleDirtyElement(n,a);var u=t.options[t.selectedIndex];l.setElementAttributeValueCurrent(n,u.value);var c=l.hasDirtyChildrenContainer(r);if(console.log("isNowDirtyRow: ",c),console.log("wasDirtyRow: ",o),c!=o){l.handleDirtyElement(r,c);var s=this.getTableRecords(!0),f=s.length>0;console.log("dirty records:",s),console.log("existsDirtyRecord:",f),this.toggleShowButtonsSaveCancel(f)}}}},{key:"hookupTableCellDDlPreviewsWhenNotCollapsed",value:function(e,t){var r=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(e,t){r.hookupTableCellDdls(e,t)};this.hookupEventHandler("click",e,(function(o,i){var a=i.querySelector("div");a&&!a.classList.contains(flagCollapsed)&&r.handleClickTableCellDdlPreview(o,i,t,e,(function(e,t){n(e,t)}))}))}},{key:"hookupProductPermutationVariationFields",value:function(){var e=this;this.hookupEventHandler("click",idTableMain+" td."+flagProductVariations,(function(t,r){return e.handleClickProductPermutationVariationsPreview(t,r)}))}},{key:"handleClickProductPermutationVariationsPreview",value:function(e,t){var r=this;console.log("click product permutation variations preview"),this.toggleColumnCollapsed(flagProductVariations,!1);var o=this.getElementProductVariations(t),i=document.createElement("table");i.classList.add(flagProductVariations);var a=document.createElement("thead"),u=document.createElement("tr"),l=document.createElement("th");l.textContent="Type";var c=document.createElement("th");c.textContent="Name";var s=document.createElement("button");s.classList.add(flagAdd),s.textContent="+";var f=document.createElement("th");f.appendChild(s),u.appendChild(l),u.appendChild(c),u.appendChild(f),a.appendChild(u),i.appendChild(a);var p=document.createElement("tbody");console.log("variations:",o),n.isEmpty(o)?o=[PageStoreProductPermutations.createOptionUnselectedProductVariation()]:o.forEach((function(e,t){r.addProductPermutationVariationRow(p,e)})),i.appendChild(p);var d=t.parentElement;d.innerHTML="",d.appendChild(i),console.log("tblVariations: ",i);var y=idTableMain+" td."+flagProductVariations+" button."+flagAdd;this.hookupEventHandler("click",y,this.handleClickButtonProductPermutationVariationsAdd);var h=idTableMain+" td."+flagProductVariations+" button."+flagDelete;this.hookupEventHandler("click",h,this.handleClickButtonProductPermutationVariationsDelete)}},{key:"toggleColumnCollapsed",value:function(e,t){this.toggleColumnHasClassnameFlag(e,t,flagCollapsed)}},{key:"getElementProductVariations",value:function(e){var t,r,o,i=e.getAttribute(attrValueCurrent),a=[];return n.isEmpty(i)||(i=i.split(",")).forEach((function(e){2==(t=e.split(":")).length?(console.log("parts: ",t),o=productVariationTypes[t[0].trim()],r=productVariations[t[1].trim()],a.push(kt(kt({},flagProductVariationType,o),flagProductVariation,r))):console.log("error: invalid variation: ",e)})),a}},{key:"addProductPermutationVariationRow",value:function(e,t){var r,n,o,i,a,u,c=Object.keys(productVariations),s=Object.keys(productVariationTypes);console.log("permutationVariation: ",t);var f=t[flagProductVariation],p=t[flagProductVariationType],d=document.createElement("td");d.classList.add(flagProductVariationType),l.setElementAttributesValuesCurrentAndPrevious(d,p[attrIdProductVariationType]);var y=document.createElement("select");y.classList.add(flagProductVariationType),l.setElementAttributesValuesCurrentAndPrevious(y,p[attrIdProductVariationType]),o=l.createOption(null),console.log("optionProductVariationType: ",o),y.appendChild(o),s.forEach((function(e){r=productVariationTypes[e],n=st.getOptionJsonFromObjectJson(r,p[attrIdProductVariationType]),o=l.createOption(n),console.log("optionProductVariationType: ",o),y.appendChild(o)}));var h=document.createElement("td");h.classList.add(flagProductVariation),l.setElementAttributesValuesCurrentAndPrevious(h,f[attrIdProductVariation]);var v=document.createElement("select");v.classList.add(flagProductVariation),l.setElementAttributesValuesCurrentAndPrevious(v,f[attrIdProductVariation]),u=l.createOption(null),console.log("optionProductVariation: ",u),v.appendChild(u),c.forEach((function(e){i=productVariations[e],a=st.getOptionJsonFromObjectJson(i,f[attrIdProductVariation]),u=l.createOption(a),console.log("optionProductVariation: ",u),v.appendChild(u)}));var g=document.createElement("td");g.classList.add(flagDelete);var b=document.createElement("button");b.classList.add(flagDelete),b.textContent="x";var m=document.createElement("tr");d.appendChild(y),m.appendChild(d),h.appendChild(v),m.appendChild(h),g.appendChild(b),m.appendChild(g),e.appendChild(m)}},{key:"handleClickButtonProductPermutationVariationsDelete",value:function(e,t){var r=getRowFromElement(t),n=r.closest("td."+flagProductVariations);r.remove(),this.updateProductPermutationVariations(n)}},{key:"updateProductPermutationVariations",value:function(e){var t=this.getProductPermutationVariationsText(e);e.setAttribute(attrValueCurrent,t),l.isElementDirty(e)}},{key:"getProductPermutationVariationsText",value:function(e){var t,r,n,o,i=e.querySelectorAll("tr"),a="";return i.forEach((function(e,i){t=e.querySelector("td select."+flagProductVariationType),r=e.querySelector("td select."+flagProductVariation),n=t.getAttribute(attrValueCurrent),o=r.getAttribute(attrValueCurrent),a+=n+":"+o+","})),a}},{key:"leave",value:function(){if(this.constructor===t)throw new Error("Must implement leave() method.");Ot(t,"leave",this,3)([]);var e=this.getFormFilters(),r={};r[flagFormFilters]=l.convertForm2JSON(e),this.setLocalStoragePage(r)}},{key:"toggleColumnHasClassnameFlag",value:function(e,t,r){var n=this.getTableMain(),o=n.querySelector("th."+e),i=o.classList.contains(r);if(t!=i){var a=n.querySelectorAll("td."+e);l.toggleElementHasClassnameFlag(o,t,r),a.forEach((function(e){l.toggleElementHasClassnameFlag(e,t,r)}))}}}],[{key:"isDirtyFilter",value:function(e){var t=l.updateAndCheckIsElementDirty(e);if(t){var r=document.querySelector(idTableMain+" tbody");r.querySelectorAll("tr").remove(),r.appendChild(document.createElement('
Press "Apply Filters" to refresh the table.
'))}return t}},{key:"createOptionUnselectedProductVariation",value:function(){return kt(kt({},flagProductVariationType,kt(kt(kt(kt({},flagNameAttrOptionText,[flagName]),flagNameAttrOptionValue,[attrIdProductVariationType]),flagName,"Select Variation Type"),attrIdProductVariationType,0)),flagProductVariation,kt(kt(kt(kt({},flagNameAttrOptionText,[flagName]),flagNameAttrOptionValue,[attrIdProductVariation]),flagName,"Select Variation"),attrIdProductVariation,0))}}])}(F);function At(e){return At="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},At(e)}function Ft(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return Dt(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Dt(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function Dt(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageHome,e)},this.routes[hashPageContact]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageContact,e)},this.routes[hashPageServices]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageServices,e)},this.routes[hashPageAdminHome]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageAdminHome,e)},this.routes[hashPageAccessibilityStatement]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageAccessibilityStatement,e)},this.routes[hashPageDataRetentionSchedule]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageDataRetentionSchedule,e)},this.routes[hashPageLicense]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageLicense,e)},this.routes[hashPagePrivacyPolicy]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPagePrivacyPolicy,e)},this.routes[hashPageStoreProductCategories]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageStoreProductCategories,e)},this.routes[hashPageStoreProductPermutations]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageStoreProductPermutations,e)},this.routes[hashPageStoreProducts]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageStoreProducts,e)},this.routes[hashPageStoreStockItems]=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t.navigateToHash(hashPageStoreStockItems,e)},this.initialize()}),[{key:"loadPage",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.getClassPageFromHash(e);this.currentPage=new n(this),this.currentPage.initialize(r),window.addEventListener("beforeunload",(function(){return t.currentPage.leave()}))}},{key:"getClassPageFromHash",value:function(e){var t=this.pages[e];try{return t.module}catch(t){throw console.log("this.pages: ",this.pages),console.error("Page not found:",e),t}}},{key:"initialize",value:function(){window.addEventListener("popstate",this.handlePopState.bind(this))}},{key:"handlePopState",value:function(e){this.loadPageCurrent()}},{key:"loadPageCurrent",value:function(){var e=l.getHashPageCurrent();this.loadPage(e)}},{key:"navigateToHash",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=C.getUrlFromHash(e,r);history.pushState({data:t,params:r},"",e),C.goToUrl(n,t)}},{key:"navigateToUrl",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;(!(arguments.length>2&&void 0!==arguments[2])||arguments[2])&&history.pushState(t,"",e),e=C.parameteriseUrl(e,t),C.goToUrl(e)}}],[{key:"loadPageBodyFromResponse",value:function(e){console.log(e.data),l.loadPageBody(e.data)}}])}();function un(e){return un="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},un(e)}function ln(e,t){for(var r=0;r { if (response.Success) { - this.router.navigateToUrl(response[keyCallback], null, false); // window.app. + this.router.navigateToUrl(response[flagCallback], null, false); // window.app. } else { DOM.alertError("Error", response.Message); } diff --git a/static/js/pages/store/basket.js b/static/js/pages/store/basket.js index 502fd615..262cd6d4 100644 --- a/static/js/pages/store/basket.js +++ b/static/js/pages/store/basket.js @@ -120,16 +120,16 @@ export default class PageStoreBasket extends BasePage { elForm = elOverlay.querySelector('form'); console.log('converting billing form to json\nform ID: ' + elForm.id); - ajaxData[keyForm] = convertForm2JSON(elForm); // formData; // form.serialize(); + ajaxData[flagForm] = convertForm2JSON(elForm); // formData; // form.serialize(); let keys = [keyNameFull, keyPhoneNumber, keyPostcode, keyAddress1, keyAddress2, keyCity, keyCounty]; console.log('ajaxData:'); console.log(ajaxData); - ajaxData[keyForm][keyInfoIdentical] = getElementValueCurrent(elForm.querySelector('#' + keyInfoIdentical)); + ajaxData[flagForm][keyInfoIdentical] = getElementValueCurrent(elForm.querySelector('#' + keyInfoIdentical)); for (var k in keys) { - if (idOverlayInfo == idOverlayInfoBilling && ajaxData[keyForm][keyInfoIdentical]) { - ajaxData[keyForm][keys[k]] = getElementValueCurrent(elFormDelivery.querySelector('#' + keys[k])); + if (idOverlayInfo == idOverlayInfoBilling && ajaxData[flagForm][keyInfoIdentical]) { + ajaxData[flagForm][keys[k]] = getElementValueCurrent(elFormDelivery.querySelector('#' + keys[k])); } else { - ajaxData[keyForm][keys[k]] = getElementValueCurrent(elForm.querySelector('#' + keys[k])); + ajaxData[flagForm][keys[k]] = getElementValueCurrent(elForm.querySelector('#' + keys[k])); } } console.log('ajaxData:'); diff --git a/static/js/pages/store/mixin.js b/static/js/pages/store/mixin.js index ff44c709..ec794962 100644 --- a/static/js/pages/store/mixin.js +++ b/static/js/pages/store/mixin.js @@ -31,7 +31,7 @@ export default class StoreMixinPage { elForm = document.querySelectorAll(idFormCurrency); elSelector.addEventListener("change", function(event) { ajaxData = {}; - ajaxData[keyForm] = convertForm2JSON(elForm); + ajaxData[flagForm] = convertForm2JSON(elForm); console.log('sending data to currency selector controller: '); console.log(ajaxData); ajaxJSONData('select currency', mapHashToController(hashStoreSelectCurrency), ajaxData, function() { window.location.reload() }, false); @@ -84,7 +84,7 @@ export default class StoreMixinPage { elForm = document.querySelectorAll(idFormDeliveryRegion); elSelector.addEventListener("change", function(event) { ajaxData = {}; - ajaxData[keyForm] = convertForm2JSON(elForm); + ajaxData[flagForm] = convertForm2JSON(elForm); console.log('sending data to delivery region selector controller: '); console.log(ajaxData); ajaxJSONData('select delivery region', mapHashToController(hashStoreSelectDeliveryRegion), ajaxData, function() { window.location.reload() }, false); }); @@ -137,7 +137,7 @@ export default class StoreMixinPage { elForm = document.querySelectorAll(idFormIsIncludedVAT); elSelector.addEventListener("change", function(event) { ajaxData = {}; - ajaxData[keyForm] = convertForm2JSON(elForm); + ajaxData[flagForm] = convertForm2JSON(elForm); console.log('sending data to include VAT controller: '); console.log(ajaxData); ajaxJSONData('set include VAT', mapHashToController(hashStoreSetIsIncludedVAT), ajaxData, function() { window.location.reload() }, false); }); diff --git a/templates/layouts/layout.html b/templates/layouts/layout.html index 35e5613e..df9ef8f8 100644 --- a/templates/layouts/layout.html +++ b/templates/layouts/layout.html @@ -61,6 +61,7 @@ var flagAccessLevelRequired = "{{ model.FLAG_ACCESS_LEVEL_REQUIRED }}"; var flagActive = "{{ model.FLAG_ACTIVE }}"; var flagAdd = "{{ model.FLAG_ADD }}"; + var flagCallback = "{{ model.FLAG_CALLBACK }}"; var flagCancel = "{{ model.FLAG_CANCEL }}"; var flagCard = "{{ model.FLAG_CARD }}"; var flagCloseTemporaryElement = "{{ model.FLAG_CLOSE_TEMPORARY_ELEMENT }}"; @@ -85,6 +86,7 @@ var flagExpanded = "{{ model.FLAG_EXPANDED }}"; var flagFailure = "{{ model.FLAG_FAILURE }}"; var flagFilter = "{{ model.FLAG_FILTER }}"; + var flagForm = "{{ model.FLAG_FORM }}"; var flagFormFilters = "{{ model.FLAG_FORM_FILTERS }}"; var flagImageLogo = "{{ model.FLAG_IMAGE_LOGO }}"; var flagInitialised = "{{ model.FLAG_INITIALISED }}"; @@ -181,14 +183,7 @@ var idButtonSave = "#{{ model.ID_BUTTON_SAVE }}"; */ var idCSRFToken = "#{{ model.ID_CSRF_TOKEN }}"; - {# - var idFormCurrency = "#{{ model.ID_FORM_CURRENCY }}"; - var idFormDeliveryRegion = "#{{ model.ID_FORM_DELIVERY_REGION }}"; - #} var idFormFilters = "#{{ model.ID_FORM_FILTERS }}"; - {# - var idFormIsIncludedVAT = "#{{ model.ID_FORM_IS_INCLUDED_VAT }}"; - #} var idLabelError = "#{{ model.ID_LABEL_ERROR }}"; var idOverlayConfirm = "#{{ model.ID_OVERLAY_CONFIRM }}"; var idOverlayError = "#{{ model.ID_OVERLAY_ERROR }}"; @@ -197,12 +192,6 @@ var idTableMain = "#{{ model.ID_TABLE_MAIN }}"; var idTextareaConfirm = "#{{ model.ID_TEXTAREA_CONFIRM }}"; var isUserLoggedIn = "{{ model.output_bool(model.IS_USER_LOGGED_IN) }}"; - {# var keyBasket = "{{ model.KEY_BASKET }}"; #} - var keyCallback = "{{ model.KEY_CALLBACK }}"; - {# var keyCSRFToken = "{{ model.ID_CSRF_TOKEN }}"; #} - var keyData = "{{ model.KEY_DATA }}"; - var keyForm = "{{ model.KEY_FORM }}"; - var keyShared = "shared"; var nameCSRFToken = "{{ model.NAME_CSRF_TOKEN }}"; var _pathHost = "{{ model.get_url_host() }}"; var _rowBlank = null; @@ -216,11 +205,6 @@ -{% set user = model.get_user_session() %} -
@@ -244,11 +228,11 @@ Contact
- {% if model.is_page_store and user.can_admin_store %} + {% if model.is_page_store and model.user.can_admin_store %} - {% if user.can_admin_store %} + {% if model.user.can_admin_store %} @@ -296,18 +280,18 @@
--> {% else %} - {% if user.can_admin_store %} + {% if model.user.can_admin_store %} {% endif %} {% endif %} - {% if user.can_admin_store %} + {% if model.user.can_admin_store %} {% endif %} - {% if user.is_logged_in %} + {% if model.user.is_logged_in %}